CN102546423B - 队列调度方法、装置及网络设备 - Google Patents
队列调度方法、装置及网络设备 Download PDFInfo
- Publication number
- CN102546423B CN102546423B CN201210018822.3A CN201210018822A CN102546423B CN 102546423 B CN102546423 B CN 102546423B CN 201210018822 A CN201210018822 A CN 201210018822A CN 102546423 B CN102546423 B CN 102546423B
- Authority
- CN
- China
- Prior art keywords
- dispatch list
- subscriber queue
- token
- level
- team
- 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
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明提供一种队列调度方法、装置及网络设备。其中方法包括:在本轮出队调度过程中,如果第一级调度表不为空,从第一级调度表中取下第一个用户队列,对取下的用户队列执行出队操作;第一级调度表中的用户队列是在加入第一级调度表时C桶令牌和对应的用户组令牌都充足的用户队列;如果第一级调度表为空,从第二级调度表中取下第一个用户队列,对取下的用户队列执行出队操作;第二级调度表中的用户队列是在加入第二级调度表时C桶令牌不足而P桶令牌和对应的用户组令牌都充足的用户队列;如果第二级调度表为空,结束本轮出队调度。本发明技术方案降低了出现空转的几率,降低了空转所消耗的CPU资源,提高了CPU资源的调度性能。
Description
技术领域
本发明涉及通信技术,尤其涉及一种队列调度方法、装置及网络设备。
背景技术
随着网际协议(Internet Protocol,IP)网络上新应用的不断出现,对IP网络的服务质量也提出了新的要求。例如,IP语音(Voice over IP,VoIP)等实时业务对报文的传输时延具有较高的要求,如果报文的传输时延太长,语音会延迟过长,对话就不能正常进行,这是用户所不能接受的。相对而言,E-mail和文本传输协议(File Transfer Protocol,FTP)业务对时间延迟并不敏感,即使有时速度降低,也不会对使用造成太多影响。为了支持具有不同服务需求的语音、视频以及数据等业务,要求IP网络能够区分出不同的业务,进而为之提供相应的服务。服务质量(Quality of Service,QoS)技术的出现便致力于解决这个问题。
层次化QoS(Hierarchy QoS,HQoS)不同于以往的单层QoS主要针对业务进行服务保证,HQoS可以将网络中的数据流按照用户业务、用户和用户组进行多层面QoS保障。HQoS包括多个调度级别,其中前三级的调度分别是:第一级调度是流队列(Flow Queue,FQ)、第二级调度是用户队列(UserQueue,UQ)、第三级调度是用户组队列(Group Queue,GQ),前三级调度是作为一个整体进行调度的。流队列是根据用户业务优先级区分并暂存用户各个流的数据;UQ和GQ为虚拟队列。所谓虚拟队列是指队列不存在实际的缓存单元,不暂存数据,数据进入队列和离开队列没有延迟,仅作为层次化调度中的一级队列参与调度。其中,每个UQ可以配置有承诺信息速率(Committed Information Rate,CIR)、峰值信息速率(Peak Information Rate,PIR)和引用的流队列、流映射、用户组队列对象等。每个UQ对应8种业务类型的FQ,根据实际应用情况可以通过配置使用其中的几种业务类型的FQ,但最多不会超过8个。HQoS可以将多个UQ绑定到一个GQ,但每个UQ最多只能绑定到一个GQ中。
现有HQoS是基于令牌桶进行队列调度的。令牌桶是一种流量监管技术,通过添加令牌的方式对流量进行监管,一个令牌对应报文的一个字节;在调度过程中,有令牌才允许从队列中出队,出队后根据报文大小扣除相应的令牌,达到衡量流量大小的目的。在HQoS调度过程中,入队时,根据报文分类结果将报文缓存到所属UQ对应的FQ中,并且如果该UQ不在调度表中,还要将该UQ加入调度表中;出队时,按照先CIR调度再PIR调度的顺序使出队报文达到每轮出队上限。在CIR或PIR的调度过程,如果调度表中UQ的数量不为0,则从调度表首部取下第一个UQ,然后判断该UQ的C桶或P桶令牌以及UQ加入的GQ的用户组令牌是否充足;如果是,则执行出队并扣除相应UQ和GQ的令牌,否则将该UQ从调度表中取下,执行相应判断操作之后重新将该UQ加入调度表尾部。其中,将UQ从调度表中取下,执行判断后重新将其加入调度表尾部的操作被称为空转。空转会浪费中央处理单元(Central Processing Unit,CPU)的资源,而在队列调度所使用的CPU资源是有限的,因此空转会导致CPU的调度性能下降,影响整机转发。
发明内容
本发明提供一种队列调度方法、装置及网络设备,用以解决现有HQoS队列调度过程中存在的浪费CPU资源的问题,提高CPU的调度性能。
本发明提供一种队列调度方法,包括:
在本轮出队调度过程中,如果第一级调度表不为空,从所述第一级调度表中取下第一个用户队列,对取下的用户队列执行出队操作;所述第一级调度表中的用户队列是在加入所述第一级调度表时C桶令牌和对应的用户组令牌都充足的用户队列;
如果所述第一级调度表为空,从第二级调度表中取下第一个用户队列,对取下的用户队列执行出队操作;所述第二级调度表中的用户队列是在加入所述第二级调度表时C桶令牌不足而P桶令牌和对应的用户组令牌都充足的用户队列;
如果所述第二级调度表为空,结束本轮出队调度。
本发明提供一种队列调度装置,包括:
第一出队调度模块,用于在本轮出队调度过程中,在第一级调度表不为空,从所述第一级调度表中取下第一个用户队列,对取下的用户队列执行出队操作;所述第一级调度表中的用户队列是在加入所述第一级调度表时C桶令牌和对应的用户组令牌都充足的用户队列;
第二出队调度模块,用于在所述第一级调度表为空时,从第二级调度表中取下第一个用户队列,对取下的用户队列执行出队操作,在所述第二级调度表为空时,结束本轮出队调度;所述第二级调度表中的用户队列是在加入所述第二级调度表时C桶令牌不足而P桶令牌和对应的用户组令牌都充足的用户队列。
本发明提供一种网络设备,包括本发明提供的任一队列调度装置。
本发明提供的队列调度方法、装置及网络设备,根据用户队列的C桶令牌、P桶令牌和对应的用户组令牌的充足与否,将调度表分为存储C桶令牌和用户组令牌都充足的用户队列的第一级调度表和存储C桶令牌不足,但P桶令牌和对应的用户组令牌都充足的用户队列的第二级调度表,在进行出队调度时,根据这两级调度表进行调度,降低了出现空转的几率,降低了空转所消耗的CPU资源,提高了CPU资源的调度性能。
附图说明
图1为本发明一实施例提供的队列调度方法的流程图;
图2为本发明另一实施例提供的队列调度方法的流程图;
图3为本发明又一实施例提供的队列调度方法的流程图;
图4为本发明一实施例提供的调整调度表的方法的流程图;
图5为本发明再一实施例提供的队列调度方法的流程图;
图6为本发明一实施例提供的队列调度装置的结构示意图;
图7为本发明另一实施例提供的队列调度装置的结构示意图。
具体实施方式
图1为本发明一实施例提供的队列调度方法的流程图。如图1所示,本实施例的方法包括:
步骤101、在本轮出队调度过程中,判断第一级调度表是否为空;如果判断结果为否,执行步骤102;如果判断结果为是,执行步骤103。
本实施例适用于HQoS调度。HQoS的作用对象是转发中的数据流,通过QoS调度保证高优先级报文对时延抖动的要求。因此,HQoS是队列调度装置在对数据流进行转发过程中使用的一种技术。HQoS的前三级调度作为一个整体被执行,HQoS队列调度分为入队调度和出队调度,即所谓的入队流程和出队流程。
在本实施例中,队列调度装置不再基于一个调度表对所有用户队列进行出队调度,而是基于三个级别的调度表。这三个调度表是根据用户队列的C桶令牌、P桶令牌和对应的用户组令牌是否充足的情况划分的。其中,用户队列对应的用户组令牌是指该用户队列所加入的用户组的所持有的令牌。在此说明,如果用户队列没有加入任何用户组,则该用户队列对应的用户组令牌为0。对于用户队列没有加入用户组的情况,本发明各实施例认为该用户队列对应的用户组令牌是充足的。
在三个调度表中分别存储有不同类型的用户队列。在第一级调度表中的用户队列是在加入第一级调度表时C桶令牌和对应的用户组令牌都充足的用户队列。也就是说,只有C桶令牌和对应的用户组令牌都充足的用户队列才会被加入第一级调度表。其中,C桶令牌充足是指用户队列在加入第一级调度表时,C桶中有令牌,即C桶中的令牌数不为0;C桶令牌不足是指用户队列在加入第一级调度表时,C桶中没有令牌,即C桶中的令牌数为0。用户组令牌充足是指用户组对应的令牌桶中有令牌,即用户组对应的令牌桶中的令牌数不为0;反之,就是用户组令牌不足的情况。在第二级调度表中的用户队列是在加入第二级调度表时C桶令牌不足,但P桶令牌和对应的用户组令牌都充足的用户队列。也就是说,在C桶令牌不足的情况,只有P桶令牌和对应的用户组令牌都充足的用户队列才会被加入第二级调度表中。其中,P桶令牌充足是指用队列在C桶令牌不足时而加入第二级调度表时,P桶中有令牌,即P桶中的令牌数不为0;P桶令牌不足是指用户队列在C桶令牌不足而加入第二级调度表时,P桶中没有令牌,即P桶中的令牌数为0。其他用户队列,例如P桶令牌不足和/或对应的用户组令牌不足的用户队列,会被加入第三级调度表。在第三级调度表中的用户队列在添加令牌之前是不会被调度的,也就是说,第三级调度表是用来存储添加令牌之前不被调度的用户队列的。
其中,第一级调度表中用户队列的C桶令牌和对应的用户组令牌随着出队调度的执行会发生变化。第二级调度表中用户队列的P桶令牌和对应的用户组令牌随着出队调度的执行也会发生变化。
在本实施例中,队列调度装置是以用户队列为单位进行入队调度和出队调度的。队列调度装置执行出队调度时,只有当被调度的报文(即出队报文)的个数达到每轮出队报文上限时,才认为该轮出队调度结束。其中,每轮出队报文上限可以预先设定,并且允许根据不同的应用环境设置不同的值。在每轮出队调度过程中,队列调度装置会优先根据用户队列的CIR指标进行出队调度(简称为CIR调度),如果CIR调度结束后,被调度的报文仍未达到每轮出队报文上限,队列调度装置会继续根据PIR指标进行出队调度(简称为PIR调度)。
在本实施例中,由于第一级调度表中存储的用户队列都是C桶令牌充足的用户队列,故对第一级调度表中的用户队列进行调度的过程就是CIR调度过程。
其中,队列调度装置在每一轮的出队调度过程均相同,故本实施例以队列调度装置执行一轮出队调度(即所述的本轮出队调度)为例进行说明。在本轮调度过程中,队列调度装置会首先判断被调度的报文个数是否达到每轮出队报文上限;如果当前被调度的报文个数达到每轮出队报文上限,则结束本轮的出队调度。在步骤101中,假设当前被调度的报文数量未达到每轮出队报文上限,则队列调度装置会判断第一级调度表是否为空来确定对哪个用户队列进行出队调度。如果第一级调度表为不为空,则需要先对第一级调度表中的用户队列进行出队调度;如果第一级调度表为空,才能对第二级调度表进行调度。
步骤102、从第一级调度表中取下第一个用户队列,对取下的用户队列执行出队操作。
当队列调度装置判断出第一级调度表不为空时,从第一级调度表中取下第一个用户队列,对取下的用户队列执行出队操作。在本实施例中,第一级调度表是按照先进先出的原理对各个用户队列进行管理的。也就是说,如果第一个用户队列被取下后,原来的第二个用户队列就会重新变成第一个用户队列。
其中,对从第一级调度表中取下的用户队列执行出队操作主要是指队列调度装置根据取下的用户队列的C桶令牌和对应的用户组令牌,从取下的用户队列对应的流队列的缓存中去取该用户队列对应的一个报文并将取到的报文转发出去的过程。其中,C桶令牌和用户组令牌都充足才能出队。本发明各实施例就是通过固定速率添加各种令牌来达到控制报文出队速率的目的的。
其中,如果队列调度装置取到报文且将报文成功转发出去,则队列调度装置对取下的用户队列执行的出队操作成功,或者说该取下的用户队列的出队操作成功。如果因为对应的用户组令牌不足(例如用户组令牌被加入该用户组的其他用户队列都消耗掉)等导致队列调度装置未取到报文,则队列调度装置对取下的用户队列执行的出队操作不成功,或者说该取下的用户队列的出队操作不成功。
步骤103、判断第二级调度表是否为空;如果判断结果为否,执行步骤104;如果判断结果为是,执行步骤105。
当队列调度装置在当前被调度的报文数量未达到每轮出队报文上限的情况下,判断出第一级调度表为空时,说明需要继续执行PIR调度。由于第二级调度表中存储的用户队列都是C桶令牌不足,但P桶令牌充足的用户队列,故对第二级调度表中的用户队列进行调度的过程就是PIR调度过程。因此,队列调度装置继续判断第二级调度表是否为空;如果第二调度表为空,说明已经没有用户队列需要被调度,则结束本轮出队调度,如步骤105所述;如果第二调度表不为空,则继续第二调度表中的用户队列进行调度,如步骤104所述。
如果取下的用户队列的出队操作成功,则队列调度装置会将被调度的报文的数量加1,并重新判断被调度的报文的数量是否达到每轮出队报文上限,如果没有,队列调度装置会继续返回步骤101对下一个用户队列进行调度,直到被调度的报文的数量达到每轮出队报文上限或没有用户队列被调度为止。
如果取下的用户队列的出队操作不成功,则队列调度装置直接返回步骤101对下一个用户队列进行调度,直到被调度的报文的数量达到每轮出队报文上限或没有用户队列被调度为止。
步骤104、从第二级调度表中取下第一个用户队列,对取下的用户队列执行出队操作。
当队列调度装置判断出第二调度表不为空时,从第二级调度表中取下第一个用户队列,并对取下的用户队列执行出队操作。在本实施例中,第二级调度表也是按照先进先出的原理对各个用户队列进行管理。也就是说,队列调度装置从第二级调度表中取下第一个用户队列后,原来的第二个用户队列就会变为第一个用户队列。
其中,对从第二级调度表中取下的用户队列进行出队操作是指根据取下的用户队列的P桶令牌和对应的用户组令牌,从取下的用户队列对应的流队列的缓存中去取该用户队列对应的一个报文并将取到的报文转发出去的过程。
其中,如果队列调度装置取到报文且将报文成功转发出去,则队列调度装置对取下的用户队列执行的出队操作成功,或者说该取下的用户队列的出队操作成功。如果因为对应的用户组令牌不足(例如用户组令牌被加入该用户组的其他用户队列都消耗掉)等导致队列调度装置未取到报文,则队列调度装置对取下的用户队列执行的出队操作不成功,或者说该取下的用户队列的出队操作不成功。
如果取下的用户队列的出队操作成功,则队列调度装置会将被调度的报文的数量加1,并重新判断被调度的报文的数量是否达到每轮出队报文上限,如果没有,队列调度装置会继续返回步骤103对下一个用户队列进行调度,直到被调度的报文的数量达到每轮出队报文上限或没有用户队列被调度为止。
如果取下的用户队列的出队操作不成功,则队列调度装置直接返回步骤103对下一个用户队列进行调度,直到被调度的报文的数量达到每轮出队报文上限或没有用户队列被调度为止。
步骤105、结束本轮出队调度。
本实施例的队列调度方法,队列调度装置根据用户队列的C桶令牌、P桶令牌和对应的用户组令牌的充足与否,将调度表分为存储C桶令牌和用户组令牌都充足的用户队列的第一级调度表和存储C桶令牌不足,但P桶令牌和对应的用户组令牌都充足的用户队列的第二级调度表,在进行出队调度时,只对这两级调度表中的用户队列进行出队调度,与现有技术相比降低了出现空转的几率,降低了空转所消耗的CPU资源,提高了CPU资源的调度性能。
下面通过与现有技术方案相比较来说明对本实施例的技术效果:以每轮出队128个报文为例,采用现有技术中的出队方案,在每个用户队列的令牌充足(此时未发生拥塞)的情况下,出队128个报文只用遍历调度表前128个用户队列,而在由于用户队列的令牌不足导致出队性能低而引起拥塞的情况下,如果某次调度之后,当用户队列的C桶令牌耗完或者用户队列对应用户组令牌不足时,再执行出队调度时,由于用户队列没有令牌则会出现将用户队列从调度表中取下,然后执行判断后重新加入调度表尾部的空转现象。当耗光令牌的用户队列较多时,一次调度过程中会存在多次空转。同理,如果执行CIR调度结束后仍为达到出队报文上限,在继续执行PIR调度过程中同样会出现空转现象,极限情况下所有用户队列均没有令牌出队,以1000个用户队列为例,在该情况下一轮出队调度会累积轮询2000个用户队列,这对CPU资源是一种极大的浪费,特别是随着用户队列较多增多的情况下,队列调度工作量大大增加,出现空转的几率会更高,对CPU资源造成的浪费会更加明显。而本实施例在将用户队列加入调度表时,通过三级调度表对用户队列进行区分,并且仅调度第一级调度表和第二级调度表中的用户队列,由于第一级调度表和第二级调度表中的用户队列是C桶令牌或P桶令牌充足的用户队列,降低了出现空转的现象,节约了空转现象所消耗的CPU资源,从而提高了CPU的调度性能。
进一步,当队列调度装置对从第一级调度表或从第二级调度表中取下的用户队列执行出队操作之后,如果该用户队列不为空(或者说还有报文需要转发),则队列调度装置需要将该用户队列重新加入某个调度表中,以待进行下一次出队调度。
其中,队列调度装置将调度后不为空的用户队列重新加入调度表的一种实施方式可以是从哪个调度表中被取下,还加入到哪个调度表中。例如,如果用户队列是从第一级调度表中被取下的,则队列调度装置将出队之后尚不为空的用户队列加入第一级调度表的尾部。如果用户队列是从第二级调度表中被取下的,则队列调度装置将出队后尚不为空的用户队列加入第二级调度表。
由于上述实施方式与现有技术相类似,当在经过几轮出队调度后,也可能出现空转现象。为了进一步降低空转现象的出现,本发明实施例另提供一种队列调度装置将调度后不为空的用户队列重新加入调度表的实施方式。该实施方式主要是根据调度后不为空的用户队列的C桶令牌、P桶令牌和对应的用户组令牌是否充足的情况,将调度后不为空的用户队列加入相应的调度表中。结合出队后不为空的用户队列是从哪个调度表中被取下、用户队列出队操作的结果、以及用户队列的令牌情况,该实施方式具体包括以下几种情况:
(1)如果用户队列是从第一级调度表中取下的用户队列,则在该用户队列的出队操作成功后,如果该用户队列不为空,且从该用户队列的C桶令牌和对应的用户组令牌都充足,将该用户队列重新加入第一级调度表的尾部。
(2)如果用户队列是从第一级调度表中取下的用户队列,则在该用户队列的出队操作成功后,如果该用户队列不为空,但该用户队列的C桶令牌不足,而该用户队列的P桶令牌和对应的用户组令牌充足,将该用户队列加入第二级调度表的尾部。
(3)如果用户队列是从第一级调度表中取下的用户队列,且该用户队列的出队操作失败,将该用户队列加入第三级调度表的尾部。
(4)如果用户队列是从第一级调度表中取下的用户队列,则在该用户队列的出队操作成功后,如果该用户队列不为空,但该用户队列的C桶令牌不足,且该用户队列的P桶令牌也不足,将用户队列加入第三级调度表的尾部。
(5)如果用户队列是从第一级调度表中取下的用户队列,则在该用户队列的出队操作成功后,如果该用户队列不为空,但该用户队列的对应的用户组令牌不足,将用户队列加入第三级调度表的尾部。
(6)如果用户队列是从第二级调度表中取下的用户队列,则在该用户队列的出队操作成功后,如果该用户队列不为空,且该用户队列的P桶令牌和对应的用户组令牌都充足,将该用户队列重新加入第二级调度表的尾部。
(7)如果用户队列是从第二级调度表中取下的用户队列,且该用户队列的出队操作失败,将该用户队列重新加入第三级调度表的尾部。
(8)如果用户队列是从第二级调度表中取下的用户队列,则在该用户队列的出队操作成功后,如果该用户队列不为空,但该用户队列的P桶令牌不足,将该用户队列重新加入第三级调度表的尾部。
(9)如果用户队列是从第二级调度表中取下的用户队列,则在该用户队列的出队操作成功后,如果该用户队列不为空,但该用户队列对应的用户组令牌不足,将该用户队列重新加入第三级调度表的尾部。
进一步,如果用户队列是从第一级调度表中取下的用户队列,则在该用户队列的出队操作成功后,如果用户队列为空,则结束对该用户队列的出队调度,即不将该用户队列加入任何一个调度表中。
如果用户队列是从第二级调度表中取下的用户队列,则在该用户队列的出队操作成功后,如果用户队列为空,则结束对该用户队列的出队调度,即不将该用户队列加入任何一个调度表中。
下面实施例将举例说明上述实施方式的流程。
图2为本发明另一实施例提供的队列调度方法的流程图。如图2所示,本实施例的方法包括:
步骤201、在本轮出队调度过程中,判断第一级调度表是否为空;如果判断结果为否,执行步骤202;如果判断结果为是,执行步骤212。
步骤202、从第一级调度表中取下第一个用户队列,对取下的用户队列执行出队操作,并执行步骤203。
上述步骤201和步骤202可参见步骤101和步骤102的描述,在此不再赘述。
步骤203、判断从第一级调度表中取下的用户队列的出队操作是否成功;如果判断结果为是,执行步骤204;如果判断结果为否,执行步骤210。
其中,队列调度装置可以通过判断是否从用户队列对应的流队列的缓存中读取到报文并将报文成功转发出去来判断用户队列的出队操作是否成功。
步骤204、判断从第一级调度表中取下的用户队列是否为空;如果判断结果为否,执行步骤205;如果判断结果为是,执行步骤211。
其中,从第一级调度表中取下的用户队列的出队操作成功后,队列调度装置继续判断该用户队列是否为空,即判断该用户队列是否还有报文需要转发。例如,可以通过判断该用户队列对应的流队列的缓存是否为空来判断该用户队列是否为空。
步骤205、判断从第一级调度表中取下的用户队列对应的用户组令牌是否充足;如果判断结果为是,执行步骤206;如果判断结果为否,执行步骤210。
在从第一级调度表中取下的用户队列不为空时,队列调度装置继续判断该用户队列对应的用户组令牌是否充足。其中,如果该用户队列加入某个用户组,则队列调度装置通过判断该用户队列加入的用户组目前所持有的令牌的数目是否大于0,如果是确定该用户队列对应的用户组令牌充足,反之确定该用户队列对应的用户组令牌不足。如果用户队列没有加入任何用户组,则队列调度装置直接判定其对应的用户组令牌充足。
步骤206、判断从第一级调度表中取下的用户队列的C桶令牌是否充足;如果判断结果为是,执行步骤207;如果判断结果为否,执行步骤208。
当从第一级调度表中取下的用户队列对应的用户组令牌充足时,队列调度装置继续判断该用户队列的C桶令牌是否充足。
步骤207、将从第一级调度表中取下的用户队列重新加入第一级调度表的尾部,以等待下一次调度,并执行步骤212。
在从第一级调度表中取下的用户队列的出队操作成功后,如果该从第一级调度表中取下的用户队列的用户队列不为空、且其C桶令牌和用户组令牌都充足时,队列调度装置将其重新加入第一级调度队列的尾部,以等待下一次调度。同时,通过这种出队后的加入操作使得第一级调度表中加入的是C桶令牌和对应的用户组令牌都充足的用户队列,使得在对第一级调度表中的用户队列进行调度时降低了因出现C桶令牌或对应的用户组令牌不足而导致的空转现象的几率。
步骤208、判断从第一级调度表中取下的用户队列的P桶令牌是否充足;如果判断结果为是,执行步骤209;如果判断结果为否,执行步骤210。
当从第一级调度表中取下的用户队列的出队操作成功后,如果该用户队列不为空,在其对应的用户组令牌充足,而其C桶令牌不足时,队列调度装置继续判断该用户队列的P桶令牌是否充足。
步骤209、将第一级调度表中取下的用户队列加入第二级调度表的尾部,以等待下一次调度,并执行步骤212。
在从第一级调度表中取下的用户队列的出队操作成功后,如果该从第一级调度表中取下的用户队列的用户队列不为空、且其C桶令牌不足,但其P桶令牌和对应的用户组令牌都充足时,队列调度装置将其加入第二级调度队列的尾部,以等待下一次调度。同时,通过这种出队后的加入操作使得第二级调度表中加入的是C桶令牌不足,但P桶令牌和对应的用户组令牌都充足的用户队列,使得在对第二级调度表中的用户队列进行调度时降低了因出现P桶令牌或对应的用户组令牌不足而导致的空转现象的几率。
步骤210、将从第一级调度表中取下的用户队列加入第三级调度表的尾部,并执行步骤212。
如果从第一级调度表中取下的用户队列的出队操作失败,或者虽然从第一级调度表中取下的用户队列的出队操作成功,但其P桶令牌和/或对应的用户组令牌不足,则将该用户队列加入第三级调度表中,暂时不对该用户队列进行调度。只有在重新添加令牌之后,根据令牌的情况重新对该用户队列进行出队调度。这在一定程度上抑制了出现空转现象。
步骤211、结束对从第一级调度表中取下的用户队列的调度操作,并执行步骤212。
如果从第一级调度表中取下的用户队列为空,说明该用户队列没有报文需要转发,因此,结束对该用户队列的调度,也就是说不需要将该用户队列加入任何一个调度表中。
步骤212、判断第二级调度表是否为空;如果判断结果为否,执行步骤213;如果判断结果为是,执行步骤221。
步骤213、从第二级调度表中取下第一个用户队列,并对取下的用户队列执行出队操作,并执行步骤214。
上述步骤212和步骤213可参见步骤103和步骤104的描述,在此不再赘述。
步骤214、判断从第二级调度表中取下的用户队列的出队操作是否成功;如果判断结果为是,执行步骤215;如果判断结果为否,执行步骤219。
其中,队列调度装置可以通过判断是否从用户队列对应的流队列的缓存中读取到报文并将报文成功转发出去来判断用户队列的出队操作是否成功。
步骤215、判断从第二级调度表中取下的用户队列是否为空;如果判断结果为否,执行步骤216;如果判断结果为是,执行步骤220。
其中,从第二级调度表中取下的用户队列的出队操作成功后,队列调度装置继续判断该用户队列是否为空,即判断该用户队列是否还有报文需要转发。例如,可以通过判断该用户队列对应的流队列的缓存是否为空来判断该用户队列是否为空。
步骤216、判断从第二级调度表中取下的用户队列对应的用户组令牌是否充足;如果判断结果为是,执行步骤217;如果判断结果为否,执行步骤219。
在从第二级调度表中取下的用户队列不为空时,队列调度装置继续判断该用户队列对应的用户组令牌是否充足。具体的判断过程可参见步骤205的描述。
步骤217、判断从第二级调度表中取下的用户队列的P桶令牌是否充足;如果判断结果为是,执行步骤218;如果判断结果为否,执行步骤219。
当从第二级调度表中取下的用户队列对应的用户组令牌充足时,队列调度装置继续判断该用户队列的P桶令牌是否充足。
步骤218、将从第二级调度表中取下的用户队列重新加入第二级调度表的尾部,以等待下一次调度。
在从第二级调度表中取下的用户队列的出队操作成功后,如果该从第二级调度表中取下的用户队列的用户队列不为空、且其P桶令牌和用户组令牌都充足时,队列调度装置将其重新加入第二级调度队列的尾部,以等待下一次调度。同时,通过这种出队后的加入操作使得第二级调度表中加入的是C桶令牌不足,但P桶令牌和对应的用户组令牌都充足的用户队列,使得在对第二级调度表中的用户队列进行调度时降低了因出现P桶令牌或对应的用户组令牌不足而导致的空转现象的几率。
步骤219、将从第二级调度表中取下的用户队列加入第三级调度表的尾部。
如果从第二级调度表中取下的用户队列的出队操作失败,或者虽然从第二级调度表中取下的用户队列的出队操作成功,但其P桶令牌和/或对应的用户组令牌不足,则将该用户队列加入第三级调度表中,暂时不对该用户队列进行调度。只有在重新添加令牌之后,根据令牌的情况重新对该用户队列进行出队调度。这在一定程度上抑制了出现空转现象。
步骤220、结束对从第二级调度表中取下的用户队列的调度。
如果从第二级调度表中取下的用户队列为空,说明该用户队列没有报文需要转发,因此,结束对该用户队列的调度,也就是说不需要将该用户队列加入任何一个调度表中。
步骤221、结束本轮出队调度。
当本轮出队调度的报文达到每轮出队报文上限时,结束本轮出队调度。
本实施例的队列调度方法,队列调度装置根据用户队列的C桶令牌、P桶令牌和对应的用户组令牌的充足与否,将调度表分为存储C桶令牌和用户组令牌都充足的用户队列的第一级调度表和存储C桶令牌不足,但P桶令牌和对应的用户组令牌都充足的用户队列的第二级调度表,在进行出队调度时,只对这两级调度表中的用户队列进行出队调度,与现有技术相比降低了出现空转的几率,降低了空转所消耗的CPU资源,提高了CPU资源的调度性能。
在此说明,上述实施例中判断用户队列是否为空、C桶令牌是否充足、对应的用户组令牌是否充足、P桶令牌是否充足等判断操作并不限于上述一种执行顺序,其先后顺序不受限制。
其中,HQoS队列调度包括出队调度和入队调度两个过程,下面实施例详细描述一下基于三级调度表的入队操作后的处理流程。
图3为本发明又一实施例提供的队列调度方法的流程图。如图3所示,本实施例的方法包括:
步骤301、对用户队列进行入队操作。
其中,队列调度装置对用户队列进行入队操作主要是指将该用户队列对应的报文加入该用户队列对应的流队列的缓存中。该操作与现有技术相同,不再详述。
步骤302、在入队操作结束之后,判断入队后的用户队列是否不存在于任何一级调度表中;如果判断结果为是,执行步骤303;如果判断结果为否,执行步骤309。
在本实施例中,队列调度装置在用户队列入队之后,判断当前入队后的用户队列是否存在三个调度表中的某个调度表中;如果不存在任何一个调度表中,则执行调度表加入流程,如果已存在某个调度表中,则调度表加入结束。
步骤303、判断入队后的用户队列的对应的用户组令牌是否充足;如果判断结果为是,执行步骤304;如果判断结果为否,执行步骤308。
步骤304、判断入队后的用户对流的C桶令牌是否充足;如果判断结果为是,执行步骤305;如果判断结果为否,执行步骤306。
步骤305、将入队后的用户队列加入第一级调度表的尾部。
如果入队后的用户队列不存在任何一个调度表中,且入队后的用户队列的C桶令牌和对应的用户组令牌都充足,则队列调度装置将入队后的用户队列加入第一级调度表的尾部。
其中,上述步骤302-步骤304的执行顺序并不限于本实施例这一种,凡是能够判断出上述结果的执行顺序都可以。
步骤306、判断入队后的用户队列的P桶令牌是否充足;如果判断结果为是,执行步骤307;如果判断结果为否,执行步骤308。
步骤307、将入队后的用户队列加入第二级调度表的尾部。
如果入队后的用户队列不存在任何一个调度表中,且入队后的用户队列的C桶令牌不足,而其P桶令牌和对应的用户组令牌都充足,则队列调度装置将入队后的用户队列加入第二级调度表的尾部。
步骤308、将入队后的用户队列加入第三级调度表的尾部。
如果入队后的用户队列不存在任何一个调度表中,但入队后的用户队列的C桶令牌不足,且P桶令牌也不足,或者其对应的用户组令牌不足,则队列调度装置将入队后的用户队列加入第三级调度表的尾部。
步骤309、结束调度表加入操作。
本实施例的队列调度方法,队列调度装置主要根据入队后的用户队列的C桶令牌、P桶令牌和对应的用户组令牌的充足情况,将其加入相应调度表。本实施例的入队调度方法与其他实施例提供的出队调度方法相配合,进一步降低了出队调度过程中出现的空转现象的几率,进一步提高了CPU的调度性能。
其中,上述入队调度过程可以与出队调度过程作为一个完整的调度过程,并在出队调度之前执行,也可以独立于出队调度而执行。
在上述入队调度或出队调度过程中,还会涉及令牌添加操作。其中,队列调度装置可以周期性的执行令牌添加操作,也可以在每次执行入队调度之前执行令牌添加操作,还可以是在执行出队调度过程中执行令牌添加操作等。其中,令牌添加操作是指为各调度表中的用户队列添加C桶令牌、P桶令牌和/或对应的用户组令牌的过程,具体添加过程与现有技术相类似,在此不再详述。本发明下面实施例将重点描述添加令牌后对用户队列所在调度表的调整过程。
图4为本发明一实施例提供的调整调度表的方法的流程图。如图4所示,本实施例的方法包括:
步骤401、在执行入队调度之前或者在预设令牌添加周期到达时,对第二级调度表中和第三级调度表中的用户队列进行令牌添加操作。
其中,令牌添加周期是预先设定的,具体数值不做限定。
在令牌添加操纵被触发时,队列调度装置具体根据单位时间应该添加的里令牌数和距离上次添加令牌的时间给各个调度表中的用户队列添加令牌。例如,假设1秒应该添加10000个令牌,而当前添加令牌的时间相对于上次添加令牌的时间过去了50ms,那么此次添加令牌的个数应该为500个。其中,令牌添加包括对C桶令牌、P桶令牌和用户组令牌的添加。
步骤402、判断第二级调度表中添加令牌后的用户队列的C桶令牌是否充足;如果判断结果为是,执行步骤403;如果判断结果为否,执行步骤409。
对于第二级调度表中的用户队列,队列调度装置会判断添加令牌后的用户队列的C桶令牌是否变充足。
步骤403、将第二级调度表中添加令牌后的用户队列从第二级调度表中移动到第一级调度表中,并执行步骤404。
如果添加令牌后的用户队列的C桶令牌变充足,此时该用户队列的C桶令牌充足,且其对应的用户组令牌也充足,符合第一级调度表的要求,则队列调度装置将该用户队列从第二级调度表中移动到第一级调度表中。
步骤404、判断第三级调度表中添加令牌后的用户队列对应的用户组令牌是否充足;如果判断结果为是,执行步骤405;如果判断结果为否,执行步骤409。
步骤405、判断第三级调度表中添加令牌后的用户队列的C桶令牌是否充足;如果判断结果为是,执行步骤406;如果判断结果为否,执行步骤407。
步骤406、将第三级调度表中添加令牌后的用户队列移动到第一级调度表中。
如果第三级调度表中的用户队列在添加令牌后,变成C桶令牌充足且对应的用户组令牌也充足的用户队列,则队列调度装置将该用户队列从第三级调度表中移动到第一级调度表中。
步骤407、判断第三级调度表中添加令牌后的用户队列的P桶令牌是否充足;如果判断结果为是,执行步骤408;如果判断结果为否,执行步骤409。
步骤408、将第三级调度表中添加令牌后的用户队列移动到第二级调度表中。
如果第三级调度表中的用户队列在添加令牌后,变成C桶令牌不足,但其P桶令牌和对应的用户组令牌都充足的用户队列,则队列调度装置将该用户队列从第三级调度表中移动到第二级调度表中。
步骤409、结束对调度表的调整操作。
本实施例通过对添加令牌后的用户队列进行调度表的调整,使得令牌充足的用户队列都能得到及时调度,提高了调度性能。
图5为本发明再一实施例提供的队列调度方法的流程图。如图5所示,本实施例的方法包括:
步骤501、出队操作开始。
步骤502、设置用于记录本轮剩余出队报文个数的变量,并设置该变量的初始值为每轮出队报文上限,例如128。
步骤503、判断变量是否大于0;如果判断结果为是,执行步骤504;如果判断结果为否,执行步骤527。
步骤504、判断第一级调度表中的用户队列的数量是否大于0;如果判断结果为是,执行步骤505;如果判断结果为否,执行步骤516。
步骤505、从第一级调度表中取下第一个用户队列,并将第一级调度表中的用户队列的数量减去1。
步骤506、对从第一级调度表中取下的用户队列执行出队操作。
步骤507、判断从第一级调度表中取下的用户队列的出队操作是否成功;如果判断结果为是,执行步骤508;如果判断结果为否,转去执行步骤504。
步骤508、判断从第一级调度表中取下的用户队列是否为空;如果判断结果为否,执行步骤509;如果判断结果为是,执行步骤515。
步骤509、判断从第一级调度表中取下的用户队列对应的用户组令牌是否充足;如果判断结果为是,执行步骤510;如果判断结果为否,执行步骤514。
步骤510、判断从第一级调度表中取下的用户队列的C桶令牌是否充足;如果判断结果为是,执行步骤511;如果判断结果为否,执行步骤512。
步骤511、将从第一级调度表中取下的用户队列重新加入第一级调度表的尾部,以等待下一次调度,并将第一级调度表中的用户队列的数量加1,并执行步骤515。
步骤512、判断从第一级调度表中取下的用户队列的P桶令牌是否充足;如果判断结果为是,执行步骤513;如果判断结果为否,执行步骤514。
步骤513、将第一级调度表中取下的用户队列加入第二级调度表的尾部,以等待下一次调度,并将第二级调度表中的用户队列的数量加1,并执行步骤515。
步骤514、将从第一级调度表中取下的用户队列加入第三级调度表的尾部,并执行步骤515。
步骤515、将上述变量减去1,并转去执行步骤503。
步骤516、判断第二级调度表中的用户队列是否大于0;如果判断结果为是,执行步骤517;如果判断结果为否,执行步骤527。
步骤517、从第二级调度表中取下第一个用户队列,将第二级调度表中的用户队列的数量减去1,并执行步骤518。
步骤518、对从第二级调度表中取下的用户队列执行出队操作,并执行步骤519。步骤519、判断从第二级调度表中取下的用户队列的出队操作是否成功;如果判断结果为是,执行步骤520;如果判断结果为否,执行步骤516。
步骤520、判断从第二级调度表中取下的用户队列是否为空;如果判断结果为否,执行步骤521;如果判断结果为是,执行步骤525。
步骤521、判断从第二级调度表中取下的用户队列对应的用户组令牌是否充足;如果判断结果为是,执行步骤522;如果判断结果为否,执行步骤524。
步骤522、判断从第二级调度表中取下的用户队列的P桶令牌是否充足;如果判断结果为是,执行步骤523;如果判断结果为否,执行步骤524。
步骤523、将从第二级调度表中取下的用户队列重新加入第二级调度表的尾部,以等待下一次调度,并将第二级调度表中的用户队列的数量加1,并执行525。
步骤524、将从第二级调度表中取下的用户队列加入第三级调度表的尾部,并执行步骤525。
步骤525、将上述变量减去1,并执行步骤526。
步骤526、判断变量是否大于0;如果判断结果为是,转去执行步骤516;如果判断结果为否,执行步骤527。
步骤527、结束本轮的出队操作。
在本实施例中,队列调度装置根据用户队列的C桶令牌、P桶令牌和对应的用户组令牌的充足与否,将调度表分为存储C桶令牌和用户组令牌都充足的用户队列的第一级调度表和存储C桶令牌不足,但P桶令牌和对应的用户组令牌都充足的用户队列的第二级调度表,在进行出队调度时,根据这两级调度表进行调度,降低了出现空转的几率,降低了空转所消耗的CPU资源,提高了CPU资源的调度性能。
下面结合具体应用场景说明本发明技术方案的实现步骤。
假设场景如下:如果上行配置1000个用户队列,每个用户队列限速CIR速率为1Mbps,而PIR速率为1.1Mbps,且假设每个用户的报文长度均为100字节。
步骤1、初始化时,所有用户队列均不在任何调度表中。
步骤2、每个用户队列的第一个报文入队时,由于其没有出队,其C桶令牌为125000,而P桶令牌为137500,令牌桶深度为1秒中允许通过报文的字节总数。因此将其加入第一级调度表。
步骤3、如果执行CIR调度时,假设第500个用户队列对应的流队列中还缓存有10个报文,且C桶令牌此时还有200,而P桶令牌还有12700,此次调度之后C桶令牌为100,而P桶令牌则还有12600,故将其加入第一级调度表。
步骤4、如果执行CIR调度时,假设第570个用户队列对应的流队列中还缓存有8个报文,且C桶令牌此时还有100,而P桶令牌还有12600,此次调度之后C桶令牌为0,而P桶令牌则还有12500,则将其加入第二级调度表。
步骤5、如果执行PIR调度时,假设第300个用户队列对应的流队列中还缓存有5个报文,且C桶令牌此时为0,P桶令牌则还有300,此次调度之后C桶令牌为0,而P桶令牌则还有200,则将其加入第二级调度表。
步骤6、如果执行PIR调度时,假设第900个用户队列对应的流队列中还缓存有5个报文,且C桶令牌此时为0,P桶令牌则还有100,此次调度之后C桶令牌为0,而P桶令牌则还有0,则将其加入第三级调度表。
步骤7、如果执行某轮调度时,第1个用户队列对应的流队列中还缓存有1个报文,且C桶令牌此时为1000,P桶令牌则还有13500,此次调度之后队列中不再有报文,则不加入任何调度表。
步骤8、假设令牌添加时机为1毫秒一次,则C桶每次添加125个令牌,而P桶大约添加137个。如果第三级调度表中以用户队列中C桶令牌为-30,P桶为-60,执行一次令牌添加后其令牌数都变为正,则将该用户添加到第一级调度表中。
进一步,假设每个用户队列的数据流持续发送且大于用户队列限制的速率,则每次调度时队列总是不为空,令牌总是会被消耗完的,在现有技术方案中,当C桶令牌耗光时,先遍历1000个用户队列执行CIR调度,在针对调度表前128个报文执行PIR调度,此时出队128个报文的消耗是遍历1128个用户队列,而当P桶令牌也被耗光时,此时会遍历2000个用户队列,而出队报文个数为0。而在本发明技术方案中,当所有用户队列的C桶令牌耗光时,第一级调度表为空,执行调度时,直接从第二级调度表前128个用户队列中取用户队列进行出队操作,当P桶令牌也耗光时,第二级调度表也为空,执行一次调度出队报文个数为0,遍历用户队列的个数为0。由此可见,当令牌耗光后,执行调度的次数越多,本发明技术方案性能提升越明显。
图6为本发明一实施例提供的队列调度装置的结构示意图。如图6所示,本实施例的装置包括:第一出队调度模块61和第二出队调度模块62。
其中,第一出队调度模块61,与第一级调度表连接,用于在本轮出队调度过程中,在第一级调度表不为空,从第一级调度表中取下第一个用户队列,对取下的用户队列执行出队操作。所述第一级调度表中的用户队列是在加入第一级调度表时C桶令牌和对应的用户组令牌都充足的用户队列。
第二出队调度模块62,与第一级调度表和第二级调度表连接,用于在第一级调度表为空时,从第二级调度表中取下第一个用户队列,对取下的用户队列执行出队操作,在第二级调度表为空时,结束本轮出队调度。所述第二级调度表中的用户队列是在加入第二级调度表时C桶令牌不足而P桶令牌和对应的用户组令牌都充足的用户队列。
其中,C桶令牌充足是指用户队列在加入第一级调度表时,C桶中的令牌数不为0;C桶令牌不足是指用户队列在加入第一级调度表时,C桶中的令牌数为0。用户组令牌充足是指用户组对应的令牌桶中的令牌数不为0;反之,就是用户组令牌不足的情况。P桶令牌充足是指用队列在C桶令牌不足时而加入第二级调度表时,P桶中的令牌数不为0;P桶令牌不足是指用户队列在C桶令牌不足而加入第二级调度表时,P桶中的令牌数为0。
本实施例的队列调度装置的各功能模块可用于执行图1所示队列调度方法的流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例的队列调度装置可以是各种路由器、交换机等支持HQoS的设备。
本实施例的队列调度装置,根据用户队列的C桶令牌、P桶令牌和对应的用户组令牌的充足与否,将调度表分为存储C桶令牌和用户组令牌都充足的用户队列的第一级调度表和存储C桶令牌不足,但P桶令牌和对应的用户组令牌都充足的用户队列的第二级调度表,在进行出队调度时,根据这两级调度表进行调度,降低了出现空转的几率,降低了空转所消耗的CPU资源,提高了CPU资源的调度性能。
图7为本发明另一实施例提供的队列调度装置的结构示意图。本实施例基于图6所示实施例实现,如图7所示,本实施例的装置还包括:第一出队加入模块63、第二出队加入模块64、第三出队加入模块65和第四出队加入模块66。
其中,第一出队接入模块63和第二出队加入模块64分别与第一出队调度模块61连接,用于根据第一出队调度模块61对用户队列的出队操作结果对出队后的用户队列进行调度表加入操作。具体的,第一出队接入模块63用于如果在从第一级调度表中取下的用户队列的出队操作成功后,从第一级调度表中取下的用户队列不为空,且从第一级调度表中取下的用户队列的C桶令牌和对应的用户组令牌都充足时,将从第一级调度表中取下的用户队列重新加入第一级调度表的尾部;如果在从第一级调度表中取下的用户队列的出队操作成功后,从第一级调度表中取下的用户队列不为空,但从第一级调度表中取下的用户队列的C桶令牌不足,而从第一级调度表中取下的用户队列的P桶令牌和对应的用户组令牌充足,将从第一级调度表中取下的用户队列加入第二级调度表的尾部;如果在从第一级调度表中取下的用户队列的出队操作成功后,从第一级调度表中取下的用户队列为空,结束对从第一级调度表中取下的用户队列的调度。
第二出队加入模块64用于如果从第一级调度表中取下的用户队列的出队操作失败,或者如果在从第一级调度表中取下的用户队列的出队操作成功后,从第一级调度表中取下的用户队列的P桶令牌不足,或者如果在从第一级调度表中取下的用户队列的出队操作成功后,从第一级调度表中取下的用户队列对应的用户组令牌不足,将从第一级调度表中取下的用户队列加入第三级调度表的尾部;第三级调度表用于存储在添加令牌之前不被调度的用户队列。
其中,第三出队接入模块65和第四出队加入模块66分别与第二出队调度模块62连接,用于根据第二出队调度模块61对用户队列的出队操作结果对出队后的用户队列进行调度表加入操作。具体的,第三出队加入模块65用于如果在从第二级调度表中取下的用户队列的出队操作成功后,从第二级调度表中取下的用户队列不为空,且从第二级调度表中取下的用户队列的P桶令牌和对应的用户组令牌都充足,将从第二级调度表中取下的用户队列重新加入第二级调度表的尾部;如果在从第二级调度表中取下的用户队列的出队操作成功后,从第二级调度表中取下的用户队列为空,结束对从第二级调度表中取下的用户队列的调度。
第四出队加入模块66用于如果从第二级调度表中取下的用户队列的出队操作失败,或者如果在从第二级调度表中取下的用户队列的出队操作成功后,从第二级调度表中取下的用户队列的P桶令牌不足,或者如果在从第二级调度表中取下的用户队列的出队操作成功后,从第二级调度表中取下的用户队列对应的用户组令牌不足,将从第二级调度表中取下的用户队列加入第三级调度表的尾部。
上述各功能模块可用于执行图2所示实施例的流程,其具体工作原理不再赘述,详见方法实施例的描述。
进一步,本实施例的队列调度装置还包括:入队加入模块67。
入队加入模块67,与第一级调度表、第二级调度表和第三级调度表连接,用于在入队调度过程中,如果入队后的用户队列不在任何一级调度表中,且入队后的用户队列的C桶令牌和对应的用户组令牌都充足,将入队后的用户队列加入第一级调度表的尾部;如果入队后的用户队列不在任何一级调度表中,且入队后的用户队列的C桶令牌不足,但P桶令牌和所对应的用户组令牌充足,将入队后的用户队列加入第二级调度表的尾部;如果入队后的用户队列不在任何一级调度表中,且入队后的用户队列的P桶令牌不足或对应的用户组令牌不足,将入队后的用户队列加入第三级调度表的尾部。
上述功能模块可用于执行图3所示实施例的流程,其具体工作原理不再赘述,详见方法实施例的描述。
更进一步,本实施例的队列调度装置还包括:令牌添加模块68和重新加入模块69。
其中,令牌添加模块68,与第二级调度表中和第三级调度表连接,用于在执行入队调度之前或者在预设令牌添加周期到达时,对第二级调度表中和第三级调度表中的用户队列进行令牌添加操作。
重新加入模块69,与令牌添加模块68、第一级调度表、第二级调度表中和第三级调度表连接,用于如果第二级调度表中或第三级调度表中添加令牌后的用户队列的C桶令牌和对应的用户组令牌都充足,将第二级调度表中或所述第三级调度表中添加令牌后的用户队列从第二级调度表中或第三级调度表中移动到第一级调度表中;如果第三级调度表中添加令牌后的用户队列的C桶令牌不足,但P桶令牌和对应的用户组令牌充足,将第三级调度表中添加令牌后的用户队列从第三级调度表中移动到第二级调度表中。
上述功能模块可用于执行图4所示实施例的流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例的队列调度装置,根据用户队列的C桶令牌、P桶令牌和对应的用户组令牌的充足与否,将调度表分为存储C桶令牌和用户组令牌都充足的用户队列的第一级调度表和存储C桶令牌不足,但P桶令牌和对应的用户组令牌都充足的用户队列的第二级调度表,在进行出队调度时,根据这两级调度表进行调度,降低了出现空转的几率,降低了空转所消耗的CPU资源,提高了CPU资源的调度性能。
本发明一实施例提供一种网络设备,包括本发明上述实施例提供的队列调度装置。
其中,队列调度装置的结构示意图可参见图6或图7所示实施例,其工作原理可参见图1-图5所示方法实施例的描述,在此不再赘述。
本实施例的网络设备可以是路由器、交换机等各种支持HQoS调度的设备。
本实施例的网络设备包括本发明实施例提供的队列调度装置,因此同样可以降低出现空转的几率,降低空转所消耗的CPU资源,提高CPU资源的调度性能。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (9)
1.一种队列调度方法,其特征在于,包括:
在本轮出队调度过程中,如果第一级调度表不为空,从所述第一级调度表中取下第一个用户队列,对取下的用户队列执行出队操作;所述第一级调度表中的用户队列是在加入所述第一级调度表时C桶令牌和对应的用户组令牌都充足的用户队列;
如果所述第一级调度表为空,从第二级调度表中取下第一个用户队列,对取下的用户队列执行出队操作;所述第二级调度表中的用户队列是在加入所述第二级调度表时C桶令牌不足而P桶令牌和对应的用户组令牌都充足的用户队列;
如果所述第二级调度表为空,结束本轮出队调度;
如果在从所述第一级调度表中取下的用户队列的出队操作成功后,从所述第一级调度表中取下的用户队列不为空,且从所述第一级调度表中取下的用户队列的C桶令牌和对应的用户组令牌都充足,将从所述第一级调度表中取下的用户队列重新加入所述第一级调度表的尾部;
如果在从所述第一级调度表中取下的用户队列的出队操作成功后,从所述第一级调度表中取下的用户队列不为空,但从所述第一级调度表中取下的用户队列的C桶令牌不足,而从所述第一级调度表中取下的用户队列的P桶令牌和对应的用户组令牌充足,将从所述第一级调度表中取下的用户队列加入所述第二级调度表的尾部;
如果在从所述第一级调度表中取下的用户队列的出队操作成功后,从所述第一级调度表中取下的用户队列为空,结束对从所述第一级调度表中取下的用户队列的调度;
如果从所述第一级调度表中取下的用户队列的出队操作失败,或者如果在从所述第一级调度表中取下的用户队列的出队操作成功后,从所述第一级调度表中取下的用户队列的P桶令牌不足,或者如果在从所述第一级调度表中取下的用户队列的出队操作成功后,从所述第一级调度表中取下的用户队列对应的用户组令牌不足,将从所述第一级调度表中取下的用户队列加入第三级调度表的尾部;所述第三级调度表用于存储在添加令牌之前不被调度的用户队列。
2.根据权利要求1所述的队列调度方法,其特征在于,还包括:
如果在从所述第二级调度表中取下的用户队列的出队操作成功后,从所述第二级调度表中取下的用户队列不为空,且从所述第二级调度表中取下的用户队列的P桶令牌和对应的用户组令牌都充足,将从所述第二级调度表中取下的用户队列重新加入所述第二级调度表的尾部;
如果在从所述第二级调度表中取下的用户队列的出队操作成功后,从所述第二级调度表中取下的用户队列为空,结束对从所述第二级调度表中取下的用户队列的调度;
如果从所述第二级调度表中取下的用户队列的出队操作失败,或者如果在从所述第二级调度表中取下的用户队列的出队操作成功后,从所述第二级调度表中取下的用户队列的P桶令牌不足,或者如果在从所述第二级调度表中取下的用户队列的出队操作成功后,从所述第二级调度表中取下的用户队列对应的用户组令牌不足,将从所述第二级调度表中取下的用户队列加入第三级调度表的尾部。
3.根据权利要求1或2所述的队列调度方法,其特征在于,还包括:
在入队调度过程中,如果入队后的用户队列不在任何一级调度表中,且所述入队后的用户队列的C桶令牌和对应的用户组令牌都充足,将所述入队后的用户队列加入所述第一级调度表的尾部;如果所述入队后的用户队列不在任何一级调度表中,且所述入队后的用户队列的C桶令牌不足,但P桶令牌和所对应的用户组令牌充足,将所述入队后的用户队列加入所述第二级调度表的尾部;如果所述入队后的用户队列不在任何一级调度表中,且所述入队后的用户队列的P桶令牌不足或对应的用户组令牌不足,将所述入队后的用户队列加入所述第三级调度表的尾部。
4.根据权利要求1或2所述的队列调度方法,其特征在于,还包括:
在执行入队调度之前或者在预设令牌添加周期到达时,对所述第二级调度表中和所述第三级调度表中的用户队列进行令牌添加操作;
如果所述第二级调度表中或所述第三级调度表中添加令牌后的用户队列的C桶令牌和对应的用户组令牌都充足,将所述第二级调度表中或所述第三级调度表中添加令牌后的用户队列从所述第二级调度表中或所述第三级调度表中移动到所述第一级调度表中;如果所述第三级调度表中添加令牌后的用户队列的C桶令牌不足,但P桶令牌和对应的用户组令牌充足,将所述第三级调度表中添加令牌后的用户队列从所述第三级调度表中移动到所述第二级调度表中。
5.一种队列调度装置,其特征在于,包括:
第一出队调度模块,用于在本轮出队调度过程中,在第一级调度表不为空,从所述第一级调度表中取下第一个用户队列,对取下的用户队列执行出队操作;所述第一级调度表中的用户队列是在加入所述第一级调度表时C桶令牌和对应的用户组令牌都充足的用户队列;
第二出队调度模块,用于在所述第一级调度表为空时,从第二级调度表中取下第一个用户队列,对取下的用户队列执行出队操作,在所述第二级调度表为空时,结束本轮出队调度;所述第二级调度表中的用户队列是在加入所述第二级调度表时C桶令牌不足而P桶令牌和对应的用户组令牌都充足的用户队列;
第一出队加入模块,用于如果在从所述第一级调度表中取下的用户队列的出队操作成功后,从所述第一级调度表中取下的用户队列不为空,且从所述第一级调度表中取下的用户队列的C桶令牌和对应的用户组令牌都充足时,将从所述第一级调度表中取下的用户队列重新加入所述第一级调度表的尾部;如果在从所述第一级调度表中取下的用户队列的出队操作成功后,从所述第一级调度表中取下的用户队列不为空,但从所述第一级调度表中取下的用户队列的C桶令牌不足,而从所述第一级调度表中取下的用户队列的P桶令牌和对应的用户组令牌充足,将从所述第一级调度表中取下的用户队列加入所述第二级调度表的尾部;如果在从所述第一级调度表中取下的用户队列的出队操作成功后,从所述第一级调度表中取下的用户队列为空,结束对从所述第一级调度表中取下的用户队列的调度;
第二出队加入模块,用于如果从所述第一级调度表中取下的用户队列的出队操作失败,或者如果在从所述第一级调度表中取下的用户队列的出队操作成功后,从所述第一级调度表中取下的用户队列的P桶令牌不足,或者如果在从所述第一级调度表中取下的用户队列的出队操作成功后,从所述第一级调度表中取下的用户队列对应的用户组令牌不足,将从所述第一级调度表中取下的用户队列加入第三级调度表的尾部;所述第三级调度表用于存储在添加令牌之前不被调度的用户队列。
6.根据权利要求5所述的队列调度装置,其特征在于,还包括:
第三出队加入模块,用于如果在从所述第二级调度表中取下的用户队列的出队操作成功后,从所述第二级调度表中取下的用户队列不为空,且从所述第二级调度表中取下的用户队列的P桶令牌和对应的用户组令牌都充足,将从所述第二级调度表中取下的用户队列重新加入所述第二级调度表的尾部;如果在从所述第二级调度表中取下的用户队列的出队操作成功后,从所述第二级调度表中取下的用户队列为空,结束对从所述第二级调度表中取下的用户队列的调度;
第四出队加入模块,用于如果从所述第二级调度表中取下的用户队列的出队操作失败,或者如果在从所述第二级调度表中取下的用户队列的出队操作成功后,从所述第二级调度表中取下的用户队列的P桶令牌不足,或者如果在从所述第二级调度表中取下的用户队列的出队操作成功后,从所述第二级调度表中取下的用户队列对应的用户组令牌不足,将从所述第二级调度表中取下的用户队列加入第三级调度表的尾部。
7.根据权利要求5或6所述的队列调度装置,其特征在于,还包括:
入队加入模块,用于在入队调度过程中,如果入队后的用户队列不在任何一级调度表中,且所述入队后的用户队列的C桶令牌和对应的用户组令牌都充足,将所述入队后的用户队列加入所述第一级调度表的尾部;如果所述入队后的用户队列不在任何一级调度表中,且所述入队后的用户队列的C桶令牌不足,但P桶令牌和所对应的用户组令牌充足,将所述入队后的用户队列加入所述第二级调度表的尾部;如果所述入队后的用户队列不在任何一级调度表中,且所述入队后的用户队列的P桶令牌不足或对应的用户组令牌不足,将所述入队后的用户队列加入所述第三级调度表的尾部。
8.根据权利要求5或6所述的队列调度装置,其特征在于,还包括:
令牌添加模块,用于在执行入队调度之前或者在预设令牌添加周期到达时,对所述第二级调度表中和第三级调度表中的用户队列进行令牌添加操作;
重新加入模块,用于如果所述第二级调度表中或所述第三级调度表中添加令牌后的用户队列的C桶令牌和对应的用户组令牌都充足,将所述第二级调度表中或所述第三级调度表中添加令牌后的用户队列从所述第二级调度表中或所述第三级调度表中移动到所述第一级调度表中;如果所述第三级调度表中添加令牌后的用户队列的C桶令牌不足,但P桶令牌和对应的用户组令牌充足,将所述第三级调度表中添加令牌后的用户队列从所述第三级调度表中移动到所述第二级调度表中。
9.一种网络设备,其特征在于,包括权利要求5-8任一项所述的队列调度装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210018822.3A CN102546423B (zh) | 2012-01-20 | 2012-01-20 | 队列调度方法、装置及网络设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210018822.3A CN102546423B (zh) | 2012-01-20 | 2012-01-20 | 队列调度方法、装置及网络设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102546423A CN102546423A (zh) | 2012-07-04 |
CN102546423B true CN102546423B (zh) | 2014-10-29 |
Family
ID=46352411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210018822.3A Active CN102546423B (zh) | 2012-01-20 | 2012-01-20 | 队列调度方法、装置及网络设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102546423B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103547330B (zh) * | 2012-12-12 | 2016-09-28 | 华为技术有限公司 | 用户调度方法及其装置 |
CN103166875B (zh) * | 2013-03-12 | 2015-10-28 | 浙江大学 | 一种基于可编程交换机的网络资源的双层隔离方法 |
CN104348753B (zh) * | 2013-07-26 | 2018-10-12 | 华为技术有限公司 | 数据包转发方法以及数据包转发装置 |
CN103902370B (zh) * | 2014-03-14 | 2017-12-29 | 浪潮电子信息产业股份有限公司 | 一种消息队列的设计与实现方法 |
CN106302239A (zh) * | 2015-05-25 | 2017-01-04 | 深圳市中兴微电子技术有限公司 | 一种单组播流量调度管理的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104545A (zh) * | 2011-02-12 | 2011-06-22 | 华为技术有限公司 | 解决小包线速的credit调度方法、调度装置及旁路器 |
EP2357764A1 (en) * | 2010-02-09 | 2011-08-17 | Huawei Technologies Co., Ltd. | Traffic shaping scheduling method, traffic shaping scheduling apparatus, and routing device |
CN102217256A (zh) * | 2011-05-26 | 2011-10-12 | 华为技术有限公司 | 队列调度的方法和装置 |
CN102238078A (zh) * | 2010-05-07 | 2011-11-09 | 杭州华三通信技术有限公司 | 一种流量监管方法和流量监管设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100488165C (zh) * | 2005-07-06 | 2009-05-13 | 华为技术有限公司 | 一种流调度方法 |
-
2012
- 2012-01-20 CN CN201210018822.3A patent/CN102546423B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2357764A1 (en) * | 2010-02-09 | 2011-08-17 | Huawei Technologies Co., Ltd. | Traffic shaping scheduling method, traffic shaping scheduling apparatus, and routing device |
CN102238078A (zh) * | 2010-05-07 | 2011-11-09 | 杭州华三通信技术有限公司 | 一种流量监管方法和流量监管设备 |
CN102104545A (zh) * | 2011-02-12 | 2011-06-22 | 华为技术有限公司 | 解决小包线速的credit调度方法、调度装置及旁路器 |
CN102217256A (zh) * | 2011-05-26 | 2011-10-12 | 华为技术有限公司 | 队列调度的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102546423A (zh) | 2012-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2575869C (en) | Hierarchal scheduler with multiple scheduling lanes | |
CN102035732B (zh) | 业务调度方法及装置 | |
CN102546423B (zh) | 队列调度方法、装置及网络设备 | |
CN105812285A (zh) | 一种端口拥塞管理方法及装置 | |
US8230110B2 (en) | Work-conserving packet scheduling in network devices | |
CN101242360B (zh) | 一种基于优先级队列的网络地址转换方法及系统 | |
US8325736B2 (en) | Propagation of minimum guaranteed scheduling rates among scheduling layers in a hierarchical schedule | |
CN103647726B (zh) | 一种报文调度方法及装置 | |
US8339949B2 (en) | Priority-aware hierarchical communication traffic scheduling | |
Nolte et al. | Real-time server-based communication with CAN | |
WO2020143308A1 (zh) | 一种多级调度方法、装置、网络芯片及存储介质 | |
CN103685062A (zh) | 缓存管理方法及装置 | |
CN100466593C (zh) | 一种支持多业务的综合队列调度的实现方法 | |
AU2003221996B2 (en) | Scheduling using quantum and deficit values | |
Niu et al. | A hybrid static/dynamic dvs scheduling for real-time systems with (m, k)-guarantee | |
CN101478486A (zh) | 一种交换网数据调度方法、设备和系统 | |
CN104022965B (zh) | 一种报文出队调度的方法和设备 | |
CN102404225B (zh) | 一种用于差分队列服务系统的数据包快速入队方法 | |
CN102143053A (zh) | 传输数据的方法、装置和系统 | |
CN103701721A (zh) | 报文传输方法及装置 | |
CN101651614B (zh) | 多端口队列调度方法及设备 | |
CN109714223B (zh) | Nfv架构下实现网络业务接入动态负载分担功能的系统及其方法 | |
US8996764B1 (en) | Method and apparatus for controlling transmission of data packets from and to a server | |
JP4846601B2 (ja) | 不足ラウンドロビン方式のデータパケットスケジューリングのインスタントサービス方法 | |
CN100442760C (zh) | 一种分组公平调度方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee after: RUIJIE NETWORKS Co.,Ltd. Address before: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee before: Beijing Star-Net Ruijie Networks Co.,Ltd. |