專利名稱:隊(duì)列調(diào)度方法、裝置及網(wǎng)絡(luò)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù),尤其涉及一種隊(duì)列調(diào)度方法、裝置及網(wǎng)絡(luò)設(shè)備。
背景技術(shù):
隨著網(wǎng)際協(xié)議(Internet Protocol, IP)網(wǎng)絡(luò)上新應(yīng)用的不斷出現(xiàn),對(duì)IP網(wǎng)絡(luò)的服務(wù)質(zhì)量也提出了新的要求。例如,IP語音(Voice over IP, VoIP)等實(shí)時(shí)業(yè)務(wù)對(duì)報(bào)文的傳輸時(shí)延具有較高的要求,如果報(bào)文的傳輸時(shí)延太長(zhǎng),語音會(huì)延遲過長(zhǎng),對(duì)話就不能正常進(jìn)行,這是用戶所不能接受的。相對(duì)而言,E-mail和文本傳輸協(xié)議(File Transfer Protocol, FTP)業(yè)務(wù)對(duì)時(shí)間延遲并不敏感,即使有時(shí)速度降低,也不會(huì)對(duì)使用造成太多影響。為了支持具有不同服務(wù)需求的語音、視頻以及數(shù)據(jù)等業(yè)務(wù),要求IP網(wǎng)絡(luò)能夠區(qū)分出不同的業(yè)務(wù),進(jìn)而為之提供相應(yīng)的服務(wù)。服務(wù)質(zhì)量(Quality of Service, QoS)技術(shù)的出現(xiàn)便致力于解決這個(gè)問題。層次化QoS (Hierarchy QoS,HQoS)不同于以往的單層QoS主要針對(duì)業(yè)務(wù)進(jìn)行服務(wù)保證,HQoS可以將網(wǎng)絡(luò)中的數(shù)據(jù)流按照用戶業(yè)務(wù)、用戶和用戶組進(jìn)行多層面QoS保障。HQoS 包括多個(gè)調(diào)度級(jí)別,其中前三級(jí)的調(diào)度分別是第一級(jí)調(diào)度是流隊(duì)列(Flow Queue,F(xiàn)Q)、第二級(jí)調(diào)度是用戶隊(duì)列(User Queue,UQ)、第三級(jí)調(diào)度是用戶組隊(duì)列(Group Queue,GQ),前三級(jí)調(diào)度是作為一個(gè)整體進(jìn)行調(diào)度的。流隊(duì)列是根據(jù)用戶業(yè)務(wù)優(yōu)先級(jí)區(qū)分并暫存用戶各個(gè)流的數(shù)據(jù);UQ和GQ為虛擬隊(duì)列。所謂虛擬隊(duì)列是指隊(duì)列不存在實(shí)際的緩存單元,不暫存數(shù)據(jù), 數(shù)據(jù)進(jìn)入隊(duì)列和離開隊(duì)列沒有延遲,僅作為層次化調(diào)度中的一級(jí)隊(duì)列參與調(diào)度。其中,每個(gè)UQ可以配置有承諾信息速率(Committed Information feite,CIR)、峰值信息速率(Peak Information Rate, PIR)和引用的流隊(duì)列、流映射、用戶組隊(duì)列對(duì)象等。每個(gè)UQ對(duì)應(yīng)8種業(yè)務(wù)類型的FQ,根據(jù)實(shí)際應(yīng)用情況可以通過配置使用其中的幾種業(yè)務(wù)類型的FQ,但最多不會(huì)超過8個(gè)。HQoS可以將多個(gè)UQ綁定到一個(gè)GQ,但每個(gè)UQ最多只能綁定到一個(gè)GQ中。現(xiàn)有HQoS是基于令牌桶進(jìn)行隊(duì)列調(diào)度的。令牌桶是一種流量監(jiān)管技術(shù),通過添加令牌的方式對(duì)流量進(jìn)行監(jiān)管,一個(gè)令牌對(duì)應(yīng)報(bào)文的一個(gè)字節(jié);在調(diào)度過程中,有令牌才允許從隊(duì)列中出隊(duì),出隊(duì)后根據(jù)報(bào)文大小扣除相應(yīng)的令牌,達(dá)到衡量流量大小的目的。在HQoS 調(diào)度過程中,入隊(duì)時(shí),根據(jù)報(bào)文分類結(jié)果將報(bào)文緩存到所屬UQ對(duì)應(yīng)的FQ中,并且如果該UQ 不在調(diào)度表中,還要將該UQ加入調(diào)度表中;出隊(duì)時(shí),按照先CHR調(diào)度再P^調(diào)度的順序使出隊(duì)報(bào)文達(dá)到每輪出隊(duì)上限。在CHR或PIR的調(diào)度過程,如果調(diào)度表中UQ的數(shù)量不為0,則從調(diào)度表首部取下第一個(gè)UQ,然后判斷該UQ的C桶或P桶令牌以及UQ加入的GQ的用戶組令牌是否充足;如果是,則執(zhí)行出隊(duì)并扣除相應(yīng)UQ和GQ的令牌,否則將該UQ從調(diào)度表中取下,執(zhí)行相應(yīng)判斷操作之后重新將該UQ加入調(diào)度表尾部。其中,將UQ從調(diào)度表中取下,執(zhí)行判斷后重新將其加入調(diào)度表尾部的操作被稱為空轉(zhuǎn)??辙D(zhuǎn)會(huì)浪費(fèi)中央處理單元(Central Processing Unit, CPU)的資源,而在隊(duì)列調(diào)度所使用的CPU資源是有限的,因此空轉(zhuǎn)會(huì)導(dǎo)致CPU的調(diào)度性能下降,影響整機(jī)轉(zhuǎn)發(fā)。
發(fā)明內(nèi)容
本發(fā)明提供一種隊(duì)列調(diào)度方法、裝置及網(wǎng)絡(luò)設(shè)備,用以解決現(xiàn)有HQoS隊(duì)列調(diào)度過程中存在的浪費(fèi)CPU資源的問題,提高CPU的調(diào)度性能。本發(fā)明提供一種隊(duì)列調(diào)度方法,包括在本輪出隊(duì)調(diào)度過程中,如果第一級(jí)調(diào)度表不為空,從所述第一級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作;所述第一級(jí)調(diào)度表中的用戶隊(duì)列是在加入所述第一級(jí)調(diào)度表時(shí)C桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列;如果所述第一級(jí)調(diào)度表為空,從第二級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作;所述第二級(jí)調(diào)度表中的用戶隊(duì)列是在加入所述第二級(jí)調(diào)度表時(shí)C 桶令牌不足而P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列;如果所述第二級(jí)調(diào)度表為空,結(jié)束本輪出隊(duì)調(diào)度。本發(fā)明提供一種隊(duì)列調(diào)度裝置,包括 第一出隊(duì)調(diào)度模塊,用于在本輪出隊(duì)調(diào)度過程中,在第一級(jí)調(diào)度表不為空,從所述第一級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作;所述第一級(jí)調(diào)度表中的用戶隊(duì)列是在加入所述第一級(jí)調(diào)度表時(shí)C桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列;第二出隊(duì)調(diào)度模塊,用于在所述第一級(jí)調(diào)度表為空時(shí),從第二級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作,在所述第二級(jí)調(diào)度表為空時(shí),結(jié)束本輪出隊(duì)調(diào)度;所述第二級(jí)調(diào)度表中的用戶隊(duì)列是在加入所述第二級(jí)調(diào)度表時(shí)C桶令牌不足而P 桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列。本發(fā)明提供一種網(wǎng)絡(luò)設(shè)備,包括本發(fā)明提供的任一隊(duì)列調(diào)度裝置。本發(fā)明提供的隊(duì)列調(diào)度方法、裝置及網(wǎng)絡(luò)設(shè)備,根據(jù)用戶隊(duì)列的C桶令牌、P桶令牌和對(duì)應(yīng)的用戶組令牌的充足與否,將調(diào)度表分為存儲(chǔ)C桶令牌和用戶組令牌都充足的用戶隊(duì)列的第一級(jí)調(diào)度表和存儲(chǔ)C桶令牌不足,但P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列的第二級(jí)調(diào)度表,在進(jìn)行出隊(duì)調(diào)度時(shí),根據(jù)這兩級(jí)調(diào)度表進(jìn)行調(diào)度,降低了出現(xiàn)空轉(zhuǎn)的幾率,降低了空轉(zhuǎn)所消耗的CPU資源,提高了 CPU資源的調(diào)度性能。
圖1為本發(fā)明一實(shí)施例提供的隊(duì)列調(diào)度方法的流程圖;圖2為本發(fā)明另一實(shí)施例提供的隊(duì)列調(diào)度方法的流程圖;圖3為本發(fā)明又一實(shí)施例提供的隊(duì)列調(diào)度方法的流程圖;圖4為本發(fā)明一實(shí)施例提供的調(diào)整調(diào)度表的方法的流程圖;圖5為本發(fā)明再一實(shí)施例提供的隊(duì)列調(diào)度方法的流程圖;圖6為本發(fā)明一實(shí)施例提供的隊(duì)列調(diào)度裝置的結(jié)構(gòu)示意圖;圖7為本發(fā)明另一實(shí)施例提供的隊(duì)列調(diào)度裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式圖1為本發(fā)明一實(shí)施例提供的隊(duì)列調(diào)度方法的流程圖。如圖1所示,本實(shí)施例的方法包括
步驟101、在本輪出隊(duì)調(diào)度過程中,判斷第一級(jí)調(diào)度表是否為空;如果判斷結(jié)果為否,執(zhí)行步驟102 ;如果判斷結(jié)果為是,執(zhí)行步驟103。本實(shí)施例適用于HQoS調(diào)度。HQoS的作用對(duì)象是轉(zhuǎn)發(fā)中的數(shù)據(jù)流,通過QoS調(diào)度保證高優(yōu)先級(jí)報(bào)文對(duì)時(shí)延抖動(dòng)的要求。因此,HQoS是隊(duì)列調(diào)度裝置在對(duì)數(shù)據(jù)流進(jìn)行轉(zhuǎn)發(fā)過程中使用的一種技術(shù)。HQoS的前三級(jí)調(diào)度作為一個(gè)整體被執(zhí)行,HQoS隊(duì)列調(diào)度分為入隊(duì)調(diào)度和出隊(duì)調(diào)度,即所謂的入隊(duì)流程和出隊(duì)流程。在本實(shí)施例中,隊(duì)列調(diào)度裝置不再基于一個(gè)調(diào)度表對(duì)所有用戶隊(duì)列進(jìn)行出隊(duì)調(diào)度,而是基于三個(gè)級(jí)別的調(diào)度表。這三個(gè)調(diào)度表是根據(jù)用戶隊(duì)列的C桶令牌、P桶令牌和對(duì)應(yīng)的用戶組令牌是否充足的情況劃分的。其中,用戶隊(duì)列對(duì)應(yīng)的用戶組令牌是指該用戶隊(duì)列所加入的用戶組的所持有的令牌。在此說明,如果用戶隊(duì)列沒有加入任何用戶組,則該用戶隊(duì)列對(duì)應(yīng)的用戶組令牌為O。對(duì)于用戶隊(duì)列沒有加入用戶組的情況,本發(fā)明各實(shí)施例認(rèn)為該用戶隊(duì)列對(duì)應(yīng)的用戶組令牌是充足的。在三個(gè)調(diào)度表中分別存儲(chǔ)有不同類型的用戶隊(duì)列。在第一級(jí)調(diào)度表中的用戶隊(duì)列是在加入第一級(jí)調(diào)度表時(shí)C桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列。也就是說,只有C桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列才會(huì)被加入第一級(jí)調(diào)度表。其中,C桶令牌充足是指用戶隊(duì)列在加入第一級(jí)調(diào)度表時(shí),C桶中有令牌,即C桶中的令牌數(shù)不為O ;C 桶令牌不足是指用戶隊(duì)列在加入第一級(jí)調(diào)度表時(shí),C桶中沒有令牌,即C桶中的令牌數(shù)為O。 用戶組令牌充足是指用戶組對(duì)應(yīng)的令牌桶中有令牌,即用戶組對(duì)應(yīng)的令牌桶中的令牌數(shù)不為O ;反之,就是用戶組令牌不足的情況。在第二級(jí)調(diào)度表中的用戶隊(duì)列是在加入第二級(jí)調(diào)度表時(shí)C桶令牌不足,但P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列。也就是說,在C 桶令牌不足的情況,只有P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列才會(huì)被加入第二級(jí)調(diào)度表中。其中,P桶令牌充足是指用隊(duì)列在C桶令牌不足時(shí)而加入第二級(jí)調(diào)度表時(shí),P 桶中有令牌,即P桶中的令牌數(shù)不為O ;P桶令牌不足是指用戶隊(duì)列在C桶令牌不足而加入第二級(jí)調(diào)度表時(shí),P桶中沒有令牌,即P桶中的令牌數(shù)為O。其他用戶隊(duì)列,例如P桶令牌不足和/或?qū)?yīng)的用戶組令牌不足的用戶隊(duì)列,會(huì)被加入第三級(jí)調(diào)度表。在第三級(jí)調(diào)度表中的用戶隊(duì)列在添加令牌之前是不會(huì)被調(diào)度的,也就是說,第三級(jí)調(diào)度表是用來存儲(chǔ)添加令牌之前不被調(diào)度的用戶隊(duì)列的。其中,第一級(jí)調(diào)度表中用戶隊(duì)列的C桶令牌和對(duì)應(yīng)的用戶組令牌隨著出隊(duì)調(diào)度的執(zhí)行會(huì)發(fā)生變化。第二級(jí)調(diào)度表中用戶隊(duì)列的P桶令牌和對(duì)應(yīng)的用戶組令牌隨著出隊(duì)調(diào)度的執(zhí)行也會(huì)發(fā)生變化。在本實(shí)施例中,隊(duì)列調(diào)度裝置是以用戶隊(duì)列為單位進(jìn)行入隊(duì)調(diào)度和出隊(duì)調(diào)度的。 隊(duì)列調(diào)度裝置執(zhí)行出隊(duì)調(diào)度時(shí),只有當(dāng)被調(diào)度的報(bào)文(即出隊(duì)報(bào)文)的個(gè)數(shù)達(dá)到每輪出隊(duì)報(bào)文上限時(shí),才認(rèn)為該輪出隊(duì)調(diào)度結(jié)束。其中,每輪出隊(duì)報(bào)文上限可以預(yù)先設(shè)定,并且允許根據(jù)不同的應(yīng)用環(huán)境設(shè)置不同的值。在每輪出隊(duì)調(diào)度過程中,隊(duì)列調(diào)度裝置會(huì)優(yōu)先根據(jù)用戶隊(duì)列的CHR指標(biāo)進(jìn)行出隊(duì)調(diào)度(簡(jiǎn)稱為CHR調(diào)度),如果CIR調(diào)度結(jié)束后,被調(diào)度的報(bào)文仍未達(dá)到每輪出隊(duì)報(bào)文上限,隊(duì)列調(diào)度裝置會(huì)繼續(xù)根據(jù)MR指標(biāo)進(jìn)行出隊(duì)調(diào)度(簡(jiǎn)稱為PIR 調(diào)度)。在本實(shí)施例中,由于第一級(jí)調(diào)度表中存儲(chǔ)的用戶隊(duì)列都是C桶令牌充足的用戶隊(duì)列,故對(duì)第一級(jí)調(diào)度表中的用戶隊(duì)列進(jìn)行調(diào)度的過程就是CIR調(diào)度過程。
其中,隊(duì)列調(diào)度裝置在每一輪的出隊(duì)調(diào)度過程均相同,故本實(shí)施例以隊(duì)列調(diào)度裝置執(zhí)行一輪出隊(duì)調(diào)度(即所述的本輪出隊(duì)調(diào)度)為例進(jìn)行說明。在本輪調(diào)度過程中,隊(duì)列調(diào)度裝置會(huì)首先判斷被調(diào)度的報(bào)文個(gè)數(shù)是否達(dá)到每輪出隊(duì)報(bào)文上限;如果當(dāng)前被調(diào)度的報(bào)文個(gè)數(shù)達(dá)到每輪出隊(duì)報(bào)文上限,則結(jié)束本輪的出隊(duì)調(diào)度。在步驟101中,假設(shè)當(dāng)前被調(diào)度的報(bào)文數(shù)量未達(dá)到每輪出隊(duì)報(bào)文上限,則隊(duì)列調(diào)度裝置會(huì)判斷第一級(jí)調(diào)度表是否為空來確定對(duì)哪個(gè)用戶隊(duì)列進(jìn)行出隊(duì)調(diào)度。如果第一級(jí)調(diào)度表為不為空,則需要先對(duì)第一級(jí)調(diào)度表中的用戶隊(duì)列進(jìn)行出隊(duì)調(diào)度;如果第一級(jí)調(diào)度表為空,才能對(duì)第二級(jí)調(diào)度表進(jìn)行調(diào)度。步驟102、從第一級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作。當(dāng)隊(duì)列調(diào)度裝置判斷出第一級(jí)調(diào)度表不為空時(shí),從第一級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作。在本實(shí)施例中,第一級(jí)調(diào)度表是按照先進(jìn)先出的原理對(duì)各個(gè)用戶隊(duì)列進(jìn)行管理的。也就是說,如果第一個(gè)用戶隊(duì)列被取下后,原來的第二個(gè)用戶隊(duì)列就會(huì)重新變成第一個(gè)用戶隊(duì)列。其中,對(duì)從第一級(jí)調(diào)度表中取下的用戶隊(duì)列執(zhí)行出隊(duì)操作主要是指隊(duì)列調(diào)度裝置根據(jù)取下的用戶隊(duì)列的C桶令牌和對(duì)應(yīng)的用戶組令牌,從取下的用戶隊(duì)列對(duì)應(yīng)的流隊(duì)列的緩存中去取該用戶隊(duì)列對(duì)應(yīng)的一個(gè)報(bào)文并將取到的報(bào)文轉(zhuǎn)發(fā)出去的過程。其中,C桶令牌和用戶組令牌都充足才能出隊(duì)。本發(fā)明各實(shí)施例就是通過固定速率添加各種令牌來達(dá)到控制報(bào)文出隊(duì)速率的目的的。其中,如果隊(duì)列調(diào)度裝置取到報(bào)文且將報(bào)文成功轉(zhuǎn)發(fā)出去,則隊(duì)列調(diào)度裝置對(duì)取下的用戶隊(duì)列執(zhí)行的出隊(duì)操作成功,或者說該取下的用戶隊(duì)列的出隊(duì)操作成功。如果因?yàn)閷?duì)應(yīng)的用戶組令牌不足(例如用戶組令牌被加入該用戶組的其他用戶隊(duì)列都消耗掉)等導(dǎo)致隊(duì)列調(diào)度裝置未取到報(bào)文,則隊(duì)列調(diào)度裝置對(duì)取下的用戶隊(duì)列執(zhí)行的出隊(duì)操作不成功, 或者說該取下的用戶隊(duì)列的出隊(duì)操作不成功。步驟103、判斷第二級(jí)調(diào)度表是否為空;如果判斷結(jié)果為否,執(zhí)行步驟104 ;如果判斷結(jié)果為是,執(zhí)行步驟105。當(dāng)隊(duì)列調(diào)度裝置在當(dāng)前被調(diào)度的報(bào)文數(shù)量未達(dá)到每輪出隊(duì)報(bào)文上限的情況下,判斷出第一級(jí)調(diào)度表為空時(shí),說明需要繼續(xù)執(zhí)行PIR調(diào)度。由于第二級(jí)調(diào)度表中存儲(chǔ)的用戶隊(duì)列都是C桶令牌不足,但P桶令牌充足的用戶隊(duì)列,故對(duì)第二級(jí)調(diào)度表中的用戶隊(duì)列進(jìn)行調(diào)度的過程就是MR調(diào)度過程。因此,隊(duì)列調(diào)度裝置繼續(xù)判斷第二級(jí)調(diào)度表是否為空;如果第二調(diào)度表為空,說明已經(jīng)沒有用戶隊(duì)列需要被調(diào)度,則結(jié)束本輪出隊(duì)調(diào)度,如步驟105所述;如果第二調(diào)度表不為空,則繼續(xù)第二調(diào)度表中的用戶隊(duì)列進(jìn)行調(diào)度,如步驟104所述。如果取下的用戶隊(duì)列的出隊(duì)操作成功,則隊(duì)列調(diào)度裝置會(huì)將被調(diào)度的報(bào)文的數(shù)量加1,并重新判斷被調(diào)度的報(bào)文的數(shù)量是否達(dá)到每輪出隊(duì)報(bào)文上限,如果沒有,隊(duì)列調(diào)度裝置會(huì)繼續(xù)返回步驟101對(duì)下一個(gè)用戶隊(duì)列進(jìn)行調(diào)度,直到被調(diào)度的報(bào)文的數(shù)量達(dá)到每輪出隊(duì)報(bào)文上限或沒有用戶隊(duì)列被調(diào)度為止。如果取下的用戶隊(duì)列的出隊(duì)操作不成功,則隊(duì)列調(diào)度裝置直接返回步驟101對(duì)下一個(gè)用戶隊(duì)列進(jìn)行調(diào)度,直到被調(diào)度的報(bào)文的數(shù)量達(dá)到每輪出隊(duì)報(bào)文上限或沒有用戶隊(duì)列被調(diào)度為止。步驟104、從第二級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作。當(dāng)隊(duì)列調(diào)度裝置判斷出第二調(diào)度表不為空時(shí),從第二級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,并對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作。在本實(shí)施例中,第二級(jí)調(diào)度表也是按照先進(jìn)先出的原理對(duì)各個(gè)用戶隊(duì)列進(jìn)行管理。也就是說,隊(duì)列調(diào)度裝置從第二級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列后,原來的第二個(gè)用戶隊(duì)列就會(huì)變?yōu)榈谝粋€(gè)用戶隊(duì)列。其中,對(duì)從第二級(jí)調(diào)度表中取下的用戶隊(duì)列進(jìn)行出隊(duì)操作是指根據(jù)取下的用戶隊(duì)列的P桶令牌和對(duì)應(yīng)的用戶組令牌,從取下的用戶隊(duì)列對(duì)應(yīng)的流隊(duì)列的緩存中去取該用戶隊(duì)列對(duì)應(yīng)的一個(gè)報(bào)文并將取到的報(bào)文轉(zhuǎn)發(fā)出去的過程。其中,如果隊(duì)列調(diào)度裝置取到報(bào)文且將報(bào)文成功轉(zhuǎn)發(fā)出去,則隊(duì)列調(diào)度裝置對(duì)取下的用戶隊(duì)列執(zhí)行的出隊(duì)操作成功,或者說該取下的用戶隊(duì)列的出隊(duì)操作成功。如果因?yàn)閷?duì)應(yīng)的用戶組令牌不足(例如用戶組令牌被加入該用戶組的其他用戶隊(duì)列都消耗掉)等導(dǎo)致隊(duì)列調(diào)度裝置未取到報(bào)文,則隊(duì)列調(diào)度裝置對(duì)取下的用戶隊(duì)列執(zhí)行的出隊(duì)操作不成功, 或者說該取下的用戶隊(duì)列的出隊(duì)操作不成功。如果取下的用戶隊(duì)列的出隊(duì)操作成功,則隊(duì)列調(diào)度裝置會(huì)將被調(diào)度的報(bào)文的數(shù)量加1,并重新判斷被調(diào)度的報(bào)文的數(shù)量是否達(dá)到每輪出隊(duì)報(bào)文上限,如果沒有,隊(duì)列調(diào)度裝置會(huì)繼續(xù)返回步驟103對(duì)下一個(gè)用戶隊(duì)列進(jìn)行調(diào)度,直到被調(diào)度的報(bào)文的數(shù)量達(dá)到每輪出隊(duì)報(bào)文上限或沒有用戶隊(duì)列被調(diào)度為止。如果取下的用戶隊(duì)列的出隊(duì)操作不成功,則隊(duì)列調(diào)度裝置直接返回步驟103對(duì)下一個(gè)用戶隊(duì)列進(jìn)行調(diào)度,直到被調(diào)度的報(bào)文的數(shù)量達(dá)到每輪出隊(duì)報(bào)文上限或沒有用戶隊(duì)列被調(diào)度為止。步驟105、結(jié)束本輪出隊(duì)調(diào)度。本實(shí)施例的隊(duì)列調(diào)度方法,隊(duì)列調(diào)度裝置根據(jù)用戶隊(duì)列的C桶令牌、P桶令牌和對(duì)應(yīng)的用戶組令牌的充足與否,將調(diào)度表分為存儲(chǔ)C桶令牌和用戶組令牌都充足的用戶隊(duì)列的第一級(jí)調(diào)度表和存儲(chǔ)C桶令牌不足,但P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列的第二級(jí)調(diào)度表,在進(jìn)行出隊(duì)調(diào)度時(shí),只對(duì)這兩級(jí)調(diào)度表中的用戶隊(duì)列進(jìn)行出隊(duì)調(diào)度,與現(xiàn)有技術(shù)相比降低了出現(xiàn)空轉(zhuǎn)的幾率,降低了空轉(zhuǎn)所消耗的CPU資源,提高了 CPU資源的調(diào)度性能。下面通過與現(xiàn)有技術(shù)方案相比較來說明對(duì)本實(shí)施例的技術(shù)效果以每輪出隊(duì)128 個(gè)報(bào)文為例,采用現(xiàn)有技術(shù)中的出隊(duì)方案,在每個(gè)用戶隊(duì)列的令牌充足(此時(shí)未發(fā)生擁塞) 的情況下,出隊(duì)1 個(gè)報(bào)文只用遍歷調(diào)度表前1 個(gè)用戶隊(duì)列,而在由于用戶隊(duì)列的令牌不足導(dǎo)致出隊(duì)性能低而引起擁塞的情況下,如果某次調(diào)度之后,當(dāng)用戶隊(duì)列的C桶令牌耗完或者用戶隊(duì)列對(duì)應(yīng)用戶組令牌不足時(shí),再執(zhí)行出隊(duì)調(diào)度時(shí),由于用戶隊(duì)列沒有令牌則會(huì)出現(xiàn)將用戶隊(duì)列從調(diào)度表中取下,然后執(zhí)行判斷后重新加入調(diào)度表尾部的空轉(zhuǎn)現(xiàn)象。當(dāng)耗光令牌的用戶隊(duì)列較多時(shí),一次調(diào)度過程中會(huì)存在多次空轉(zhuǎn)。同理,如果執(zhí)行CHR調(diào)度結(jié)束后仍為達(dá)到出隊(duì)報(bào)文上限,在繼續(xù)執(zhí)行PIR調(diào)度過程中同樣會(huì)出現(xiàn)空轉(zhuǎn)現(xiàn)象,極限情況下所有用戶隊(duì)列均沒有令牌出隊(duì),以1000個(gè)用戶隊(duì)列為例,在該情況下一輪出隊(duì)調(diào)度會(huì)累積輪詢2000個(gè)用戶隊(duì)列,這對(duì)CPU資源是一種極大的浪費(fèi),特別是隨著用戶隊(duì)列較多增多的情況下,隊(duì)列調(diào)度工作量大大增加,出現(xiàn)空轉(zhuǎn)的幾率會(huì)更高,對(duì)CPU資源造成的浪費(fèi)會(huì)更加明顯。而本實(shí)施例在將用戶隊(duì)列加入調(diào)度表時(shí),通過三級(jí)調(diào)度表對(duì)用戶隊(duì)列進(jìn)行區(qū)分,并且僅調(diào)度第一級(jí)調(diào)度表和第二級(jí)調(diào)度表中的用戶隊(duì)列,由于第一級(jí)調(diào)度表和第二級(jí)調(diào)度表中的用戶隊(duì)列是C桶令牌或P桶令牌充足的用戶隊(duì)列,降低了出現(xiàn)空轉(zhuǎn)的現(xiàn)象,節(jié)約了空轉(zhuǎn)現(xiàn)象所消耗的CPU資源,從而提高了 CPU的調(diào)度性能。
進(jìn)一步,當(dāng)隊(duì)列調(diào)度裝置對(duì)從第一級(jí)調(diào)度表或從第二級(jí)調(diào)度表中取下的用戶隊(duì)列執(zhí)行出隊(duì)操作之后,如果該用戶隊(duì)列不為空(或者說還有報(bào)文需要轉(zhuǎn)發(fā)),則隊(duì)列調(diào)度裝置需要將該用戶隊(duì)列重新加入某個(gè)調(diào)度表中,以待進(jìn)行下一次出隊(duì)調(diào)度。
其中,隊(duì)列調(diào)度裝置將調(diào)度后不為空的用戶隊(duì)列重新加入調(diào)度表的一種實(shí)施方式可以是從哪個(gè)調(diào)度表中被取下,還加入到哪個(gè)調(diào)度表中。例如,如果用戶隊(duì)列是從第一級(jí)調(diào)度表中被取下的,則隊(duì)列調(diào)度裝置將出隊(duì)之后尚不為空的用戶隊(duì)列加入第一級(jí)調(diào)度表的尾部。如果用戶隊(duì)列是從第二級(jí)調(diào)度表中被取下的,則隊(duì)列調(diào)度裝置將出隊(duì)后尚不為空的用戶隊(duì)列加入第二級(jí)調(diào)度表。
由于上述實(shí)施方式與現(xiàn)有技術(shù)相類似,當(dāng)在經(jīng)過幾輪出隊(duì)調(diào)度后,也可能出現(xiàn)空轉(zhuǎn)現(xiàn)象。為了進(jìn)一步降低空轉(zhuǎn)現(xiàn)象的出現(xiàn),本發(fā)明實(shí)施例另提供一種隊(duì)列調(diào)度裝置將調(diào)度后不為空的用戶隊(duì)列重新加入調(diào)度表的實(shí)施方式。該實(shí)施方式主要是根據(jù)調(diào)度后不為空的用戶隊(duì)列的C桶令牌、P桶令牌和對(duì)應(yīng)的用戶組令牌是否充足的情況,將調(diào)度后不為空的用戶隊(duì)列加入相應(yīng)的調(diào)度表中。結(jié)合出隊(duì)后不為空的用戶隊(duì)列是從哪個(gè)調(diào)度表中被取下、用戶隊(duì)列出隊(duì)操作的結(jié)果、以及用戶隊(duì)列的令牌情況,該實(shí)施方式具體包括以下幾種情況
(1)如果用戶隊(duì)列是從第一級(jí)調(diào)度表中取下的用戶隊(duì)列,則在該用戶隊(duì)列的出隊(duì)操作成功后,如果該用戶隊(duì)列不為空,且從該用戶隊(duì)列的C桶令牌和對(duì)應(yīng)的用戶組令牌都充足,將該用戶隊(duì)列重新加入第一級(jí)調(diào)度表的尾部。
(2)如果用戶隊(duì)列是從第一級(jí)調(diào)度表中取下的用戶隊(duì)列,則在該用戶隊(duì)列的出隊(duì)操作成功后,如果該用戶隊(duì)列不為空,但該用戶隊(duì)列的C桶令牌不足,而該用戶隊(duì)列的P桶令牌和對(duì)應(yīng)的用戶組令牌充足,將該用戶隊(duì)列加入第二級(jí)調(diào)度表的尾部。
(3)如果用戶隊(duì)列是從第一級(jí)調(diào)度表中取下的用戶隊(duì)列,且該用戶隊(duì)列的出隊(duì)操作失敗,將該用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部。
(4)如果用戶隊(duì)列是從第一級(jí)調(diào)度表中取下的用戶隊(duì)列,則在該用戶隊(duì)列的出隊(duì)操作成功后,如果該用戶隊(duì)列不為空,但該用戶隊(duì)列的C桶令牌不足,且該用戶隊(duì)列的P桶令牌也不足,將用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部。
(5)如果用戶隊(duì)列是從第一級(jí)調(diào)度表中取下的用戶隊(duì)列,則在該用戶隊(duì)列的出隊(duì)操作成功后,如果該用戶隊(duì)列不為空,但該用戶隊(duì)列的對(duì)應(yīng)的用戶組令牌不足,將用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部。
(6)如果用戶隊(duì)列是從第二級(jí)調(diào)度表中取下的用戶隊(duì)列,則在該用戶隊(duì)列的出隊(duì)操作成功后,如果該用戶隊(duì)列不為空,且該用戶隊(duì)列的P桶令牌和對(duì)應(yīng)的用戶組令牌都充足,將該用戶隊(duì)列重新加入第二級(jí)調(diào)度表的尾部。
(7)如果用戶隊(duì)列是從第二級(jí)調(diào)度表中取下的用戶隊(duì)列,且該用戶隊(duì)列的出隊(duì)操作失敗,將該用戶隊(duì)列重新加入第三級(jí)調(diào)度表的尾部。
(8)如果用戶隊(duì)列是從第二級(jí)調(diào)度表中取下的用戶隊(duì)列,則在該用戶隊(duì)列的出隊(duì)操作成功后,如果該用戶隊(duì)列不為空,但該用戶隊(duì)列的P桶令牌不足,將該用戶隊(duì)列重新加入第三級(jí)調(diào)度表的尾部。
(9)如果用戶隊(duì)列是從第二級(jí)調(diào)度表中取下的用戶隊(duì)列,則在該用戶隊(duì)列的出隊(duì)操作成功后,如果該用戶隊(duì)列不為空,但該用戶隊(duì)列對(duì)應(yīng)的用戶組令牌不足,將該用戶隊(duì)列重新加入第三級(jí)調(diào)度表的尾部。
進(jìn)一步,如果用戶隊(duì)列是從第一級(jí)調(diào)度表中取下的用戶隊(duì)列,則在該用戶隊(duì)列的出隊(duì)操作成功后,如果用戶隊(duì)列為空,則結(jié)束對(duì)該用戶隊(duì)列的出隊(duì)調(diào)度,即不將該用戶隊(duì)列加入任何一個(gè)調(diào)度表中。
如果用戶隊(duì)列是從第二級(jí)調(diào)度表中取下的用戶隊(duì)列,則在該用戶隊(duì)列的出隊(duì)操作成功后,如果用戶隊(duì)列為空,則結(jié)束對(duì)該用戶隊(duì)列的出隊(duì)調(diào)度,即不將該用戶隊(duì)列加入任何一個(gè)調(diào)度表中。
下面實(shí)施例將舉例說明上述實(shí)施方式的流程。
圖2為本發(fā)明另一實(shí)施例提供的隊(duì)列調(diào)度方法的流程圖。如圖2所示,本實(shí)施例的方法包括
步驟201、在本輪出隊(duì)調(diào)度過程中,判斷第一級(jí)調(diào)度表是否為空;如果判斷結(jié)果為否,執(zhí)行步驟202 ;如果判斷結(jié)果為是,執(zhí)行步驟212。
步驟202、從第一級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作,并執(zhí)行步驟203。
上述步驟201和步驟202可參見步驟101和步驟102的描述,在此不再贅述。
步驟203、判斷從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作是否成功;如果判斷結(jié)果為是,執(zhí)行步驟204 ;如果判斷結(jié)果為否,執(zhí)行步驟210。
其中,隊(duì)列調(diào)度裝置可以通過判斷是否從用戶隊(duì)列對(duì)應(yīng)的流隊(duì)列的緩存中讀取到報(bào)文并將報(bào)文成功轉(zhuǎn)發(fā)出去來判斷用戶隊(duì)列的出隊(duì)操作是否成功。
步驟204、判斷從第一級(jí)調(diào)度表中取下的用戶隊(duì)列是否為空;如果判斷結(jié)果為否, 執(zhí)行步驟205 ;如果判斷結(jié)果為是,執(zhí)行步驟211。
其中,從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,隊(duì)列調(diào)度裝置繼續(xù)判斷該用戶隊(duì)列是否為空,即判斷該用戶隊(duì)列是否還有報(bào)文需要轉(zhuǎn)發(fā)。例如,可以通過判斷該用戶隊(duì)列對(duì)應(yīng)的流隊(duì)列的緩存是否為空來判斷該用戶隊(duì)列是否為空。
步驟205、判斷從第一級(jí)調(diào)度表中取下的用戶隊(duì)列對(duì)應(yīng)的用戶組令牌是否充足; 如果判斷結(jié)果為是,執(zhí)行步驟206 ;如果判斷結(jié)果為否,執(zhí)行步驟210。
在從第一級(jí)調(diào)度表中取下的用戶隊(duì)列不為空時(shí),隊(duì)列調(diào)度裝置繼續(xù)判斷該用戶隊(duì)列對(duì)應(yīng)的用戶組令牌是否充足。其中,如果該用戶隊(duì)列加入某個(gè)用戶組,則隊(duì)列調(diào)度裝置通過判斷該用戶隊(duì)列加入的用戶組目前所持有的令牌的數(shù)目是否大于0,如果是確定該用戶隊(duì)列對(duì)應(yīng)的用戶組令牌充足,反之確定該用戶隊(duì)列對(duì)應(yīng)的用戶組令牌不足。如果用戶隊(duì)列沒有加入任何用戶組,則隊(duì)列調(diào)度裝置直接判定其對(duì)應(yīng)的用戶組令牌充足。
步驟206、判斷從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的C桶令牌是否充足;如果判斷結(jié)果為是,執(zhí)行步驟207 ;如果判斷結(jié)果為否,執(zhí)行步驟208。
當(dāng)從第一級(jí)調(diào)度表中取下的用戶隊(duì)列對(duì)應(yīng)的用戶組令牌充足時(shí),隊(duì)列調(diào)度裝置繼續(xù)判斷該用戶隊(duì)列的C桶令牌是否充足。
步驟207、將從第一級(jí)調(diào)度表中取下的用戶隊(duì)列重新加入第一級(jí)調(diào)度表的尾部,以等待下一次調(diào)度,并執(zhí)行步驟212。
在從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,如果該從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的用戶隊(duì)列不為空、且其C桶令牌和用戶組令牌都充足時(shí),隊(duì)列調(diào)度裝置將其重新加入第一級(jí)調(diào)度隊(duì)列的尾部,以等待下一次調(diào)度。同時(shí),通過這種出隊(duì)后的加入操作使得第一級(jí)調(diào)度表中加入的是C桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列,使得在對(duì)第一級(jí)調(diào)度表中的用戶隊(duì)列進(jìn)行調(diào)度時(shí)降低了因出現(xiàn)C桶令牌或?qū)?yīng)的用戶組令牌不足而導(dǎo)致的空轉(zhuǎn)現(xiàn)象的幾率。
步驟208、判斷從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的P桶令牌是否充足;如果判斷結(jié)果為是,執(zhí)行步驟209 ;如果判斷結(jié)果為否,執(zhí)行步驟210。
當(dāng)從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,如果該用戶隊(duì)列不為空,在其對(duì)應(yīng)的用戶組令牌充足,而其C桶令牌不足時(shí),隊(duì)列調(diào)度裝置繼續(xù)判斷該用戶隊(duì)列的P桶令牌是否充足。
步驟209、將第一級(jí)調(diào)度表中取下的用戶隊(duì)列加入第二級(jí)調(diào)度表的尾部,以等待下一次調(diào)度,并執(zhí)行步驟212。
在從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,如果該從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的用戶隊(duì)列不為空、且其C桶令牌不足,但其P桶令牌和對(duì)應(yīng)的用戶組令牌都充足時(shí),隊(duì)列調(diào)度裝置將其加入第二級(jí)調(diào)度隊(duì)列的尾部,以等待下一次調(diào)度。同時(shí),通過這種出隊(duì)后的加入操作使得第二級(jí)調(diào)度表中加入的是C桶令牌不足,但P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列,使得在對(duì)第二級(jí)調(diào)度表中的用戶隊(duì)列進(jìn)行調(diào)度時(shí)降低了因出現(xiàn)P桶令牌或?qū)?yīng)的用戶組令牌不足而導(dǎo)致的空轉(zhuǎn)現(xiàn)象的幾率。
步驟210、將從第一級(jí)調(diào)度表中取下的用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部,并執(zhí)行步驟212。
如果從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作失敗,或者雖然從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功,但其P桶令牌和/或?qū)?yīng)的用戶組令牌不足,則將該用戶隊(duì)列加入第三級(jí)調(diào)度表中,暫時(shí)不對(duì)該用戶隊(duì)列進(jìn)行調(diào)度。只有在重新添加令牌之后, 根據(jù)令牌的情況重新對(duì)該用戶隊(duì)列進(jìn)行出隊(duì)調(diào)度。這在一定程度上抑制了出現(xiàn)空轉(zhuǎn)現(xiàn)象。
步驟211、結(jié)束對(duì)從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的調(diào)度操作,并執(zhí)行步驟 212。
如果從第一級(jí)調(diào)度表中取下的用戶隊(duì)列為空,說明該用戶隊(duì)列沒有報(bào)文需要轉(zhuǎn)發(fā),因此,結(jié)束對(duì)該用戶隊(duì)列的調(diào)度,也就是說不需要將該用戶隊(duì)列加入任何一個(gè)調(diào)度表中。
步驟212、判斷第二級(jí)調(diào)度表是否為空;如果判斷結(jié)果為否,執(zhí)行步驟213 ;如果判斷結(jié)果為是,執(zhí)行步驟221。
步驟213、從第二級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,并對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作,并執(zhí)行步驟214。
上述步驟212和步驟213可參見步驟103和步驟104的描述,在此不再贅述。
步驟214、判斷從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作是否成功;如果判斷結(jié)果為是,執(zhí)行步驟215 ;如果判斷結(jié)果為否,執(zhí)行步驟219。
其中,隊(duì)列調(diào)度裝置可以通過判斷是否從用戶隊(duì)列對(duì)應(yīng)的流隊(duì)列的緩存中讀取到報(bào)文并將報(bào)文成功轉(zhuǎn)發(fā)出去來判斷用戶隊(duì)列的出隊(duì)操作是否成功。
步驟215、判斷從第二級(jí)調(diào)度表中取下的用戶隊(duì)列是否為空;如果判斷結(jié)果為否, 執(zhí)行步驟216 ;如果判斷結(jié)果為是,執(zhí)行步驟220。
其中,從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,隊(duì)列調(diào)度裝置繼續(xù)判斷該用戶隊(duì)列是否為空,即判斷該用戶隊(duì)列是否還有報(bào)文需要轉(zhuǎn)發(fā)。例如,可以通過判斷該用戶隊(duì)列對(duì)應(yīng)的流隊(duì)列的緩存是否為空來判斷該用戶隊(duì)列是否為空。
步驟216、判斷從第二級(jí)調(diào)度表中取下的用戶隊(duì)列對(duì)應(yīng)的用戶組令牌是否充足; 如果判斷結(jié)果為是,執(zhí)行步驟217 ;如果判斷結(jié)果為否,執(zhí)行步驟219。
在從第二級(jí)調(diào)度表中取下的用戶隊(duì)列不為空時(shí),隊(duì)列調(diào)度裝置繼續(xù)判斷該用戶隊(duì)列對(duì)應(yīng)的用戶組令牌是否充足。具體的判斷過程可參見步驟205的描述。
步驟217、判斷從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的P桶令牌是否充足;如果判斷結(jié)果為是,執(zhí)行步驟218 ;如果判斷結(jié)果為否,執(zhí)行步驟219。
當(dāng)從第二級(jí)調(diào)度表中取下的用戶隊(duì)列對(duì)應(yīng)的用戶組令牌充足時(shí),隊(duì)列調(diào)度裝置繼續(xù)判斷該用戶隊(duì)列的P桶令牌是否充足。
步驟218、將從第二級(jí)調(diào)度表中取下的用戶隊(duì)列重新加入第二級(jí)調(diào)度表的尾部,以等待下一次調(diào)度。
在從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,如果該從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的用戶隊(duì)列不為空、且其P桶令牌和用戶組令牌都充足時(shí),隊(duì)列調(diào)度裝置將其重新加入第二級(jí)調(diào)度隊(duì)列的尾部,以等待下一次調(diào)度。同時(shí),通過這種出隊(duì)后的加入操作使得第二級(jí)調(diào)度表中加入的是C桶令牌不足,但P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列,使得在對(duì)第二級(jí)調(diào)度表中的用戶隊(duì)列進(jìn)行調(diào)度時(shí)降低了因出現(xiàn)P桶令牌或?qū)?yīng)的用戶組令牌不足而導(dǎo)致的空轉(zhuǎn)現(xiàn)象的幾率。
步驟219、將從第二級(jí)調(diào)度表中取下的用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部。
如果從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作失敗,或者雖然從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功,但其P桶令牌和/或?qū)?yīng)的用戶組令牌不足,則將該用戶隊(duì)列加入第三級(jí)調(diào)度表中,暫時(shí)不對(duì)該用戶隊(duì)列進(jìn)行調(diào)度。只有在重新添加令牌之后, 根據(jù)令牌的情況重新對(duì)該用戶隊(duì)列進(jìn)行出隊(duì)調(diào)度。這在一定程度上抑制了出現(xiàn)空轉(zhuǎn)現(xiàn)象。
步驟220、結(jié)束對(duì)從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的調(diào)度。
如果從第二級(jí)調(diào)度表中取下的用戶隊(duì)列為空,說明該用戶隊(duì)列沒有報(bào)文需要轉(zhuǎn)發(fā),因此,結(jié)束對(duì)該用戶隊(duì)列的調(diào)度,也就是說不需要將該用戶隊(duì)列加入任何一個(gè)調(diào)度表中。
步驟221、結(jié)束本輪出隊(duì)調(diào)度。
當(dāng)本輪出隊(duì)調(diào)度的報(bào)文達(dá)到每輪出隊(duì)報(bào)文上限時(shí),結(jié)束本輪出隊(duì)調(diào)度。
本實(shí)施例的隊(duì)列調(diào)度方法,隊(duì)列調(diào)度裝置根據(jù)用戶隊(duì)列的C桶令牌、P桶令牌和對(duì)應(yīng)的用戶組令牌的充足與否,將調(diào)度表分為存儲(chǔ)C桶令牌和用戶組令牌都充足的用戶隊(duì)列的第一級(jí)調(diào)度表和存儲(chǔ)C桶令牌不足,但P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列的第二級(jí)調(diào)度表,在進(jìn)行出隊(duì)調(diào)度時(shí),只對(duì)這兩級(jí)調(diào)度表中的用戶隊(duì)列進(jìn)行出隊(duì)調(diào)度,與現(xiàn)有技術(shù)相比降低了出現(xiàn)空轉(zhuǎn)的幾率,降低了空轉(zhuǎn)所消耗的CPU資源,提高了 CPU資源的調(diào)度性能。
在此說明,上述實(shí)施例中判斷用戶隊(duì)列是否為空、C桶令牌是否充足、對(duì)應(yīng)的用戶組令牌是否充足、P桶令牌是否充足等判斷操作并不限于上述一種執(zhí)行順序,其先后順序不受限制。
其中,HQoS隊(duì)列調(diào)度包括出隊(duì)調(diào)度和入隊(duì)調(diào)度兩個(gè)過程,下面實(shí)施例詳細(xì)描述一下基于三級(jí)調(diào)度表的入隊(duì)操作后的處理流程。
圖3為本發(fā)明又一實(shí)施例提供的隊(duì)列調(diào)度方法的流程圖。如圖3所示,本實(shí)施例的方法包括
步驟301、對(duì)用戶隊(duì)列進(jìn)行入隊(duì)操作。
其中,隊(duì)列調(diào)度裝置對(duì)用戶隊(duì)列進(jìn)行入隊(duì)操作主要是指將該用戶隊(duì)列對(duì)應(yīng)的報(bào)文加入該用戶隊(duì)列對(duì)應(yīng)的流隊(duì)列的緩存中。該操作與現(xiàn)有技術(shù)相同,不再詳述。
步驟302、在入隊(duì)操作結(jié)束之后,判斷入隊(duì)后的用戶隊(duì)列是否不存在于任何一級(jí)調(diào)度表中;如果判斷結(jié)果為是,執(zhí)行步驟303 ;如果判斷結(jié)果為否,執(zhí)行步驟309。
在本實(shí)施例中,隊(duì)列調(diào)度裝置在用戶隊(duì)列入隊(duì)之后,判斷當(dāng)前入隊(duì)后的用戶隊(duì)列是否存在三個(gè)調(diào)度表中的某個(gè)調(diào)度表中;如果不存在任何一個(gè)調(diào)度表中,則執(zhí)行調(diào)度表加入流程,如果已存在某個(gè)調(diào)度表中,則調(diào)度表加入結(jié)束。
步驟303、判斷入隊(duì)后的用戶隊(duì)列的對(duì)應(yīng)的用戶組令牌是否充足;如果判斷結(jié)果為是,執(zhí)行步驟304 ;如果判斷結(jié)果為否,執(zhí)行步驟308。
步驟304、判斷入隊(duì)后的用戶對(duì)流的C桶令牌是否充足;如果判斷結(jié)果為是,執(zhí)行步驟305 ;如果判斷結(jié)果為否,執(zhí)行步驟306。
步驟305、將入隊(duì)后的用戶隊(duì)列加入第一級(jí)調(diào)度表的尾部。
如果入隊(duì)后的用戶隊(duì)列不存在任何一個(gè)調(diào)度表中,且入隊(duì)后的用戶隊(duì)列的C桶令牌和對(duì)應(yīng)的用戶組令牌都充足,則隊(duì)列調(diào)度裝置將入隊(duì)后的用戶隊(duì)列加入第一級(jí)調(diào)度表的尾部。
其中,上述步驟302-步驟304的執(zhí)行順序并不限于本實(shí)施例這一種,凡是能夠判斷出上述結(jié)果的執(zhí)行順序都可以。
步驟306、判斷入隊(duì)后的用戶隊(duì)列的P桶令牌是否充足;如果判斷結(jié)果為是,執(zhí)行步驟307 ;如果判斷結(jié)果為否,執(zhí)行步驟308。
步驟307、將入隊(duì)后的用戶隊(duì)列加入第二級(jí)調(diào)度表的尾部。
如果入隊(duì)后的用戶隊(duì)列不存在任何一個(gè)調(diào)度表中,且入隊(duì)后的用戶隊(duì)列的C桶令牌不足,而其P桶令牌和對(duì)應(yīng)的用戶組令牌都充足,則隊(duì)列調(diào)度裝置將入隊(duì)后的用戶隊(duì)列加入第二級(jí)調(diào)度表的尾部。
步驟308、將入隊(duì)后的用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部。
如果入隊(duì)后的用戶隊(duì)列不存在任何一個(gè)調(diào)度表中,但入隊(duì)后的用戶隊(duì)列的C桶令牌不足,且P桶令牌也不足,或者其對(duì)應(yīng)的用戶組令牌不足,則隊(duì)列調(diào)度裝置將入隊(duì)后的用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部。
步驟309、結(jié)束調(diào)度表加入操作。
本實(shí)施例的隊(duì)列調(diào)度方法,隊(duì)列調(diào)度裝置主要根據(jù)入隊(duì)后的用戶隊(duì)列的C桶令牌、P桶令牌和對(duì)應(yīng)的用戶組令牌的充足情況,將其加入相應(yīng)調(diào)度表。本實(shí)施例的入隊(duì)調(diào)度方法與其他實(shí)施例提供的出隊(duì)調(diào)度方法相配合,進(jìn)一步降低了出隊(duì)調(diào)度過程中出現(xiàn)的空轉(zhuǎn)現(xiàn)象的幾率,進(jìn)一步提高了 CPU的調(diào)度性能。
其中,上述入隊(duì)調(diào)度過程可以與出隊(duì)調(diào)度過程作為一個(gè)完整的調(diào)度過程,并在出隊(duì)調(diào)度之前執(zhí)行,也可以獨(dú)立于出隊(duì)調(diào)度而執(zhí)行。
在上述入隊(duì)調(diào)度或出隊(duì)調(diào)度過程中,還會(huì)涉及令牌添加操作。其中,隊(duì)列調(diào)度裝置可以周期性的執(zhí)行令牌添加操作,也可以在每次執(zhí)行入隊(duì)調(diào)度之前執(zhí)行令牌添加操作,還可以是在執(zhí)行出隊(duì)調(diào)度過程中執(zhí)行令牌添加操作等。其中,令牌添加操作是指為各調(diào)度表中的用戶隊(duì)列添加C桶令牌、P桶令牌和/或?qū)?yīng)的用戶組令牌的過程,具體添加過程與現(xiàn)有技術(shù)相類似,在此不再詳述。本發(fā)明下面實(shí)施例將重點(diǎn)描述添加令牌后對(duì)用戶隊(duì)列所在調(diào)度表的調(diào)整過程。
圖4為本發(fā)明一實(shí)施例提供的調(diào)整調(diào)度表的方法的流程圖。如圖4所示,本實(shí)施例的方法包括
步驟401、在執(zhí)行入隊(duì)調(diào)度之前或者在預(yù)設(shè)令牌添加周期到達(dá)時(shí),對(duì)第二級(jí)調(diào)度表中和第三級(jí)調(diào)度表中的用戶隊(duì)列進(jìn)行令牌添加操作。
其中,令牌添加周期是預(yù)先設(shè)定的,具體數(shù)值不做限定。
在令牌添加操縱被觸發(fā)時(shí),隊(duì)列調(diào)度裝置具體根據(jù)單位時(shí)間應(yīng)該添加的里令牌數(shù)和距離上次添加令牌的時(shí)間給各個(gè)調(diào)度表中的用戶隊(duì)列添加令牌。例如,假設(shè)1秒應(yīng)該添加10000個(gè)令牌,而當(dāng)前添加令牌的時(shí)間相對(duì)于上次添加令牌的時(shí)間過去了 50ms,那么此次添加令牌的個(gè)數(shù)應(yīng)該為500個(gè)。其中,令牌添加包括對(duì)C桶令牌、P桶令牌和用戶組令牌的添加。
步驟402、判斷第二級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列的C桶令牌是否充足;如果判斷結(jié)果為是,執(zhí)行步驟403 ;如果判斷結(jié)果為否,執(zhí)行步驟409。
對(duì)于第二級(jí)調(diào)度表中的用戶隊(duì)列,隊(duì)列調(diào)度裝置會(huì)判斷添加令牌后的用戶隊(duì)列的 C桶令牌是否變充足。
步驟403、將第二級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列從第二級(jí)調(diào)度表中移動(dòng)到第一級(jí)調(diào)度表中,并執(zhí)行步驟404。
如果添加令牌后的用戶隊(duì)列的C桶令牌變充足,此時(shí)該用戶隊(duì)列的C桶令牌充足, 且其對(duì)應(yīng)的用戶組令牌也充足,符合第一級(jí)調(diào)度表的要求,則隊(duì)列調(diào)度裝置將該用戶隊(duì)列從第二級(jí)調(diào)度表中移動(dòng)到第一級(jí)調(diào)度表中。
步驟404、判斷第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列對(duì)應(yīng)的用戶組令牌是否充足;如果判斷結(jié)果為是,執(zhí)行步驟405 ;如果判斷結(jié)果為否,執(zhí)行步驟409。
步驟405、判斷第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列的C桶令牌是否充足;如果判斷結(jié)果為是,執(zhí)行步驟406 ;如果判斷結(jié)果為否,執(zhí)行步驟407。
步驟406、將第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列移動(dòng)到第一級(jí)調(diào)度表中。
如果第三級(jí)調(diào)度表中的用戶隊(duì)列在添加令牌后,變成C桶令牌充足且對(duì)應(yīng)的用戶組令牌也充足的用戶隊(duì)列,則隊(duì)列調(diào)度裝置將該用戶隊(duì)列從第三級(jí)調(diào)度表中移動(dòng)到第一級(jí)調(diào)度表中。
步驟407、判斷第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列的P桶令牌是否充足;如果判斷結(jié)果為是,執(zhí)行步驟408 ;如果判斷結(jié)果為否,執(zhí)行步驟409。
步驟408、將第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列移動(dòng)到第二級(jí)調(diào)度表中。
如果第三級(jí)調(diào)度表中的用戶隊(duì)列在添加令牌后,變成C桶令牌不足,但其P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列,則隊(duì)列調(diào)度裝置將該用戶隊(duì)列從第三級(jí)調(diào)度表中移動(dòng)到第二級(jí)調(diào)度表中。
步驟409、結(jié)束對(duì)調(diào)度表的調(diào)整操作。
本實(shí)施例通過對(duì)添加令牌后的用戶隊(duì)列進(jìn)行調(diào)度表的調(diào)整,使得令牌充足的用戶隊(duì)列都能得到及時(shí)調(diào)度,提高了調(diào)度性能。
圖5為本發(fā)明再一實(shí)施例提供的隊(duì)列調(diào)度方法的流程圖。如圖5所示,本實(shí)施例的方法包括
步驟501、出隊(duì)操作開始。
步驟502、設(shè)置用于記錄本輪剩余出隊(duì)報(bào)文個(gè)數(shù)的變量,并設(shè)置該變量的初始值為每輪出隊(duì)報(bào)文上限,例如128。
步驟503、判斷變量是否大于0 ;如果判斷結(jié)果為是,執(zhí)行步驟504 ;如果判斷結(jié)果為否,執(zhí)行步驟527。
步驟504、判斷第一級(jí)調(diào)度表中的用戶隊(duì)列的數(shù)量是否大于0;如果判斷結(jié)果為是,執(zhí)行步驟505 ;如果判斷結(jié)果為否,執(zhí)行步驟516。
步驟505、從第一級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,并將第一級(jí)調(diào)度表中的用戶隊(duì)列的數(shù)量減去1。
步驟506、對(duì)從第一級(jí)調(diào)度表中取下的用戶隊(duì)列執(zhí)行出隊(duì)操作。
步驟507、判斷從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作是否成功;如果判斷結(jié)果為是,執(zhí)行步驟508 ;如果判斷結(jié)果為否,轉(zhuǎn)去執(zhí)行步驟504。
步驟508、判斷從第一級(jí)調(diào)度表中取下的用戶隊(duì)列是否為空;如果判斷結(jié)果為否, 執(zhí)行步驟509 ;如果判斷結(jié)果為是,執(zhí)行步驟515。
步驟509、判斷從第一級(jí)調(diào)度表中取下的用戶隊(duì)列對(duì)應(yīng)的用戶組令牌是否充足; 如果判斷結(jié)果為是,執(zhí)行步驟510 ;如果判斷結(jié)果為否,執(zhí)行步驟514。
步驟510、判斷從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的C桶令牌是否充足;如果判斷結(jié)果為是,執(zhí)行步驟511 ;如果判斷結(jié)果為否,執(zhí)行步驟512。
步驟511、將從第一級(jí)調(diào)度表中取下的用戶隊(duì)列重新加入第一級(jí)調(diào)度表的尾部,以等待下一次調(diào)度,并將第一級(jí)調(diào)度表中的用戶隊(duì)列的數(shù)量加1,并執(zhí)行步驟515。
步驟512、判斷從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的P桶令牌是否充足;如果判斷結(jié)果為是,執(zhí)行步驟513 ;如果判斷結(jié)果為否,執(zhí)行步驟514。
步驟513、將第一級(jí)調(diào)度表中取下的用戶隊(duì)列加入第二級(jí)調(diào)度表的尾部,以等待下一次調(diào)度,并將第二級(jí)調(diào)度表中的用戶隊(duì)列的數(shù)量加1,并執(zhí)行步驟515。
步驟514、將從第一級(jí)調(diào)度表中取下的用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部,并執(zhí)行步驟515。
步驟515、將上述變量減去1,并轉(zhuǎn)去執(zhí)行步驟503。
步驟516、判斷第二級(jí)調(diào)度表中的用戶隊(duì)列是否大于0;如果判斷結(jié)果為是,執(zhí)行步驟517 ;如果判斷結(jié)果為否,執(zhí)行步驟527。
步驟517、從第二級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,將第二級(jí)調(diào)度表中的用戶隊(duì)列的數(shù)量減去1,并執(zhí)行步驟518。
步驟518、對(duì)從第二級(jí)調(diào)度表中取下的用戶隊(duì)列執(zhí)行出隊(duì)操作,并執(zhí)行步驟519。步驟519、判斷從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作是否成功;如果判斷結(jié)果為是,執(zhí)行步驟520 ;如果判斷結(jié)果為否,執(zhí)行步驟516。
步驟520、判斷從第二級(jí)調(diào)度表中取下的用戶隊(duì)列是否為空;如果判斷結(jié)果為否, 執(zhí)行步驟521 ;如果判斷結(jié)果為是,執(zhí)行步驟525。
步驟521、判斷從第二級(jí)調(diào)度表中取下的用戶隊(duì)列對(duì)應(yīng)的用戶組令牌是否充足; 如果判斷結(jié)果為是,執(zhí)行步驟522 ;如果判斷結(jié)果為否,執(zhí)行步驟524。
步驟522、判斷從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的P桶令牌是否充足;如果判斷結(jié)果為是,執(zhí)行步驟523 ;如果判斷結(jié)果為否,執(zhí)行步驟524。
步驟523、將從第二級(jí)調(diào)度表中取下的用戶隊(duì)列重新加入第二級(jí)調(diào)度表的尾部,以等待下一次調(diào)度,并將第二級(jí)調(diào)度表中的用戶隊(duì)列的數(shù)量加1,并執(zhí)行525。
步驟524、將從第二級(jí)調(diào)度表中取下的用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部,并執(zhí)行步驟525。
步驟525、將上述變量減去1,并執(zhí)行步驟526。
步驟526、判斷變量是否大于0 ;如果判斷結(jié)果為是,轉(zhuǎn)去執(zhí)行步驟516 ;如果判斷結(jié)果為否,執(zhí)行步驟527。
步驟527、結(jié)束本輪的出隊(duì)操作。
在本實(shí)施例中,隊(duì)列調(diào)度裝置根據(jù)用戶隊(duì)列的C桶令牌、P桶令牌和對(duì)應(yīng)的用戶組令牌的充足與否,將調(diào)度表分為存儲(chǔ)C桶令牌和用戶組令牌都充足的用戶隊(duì)列的第一級(jí)調(diào)度表和存儲(chǔ)C桶令牌不足,但P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列的第二級(jí)調(diào)度表,在進(jìn)行出隊(duì)調(diào)度時(shí),根據(jù)這兩級(jí)調(diào)度表進(jìn)行調(diào)度,降低了出現(xiàn)空轉(zhuǎn)的幾率,降低了空轉(zhuǎn)所消耗的CPU資源,提高了 CPU資源的調(diào)度性能。
下面結(jié)合具體應(yīng)用場(chǎng)景說明本發(fā)明技術(shù)方案的實(shí)現(xiàn)步驟。
假設(shè)場(chǎng)景如下如果上行配置1000個(gè)用戶隊(duì)列,每個(gè)用戶隊(duì)列限速CIR速率為 1Mbps,而PIR速率為1. 1Mbps,且假設(shè)每個(gè)用戶的報(bào)文長(zhǎng)度均為100字節(jié)。
步驟1、初始化時(shí),所有用戶隊(duì)列均不在任何調(diào)度表中。
步驟2、每個(gè)用戶隊(duì)列的第一個(gè)報(bào)文入隊(duì)時(shí),由于其沒有出隊(duì),其C桶令牌為 125000,而P桶令牌為137500,令牌桶深度為1秒中允許通過報(bào)文的字節(jié)總數(shù)。因此將其加入第一級(jí)調(diào)度表。
步驟3、如果執(zhí)行CHR調(diào)度時(shí),假設(shè)第500個(gè)用戶隊(duì)列對(duì)應(yīng)的流隊(duì)列中還緩存有10 個(gè)報(bào)文,且C桶令牌此時(shí)還有200,而P桶令牌還有12700,此次調(diào)度之后C桶令牌為100,而 P桶令牌則還有12600,故將其加入第一級(jí)調(diào)度表。
步驟4、如果執(zhí)行CIR調(diào)度時(shí),假設(shè)第570個(gè)用戶隊(duì)列對(duì)應(yīng)的流隊(duì)列中還緩存有8 個(gè)報(bào)文,且C桶令牌此時(shí)還有100,而P桶令牌還有12600,此次調(diào)度之后C桶令牌為0,而P 桶令牌則還有12500,則將其加入第二級(jí)調(diào)度表。
步驟5、如果執(zhí)行PIR調(diào)度時(shí),假設(shè)第300個(gè)用戶隊(duì)列對(duì)應(yīng)的流隊(duì)列中還緩存有5 個(gè)報(bào)文,且C桶令牌此時(shí)為0,P桶令牌則還有300,此次調(diào)度之后C桶令牌為0,而P桶令牌則還有200,則將其加入第二級(jí)調(diào)度表。
步驟6、如果執(zhí)行PIR調(diào)度時(shí),假設(shè)第900個(gè)用戶隊(duì)列對(duì)應(yīng)的流隊(duì)列中還緩存有5 個(gè)報(bào)文,且C桶令牌此時(shí)為0,P桶令牌則還有100,此次調(diào)度之后C桶令牌為0,而P桶令牌則還有0,則將其加入第三級(jí)調(diào)度表。
步驟7、如果執(zhí)行某輪調(diào)度時(shí),第1個(gè)用戶隊(duì)列對(duì)應(yīng)的流隊(duì)列中還緩存有1個(gè)報(bào)文, 且C桶令牌此時(shí)為1000,P桶令牌則還有13500,此次調(diào)度之后隊(duì)列中不再有報(bào)文,則不加入任何調(diào)度表。
步驟8、假設(shè)令牌添加時(shí)機(jī)為1毫秒一次,則C桶每次添加125個(gè)令牌,而P桶大約添加137個(gè)。如果第三級(jí)調(diào)度表中以用戶隊(duì)列中C桶令牌為-30,P桶為-60,執(zhí)行一次令牌添加后其令牌數(shù)都變?yōu)檎?,則將該用戶添加到第一級(jí)調(diào)度表中。
進(jìn)一步,假設(shè)每個(gè)用戶隊(duì)列的數(shù)據(jù)流持續(xù)發(fā)送且大于用戶隊(duì)列限制的速率,則每次調(diào)度時(shí)隊(duì)列總是不為空,令牌總是會(huì)被消耗完的,在現(xiàn)有技術(shù)方案中,當(dāng)C桶令牌耗光時(shí),先遍歷1000個(gè)用戶隊(duì)列執(zhí)行CHR調(diào)度,在針對(duì)調(diào)度表前1 個(gè)報(bào)文執(zhí)行P^調(diào)度,此時(shí)出隊(duì)1 個(gè)報(bào)文的消耗是遍歷11 個(gè)用戶隊(duì)列,而當(dāng)P桶令牌也被耗光時(shí),此時(shí)會(huì)遍歷 2000個(gè)用戶隊(duì)列,而出隊(duì)報(bào)文個(gè)數(shù)為0。而在本發(fā)明技術(shù)方案中,當(dāng)所有用戶隊(duì)列的C桶令牌耗光時(shí),第一級(jí)調(diào)度表為空,執(zhí)行調(diào)度時(shí),直接從第二級(jí)調(diào)度表前1 個(gè)用戶隊(duì)列中取用戶隊(duì)列進(jìn)行出隊(duì)操作,當(dāng)P桶令牌也耗光時(shí),第二級(jí)調(diào)度表也為空,執(zhí)行一次調(diào)度出隊(duì)報(bào)文個(gè)數(shù)為0,遍歷用戶隊(duì)列的個(gè)數(shù)為0。由此可見,當(dāng)令牌耗光后,執(zhí)行調(diào)度的次數(shù)越多,本發(fā)明技術(shù)方案性能提升越明顯。
圖6為本發(fā)明一實(shí)施例提供的隊(duì)列調(diào)度裝置的結(jié)構(gòu)示意圖。如圖6所示,本實(shí)施例的裝置包括第一出隊(duì)調(diào)度模塊61和第二出隊(duì)調(diào)度模塊62。
其中,第一出隊(duì)調(diào)度模塊61,與第一級(jí)調(diào)度表連接,用于在本輪出隊(duì)調(diào)度過程中, 在第一級(jí)調(diào)度表不為空,從第一級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作。所述第一級(jí)調(diào)度表中的用戶隊(duì)列是在加入第一級(jí)調(diào)度表時(shí)C桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列。
第二出隊(duì)調(diào)度模塊62,與第一級(jí)調(diào)度表和第二級(jí)調(diào)度表連接,用于在第一級(jí)調(diào)度表為空時(shí),從第二級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作,在第二級(jí)調(diào)度表為空時(shí),結(jié)束本輪出隊(duì)調(diào)度。所述第二級(jí)調(diào)度表中的用戶隊(duì)列是在加入第二級(jí)調(diào)度表時(shí)C桶令牌不足而P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列。
其中,C桶令牌充足是指用戶隊(duì)列在加入第一級(jí)調(diào)度表時(shí),C桶中的令牌數(shù)不為0 ; C桶令牌不足是指用戶隊(duì)列在加入第一級(jí)調(diào)度表時(shí),C桶中的令牌數(shù)為0。用戶組令牌充足是指用戶組對(duì)應(yīng)的令牌桶中的令牌數(shù)不為0 ;反之,就是用戶組令牌不足的情況。P桶令牌充足是指用隊(duì)列在C桶令牌不足時(shí)而加入第二級(jí)調(diào)度表時(shí),P桶中的令牌數(shù)不為0 ;P桶令牌不足是指用戶隊(duì)列在C桶令牌不足而加入第二級(jí)調(diào)度表時(shí),P桶中的令牌數(shù)為0。
本實(shí)施例的隊(duì)列調(diào)度裝置的各功能模塊可用于執(zhí)行圖1所示隊(duì)列調(diào)度方法的流程,其具體工作原理不再贅述,詳見方法實(shí)施例的描述。
本實(shí)施例的隊(duì)列調(diào)度裝置可以是各種路由器、交換機(jī)等支持HQoS的設(shè)備。
本實(shí)施例的隊(duì)列調(diào)度裝置,根據(jù)用戶隊(duì)列的C桶令牌、P桶令牌和對(duì)應(yīng)的用戶組令牌的充足與否,將調(diào)度表分為存儲(chǔ)C桶令牌和用戶組令牌都充足的用戶隊(duì)列的第一級(jí)調(diào)度表和存儲(chǔ)C桶令牌不足,但P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列的第二級(jí)調(diào)度表,在進(jìn)行出隊(duì)調(diào)度時(shí),根據(jù)這兩級(jí)調(diào)度表進(jìn)行調(diào)度,降低了出現(xiàn)空轉(zhuǎn)的幾率,降低了空轉(zhuǎn)所消耗的CPU資源,提高了 CPU資源的調(diào)度性能。
圖7為本發(fā)明另一實(shí)施例提供的隊(duì)列調(diào)度裝置的結(jié)構(gòu)示意圖。本實(shí)施例基于圖6 所示實(shí)施例實(shí)現(xiàn),如圖7所示,本實(shí)施例的裝置還包括第一出隊(duì)加入模塊63、第二出隊(duì)加入模塊64、第三出隊(duì)加入模塊65和第四出隊(duì)加入模塊66。
其中,第一出隊(duì)接入模塊63和第二出隊(duì)加入模塊64分別與第一出隊(duì)調(diào)度模塊61 連接,用于根據(jù)第一出隊(duì)調(diào)度模塊61對(duì)用戶隊(duì)列的出隊(duì)操作結(jié)果對(duì)出隊(duì)后的用戶隊(duì)列進(jìn)行調(diào)度表加入操作。具體的,第一出隊(duì)接入模塊63用于如果在從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從第一級(jí)調(diào)度表中取下的用戶隊(duì)列不為空,且從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的C桶令牌和對(duì)應(yīng)的用戶組令牌都充足時(shí),將從第一級(jí)調(diào)度表中取下的用戶隊(duì)列重新加入第一級(jí)調(diào)度表的尾部;如果在從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從第一級(jí)調(diào)度表中取下的用戶隊(duì)列不為空,但從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的C桶令牌不足,而從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的P桶令牌和對(duì)應(yīng)的用戶組令牌充足,將從第一級(jí)調(diào)度表中取下的用戶隊(duì)列加入第二級(jí)調(diào)度表的尾部;如果在從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從第一級(jí)調(diào)度表中取下的用戶隊(duì)列為空,結(jié)束對(duì)從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的調(diào)度。
第二出隊(duì)加入模塊64用于如果從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作失敗,或者如果在從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的P桶令牌不足,或者如果在從第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從第一級(jí)調(diào)度表中取下的用戶隊(duì)列對(duì)應(yīng)的用戶組令牌不足,將從第一級(jí)調(diào)度表中取下的用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部;第三級(jí)調(diào)度表用于存儲(chǔ)在添加令牌之前不被調(diào)度的用戶隊(duì)列。
其中,第三出隊(duì)接入模塊65和第四出隊(duì)加入模塊66分別與第二出隊(duì)調(diào)度模塊62 連接,用于根據(jù)第二出隊(duì)調(diào)度模塊61對(duì)用戶隊(duì)列的出隊(duì)操作結(jié)果對(duì)出隊(duì)后的用戶隊(duì)列進(jìn)行調(diào)度表加入操作。具體的,第三出隊(duì)加入模塊65用于如果在從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從第二級(jí)調(diào)度表中取下的用戶隊(duì)列不為空,且從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的P桶令牌和對(duì)應(yīng)的用戶組令牌都充足,將從第二級(jí)調(diào)度表中取下的用戶隊(duì)列重新加入第二級(jí)調(diào)度表的尾部;如果在從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從第二級(jí)調(diào)度表中取下的用戶隊(duì)列為空,結(jié)束對(duì)從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的調(diào)度。
第四出隊(duì)加入模塊66用于如果從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作失敗,或者如果在從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的P桶令牌不足,或者如果在從第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從第二級(jí)調(diào)度表中取下的用戶隊(duì)列對(duì)應(yīng)的用戶組令牌不足,將從第二級(jí)調(diào)度表中取下的用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部。
上述各功能模塊可用于執(zhí)行圖2所示實(shí)施例的流程,其具體工作原理不再贅述, 詳見方法實(shí)施例的描述。
進(jìn)一步,本實(shí)施例的隊(duì)列調(diào)度裝置還包括入隊(duì)加入模塊67。
入隊(duì)加入模塊67,與第一級(jí)調(diào)度表、第二級(jí)調(diào)度表和第三級(jí)調(diào)度表連接,用于在入隊(duì)調(diào)度過程中,如果入隊(duì)后的用戶隊(duì)列不在任何一級(jí)調(diào)度表中,且入隊(duì)后的用戶隊(duì)列的C 桶令牌和對(duì)應(yīng)的用戶組令牌都充足,將入隊(duì)后的用戶隊(duì)列加入第一級(jí)調(diào)度表的尾部;如果入隊(duì)后的用戶隊(duì)列不在任何一級(jí)調(diào)度表中,且入隊(duì)后的用戶隊(duì)列的C桶令牌不足,但P桶令牌和所對(duì)應(yīng)的用戶組令牌充足,將入隊(duì)后的用戶隊(duì)列加入第二級(jí)調(diào)度表的尾部;如果入隊(duì)后的用戶隊(duì)列不在任何一級(jí)調(diào)度表中,且入隊(duì)后的用戶隊(duì)列的P桶令牌不足或?qū)?yīng)的用戶組令牌不足,將入隊(duì)后的用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部。
上述功能模塊可用于執(zhí)行圖3所示實(shí)施例的流程,其具體工作原理不再贅述,詳見方法實(shí)施例的描述。
更進(jìn)一步,本實(shí)施例的隊(duì)列調(diào)度裝置還包括令牌添加模塊68和重新加入模塊 69。
其中,令牌添加模塊68,與第二級(jí)調(diào)度表中和第三級(jí)調(diào)度表連接,用于在執(zhí)行入隊(duì)調(diào)度之前或者在預(yù)設(shè)令牌添加周期到達(dá)時(shí),對(duì)第二級(jí)調(diào)度表中和第三級(jí)調(diào)度表中的用戶隊(duì)列進(jìn)行令牌添加操作。
重新加入模塊69,與令牌添加模塊68、第一級(jí)調(diào)度表、第二級(jí)調(diào)度表中和第三級(jí)調(diào)度表連接,用于如果第二級(jí)調(diào)度表中或第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列的C桶令牌和對(duì)應(yīng)的用戶組令牌都充足,將第二級(jí)調(diào)度表中或所述第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列從第二級(jí)調(diào)度表中或第三級(jí)調(diào)度表中移動(dòng)到第一級(jí)調(diào)度表中;如果第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列的C桶令牌不足,但P桶令牌和對(duì)應(yīng)的用戶組令牌充足,將第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列從第三級(jí)調(diào)度表中移動(dòng)到第二級(jí)調(diào)度表中。
上述功能模塊可用于執(zhí)行圖4所示實(shí)施例的流程,其具體工作原理不再贅述,詳見方法實(shí)施例的描述。
本實(shí)施例的隊(duì)列調(diào)度裝置,根據(jù)用戶隊(duì)列的C桶令牌、P桶令牌和對(duì)應(yīng)的用戶組令牌的充足與否,將調(diào)度表分為存儲(chǔ)C桶令牌和用戶組令牌都充足的用戶隊(duì)列的第一級(jí)調(diào)度表和存儲(chǔ)C桶令牌不足,但P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列的第二級(jí)調(diào)度表,在進(jìn)行出隊(duì)調(diào)度時(shí),根據(jù)這兩級(jí)調(diào)度表進(jìn)行調(diào)度,降低了出現(xiàn)空轉(zhuǎn)的幾率,降低了空轉(zhuǎn)所消耗的CPU資源,提高了 CPU資源的調(diào)度性能。
本發(fā)明一實(shí)施例提供一種網(wǎng)絡(luò)設(shè)備,包括本發(fā)明上述實(shí)施例提供的隊(duì)列調(diào)度裝置。
其中,隊(duì)列調(diào)度裝置的結(jié)構(gòu)示意圖可參見圖6或圖7所示實(shí)施例,其工作原理可參見圖1-圖5所示方法實(shí)施例的描述,在此不再贅述。
本實(shí)施例的網(wǎng)絡(luò)設(shè)備可以是路由器、交換機(jī)等各種支持HQoS調(diào)度的設(shè)備。
本實(shí)施例的網(wǎng)絡(luò)設(shè)備包括本發(fā)明實(shí)施例提供的隊(duì)列調(diào)度裝置,因此同樣可以降低出現(xiàn)空轉(zhuǎn)的幾率,降低空轉(zhuǎn)所消耗的CPU資源,提高CPU資源的調(diào)度性能。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
最后應(yīng)說明的是以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制; 盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
權(quán)利要求
1.一種隊(duì)列調(diào)度方法,其特征在于,包括在本輪出隊(duì)調(diào)度過程中,如果第一級(jí)調(diào)度表不為空,從所述第一級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作;所述第一級(jí)調(diào)度表中的用戶隊(duì)列是在加入所述第一級(jí)調(diào)度表時(shí)C桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列;如果所述第一級(jí)調(diào)度表為空,從第二級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作;所述第二級(jí)調(diào)度表中的用戶隊(duì)列是在加入所述第二級(jí)調(diào)度表時(shí)C桶令牌不足而P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列;如果所述第二級(jí)調(diào)度表為空,結(jié)束本輪出隊(duì)調(diào)度。
2.根據(jù)權(quán)利要求1所述的隊(duì)列調(diào)度方法,其特征在于,還包括如果在從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列不為空,且從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的C桶令牌和對(duì)應(yīng)的用戶組令牌都充足,將從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列重新加入所述第一級(jí)調(diào)度表的尾部;如果在從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列不為空,但從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的C桶令牌不足, 而從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的P桶令牌和對(duì)應(yīng)的用戶組令牌充足,將從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列加入所述第二級(jí)調(diào)度表的尾部;如果在從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列為空,結(jié)束對(duì)從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的調(diào)度;如果從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作失敗,或者如果在從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的 P桶令牌不足,或者如果在從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列對(duì)應(yīng)的用戶組令牌不足,將從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部;所述第三級(jí)調(diào)度表用于存儲(chǔ)在添加令牌之前不被調(diào)度的用戶隊(duì)列。
3.根據(jù)權(quán)利要求1所述的隊(duì)列調(diào)度方法,其特征在于,還包括如果在從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列不為空,且從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的P桶令牌和對(duì)應(yīng)的用戶組令牌都充足,將從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列重新加入所述第二級(jí)調(diào)度表的尾部;如果在從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列為空,結(jié)束對(duì)從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的調(diào)度;如果從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作失敗,或者如果在從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的 P桶令牌不足,或者如果在從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列對(duì)應(yīng)的用戶組令牌不足,將從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部。
4.根據(jù)權(quán)利要求2或3所述的隊(duì)列調(diào)度方法,其特征在于,還包括在入隊(duì)調(diào)度過程中,如果入隊(duì)后的用戶隊(duì)列不在任何一級(jí)調(diào)度表中,且所述入隊(duì)后的用戶隊(duì)列的C桶令牌和對(duì)應(yīng)的用戶組令牌都充足,將所述入隊(duì)后的用戶隊(duì)列加入所述第一級(jí)調(diào)度表的尾部;如果所述入隊(duì)后的用戶隊(duì)列不在任何一級(jí)調(diào)度表中,且所述入隊(duì)后的用戶隊(duì)列的C桶令牌不足,但P桶令牌和所對(duì)應(yīng)的用戶組令牌充足,將所述入隊(duì)后的用戶隊(duì)列加入所述第二級(jí)調(diào)度表的尾部;如果所述入隊(duì)后的用戶隊(duì)列不在任何一級(jí)調(diào)度表中,且所述入隊(duì)后的用戶隊(duì)列的P桶令牌不足或?qū)?yīng)的用戶組令牌不足,將所述入隊(duì)后的用戶隊(duì)列加入所述第三級(jí)調(diào)度表的尾部。
5.根據(jù)權(quán)利要求1或2或3所述的隊(duì)列調(diào)度方法,其特征在于,還包括在執(zhí)行入隊(duì)調(diào)度之前或者在預(yù)設(shè)令牌添加周期到達(dá)時(shí),對(duì)所述第二級(jí)調(diào)度表中和所述第三級(jí)調(diào)度表中的用戶隊(duì)列進(jìn)行令牌添加操作;如果所述第二級(jí)調(diào)度表中或所述第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列的C桶令牌和對(duì)應(yīng)的用戶組令牌都充足,將所述第二級(jí)調(diào)度表中或所述第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列從所述第二級(jí)調(diào)度表中或所述第三級(jí)調(diào)度表中移動(dòng)到所述第一級(jí)調(diào)度表中;如果所述第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列的C桶令牌不足,但P桶令牌和對(duì)應(yīng)的用戶組令牌充足,將所述第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列從所述第三級(jí)調(diào)度表中移動(dòng)到所述第二級(jí)調(diào)度表中。
6.一種隊(duì)列調(diào)度裝置,其特征在于,包括第一出隊(duì)調(diào)度模塊,用于在本輪出隊(duì)調(diào)度過程中,在第一級(jí)調(diào)度表不為空,從所述第一級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作;所述第一級(jí)調(diào)度表中的用戶隊(duì)列是在加入所述第一級(jí)調(diào)度表時(shí)C桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列;第二出隊(duì)調(diào)度模塊,用于在所述第一級(jí)調(diào)度表為空時(shí),從第二級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作,在所述第二級(jí)調(diào)度表為空時(shí),結(jié)束本輪出隊(duì)調(diào)度;所述第二級(jí)調(diào)度表中的用戶隊(duì)列是在加入所述第二級(jí)調(diào)度表時(shí)C桶令牌不足而P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列。
7.根據(jù)權(quán)利要求6所述的隊(duì)列調(diào)度裝置,其特征在于,還包括第一出隊(duì)加入模塊,用于如果在從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列不為空,且從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的C桶令牌和對(duì)應(yīng)的用戶組令牌都充足時(shí),將從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列重新加入所述第一級(jí)調(diào)度表的尾部;如果在從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列不為空,但從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的C桶令牌不足,而從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的P桶令牌和對(duì)應(yīng)的用戶組令牌充足,將從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列加入所述第二級(jí)調(diào)度表的尾部;如果在從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列為空,結(jié)束對(duì)從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的調(diào)度;第二出隊(duì)加入模塊,用于如果從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作失敗,或者如果在從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的P桶令牌不足,或者如果在從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列對(duì)應(yīng)的用戶組令牌不足, 將從所述第一級(jí)調(diào)度表中取下的用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部;所述第三級(jí)調(diào)度表用CN 102546423 A于存儲(chǔ)在添加令牌之前不被調(diào)度的用戶隊(duì)列。
8.根據(jù)權(quán)利要求6所述的隊(duì)列調(diào)度裝置,其特征在于,還包括第三出隊(duì)加入模塊,用于如果在從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列不為空,且從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的P桶令牌和對(duì)應(yīng)的用戶組令牌都充足,將從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列重新加入所述第二級(jí)調(diào)度表的尾部;如果在從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列為空,結(jié)束對(duì)從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的調(diào)度;第四出隊(duì)加入模塊,用于如果從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作失敗,或者如果在從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的P桶令牌不足,或者如果在從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列的出隊(duì)操作成功后,從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列對(duì)應(yīng)的用戶組令牌不足, 將從所述第二級(jí)調(diào)度表中取下的用戶隊(duì)列加入第三級(jí)調(diào)度表的尾部。
9.根據(jù)權(quán)利要求7或8所述的隊(duì)列調(diào)度裝置,其特征在于,還包括入隊(duì)加入模塊,用于在入隊(duì)調(diào)度過程中,如果入隊(duì)后的用戶隊(duì)列不在任何一級(jí)調(diào)度表中,且所述入隊(duì)后的用戶隊(duì)列的C桶令牌和對(duì)應(yīng)的用戶組令牌都充足,將所述入隊(duì)后的用戶隊(duì)列加入所述第一級(jí)調(diào)度表的尾部;如果所述入隊(duì)后的用戶隊(duì)列不在任何一級(jí)調(diào)度表中,且所述入隊(duì)后的用戶隊(duì)列的C桶令牌不足,但P桶令牌和所對(duì)應(yīng)的用戶組令牌充足,將所述入隊(duì)后的用戶隊(duì)列加入所述第二級(jí)調(diào)度表的尾部;如果所述入隊(duì)后的用戶隊(duì)列不在任何一級(jí)調(diào)度表中,且所述入隊(duì)后的用戶隊(duì)列的P桶令牌不足或?qū)?yīng)的用戶組令牌不足,將所述入隊(duì)后的用戶隊(duì)列加入所述第三級(jí)調(diào)度表的尾部。
10.根據(jù)權(quán)利要求6或7或8所述的隊(duì)列調(diào)度裝置,其特征在于,還包括令牌添加模塊,用于在執(zhí)行入隊(duì)調(diào)度之前或者在預(yù)設(shè)令牌添加周期到達(dá)時(shí),對(duì)所述第二級(jí)調(diào)度表中和第三級(jí)調(diào)度表中的用戶隊(duì)列進(jìn)行令牌添加操作;重新加入模塊,用于如果所述第二級(jí)調(diào)度表中或所述第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列的C桶令牌和對(duì)應(yīng)的用戶組令牌都充足,將所述第二級(jí)調(diào)度表中或所述第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列從所述第二級(jí)調(diào)度表中或所述第三級(jí)調(diào)度表中移動(dòng)到所述第一級(jí)調(diào)度表中;如果所述第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列的C桶令牌不足,但P桶令牌和對(duì)應(yīng)的用戶組令牌充足,將所述第三級(jí)調(diào)度表中添加令牌后的用戶隊(duì)列從所述第三級(jí)調(diào)度表中移動(dòng)到所述第二級(jí)調(diào)度表中。
11.一種網(wǎng)絡(luò)設(shè)備,其特征在于,包括權(quán)利要求6-10任一項(xiàng)所述的隊(duì)列調(diào)度裝置。
全文摘要
本發(fā)明提供一種隊(duì)列調(diào)度方法、裝置及網(wǎng)絡(luò)設(shè)備。其中方法包括在本輪出隊(duì)調(diào)度過程中,如果第一級(jí)調(diào)度表不為空,從第一級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作;第一級(jí)調(diào)度表中的用戶隊(duì)列是在加入第一級(jí)調(diào)度表時(shí)C桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列;如果第一級(jí)調(diào)度表為空,從第二級(jí)調(diào)度表中取下第一個(gè)用戶隊(duì)列,對(duì)取下的用戶隊(duì)列執(zhí)行出隊(duì)操作;第二級(jí)調(diào)度表中的用戶隊(duì)列是在加入第二級(jí)調(diào)度表時(shí)C桶令牌不足而P桶令牌和對(duì)應(yīng)的用戶組令牌都充足的用戶隊(duì)列;如果第二級(jí)調(diào)度表為空,結(jié)束本輪出隊(duì)調(diào)度。本發(fā)明技術(shù)方案降低了出現(xiàn)空轉(zhuǎn)的幾率,降低了空轉(zhuǎn)所消耗的CPU資源,提高了CPU資源的調(diào)度性能。
文檔編號(hào)H04L12/56GK102546423SQ20121001882
公開日2012年7月4日 申請(qǐng)日期2012年1月20日 優(yōu)先權(quán)日2012年1月20日
發(fā)明者羅俊鑫 申請(qǐng)人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司