CN115242726B - 队列的调度方法和装置及电子设备 - Google Patents

队列的调度方法和装置及电子设备 Download PDF

Info

Publication number
CN115242726B
CN115242726B CN202210893328.5A CN202210893328A CN115242726B CN 115242726 B CN115242726 B CN 115242726B CN 202210893328 A CN202210893328 A CN 202210893328A CN 115242726 B CN115242726 B CN 115242726B
Authority
CN
China
Prior art keywords
queue
target
dequeue
message
queues
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210893328.5A
Other languages
English (en)
Other versions
CN115242726A (zh
Inventor
彭博
江海涛
加玉涛
宋建明
梁晨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba China Co Ltd
Original Assignee
Alibaba China Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210893328.5A priority Critical patent/CN115242726B/zh
Publication of CN115242726A publication Critical patent/CN115242726A/zh
Application granted granted Critical
Publication of CN115242726B publication Critical patent/CN115242726B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/58Changing or combining different scheduling modes, e.g. multimode scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6235Variable service order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种队列的调度方法和装置及电子设备。其中,该方法包括:确定多个待调度的队列,其中,多个待调度的队列对应不同的业务类型;依据第一预设调度算法对多个待调度的队列进行第一级调度,确定目标业务类型和目标业务类型下的多个队列;通过第二预设调度算法对目标业务类型下的多个队列进行第二级调度,得到出队队列;对出队队列中的报文信息执行出队操作。本发明解决了相关技术中仅仅通过数据的业务类别和优先级进行队列调度,导致队列调度不合理的技术问题。

Description

队列的调度方法和装置及电子设备
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种队列的调度方法和装置及电子设备。
背景技术
随着物联网、大数据、人工智能在各个产业的全面应用,云计算不仅协助互联网行业进行快速地迭代,更推动传统行业的智能化演变。虚拟化作为云计算技术的重要组成,但软件实现虚拟化会占用服务器大量的计算资源。智能网卡通过将IO虚拟化、网络虚拟化、网络业务、存储业务等进行卸载,释放了服务器CPU大量的处理能力,使得服务器CPU可以专注于通用计算业务。IO虚拟化是智能网卡与虚拟机(VM)进行交互的重要部分,保证IO虚拟化的性能,才能稳定推进后续各项业务在智能网卡上的卸载。在云计算的应用场景中,智能网卡上承载的交互队列会达到几百或几千条,所以需要智能网卡对队列进行调度,使得智能网卡能够和虚拟设备更高效的进行数据交互。智能网卡的数据调度系统多继承于传统网卡,仅仅是根据数据的业务类别和优先级进行队列调度,这样的方式会造成队列调度不合理的现象。
针对上述相关技术中通过数据的业务类别和优先级进行队列调度,导致队列调度不合理的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种队列的调度方法和装置及电子设备,以至少解决相关技术中通过数据的业务类别和优先级进行队列调度,导致队列调度不合理的技术问题。
根据本发明实施例的一个方面,提供了一种队列的调度方法,包括:确定多个待调度的队列,其中,所述多个待调度的队列对应不同的业务类型;依据第一预设调度算法对所述多个待调度的队列进行第一级调度,确定目标业务类型和所述目标业务类型下的多个队列;通过第二预设调度算法对所述目标业务类型下的多个队列进行第二级调度,得到出队队列,其中,所述第二预设调度算法至少通过队列的优先级、队列组的组号和队列对应的虚拟队列的ID进行第二级调度,所述队列组由多个队列组成,所述虚拟队列由目标服务器中目标对象对应的虚拟IO设备和CPU内核数量确定;对所述出队队列中的报文信息执行出队操作。
进一步地,在确定待调度的多个队列之前,所述方法还包括:获取待处理的数据流;对所述待处理的数据流进行报文解析处理,得到第一目标数据报文和第一目标信息报文,并将所述第一目标数据报文存储在第一缓存模块中,其中,所述第一目标信息报文包括所述第一目标数据报文的属性信息;若所述待处理的数据流的业务类型为所述目标业务类型,则依据所述第一目标信息报文中的目标业务类型、虚拟队列的优先级、虚拟队列的ID和虚拟队列组,确定入队队列,其中,所述虚拟队列用于接收所述第一目标数据报文,所述虚拟队列组由多个虚拟队列组成;确定所述第一目标信息报文中的报文长度和所述入队队列中剩余的存储长度;若所述第一目标信息报文中的报文长度小于所述入队队列中剩余的存储长度,则对所述第一目标信息报文执行入队操作;若所述第一目标信息报文中的报文长度大于所述入队队列中剩余的存储长度,则对所述第一目标信息报文执行丢包操作。
进一步地,若所述第一目标信息报文中的报文长度小于所述入队队列中剩余的存储长度,则对所述第一目标信息报文执行入队操作包括:依据地址空闲链表的头指针确定所述第一目标信息报文的存储地址,并依据所述存储地址,将所述第一目标信息报文存储至第二缓存模块中,其中,所述地址空闲链表是由所述第二缓存模块的内存地址组建的;依据所述入队队列的序号,从第一表项中获取所述入队队列的成链状态信息,其中,所述第一表项中包括队列的序号和队列的成链状态信息的对应关系;若所述入队队列的成链状态信息为第一状态,将所述地址空闲链表的头指针赋值给所述入队队列的尾指针,并将所述入队队列的尾指针存储至第二表项中,其中,所述第二表项中包括队列的序号和队列的尾指针信息的对应关系,所述第一状态表征所述入队队列已成链。
进一步地,通过第二预设调度算法对所述目标业务类型下的多个队列进行第二级调度,得到出队队列包括:获取第一数据表、第二数据表和第三数据表,其中,所述第一数据表中包括队列的序号和队列的状态信息的对应关系,所述状态信息用于表征所述队列是否非空,所述第二数据表中包括队列的序号和队列的流量反馈控制状态信息的对应关系,所述第三数据表中包括队列组的组号和队列组的流量限速状态信息的对应关系,所述队列组由多个队列组成;依据所述第一数据表、所述第二数据表和所述第三数据表,通过队列的优先级对所述目标业务类型下的多个队列进行第一层调度,得到目标优先级和所述目标优先级下的多个队列,其中,所述队列的优先级由所述虚拟队列的优先级确定,所述目标业务类型下的多个队列对应不同的优先级;依据所述第一数据表、所述第二数据表和所述第三数据表,通过所述队列组的组号对所述目标优先级下的多个队列进行第二层调度,得到目标队列组和所述目标队列组下的多个队列,其中,所述目标优先级下的多个队列对应不同的队列组;依据所述第一数据表和所述第二数据表,通过所述队列对应的虚拟队列的ID对所述目标队列组下的多个队列进行第三层调度,得到所述出队队列,其中,所述出队队列在所述第一数据表中的状态信息为第一预设数值,所述出队队列在第二数据表中的流量反馈控制状态信息为第二预设数值,所述出队队列对应的队列组在第三数据表中的流量限速状态信息为第三预设数值,所述第一预设数值表征所述出队队列非空,所述第二预设数值表征所述出队队列未被流量反馈控制,所述第三预设数值表征所述出队队列对应的队列组未被流量限速。
进一步地,对所述出队队列中的信息报文执行出队操作包括:依据所述出队队列的序号,从第三表项中读取所述出队队列的头指针信息,其中,所述第三表项中包括队列的序号和队列的头指针信息的对应关系;依据所述头指针信息,从所述第二缓存模块中获取第二目标信息报文;依据所述第二目标信息报文,从所述第一缓存模块中获取第二目标数据报文;对所述第二目标数据报文进行IO虚拟化处理,得到处理后的第二目标数据报文,并将所述处理后的第二目标数据报文发送至所述目标服务器。
进一步地,在依据所述头指针信息,从所述第二缓存模块中获取第二目标信息报文之后,所述方法还包括:获取所述目标服务器提供的可处理报文总长度,并依据所述第二目标信息报文中的报文长度和所述可处理报文总长度进行计算,得到所述出队队列的剩余可处理报文长度;若所述出队队列的剩余可处理报文长度小于预设报文长度,则将所述第二数据表中所述出队队列的流量反馈控制状态信息设置为第四预设数值,其中,所述第四预设数值表征所述出队队列被流量反馈控制。
进一步地,在依据所述头指针信息,从所述第二缓存模块中获取第二目标信息报文之后,所述方法还包括:确定所述出队队列对应的队列组的剩余流量限速阈值;判断所述第二目标信息报文中的报文长度是否高于所述剩余流量限速阈值;若所述第二目标信息报文中的报文长度高于所述剩余流量限速阈值,则将所述第三数据表中所述出队队列对应的队列组的流量限速状态信息设置为第五预设数值,其中,所述第五预设数值表征所述出队队列对应的队列组被流量限速。
进一步地,将所述处理后的第二目标数据报文发送至所述目标服务器包括:依据所述第一数据表、所述第二数据表、所述第三数据表和预设的可发送的最大报文数,确定所述出队队列的聚合标志信息;若所述出队队列的聚合标志信息为第六预设数值,则发送中断指令发送至所述目标服务器和将所述处理后的第二目标数据报文发送至所述目标服务器中的虚拟队列,其中,所述中断指令用于指示所述目标服务器从所述虚拟队列中读取目标数据;若所述出队队列的聚合标志信息不为所述第六预设数值,则将所述处理后的第二目标数据报文发送至所述目标服务器中的虚拟队列。
进一步地,在对所述出队队列中的信息报文执行出队操作之后,所述方法还包括:在下一次进行队列调度的情况下,依据所述第一预设调度算法对所述多个待调度的队列进行第一级调度,若再次得到所述目标业务类型和所述目标业务类型下的多个队列,则判断是否触发所述第二预设调度算法对应的队列切换规则;若未触发所述第二预设调度算法对应的队列切换规则,则所述出队队列作为当前出队队列;若触发所述第二预设调度算法对应的队列切换规则,则依据所述第二预设调度算法对所述目标业务类型下的多个队列进行调度,得到当前出队队列。
进一步地,判断是否触发所述第二预设调度算法对应的队列切换规则包括:依据所述第一数据表、所述第二数据表、所述第三数据表和预设的可发送的最大报文数判断是否触发所述第二预设调度算法对应的队列切换规则;若所述出队队列在所述第一数据表中的状态信息为第七预设数值,或者,所述出队队列在所述第二数据表中的流量反馈控制状态信息为所述第四预设数值,或者,所述出队队列对应的队列组在所述第三数据表中的流量限速状态信息为所述第五预设数值,或者,已发送的数据报文数等于所述可发送的最大报文数,则触发所述第二预设调度算法对应的队列切换规则,其中,所述第七预设数值表征所述出队队列为空。
进一步地,在依据所述头指针信息,从所述第二缓存模块中获取第二目标信息报文之前,所述方法还包括:获取所述出队队列的总报文数;若所述出队队列的总报文数大于第八预设数值,则获取所述出队队列头指针的下一跳指针信息,并将所述下一跳指针信息作为所述出队队列的当前的头指针;将所述当前的头指针存储至所述第二表项中;若所述出队队列的总报文数等于所述第八预设数值,将所述第一表项中所述出队队列的成链状态信息设置为所述第二状态,其中,所述第二状态表征所述出队队列未成链。
根据本发明实施例的一个方面,提供了一种队列的调度装置,包括:第一确定单元,用于确定多个待调度的队列,其中,所述多个待调度的队列对应不同的业务类型;第一调度单元,用于依据第一预设调度算法对所述多个待调度的队列进行第一级调度,确定目标业务类型和所述目标业务类型下的多个队列;第二调度单元,用于通过第二预设调度算法对所述目标业务类型下的多个队列进行第二级调度,得到出队队列,其中,所述第二预设调度算法至少通过队列的优先级、队列组的组号和队列对应的虚拟队列的ID进行第二级调度,所述队列组由多个队列组成,所述虚拟队列由目标服务器中目标对象对应的虚拟IO设备和CPU内核数量确定;执行单元,用于对所述出队队列中的报文信息执行出队操作。
进一步地,所述装置还包括:第一获取单元,用于在确定待调度的多个队列之前,获取待处理的数据流;第一处理单元,用于对所述待处理的数据流进行报文解析处理,得到第一目标数据报文和第一目标信息报文,并将所述第一目标数据报文存储在第一缓存模块中,其中,所述第一目标信息报文包括所述第一目标数据报文的属性信息;第二确定单元,用于若所述待处理的数据流的业务类型为所述目标业务类型,则依据所述第一目标信息报文中的目标业务类型、虚拟队列的优先级、虚拟队列的ID和虚拟队列组,确定所述入队队列,其中,所述虚拟队列用于接收所述第一目标数据报文,所述虚拟队列组由多个虚拟队列组成;第三确定单元,用于确定所述第一目标信息报文中的报文长度和所述入队队列中剩余的存储长度;第二处理单元,用于若所述第一目标信息报文中的报文长度小于所述入队队列中剩余的存储长度,则对所述第一目标信息报文执行入队操作;第三处理单元,用于若所述第一目标信息报文中的报文长度大于所述入队队列中剩余的存储长度,则对所述第一目标信息报文执行丢包操作。
进一步地,所述第二处理单元包括:第一存储模块,用于依据地址空闲链表的头指针确定所述第一目标信息报文的存储地址,并依据所述存储地址,将所述第一目标信息报文存储至第二缓存模块中,其中,所述地址空闲链表是由所述第二缓存模块的内存地址组建的;第一获取模块,用于依据所述入队队列的序号,从第一表项中获取所述入队队列的成链状态信息,其中,所述第一表项中包括队列的序号和队列的成链状态信息的对应关系;第二存储模块,用于若所述入队队列的成链状态信息为第一状态,将所述地址空闲链表的头指针赋值给所述入队队列的尾指针,并将所述入队队列的尾指针存储至第二表项中,其中,所述第二表项中包括队列的序号和队列的尾指针信息的对应关系,所述第一状态表征所述入队队列已成链。
进一步地,所述第二调度单元包括:第二获取模块,用于获取第一数据表、第二数据表和第三数据表,其中,所述第一数据表中包括队列的序号和队列的状态信息的对应关系,所述状态信息用于表征所述队列是否非空,所述第二数据表中包括队列的序号和队列的流量反馈控制状态信息的对应关系,所述第三数据表中包括队列组的组号和队列组的流量限速状态信息的对应关系,所述队列组由多个队列组成;第一调度模块,用于依据所述第一数据表、所述第二数据表和所述第三数据表,通过队列的优先级对所述目标业务类型下的多个队列进行第一层调度,得到目标优先级和所述目标优先级下的多个队列,其中,所述队列的优先级由所述虚拟队列的优先级确定,所述目标业务类型下的多个队列对应不同的优先级;第二调度模块,用于依据所述第一数据表、所述第二数据表和所述第三数据表,通过所述队列组的组号对所述目标优先级下的多个队列进行第二层调度,得到目标队列组和所述目标队列组下的多个队列,其中,所述目标优先级下的多个队列对应不同的队列组;第三调度模块,用于依据所述第一数据表和所述第二数据表,通过所述队列对应的虚拟队列的ID对所述目标队列组下的多个队列进行第三层调度,得到所述出队队列,其中,所述出队队列在所述第一数据表中的状态信息为第一预设数值,所述出队队列在第二数据表中的流量反馈控制状态信息为第二预设数值,所述出队队列对应的队列组在第三数据表中的流量限速状态信息为第三预设数值,所述第一预设数值表征所述出队队列非空,所述第二预设数值表征所述出队队列未被流量反馈控制,所述第三预设数值表征所述出队队列对应的队列组未被流量限速。
进一步地,所述执行单元包括:读取模块,用于依据所述出队队列的序号,从第三表项中读取所述出队队列的头指针信息,其中,所述第三表项中包括队列的序号和队列的头指针信息的对应关系;第三获取模块,用于依据所述头指针信息,从所述第二缓存模块中获取第二目标信息报文;第四获取模块,用于依据所述第二目标信息报文,从所述第一缓存模块中获取第二目标数据报文;处理模块,用于对所述第二目标数据报文进行IO虚拟化处理,得到处理后的第二目标数据报文,并将所述处理后的第二目标数据报文发送至所述目标服务器。
进一步地,所述装置还包括:第二获取单元,用于在依据所述头指针信息,从所述第二缓存模块中获取第二目标信息报文之后,获取所述目标服务器提供的可处理报文总长度,并依据所述第二目标信息报文中的报文长度和所述可处理报文总长度进行计算,得到所述出队队列的剩余可处理报文长度;第一设置单元,用于若所述出队队列的剩余可处理报文长度小于预设报文长度,则将所述第二数据表中所述出队队列的流量反馈控制状态信息设置为第四预设数值,其中,所述第四预设数值表征所述出队队列被流量反馈控制。
进一步地,所述装置还包括:第三获取单元,用于在依据所述头指针信息,从所述第二缓存模块中获取第二目标信息报文之后,确定所述出队队列对应的队列组的剩余流量限速阈值;判断单元,用于判断所述第二目标信息报文中的报文长度是否高于所述剩余流量限速阈值;第二设置单元,用于若所述第二目标信息报文中的报文长度高于所述剩余流量限速阈值,则将所述第三数据表中所述出队队列对应的队列组的流量限速状态信息设置为第五预设数值,其中,所述第五预设数值表征所述出队队列对应的队列组被流量限速。
进一步地,所述处理模块包括:确定子模块,用于依据所述第一数据表、所述第二数据表、所述第三数据表和预设的可发送的最大报文数,确定所述出队队列的聚合标志信息;第一发送子模块,用于若所述出队队列的聚合标志信息为第六预设数值,则发送中断指令发送至所述目标服务器和将所述处理后的第二目标数据报文发送至所述目标服务器中的虚拟队列,其中,所述中断指令用于指示所述目标服务器从所述虚拟队列中读取目标数据;第二发送子模块,用于若所述出队队列的聚合标志信息不为所述第六预设数值,则将所述处理后的第二目标数据报文发送至所述目标服务器中的虚拟队列。
进一步地,所述装置还包括:第三调度单元,用于在对所述出队队列中的信息报文执行出队操作之后,在下一次进行队列调度的情况下,依据所述第一预设调度算法对所述多个待调度的队列进行第一级调度,若再次得到所述目标业务类型和所述目标业务类型下的多个队列,则判断是否触发所述第二预设调度算法对应的队列切换规则;第四确定单元,用于若未触发所述第二预设调度算法对应的队列切换规则,则所述出队队列作为当前出队队列;第四调度单元,用于若触发所述第二预设调度算法对应的队列切换规则,则依据所述第二预设调度算法对所述目标业务类型下的多个队列进行调度,得到当前出队队列。
进一步地,所述第三调度单元包括:判断模块,用于依据所述第一数据表、所述第二数据表、所述第三数据表和预设的可发送的最大报文数判断是否触发所述第二预设调度算法对应的队列切换规则;触发模块,用于若所述出队队列在所述第一数据表中的状态信息为第七预设数值,或者,所述出队队列在所述第二数据表中的流量反馈控制状态信息为所述第四预设数值,或者,所述出队队列对应的队列组在所述第三数据表中的流量限速状态信息为所述第五预设数值,或者,已发送的数据报文数等于所述可发送的最大报文数,则触发所述第二预设调度算法对应的队列切换规则,其中,所述第七预设数值表征所述出队队列为空。
进一步地,所述装置还包括:第四获取单元,用于在依据所述头指针信息,从所述第二缓存模块中获取第二目标信息报文之前,获取所述出队队列的总报文数;第五获取单元,用于若所述出队队列的总报文数大于第八预设数值,则获取所述出队队列头指针的下一跳指针信息,并将所述下一跳指针信息作为所述出队队列的当前的头指针;将所述当前的头指针存储至所述第二表项中;第三设置单元,用于若所述出队队列的总报文数等于所述第八预设数值,将所述第一表项中所述出队队列的成链状态信息设置为所述第二状态,其中,所述第二状态表征所述出队队列未成链。
根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述的队列的调度方法。
在本发明实施例中,采用以下步骤:确定多个待调度的队列,其中,多个待调度的队列对应不同的业务类型;依据第一预设调度算法对多个待调度的队列进行第一级调度,确定目标业务类型和目标业务类型下的多个队列;通过第二预设调度算法对目标业务类型下的多个队列进行第二级调度,得到出队队列;对出队队列中的报文信息执行出队操作,解决了相关技术中通过数据的业务类别和优先级进行队列调度,导致队列调度不合理的技术问题。通过第一预设调度算法确定目标业务类型和目标业务类型下的多个队列,然后利用第二预设调度算法对目标业务类型下的多个队列进行第二级调度,得到出队队列,最后对出队队列中的报文信息执行出队操作,通过上述的第一预设调度算法和第二预设调度算法能够更加合理的对队列进行调度,从而实现更加合理地对队列中的数据进行调度,进而达到了提高队列调度合理性的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例一提供的计算机终端的示意图;
图2是根据本发明实施例一提供的队列的调度方法的流程图;
图3是根据本发明实施例一提供的队列的结构示意图;
图4是根据本发明实施例一提供的报文处理和入队操作的流程图;
图5是根据本发明实施例一提供的第二级调度的流程图;
图6是根据本发明实施例一提供的队列调度和出队操作的流程图;
图7是根据本发明实施例二提供的队列的调度装置的示意图;
图8是根据本发明实施例三提供的队列的调度系统的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,还提供了一种队列的调度方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现队列的调度方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括处理器集合102(处理器集合102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置、以及处理器集合102可以包括一个或多个处理器,图1中采用102a,102b,……,102n来示出)、用于存储数据的存储器104、以及用于通信功能的传输模块106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为BUS总线的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述处理器集合102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的队列的调度方法对应的程序指令/数据存储装置,处理器集合102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的队列的调度方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
虚拟化是云计算技术的重要组成,但软件实现虚拟化会占用服务器大量的计算资源。智能网卡通过将IO虚拟化、网络虚拟化、网络业务、存储业务等进行卸载,释放了服务器CPU大量的处理能力,使得服务器CPU可以专注于通用计算业务。IO虚拟化是智能网卡与虚拟机(VM)进行交互的重要部分,保证IO虚拟化的性能,才能稳定推进后续各项业务在智能网卡上的卸载。在云计算的应用场景中,智能网卡上承载的交互队列会达到几百或几千条,所以需要智能网卡对队列进行调度,使得智能网卡能够和虚拟设备更高效的进行数据交互。
在上述技术背景下,本申请提供了如图2所示的队列的调度方法。图2是根据本发明实施例一的队列的调度方法的流程图。
步骤S201,确定多个待调度的队列,其中,多个待调度的队列对应不同的业务类型。
步骤S202,依据第一预设调度算法对多个待调度的队列进行第一级调度,确定目标业务类型和目标业务类型下的多个队列。
步骤S203,通过第二预设调度算法对目标业务类型下的多个队列进行第二级调度,得到出队队列,其中,所述第二预设调度算法至少通过队列的优先级、队列组的组号和队列对应的虚拟队列的ID进行第二级调度,所述队列组由多个队列组成,所述虚拟队列由目标服务器中目标对象对应的虚拟IO设备和CPU内核数量确定。
步骤S204,对出队队列中的报文信息执行出队操作。
具体地,IO虚拟化是智能网卡与虚拟机(VM)进行交互的重要部分,保证IO虚拟化的性能,才能稳定推进后续各项业务在智能网卡上的卸载。当前普遍通过virtio协议实现IO虚拟化。通过virtio设备前端驱动准备虚拟队列。虚拟队列(vring队列),是连接云计算的虚拟设备中virtio设备前端驱动和智能网卡后端驱动的实际数据链路。通过vring队列实现智能网卡与虚拟设备之间的数据交互。在智能网卡中也设有与虚拟队列(vring队列)对应的队列,如图3所示,智能网卡中队列的示意图,采用如图3所示的队列的示意图,以便后续通过业务类别、优先级、虚拟队列ID以及虚拟队列组等信息从智能网卡中确定的唯一队列。通过对智能网卡中的多个队列进行调度,得到出队队列,然后根据出队队列的报文信息进行出队操作,也就是将出队队列的报文信息对应的数据包发送给虚拟队列(vring队列),以便服务器中的虚拟设备从虚拟队列中读取数据包。在虚拟设备向智能网卡发送数据时也会将数据发送至虚拟队列中,以便智能网卡从虚拟队列中读取数据包。
在云计算的应用场景中,智能网卡上的交互队列会达到几百或几千条,所以如何通过智能网卡对队列进行合理调度是至关重要的。在本发明提供的队列的调度方法中,主要通过以下步骤进行实现对队列的调度工作。
需要说明的是,智能网卡并不仅限于处理虚拟交互业务,还可以处理非虚拟交互业务。
首先通过RR/WRR轮询调度算法(即上述的第一预设调度算法)对多个待调度的队列的业务类型进行第一级调度,确定目标业务类型和目标业务类型下的多个队列,也就是说先确定此次需要处理的业务类型。目标业务类型这里指的是虚拟交互业务(virtio业务)。
需要说明的是如果第一级调度出的业务类型不是虚拟交互业务(非virtio业务),则直接根据队列的优先级确定出队队列。
确定为目标业务类型和目标业务类型下的多个队列时,利用第二预设调度算法从队列的优先级、队列组的组号和虚拟队列的ID依次进行三个层面的调度,最终确定出队队列。在确定出对队列后,对出队队列执行出队操作,即将出队队列中的报文信息对应的数据报文发送至虚拟队列。需要说明的是,一次出队操作只发送一个数据报文到虚拟队列。
综上,通过第一预设调度算法确定目标业务类型和目标业务类型下的多个队列,然后利用第二预设调度算法从队列的优先级、队列组的组号和虚拟队列的ID依次进行三个层面的调度,以确定出队队列,从上述的三个层面进行队列调度能够更加合理的对队列进行调度,从而实现更加合理地对队列中的数据进行调度。
在确定待调度的多个队列之前,在本发明实施例一提供的队列的调度方法中,采用以下步骤处理待发送给虚拟队列的数据信息:获取待处理的数据流;对待处理的数据流进行报文解析处理,得到第一目标数据报文和第一目标信息报文,并将第一目标数据报文存储在第一缓存模块中,其中,第一目标信息报文包括第一目标数据报文的属性信息;依据第一目标信息报文,确定入队队列;若待处理的数据流的业务类型为目标业务类型,则依据第一目标信息报文中的目标业务类型、虚拟队列的优先级、虚拟队列的ID和虚拟队列组,确定入队队列,其中,虚拟队列用于接收第一目标数据报文,虚拟队列由目标服务器中目标对象对应的虚拟IO设备和CPU内核数量确定,虚拟队列组由多个虚拟队列组成。确定第一目标信息报文中的报文长度和入队队列中剩余的存储长度;若第一目标信息报文中的报文长度小于入队队列中剩余的存储长度,则对第一目标信息报文执行入队操作;若第一目标信息报文中的报文长度大于入队队列中剩余的存储长度,则对第一目标信息报文执行丢包操作。
需要说明的是,智能网卡中用于虚拟业务的多个队列中需要包括目标业务类型、虚拟队列的优先级、虚拟队列的ID和虚拟队列组等信息,以便后续通过目标业务类型、虚拟队列的优先级、虚拟队列的ID和虚拟队列组,确定入队队列,以及后续通过虚拟队列的ID实现队列调度。
具体地,在智能网卡上可设有以太网接口,通过以太网接口接收待处理的数据流。得到待处理的数据流后,对数据流进行报文解析处理,得到第一目标数据报文和待处理的数据流对应的IP五元组。将第一目标数据报文存储在第一缓存模块中,得到第一目标数据报文的存储首地址和存储尾地址;以及根据待处理的数据流对应的IP五元组得到待处理的数据流对应的业务类型、接收方的信息和优先级信息等。优先级信息可以根据实际需求进行设置。将第一目标数据报文的存储首地址和存储尾地址、第一目标数据报文的长度、业务类型、接收方的信息和优先级信息组建为第一目标信息报文,即上述的第一目标信息报文包括第一目标数据报文的属性信息。
需要说明的是,如果待处理的数据流对应的业务类型为virtio业务,即目标业务类型,则第一目标信息报文中包括第一目标数据报文的存储首地址和存储尾地址、第一目标数据报文的报文长度、业务类型、接收数据的虚拟队列的优先级、接收数据的虚拟队列的ID和虚拟队列组。
在待处理的数据流对应的业务类型为virtio业务时,根据业务类型、接收数据的虚拟队列的优先级、接收数据的虚拟队列的ID和虚拟队列组,确定入队队列。然后通过入队队列已经存储的数据报文的总包长和入队队列的可存储数据报文的长度阈值,得到入队队列的剩余的存储长度,在第一目标报文信息中的报文长度小于剩余的存储长度的情况下,对第一目标报文信息执行入队操作。在第一目标报文信息中的报文长度大于剩余的存储长度的情况下,对第一目标信息报文执行丢包操作。
需要说明的是,在待处理的数据流对应的业务类型为非virtio业务时,则直接根据优先级信息和业务类型确定入队队列。
需要说明的是,丢包操作包括:发送丢包信息给第一缓存模块,丢包信息中包括第一目标数据报文的存储首地址和存储尾地址和丢包标志。第一缓存模块根据丢包信息,删除第一缓存模块中的缓存的第一目标数据报文。
综上所述,在待处理的数据流对应的业务类型为virtio业务时,根据业务类型、接收数据的虚拟队列的优先级、接收数据的虚拟队列的ID和虚拟队列组,确定入队队列,便于后续根据虚拟队列的优先级、虚拟队列和虚拟队列组进行队列调度,提高队列调度的合理性。
为了能够在出队操作时,快速地找到对应的信息报文,在本发明实施例一提供的队列的调度方法中采用以下方式对第一目标信息报文执行入队操作包括:依据地址空闲链表的头指针确定第一目标信息报文的存储地址,并依据存储地址,将第一目标信息报文存储至第二缓存模块中,其中,地址空闲链表是由第二缓存模块的内存地址组建的;依据入队队列的序号,从第一表项中获取入队队列的成链状态信息,其中,第一表项中包括队列的序号和队列的成链状态信息的对应关系;若入队队列的成链状态信息为第一状态,将地址空闲链表的头指针赋值给入队队列的尾指针,并将入队队列的尾指针存储至第二表项中,其中,第二表项由多个队列中每个队列的序号和多个队列中每个队列的尾指针信息组成,第一状态表征入队队列已成链。若入队队列的成链状态信息为第二状态,将地址空闲链表的头指针分别赋值给入队队列的头指针和入队队列的尾指针,并将入队队列的头指针存储至第三表项中,将入队队列的尾指针存储至第二表项中,其中,第三表项中包括队列的序号和队列的头指针信息的对应关系,第二状态表征入队队列未成链;将入队队列的成链状态信息更改为第一状态;将入队队列中的总报文数和入队队列中的总报文长度分别存储至队列总报数表项和队列总报文长度表项,并将第一数据表中的入队队列的状态信息设置为第一预设数值,其中,第一预设数值表征入队队列非空,第三表项中包括队列的序号和队列的头指针信息的对应关系。
具体地,首先在通过智能网卡处理待处理的数据流之前,会进行初始化操作,主要包括地址空闲链表初始化以及将智能网卡中存储的所有的表项初始化为“0”。
地址空闲链表初始化包括:将第二缓存模块的内存地址按顺序链表的形式组建为地址空闲链表。初始化时,第二缓存模块的所有的内存地址均可使用,即地址空闲链表的尾指针和地址空闲链表的表头指针之间链起了第二缓存模块全部内存地址;同时启动链表额度保护机制,即对第二缓存模块中内存储的信息报文的总个数进行实时统计,在超过第二缓存模块的存储阈值时,触发丢包操作。
因此,根据地址空闲链表的头指针得到第一目标信息报文的存储地址,根据存储地址将第一目标信息报文存储在第二缓存模块中。根据入队队列的序号从第一表项中确定入队队列的成链状态信息。成链状态信息包括第一状态和第二状态,第一状态表征入队队列已成链,即入队队列已存有之前的信息报文;第二状态表征入队队列未成链,即入队队列没有信息报文。需要说明的是,这里的第一表项包括所有队列的成链状态信息,既包括virtio业务的队列,也包括非virtio业务的队列。
在入队队列的成链状态信息为第一状态时,入队队列已成链,遵循链表头出尾进的原则,将地址空闲链表的头指针赋值给入队队列的尾指针,并将入队队列的尾指针存储至第二表项中,对应图4中的入队链表操作。
在入队队列的成链状态信息为第二状态时,入队队列未成链,入队队列的头指针和入队队列的尾指针是一致的,所以将地址空闲链表的头指针分别赋值给入队队列的头指针和入队队列的尾指针,并将入队队列的头指针存储至第三表项中,将入队队列的尾指针存储至第二表项中。同时将入队队列的成链状态信息更改为第一状态。
最后,如图4中的入队统计操作:将入队队列中的总报文数和入队队列中的总报文长度分别存储至队列总报数表项和队列总报文长度表项,便于后续出队操作时,确定队列中的报文的相关信息。再将第一数据表中的入队队列的状态信息设置为第一预设数值,第一数据表中的队列的状态信息包括第一预设数值(例如,“1”)和下述的第七预设数值(例如,“0”)。第一预设数值表征队列非空,第七预设数值表征队列为空。这里的第一数据表用于实现后续的通过第二预设调度算法的第二级调度。
综上所述,通过上述步骤,有助于后续快速得到第一目标信息报文的存储地址,以提高发送数据报文的效率。
如何依据第二预设算法实现对目标业务类型下的多个队列的第二级调度是至关重要的,所以在本发明实施例一提供的队列的调度方法中对通过第二预设调度算法对目标业务类型下的多个队列进行第二级调度,得到出队队列进行了进一步地限定:获取第一数据表、第二数据表和第三数据表,其中,第二数据表中包括队列的序号和队列的流量反馈控制状态信息的对应关系,第三数据表由多个队列组中每个队列组的组号和多个队列组中每个队列组的流量限速状态信息组成,队列组由多个队列组成;依据第一数据表、第二数据表和第三数据表,通过队列的优先级对目标业务类型下的多个队列进行第一层调度,得到目标优先级和目标优先级下的多个队列,其中,队列的优先级由虚拟队列的优先级确定,目标业务类型下的多个队列对应不同的优先级;依据第一数据表、第二数据表和第三数据表,通过队列组的组号对所述目标优先级下的多个队列进行第二层调度,得到目标队列组和所述目标队列组下的多个队列,其中,目标优先级下的多个队列对应不同的队列组;依据第一数据表和第二数据表,通过队列对应的虚拟队列的ID对目标队列组下的多个队列进行第三层调度,得到出队队列,其中,出队队列在第一数据表中的状态信息为第一预设数值,出队队列在第二数据表中的流量反馈控制状态信息为第二预设数值,出队队列对应的队列组在第三数据表中的流量限速状态信息为第三预设数值,第一预设数值表征出队队列非空,第二预设数值表征出队队列未被流量反馈控制,第三预设数值表征出队队列对应的队列组未被流量限速。
具体地,第一数据表包括每个队列的状态信息,第二数据表包括每个队列的流量反馈控制状态信息,第三数据表包括每个队列组的流量限速状态信息。
需要说明的是,第一数据表中可以是bitmap表,分为三层,第一层为优先级层,即多个优先级;第二层为队列组层,即多个队列组;第三层为队列层,即多个队列。第二数据表同样可以是bitmap表,与第一数据表保持一致。第三数据表也可以是bitmap表,分为两层,一层为优先级层,即多个优先级;第二层为队列组层。在进行队列调度时,需要确保调度出的队列非空、未被流量反馈控制以及对应的队列组未被流量限速,即出队队列在第一数据表中的状态信息为第一预设数值(例如,“1”),出队队列在第二数据表中的流量反馈控制状态信息为第二预设数值(例如,“1”),出队队列对应的队列组在第三数据表中的流量限速状态信息为第三预设数值(例如,“1”)。所以获取第一数据表、第二数据表和第三数据表。
首先,如图5所示,利用第一数据表、第二数据表和第三数据表的第一层,通过队列的优先级对目标业务类型下的多个队列进行第一层调度,得到目标优先级和目标优先级下的多个队列;
其次,利用第一数据表、第二数据表和第三数据表的第二层,通过队列组的组号对目标优先级下的多个队列进行第二层调度,得到目标队列组和目标队列组下的多个队列;
最后,利用第一数据表和第二数据表的第三层,通过队列对应的虚拟队列的ID对目标队列组下的多个队列进行第三层调度,得到出队队列。
通过上述步骤,通过队列的优先级、队列组的组号和虚拟队列的ID依次进行三个层面的调度,最终确定出队队列,提高了队列的调度的合理性,也保证后续重要数据包的交互的效率。
在本发明实施例一提供的队列的调度方法中,采用以下步骤对出队队列中的信息报文执行出队操作包括:依据出队队列的序号,从第三表项中读取出队队列的头指针信息,其中,第三表项中包括队列的序号和队列的头指针信息的对应关系;依据头指针信息,从第二缓存模块中获取第二目标信息报文;依据第二目标信息报文,从第一缓存模块中获取第二目标数据报文;对第二目标数据报文进行IO虚拟化处理,得到处理后的第二目标数据报文,并将处理后的第二目标数据报文发送至目标服务器。
具体地,根据上述调度出的出队队列的队号,从第三表项中得到出队队列的头指针信息;根据出队队列的头指针信息,从第二缓存模块中得到第二目标信息报文;将第二目标信息报文发送至第一缓存模块,以进行第二目标数据报文的提取。在得到第二目标数据报文之后,对第二目标数据报文进行IO虚拟化处理,得到处理后的第二目标数据报文。进行IO虚拟化处理是为了第二目标数据报文能够发送给目标服务器中的虚拟队列。最后将将处理后的第二目标数据报文发送至目标服务器中的虚拟队列。
通过上述步骤,保证将第二目标数据报文准确发送至目标服务器中的虚拟队列,提高数据交互的效率。
为了避发送的数据报文过多,超过CPU下发的可处理报文总长度,从而导致的数据包丢失的现象,在本发明实施例一提供的队列的调度方法中,采用以下步骤对队列进行流量反馈控制:获取目标服务器提供的可处理报文总长度,并依据第二目标信息报文中的报文长度和可处理报文总长度进行计算,得到出队队列的剩余可处理报文长度;若出队队列的剩余可处理报文长度小于预设报文长度,则将第二数据表中出队队列的流量反馈控制状态信息设置为第四预设数值,其中,第四预设数值表征出队队列被流量反馈控制。
具体地,在每次出队队列出包后都会进行以下计算:获取目标服务器提供的可处理报文总长度,并根据第二目标信息报文中的报文长度(即第二目标数据报文的长度)和可处理报文总长度进行计算,得到出队队列的剩余可处理报文长度。若出队队列的剩余可处理报文长度小于预设报文长度,则将第二数据表中出队队列的流量反馈控制状态信息设置为第四预设数值(例如,“0”),即出队队列被流量反馈控制,不可以再进行出包操作。
在一可选的实施例中,可以采用下述方法计算得到出队队列的剩余可处理报文长度:一般情况下目标服务器提供的可处理报文总长度是以额度的形式进行下发的,一个free_buf长度为一个额度,也就是说一个数据报文可能占用多个额度,采用以下公式计算第二目标数据报文的占用额度:T=current_pkt_len/free_buf,其中,current_pkt_len表示第二目标数据报文的长度;则出队队列的剩余可处理报文长度为:Z=X-T=X-current_pkt_len/free_buf;其中,X表示目标服务器提供的可处理报文总额度,Z表示剩余可处理报文额度。Y=max_pkt_len/free_buf,其中,Y是上述的预设报文长度,max_pkt_len为出队队列中最大的数据报文的长度,当Z小于Y时,则将第二数据表中出队队列的流量反馈控制状态信息设置为第四预设数值(例如,“0”)。这里是为了避免在下一次调度出现最大的数据报文时,不能将最大的数据报文发送出去。当然在目标服务器处理完第二目标数据报文时,会下发新的额度,同时也会对第二数据表执行刷新工作。
综上所述,通过上述的流量反馈控制可以有效避免出现由于发送的数据报文过多,超过CPU下发的可处理报文总长度,从而导致的数据包丢失的现象。
在实际的应用的过程中,由于客户购买的带宽是不一样的,所以在本发明实施例一提供的队列的调度方法中,通过以下步骤实现流量限速控制,以便更好的提供服务:确定出队队列对应的队列组的剩余流量限速阈值;判断第二目标信息报文中的报文长度是否高于剩余流量限速阈值;若第二目标信息报文中的报文长度高于剩余流量限速阈值,则将第三数据表中出队队列对应的队列组的流量限速状态信息设置为第五预设数值,其中,第五预设数值表征出队队列对应的队列组被流量限速。
具体地,在每次出队队列出包后都会进行以下的流量限速计算,由客户购买的实际带宽,确定每个队列组的流量限速阈值,每一次出数据报文时,对每个队列组的流量限速阈值进行递减,直至数据报文的长度超出了队列组的剩余流量限速阈值。具体地包括以下步骤:获得出队队列对应的队列组的剩余流量限速阈值;当第二目标信息报文中的报文长度高于剩余流量限速阈值时,则将第三数据表中出队队列对应的队列组的流量限速状态信息设置为第五预设数值(例如,“0”),其中,第五预设数值表征出队队列对应的队列组被流量限速。当出队队列对应的队列组被流量控制时,那么不可以再对该队列组中的所有的队列执行出队操作。
综上所述,根据每个队列组的流量限速阈值对队列组进行流量限速,能够有效提高服务质量。
在现有技术中,每一次向vring队列上送数据包时,都需要向目标服务器发送中断信号,持续处理中断信号,需要CPU频繁进行响应,严重影响CPU性能,造成客户可感知的业务抖动。在本发明实施例一提供的队列的调度方法中,为了提高CPU性能,采用以下方式将处理后的第二目标数据报文发送至目标服务器:依据第一数据表、第二数据表、第三数据表和预设的可发送的最大报文数,确定出队队列的聚合标志信息;若出队队列的聚合标志信息为第六预设数值,则发送中断指令发送至目标服务器和将处理后的第二目标数据报文发送至目标服务器中的虚拟队列,其中,中断指令用于指示目标服务器从虚拟队列中读取目标数据;若出队队列的聚合标志信息不为第六预设数值,则将处理后的第二目标数据报文发送至目标服务器中的虚拟队列。
具体地,在发送将第二目标数据报文发送给目标服务器时,通过第一数据表、第二数据表、第三数据表和预设的可发送的最大报文数,确定出队队列的聚合标志信息,利用聚合标志信息确定是否发中断指令给目标服务器。出队队列的聚合标志信息为第六预设数值(例如,“1”),则发送中断指令发送至目标服务器和将处理后的第二目标数据报文发送至目标服务器中的虚拟队列。
如果出队队列在第一数据表中的状态信息为第七预设数值(即出队队列为空),或者,出队队列在第二数据表中的流量反馈控制状态信息为第四预设数值(即出队队列被流量反馈控制),或者,出队队列对应的队列组在第三数据表中的流量限速状态信息为第五预设数值(即出队队列对应的队列组被流量限制),或者,已发送的数据报文数等于可发送的最大报文数(例如,最大报文数为16个),则对应的聚合标志信息为第六预设数值。如果不满足上述条件,则对应的聚合标志信息不是第六预设数值(例如,“0”)。
vring虚拟队列,是连接云计算客户机操作系统中virtio设备前端驱动和智能网卡后端驱动的实际数据链路,vring虚拟队列主要由描述符列表desc table,可用环表avail ring和已用环表used ring组成,服务器会在内存中对每条vring的描述符列表desctable,可用环表avail ring和已用环表used ring划分出相应的存储空间。desc table指向实际要传输的数据,avail ring和used ring指向的是desc table,分别用来标记前端和后端驱动对desc table中描述符的处理进度。目标服务器CPU端维护各vring的avail ring尾指针和used ring的头指针,智能网卡端维护各vring的avail ring头指针和used ring的尾指针。
在一可选的实施例中,得到处理后的第二目标数据报文后,根据处理后的第二目标数据报文的vring_id(即上述的虚拟队列ID),确定对应的vring队列;根据该vring对应的avail_ring中头指针和尾指针判断是否有充足的存储空间,若存储空间不足则丢包;若存储空间充足,则从该vring对应的avail_ring的头指针地址中获取desc index进而从desc table中读取描述符,并解析描述符中的内存地址,将处理后的第二目标数据报文通过DMA(Direct Memory Access,直接存储器访问)写到描述符中获取的内存地址中。然后将下一个avail_ring的指针信息更新为avail ring头指针,同时更新used ring尾指针。
中断指令,当聚合标志信息为“1”时,将该vring的avail ring头指针、used ring尾指针和desc_table链表更新状态,通过DMA刷新到目标服务器内存中对应vring的位置,并发送中断指令给目标服务器CPU。
目标服务器CPU,根据中断指令,检查vring的used ring的头指针和尾指针信息,判断当前待读出的描述符,根据待读出的描述符将该vring下的处理后的第二目标数据报文迁移至网络协议栈的内存地址进一步处理,并释放这部分vring的数据报文的内存占用空间,释放used ring至avail ring,将avail ring的尾指针更新至智能网卡的寄存器中。
综上所述,通过聚合标志信息来确定是否发中断信号至目标服务器,而不需要vring的每次数据上送都发送中断信号,摊薄CPU中断响应成本,能够有效提升CPU性能。
队列的调度的并非一次就完成的,而是在不断的进行队列调度和数据出包,在本发明实施例一提供的队列的调度方法中,为了提高队列调度的效率,下一次进行队列调度时采用以下技术手段进行处理:依据第一预设调度算法对多个待调度的队列进行第一级调度,若再次得到目标业务类型和目标业务类型下的多个队列,则判断是否触发第二预设调度算法对应的队列切换规则;若未触发第二预设调度算法对应的队列切换规则,则出队队列作为当前出队队列;若触发第二预设调度算法对应的队列切换规则,则依据第二预设调度算法对目标业务类型下的多个队列进行调度,得到当前出队队列。依据第一数据表、第二数据表、第三数据表和预设的可发送的最大报文数判断是否触发第二预设调度算法对应的队列切换规则;若出队队列在第一数据表中的状态信息为第七预设数值,或者,出队队列在第二数据表中的流量反馈控制状态信息为第四预设数值,或者,出队队列对应的队列组在第三数据表中的流量限速状态信息为第五预设数值,或者,已发送的数据报文数等于可发送的最大报文数,则触发第二预设调度算法对应的队列切换规则,其中,第七预设数值表征出队队列为空。
具体地,在下一次进行队列调度时,如果第一级调度的结果仍然是目标业务类型和目标业务类型下的多个队列时,则确定是否触发队列切换规则。在没有触发队列切换规则时,则直接将本次调度出的出队队列作为当前出队队列,不需要再通过第二预设调度算法进行调度。那么如果触发队列切换规则,则利用第二预设调度算法对目标业务类型下的多个队列进行调度,得到当前出队队列。
如果出队队列在第一数据表中的状态信息为第七预设数值(即出队队列为空),或者,出队队列在第二数据表中的流量反馈控制状态信息为第四预设数值(即出队队列被流量反馈控制),或者,出队队列对应的队列组在第三数据表中的流量限速状态信息为第五预设数值(即出队队列对应的队列组被流量限制),或者,已发送的数据报文数等于可发送的最大报文数(例如,最大报文数为16个),则触发队列切换规则,如图5所示。
通过上述步骤,能够有效提高队列的调度效率,进而能够提高智能网卡与虚拟设备的数据交互效率。
在实际应用过程中,若某个虚拟设备VM或CPU发生异常,那么对应的智能网卡中的目标队列可能在第二数据表中的流量反馈控制状态信息一直维持为第四预设数值(即目标队列被流量反馈控制)。这样会占用缓存,影响其他队列的状态,所以在本发明实施例一提供的队列的调度方法中,若检测在预设时间段内目标队列在第二数据表中的流量反馈控制状态信息维持为第四预设数值,则对目标队列执行丢包操作。
通过上述步骤,能够有效提高对智能网卡的缓存的使用率。
在本发明实施例一提供的队列的调度方法中,在依据头指针信息,从第二缓存模块中获取第二目标信息报文之前,还包括:获取出队队列的总报文数;若出队队列的总报文数大于第八预设数值,则获取出队队列头指针的下一跳指针信息,并将下一跳指针信息作为出队队列的当前的头指针;将当前的头指针存储至第二表项中;若出队队列的总报文数等于第八预设数值,将第一表项中出队队列的成链状态信息设置为第二状态。
在执行出队操作时,是会影响出队队列的头指针和出队队列的成链状态信息。所以,在从第二缓存模块中获取第二目标信息报文之前,确定当前出队队列的总报文数,如果总报文数大于第八预设数值(例如,“1”),获取出队队列头指针的下一跳指针信息,并将下一跳指针信息作为出队队列的当前的头指针,并将当前的头指针存储至第二表项中。这是为了下一次能够通过头指针准确获取下一个信息报文。如果出队队列的总报文数等于第八预设数值(例如,“1”)时,说明依据头指针信息,从第二缓存模块中获取第二目标信息报文之后,出队队列为空,所以需要将第一表项中出队队列的成链状态信息设置为第二状态。
需要说明的是,在执行出队操作时,也需要对地址空闲链表进行更新处理,即将第二目标信息报文使用的内存地址再释放到地址空闲链表中。
在一可选的实施例中,可以采用如图6所示的流程图实现队列调度和出队操作。通过第一预设调度算法确定目标业务类型和目标业务类型下的多个队列,然后利用第二预设调度算法从队列的优先级、队列组的组号和虚拟队列的ID依次进行三个层面的调度,以确定出队队列,在确定出队队列后执行出队操作,出队操作主要包括出队链表操作和出队统计操作。通过上述步骤能够有效提高队列的调度效率,进而能够提高智能网卡与虚拟设备的数据交互效率。
在本发明实施例一提供的光传输设备的配置方法中,通过确定多个待调度的队列,其中,多个待调度的队列对应不同的业务类型;依据第一预设调度算法对多个待调度的队列进行第一级调度,确定目标业务类型和目标业务类型下的多个队列;通过第二预设调度算法对目标业务类型下的多个队列进行第二级调度,得到出队队列;对出队队列中的报文信息执行出队操作,解决了相关技术中通过数据的业务类别和优先级进行队列调度,导致队列调度不合理的技术问题。通过第一预设调度算法确定目标业务类型和目标业务类型下的多个队列,然后利用第二预设调度算法对目标业务类型下的多个队列进行第二级调度,得到出队队列,最后对出队队列中的报文信息执行出队操作,通过上述的第一预设调度算法和第二预设调度算法能够更加合理的对队列进行调度,从而实现更加合理地对队列中的数据进行调度,进而达到了提高队列调度合理性的效果。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的队列的调度方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述队列的调度方法的队列的调度装置,如图7所示,该装置包括:第一确定单元701,第一调度单元702,第二调度单元703和执行单元704。
第一确定单元701,用于确定多个待调度的队列,其中,多个待调度的队列对应不同的业务类型。
第一调度单元702,用于依据第一预设调度算法对多个待调度的队列进行第一级调度,确定目标业务类型和目标业务类型下的多个队列。
第二调度单元703,用于通过第二预设调度算法对目标业务类型下的多个队列进行第二级调度,得到出队队列,其中,第二预设调度算法至少通过队列的优先级、队列组的组号和队列对应的虚拟队列的ID进行第二级调度,队列组由多个队列组成,虚拟队列由目标服务器中目标对象对应的虚拟IO设备和CPU内核数量确定。
执行单元704,用于对出队队列中的报文信息执行出队操作。
在发明实施例二提供的队列的调度装置中,通过第一确定单元701确定多个待调度的队列,其中,多个待调度的队列对应不同的业务类型;第一调度单元702依据第一预设调度算法对多个待调度的队列进行第一级调度,确定目标业务类型和目标业务类型下的多个队列;第二调度单元703通过第二预设调度算法对目标业务类型下的多个队列进行第二级调度,得到出队队列;执行单元704,用于对出队队列中的报文信息执行出队操作,解决了相关技术中仅仅通过数据的业务类别和优先级进行队列调度,导致队列调度不合理的技术问题。通过第一预设调度算法确定目标业务类型和目标业务类型下的多个队列,然后利用第二预设调度算法对目标业务类型下的多个队列进行第二级调度,得到出队队列,最后对出队队列中的报文信息执行出队操作,通过上述的第一预设调度算法和第二预设调度算法能够更加合理的对队列进行调度,从而实现更加合理地对队列中的数据进行调度,进而达到了提高队列调度合理性的效果。
可选地,根据本发明实施例二提供的队列的调度装置中,该装置还包括:第一获取单元,用于在确定待调度的多个队列之前,获取待处理的数据流;第一处理单元,用于对待处理的数据流进行报文解析处理,得到第一目标数据报文和第一目标信息报文,并将第一目标数据报文存储在第一缓存模块中,其中,第一目标信息报文包括第一目标数据报文的属性信息;第二确定单元,用于若待处理的数据流的业务类型为目标业务类型,则依据第一目标信息报文中的目标业务类型、虚拟队列的优先级、虚拟队列的ID和虚拟队列组,确定入队队列,其中,虚拟队列用于接收第一目标数据报文,虚拟队列组由多个虚拟队列组成;第三确定单元,用于确定第一目标信息报文中的报文长度和入队队列中剩余的存储长度;第二处理单元,用于若第一目标信息报文中的报文长度小于入队队列中剩余的存储长度,则对第一目标信息报文执行入队操作;第三处理单元,用于若第一目标信息报文中的报文长度大于入队队列中剩余的存储长度,则对第一目标信息报文执行丢包操作。
可选地,根据本发明实施例二提供的队列的调度装置中,第二处理单元包括:第一存储模块,用于依据地址空闲链表的头指针确定第一目标信息报文的存储地址,并依据存储地址,将第一目标信息报文存储至第二缓存模块中,其中,地址空闲链表是由第二缓存模块的内存地址组建的;第一获取模块,用于依据入队队列的序号,从第一表项中获取入队队列的成链状态信息,其中,第一表项中包括队列的序号和队列的成链状态信息的对应关系;第二存储模块,用于若入队队列的成链状态信息为第一状态,将地址空闲链表的头指针赋值给入队队列的尾指针,并将入队队列的尾指针存储至第二表项中,其中,第二表项由多个队列中每个队列的序号和多个队列中每个队列的尾指针信息组成,第一状态表征入队队列已成链。
可选地,根据本发明实施例二提供的队列的调度装置中,第二调度单元703包括:第二获取模块,用于获取第一数据表、第二数据表和第三数据表,其中,第二数据表中包括队列的序号和队列的流量反馈控制状态信息的对应关系,第三数据表由多个队列组中每个队列组的组号和多个队列组中每个队列组的流量限速状态信息组成,队列组由多个队列组成;第一调度模块,用于依据第一数据表、第二数据表和第三数据表,通过队列的优先级对目标业务类型下的多个队列进行第一层调度,得到目标优先级和目标优先级下的多个队列,其中,队列的优先级由虚拟队列的优先级确定,目标业务类型下的多个队列对应不同的优先级;第二调度模块,用于依据第一数据表、第二数据表和第三数据表,通过队列组的组号对所述目标优先级下的多个队列进行第二层调度,得到目标队列组和所述目标队列组下的多个队列,其中,目标优先级下的多个队列对应不同的队列组;第三调度模块,用于依据第一数据表和第二数据表,通过队列对应的虚拟队列的ID对目标队列组下的多个队列进行第三层调度,得到出队队列,其中,出队队列在第一数据表中的状态信息为第一预设数值,出队队列在第二数据表中的流量反馈控制状态信息为第二预设数值,出队队列对应的队列组在第三数据表中的流量限速状态信息为第三预设数值,第二预设数值表征出队队列未被流量反馈控制,第三预设数值表征出队队列对应的队列组未被流量限速。
可选地,根据本发明实施例二提供的队列的调度装置中,执行单元704包括:读取模块,用于依据出队队列的序号,从第三表项中读取出队队列的头指针信息,其中,第三表项中包括队列的序号和队列的头指针信息的对应关系;第三获取模块,用于依据头指针信息,从第二缓存模块中获取第二目标信息报文;第四获取模块,用于依据第二目标信息报文,从第一缓存模块中获取第二目标数据报文;处理模块,用于对第二目标数据报文进行IO虚拟化处理,得到处理后的第二目标数据报文,并将处理后的第二目标数据报文发送至目标服务器。
可选地,根据本发明实施例二提供的队列的调度装置中,该装置还包括:第二获取单元,用于在依据头指针信息,从第二缓存模块中获取第二目标信息报文之后,获取目标服务器提供的可处理报文总长度,并依据第二目标信息报文中的报文长度和可处理报文总长度进行计算,得到出队队列的剩余可处理报文长度;第一设置单元,用于若出队队列的剩余可处理报文长度小于预设报文长度,则将第二数据表中出队队列的流量反馈控制状态信息设置为第四预设数值,其中,第四预设数值表征出队队列被流量反馈控制。
可选地,根据本发明实施例二提供的队列的调度装置中,该装置还包括:第三获取单元,用于在依据头指针信息,从第二缓存模块中获取第二目标信息报文之后,确定出队队列对应的队列组的剩余流量限速阈值;判断单元,用于判断第二目标信息报文中的报文长度是否高于剩余流量限速阈值;第二设置单元,用于若第二目标信息报文中的报文长度高于剩余流量限速阈值,则将第三数据表中出队队列对应的队列组的流量限速状态信息设置为第五预设数值,其中,第五预设数值表征出队队列对应的队列组被流量限速。
可选地,根据本发明实施例二提供的队列的调度装置中,处理模块包括:确定子模块,用于依据第一数据表、第二数据表、第三数据表和预设的可发送的最大报文数,确定出队队列的聚合标志信息;第一发送子模块,用于若出队队列的聚合标志信息为第六预设数值,则发送中断指令发送至目标服务器和将处理后的第二目标数据报文发送至目标服务器中的虚拟队列,其中,中断指令用于指示目标服务器从虚拟队列中读取目标数据;第二发送子模块,用于若出队队列的聚合标志信息不为第六预设数值,则将处理后的第二目标数据报文发送至目标服务器中的虚拟队列。
可选地,根据本发明实施例二提供的队列的调度装置中,该装置还包括:第三调度单元,用于在对出队队列中的信息报文执行出队操作之后,在下一次进行队列调度的情况下,依据第一预设调度算法对多个待调度的队列进行第一级调度,若再次得到目标业务类型和目标业务类型下的多个队列,则判断是否触发第二预设调度算法对应的队列切换规则;第四确定单元,用于若未触发第二预设调度算法对应的队列切换规则,则出队队列作为当前出队队列;第四调度单元,用于若触发第二预设调度算法对应的队列切换规则,则依据第二预设调度算法对目标业务类型下的多个队列进行调度,得到当前出队队列。
可选地,根据本发明实施例二提供的队列的调度装置中,第三调度单元包括:判断模块,用于依据第一数据表、第二数据表、第三数据表和预设的可发送的最大报文数判断是否触发第二预设调度算法对应的队列切换规则;触发模块,用于若出队队列在第一数据表中的状态信息为第七预设数值,或者,出队队列在第二数据表中的流量反馈控制状态信息为第四预设数值,或者,出队队列对应的队列组在第三数据表中的流量限速状态信息为第五预设数值,或者,已发送的数据报文数等于可发送的最大报文数,则触发第二预设调度算法对应的队列切换规则,其中,第七预设数值表征出队队列为空。
可选地,根据本发明实施例二提供的队列的调度装置中,该装置还包括:第四获取单元,用于在依据头指针信息,从第二缓存模块中获取第二目标信息报文之前,获取出队队列的总报文数;第五获取单元,用于若出队队列的总报文数大于第八预设数值,则获取出队队列头指针的下一跳指针信息,并将下一跳指针信息作为出队队列的当前的头指针;将当前的头指针存储至第二表项中;第三设置单元,用于若出队队列的总报文数等于第八预设数值,将第一表项中出队队列的成链状态信息设置为第二状态。
此处需要说明的是,上述的第一确定单元701,第一调度单元702,第二调度单元703和执行单元704对应于实施例1中的步骤S201至步骤S204,四个单元与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
实施例3
本发明的实施例还提供一种队列的调度系统,如图8所示,该调度系统包括:智能网卡和服务器。智能网卡中包括:网络报文处理模块,第一缓存模块,报文调度管理模块和虚拟化处理模块。服务器中包括对多个虚拟设备,以及多个虚拟设备对应的多个虚拟队列和虚拟队列组。
网络报文处理模块用于对待处理的数据流处理,得到信息报文和数据报文。第一缓存模块用于存储数据报文。
报文调度管理模块用于对信息报文进行处理,报文调度管理模块包括:初始化模块、信息报文接收模块、报文老化处理模块、队列调度模块。信息报文接收模块用于确定信息报文的入队队列和入队操作。队列调度模块用于通过第一预设调度算法和第二预设调度算法对队列进行调度得到出队队列和出队操作。报文老化处理模块用于若检测在预设时间段内目标队列在第二数据表中的流量反馈控制状态信息维持为第四预设数值,则对目标队列执行丢包操作。虚拟化处理模块用于对数据报文执行IO虚拟化处理以及将处理后的数据报文发送至虚拟队列。
综上所述,通过队列的调度系统解决了相关技术中仅仅通过数据的业务类别和优先级进行队列调度,导致队列调度不合理的技术问题。通过第一预设调度算法确定目标业务类型和目标业务类型下的多个队列,然后利用第二预设调度算法对目标业务类型下的多个队列进行第二级调度,得到出队队列,最后对出队队列中的报文信息执行出队操作,通过上述的第一预设调度算法和第二预设调度算法能够更加合理的对队列进行调度,从而实现更加合理地对队列中的数据进行调度,进而达到了提高队列调度合理性的效果。
本发明的实施例还提供一种电子设备,设备包括处理器、存储器即存在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:确定多个待调度的队列,其中,多个待调度的队列对应不同的业务类型;依据第一预设调度算法对多个待调度的队列进行第一级调度,确定目标业务类型和目标业务类型下的多个队列;通过第二预设调度算法对目标业务类型下的多个队列进行第二级调度,得到出队队列,其中,第二预设调度算法至少通过队列的优先级、队列组的组号和队列对应的虚拟队列的ID进行第二级调度,队列组由多个队列组成,虚拟队列由目标服务器中目标对象对应的虚拟IO设备和CPU内核数量确定;对出队队列中的报文信息执行出队操作。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (13)

1.一种队列的调度方法,其特征在于,包括:
确定多个待调度的队列,其中,所述多个待调度的队列对应不同的业务类型;
依据第一预设调度算法对所述多个待调度的队列进行第一级调度,确定目标业务类型和所述目标业务类型下的多个队列;
通过第二预设调度算法对所述目标业务类型下的多个队列进行第二级调度,得到出队队列,其中,所述第二预设调度算法至少通过队列的优先级、队列组的组号和队列对应的虚拟队列的ID进行第二级调度,所述队列组由多个队列组成,所述虚拟队列由目标服务器中目标对象对应的虚拟IO设备和CPU内核数量确定;
对所述出队队列中的报文信息执行出队操作;
其中,通过第二预设调度算法对所述目标业务类型下的多个队列进行第二级调度,得到出队队列包括:
获取第一数据表、第二数据表和第三数据表,其中,所述第一数据表中包括队列的序号和队列的状态信息的对应关系,所述状态信息用于表征所述队列是否非空,所述第二数据表中包括队列的序号和队列的流量反馈控制状态信息的对应关系,所述第三数据表中包括队列组的组号和队列组的流量限速状态信息的对应关系;
依据所述第一数据表、所述第二数据表和所述第三数据表,通过所述第二预设调度算法从队列的优先级、队列组的组号和虚拟队列的ID依次进行三个层面的调度,确定所述出队队列。
2.根据权利要求1所述的方法,其特征在于,在确定待调度的多个队列之前,所述方法还包括:
获取待处理的数据流;
对所述待处理的数据流进行报文解析处理,得到第一目标数据报文和第一目标信息报文,并将所述第一目标数据报文存储在第一缓存模块中,其中,所述第一目标信息报文包括所述第一目标数据报文的属性信息;
若所述待处理的数据流的业务类型为所述目标业务类型,则依据所述第一目标信息报文中的目标业务类型、虚拟队列的优先级、虚拟队列的ID和虚拟队列组,确定入队队列,其中,所述虚拟队列用于接收所述第一目标数据报文,所述虚拟队列组由多个虚拟队列组成;
确定所述第一目标信息报文中的报文长度和所述入队队列中剩余的存储长度;
若所述第一目标信息报文中的报文长度小于所述入队队列中剩余的存储长度,则对所述第一目标信息报文执行入队操作;
若所述第一目标信息报文中的报文长度大于所述入队队列中剩余的存储长度,则对所述第一目标信息报文执行丢包操作。
3.根据权利要求2所述的方法,其特征在于,若所述第一目标信息报文中的报文长度小于所述入队队列中剩余的存储长度,则对所述第一目标信息报文执行入队操作包括:
依据地址空闲链表的头指针确定所述第一目标信息报文的存储地址,并依据所述存储地址,将所述第一目标信息报文存储至第二缓存模块中,其中,所述地址空闲链表是由所述第二缓存模块的内存地址组建的;
依据所述入队队列的序号,从第一表项中获取所述入队队列的成链状态信息,其中,所述第一表项中包括队列的序号和队列的成链状态信息的对应关系;
若所述入队队列的成链状态信息为第一状态,将所述地址空闲链表的头指针赋值给所述入队队列的尾指针,并将所述入队队列的尾指针存储至第二表项中,其中,所述第二表项中包括队列的序号和队列的尾指针信息的对应关系,所述第一状态表征所述入队队列已成链。
4.根据权利要求3所述的方法,其特征在于,依据所述第一数据表、所述第二数据表和所述第三数据表,通过所述第二预设调度算法从队列的优先级、队列组的组号和虚拟队列的ID依次进行三个层面的调度,确定所述出队队列包括:
依据所述第一数据表、所述第二数据表和所述第三数据表,通过队列的优先级对所述目标业务类型下的多个队列进行第一层调度,得到目标优先级和所述目标优先级下的多个队列,其中,所述队列的优先级由所述虚拟队列的优先级确定,所述目标业务类型下的多个队列对应不同的优先级;
依据所述第一数据表、所述第二数据表和所述第三数据表,通过所述队列组的组号对所述目标优先级下的多个队列进行第二层调度,得到目标队列组和所述目标队列组下的多个队列,其中,所述目标优先级下的多个队列对应不同的队列组;
依据所述第一数据表和所述第二数据表,通过所述队列对应的虚拟队列的ID对所述目标队列组下的多个队列进行第三层调度,得到所述出队队列,其中,所述出队队列在所述第一数据表中的状态信息为第一预设数值,所述出队队列在第二数据表中的流量反馈控制状态信息为第二预设数值,所述出队队列对应的队列组在第三数据表中的流量限速状态信息为第三预设数值,所述第一预设数值表征所述出队队列非空,所述第二预设数值表征所述出队队列未被流量反馈控制,所述第三预设数值表征所述出队队列对应的队列组未被流量限速。
5.根据权利要求4所述的方法,其特征在于,对所述出队队列中的信息报文执行出队操作包括:
依据所述出队队列的序号,从第三表项中读取所述出队队列的头指针信息,其中,所述第三表项中包括队列的序号和队列的头指针信息的对应关系;
依据所述头指针信息,从所述第二缓存模块中获取第二目标信息报文;
依据所述第二目标信息报文,从所述第一缓存模块中获取第二目标数据报文;
对所述第二目标数据报文进行IO虚拟化处理,得到处理后的第二目标数据报文,并将所述处理后的第二目标数据报文发送至所述目标服务器。
6.根据权利要求5所述的方法,其特征在于,在依据所述头指针信息,从所述第二缓存模块中获取第二目标信息报文之后,所述方法还包括:
获取所述目标服务器提供的可处理报文总长度,并依据所述第二目标信息报文中的报文长度和所述可处理报文总长度进行计算,得到所述出队队列的剩余可处理报文长度;
若所述出队队列的剩余可处理报文长度小于预设报文长度,则将所述第二数据表中所述出队队列的流量反馈控制状态信息设置为第四预设数值,其中,所述第四预设数值表征所述出队队列被流量反馈控制。
7.根据权利要求6所述的方法,其特征在于,在依据所述头指针信息,从所述第二缓存模块中获取第二目标信息报文之后,所述方法还包括:
确定所述出队队列对应的队列组的剩余流量限速阈值;
判断所述第二目标信息报文中的报文长度是否高于所述剩余流量限速阈值;
若所述第二目标信息报文中的报文长度高于所述剩余流量限速阈值,则将所述第三数据表中所述出队队列对应的队列组的流量限速状态信息设置为第五预设数值,其中,所述第五预设数值表征所述出队队列对应的队列组被流量限速。
8.根据权利要求7所述的方法,其特征在于,将所述处理后的第二目标数据报文发送至所述目标服务器包括:
依据所述第一数据表、所述第二数据表、所述第三数据表和预设的可发送的最大报文数,确定所述出队队列的聚合标志信息;
若所述出队队列的聚合标志信息为第六预设数值,则发送中断指令发送至所述目标服务器和将所述处理后的第二目标数据报文发送至所述目标服务器中的虚拟队列,其中,所述中断指令用于指示所述目标服务器从所述虚拟队列中读取目标数据;
若所述出队队列的聚合标志信息不为所述第六预设数值,则将所述处理后的第二目标数据报文发送至所述目标服务器中的虚拟队列。
9.根据权利要求7所述的方法,其特征在于,在对所述出队队列中的信息报文执行出队操作之后,所述方法还包括:
在下一次进行队列调度的情况下,依据所述第一预设调度算法对所述多个待调度的队列进行第一级调度,若再次得到所述目标业务类型和所述目标业务类型下的多个队列,则判断是否触发所述第二预设调度算法对应的队列切换规则;
若未触发所述第二预设调度算法对应的队列切换规则,则所述出队队列作为当前出队队列;
若触发所述第二预设调度算法对应的队列切换规则,则依据所述第二预设调度算法对所述目标业务类型下的多个队列进行调度,得到当前出队队列。
10.根据权利要求9所述的方法,其特征在于,判断是否触发所述第二预设调度算法对应的队列切换规则包括:
依据所述第一数据表、所述第二数据表、所述第三数据表和预设的可发送的最大报文数判断是否触发所述第二预设调度算法对应的队列切换规则;
若所述出队队列在所述第一数据表中的状态信息为第七预设数值,或者,所述出队队列在所述第二数据表中的流量反馈控制状态信息为所述第四预设数值,或者,所述出队队列对应的队列组在所述第三数据表中的流量限速状态信息为所述第五预设数值,或者,已发送的数据报文数等于所述可发送的最大报文数,则触发所述第二预设调度算法对应的队列切换规则,其中,所述第七预设数值表征所述出队队列为空。
11.根据权利要求5所述的方法,其特征在于,在依据所述头指针信息,从所述第二缓存模块中获取第二目标信息报文之前,所述方法还包括:
获取所述出队队列的总报文数;
若所述出队队列的总报文数大于第八预设数值,则获取所述出队队列头指针的下一跳指针信息,并将所述下一跳指针信息作为所述出队队列的当前的头指针;将所述当前的头指针存储至所述第二表项中;
若所述出队队列的总报文数等于所述第八预设数值,将所述第一表项中所述出队队列的成链状态信息设置为第二状态,其中,所述第二状态表征所述出队队列未成链。
12.一种队列的调度装置,其特征在于,包括:
第一确定单元,用于确定多个待调度的队列,其中,所述多个待调度的队列对应不同的业务类型;
第一调度单元,用于依据第一预设调度算法对所述多个待调度的队列进行第一级调度,确定目标业务类型和所述目标业务类型下的多个队列;
第二调度单元,用于通过第二预设调度算法对所述目标业务类型下的多个队列进行第二级调度,得到出队队列,其中,所述第二预设调度算法至少通过队列的优先级、队列组的组号和队列对应的虚拟队列的ID进行第二级调度,所述队列组由多个队列组成,所述虚拟队列由目标服务器中目标对象对应的虚拟IO设备和CPU内核数量确定;
执行单元,用于对所述出队队列中的报文信息执行出队操作;
其中,所述第二调度单元包括:第二获取模块,用于获取第一数据表、第二数据表和第三数据表,其中,第二数据表中包括队列的序号和队列的流量反馈控制状态信息的对应关系,第三数据表由多个队列组中每个队列组的组号和多个队列组中每个队列组的流量限速状态信息组成,队列组由多个队列组成;依据所述第一数据表、所述第二数据表和所述第三数据表,通过所述第二预设调度算法从队列的优先级、队列组的组号和虚拟队列的ID依次进行三个层面的调度,确定所述出队队列。
13.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至11中任意一项所述的队列的调度方法。
CN202210893328.5A 2022-07-27 2022-07-27 队列的调度方法和装置及电子设备 Active CN115242726B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210893328.5A CN115242726B (zh) 2022-07-27 2022-07-27 队列的调度方法和装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210893328.5A CN115242726B (zh) 2022-07-27 2022-07-27 队列的调度方法和装置及电子设备

Publications (2)

Publication Number Publication Date
CN115242726A CN115242726A (zh) 2022-10-25
CN115242726B true CN115242726B (zh) 2024-03-01

Family

ID=83676627

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210893328.5A Active CN115242726B (zh) 2022-07-27 2022-07-27 队列的调度方法和装置及电子设备

Country Status (1)

Country Link
CN (1) CN115242726B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115629845B (zh) * 2022-12-14 2023-04-11 北京云豹创芯智能科技有限公司 Io数据的产生方法、装置、计算机设备和存储介质
CN116225665B (zh) * 2023-05-04 2023-08-08 井芯微电子技术(天津)有限公司 一种队列调度方法及装置

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7664115B1 (en) * 1999-04-30 2010-02-16 Alcatel-Lucent Canada, Inc. Method and apparatus for merging virtual connections
CN101741751A (zh) * 2010-02-09 2010-06-16 华为技术有限公司 流量整形调度方法、流量整形调度装置及路由设备
US7830889B1 (en) * 2003-02-06 2010-11-09 Juniper Networks, Inc. Systems for scheduling the transmission of data in a network device
CN102957629A (zh) * 2011-08-30 2013-03-06 华为技术有限公司 队列管理的方法和装置
WO2014173315A1 (en) * 2013-04-26 2014-10-30 Mediatek Inc. Packet output controller and method for dequeuing multiple packets from one scheduled output queue and/or using over- scheduling to schedule output queues
WO2015038485A1 (en) * 2013-09-13 2015-03-19 Microsoft Corporation Controlling data storage input/output requests
US9088507B1 (en) * 2012-03-19 2015-07-21 Marvell Israel (M.I.S.L) Ltd. Dummy queues and virtual queues in a network device
CN105162724A (zh) * 2015-07-30 2015-12-16 华为技术有限公司 一种数据入队与出队方法及队列管理单元
WO2016202092A1 (zh) * 2015-06-19 2016-12-22 中兴通讯股份有限公司 基于多层队列流控反压的传送方法及装置
CN107948094A (zh) * 2017-10-20 2018-04-20 西安电子科技大学 一种高速数据帧无冲突入队处理的装置及方法
WO2018107681A1 (zh) * 2016-12-13 2018-06-21 深圳市中兴微电子技术有限公司 一种队列操作中的处理方法、装置及计算机存储介质
CN109039953A (zh) * 2018-07-24 2018-12-18 新华三技术有限公司 带宽调度方法及装置
CN113890860A (zh) * 2021-11-18 2022-01-04 深圳大学 用于支持时延受限的数据交换的方法、设备及介质
CN114430591A (zh) * 2020-10-14 2022-05-03 华为技术有限公司 Wi-Fi芯片、Wi-Fi设备及队列调度方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040213264A1 (en) * 2003-04-25 2004-10-28 Nortel Networks Limited Service class and destination dominance traffic management
WO2014032960A1 (en) * 2012-08-29 2014-03-06 Universiteit Gent Method and device for scheduling data traffic
US9485188B2 (en) * 2013-02-01 2016-11-01 International Business Machines Corporation Virtual switching based flow control
CN104125167A (zh) * 2014-07-24 2014-10-29 海信集团有限公司 一种流量控制方法和装置

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7664115B1 (en) * 1999-04-30 2010-02-16 Alcatel-Lucent Canada, Inc. Method and apparatus for merging virtual connections
US7830889B1 (en) * 2003-02-06 2010-11-09 Juniper Networks, Inc. Systems for scheduling the transmission of data in a network device
CN101741751A (zh) * 2010-02-09 2010-06-16 华为技术有限公司 流量整形调度方法、流量整形调度装置及路由设备
CN102957629A (zh) * 2011-08-30 2013-03-06 华为技术有限公司 队列管理的方法和装置
US9088507B1 (en) * 2012-03-19 2015-07-21 Marvell Israel (M.I.S.L) Ltd. Dummy queues and virtual queues in a network device
WO2014173315A1 (en) * 2013-04-26 2014-10-30 Mediatek Inc. Packet output controller and method for dequeuing multiple packets from one scheduled output queue and/or using over- scheduling to schedule output queues
WO2015038485A1 (en) * 2013-09-13 2015-03-19 Microsoft Corporation Controlling data storage input/output requests
WO2016202092A1 (zh) * 2015-06-19 2016-12-22 中兴通讯股份有限公司 基于多层队列流控反压的传送方法及装置
CN105162724A (zh) * 2015-07-30 2015-12-16 华为技术有限公司 一种数据入队与出队方法及队列管理单元
WO2018107681A1 (zh) * 2016-12-13 2018-06-21 深圳市中兴微电子技术有限公司 一种队列操作中的处理方法、装置及计算机存储介质
CN107948094A (zh) * 2017-10-20 2018-04-20 西安电子科技大学 一种高速数据帧无冲突入队处理的装置及方法
CN109039953A (zh) * 2018-07-24 2018-12-18 新华三技术有限公司 带宽调度方法及装置
CN114430591A (zh) * 2020-10-14 2022-05-03 华为技术有限公司 Wi-Fi芯片、Wi-Fi设备及队列调度方法
CN113890860A (zh) * 2021-11-18 2022-01-04 深圳大学 用于支持时延受限的数据交换的方法、设备及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
队列长度动态加权公平调度算法在列车网络中的应用;杜辙;郭宗莲;岳丽全;;计算机应用研究(第S1期);全文 *

Also Published As

Publication number Publication date
CN115242726A (zh) 2022-10-25

Similar Documents

Publication Publication Date Title
CN115242726B (zh) 队列的调度方法和装置及电子设备
US10326713B2 (en) Data enqueuing method, data dequeuing method, and queue management circuit
US6453360B1 (en) High performance network interface
US6483804B1 (en) Method and apparatus for dynamic packet batching with a high performance network interface
US6356951B1 (en) System for parsing a packet for conformity with a predetermined protocol using mask and comparison values included in a parsing instruction
US6606301B1 (en) Method and apparatus for early random discard of packets
US6389468B1 (en) Method and apparatus for distributing network traffic processing on a multiprocessor computer
US6480489B1 (en) Method and apparatus for data re-assembly with a high performance network interface
US6650640B1 (en) Method and apparatus for managing a network flow in a high performance network interface
US11616738B2 (en) Packet processing method and related device
US11343360B2 (en) Packet aggregation and disaggregation method
CN113411262B (zh) 一种大型接收卸载功能的设置方法和装置
CN109962859A (zh) 一种报文调度方法及设备
CN111163018A (zh) 网络设备及其降低传输时延的方法
EP1163777A2 (en) Method and apparatus for identifying and classifying network traffic in a high performance network interface
CN117389766A (zh) 消息的发送方法及装置、存储介质及电子装置
CN113014627A (zh) 报文转发方法、装置、智能终端及计算机可读存储介质
WO2021208101A1 (zh) 一种有状态业务的处理方法及装置
CN116560809A (zh) 数据处理方法及装置、设备、介质
US20230216805A1 (en) Method of Managing Data Transmission for Ensuring Per-Flow Fair Bandwidth Sharing
CN117749445A (zh) 访问统计方法、装置、电子设备和计算机可读存储介质
CN117255070A (zh) 网络设备功耗的处理方法及装置
CN118368263A (zh) 报文处理方法、装置、设备及计算机可读存储介质
CN115242727A (zh) 用户请求处理方法、装置、设备和介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant