專利名稱:一種隊(duì)列調(diào)度方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本申請涉及通訊技術(shù)領(lǐng)域,特別是涉及一種隊(duì)列調(diào)度方法及系統(tǒng)。
背景技術(shù):
QOS (quality of service)是指網(wǎng)絡(luò)通訊過程中,網(wǎng)絡(luò)設(shè)備需要保證用戶在丟包率、延遲、抖動(dòng)和帶寬等方面獲得可預(yù)期的服務(wù)水平。該特性對于運(yùn)營商分配網(wǎng)絡(luò)資源,細(xì)化服務(wù)水平,提高運(yùn)營利潤有著非常重要的作用。在網(wǎng)絡(luò)中的TM(Traffic management,隊(duì)列管理)芯片作為管理用戶帶寬的芯片,負(fù)責(zé)對所有的用戶隊(duì)列進(jìn)行調(diào)度,并且其調(diào)度算法對于QOS業(yè)務(wù)的性能有著重要的影響。 現(xiàn)有的調(diào)度算法維護(hù)兩張表,分別為active表和appending表,調(diào)度的流程如圖I所示,對于active表中的調(diào)度單元,每個(gè)調(diào)度單元對應(yīng)一個(gè)token (令牌)桶,在隊(duì)列不為空,token桶也不為空,且deficit (赤字)>0的情況下,具有了被調(diào)度的權(quán)限。調(diào)度器RR (Round robin,隊(duì)列管理)輪詢調(diào)度單元,順序出隊(duì)。在調(diào)度時(shí),當(dāng)調(diào)度單元出隊(duì)一次,對應(yīng)的token桶和deficit減去出隊(duì)數(shù)據(jù)長度,如果檢測到deficit〈0,則該調(diào)度單元移動(dòng)到appending表中,同時(shí)該調(diào)度單元的deficit增加weight x quantum。這里weight為當(dāng)前調(diào)度單元的調(diào)度權(quán)重,quantum為一個(gè)固定值,一般大于10000。而如果當(dāng)前active表中,已經(jīng)沒有可調(diào)度單元(即所有的調(diào)度單元都被移動(dòng)到appending表中),或者是因?yàn)閠oken〈0不能出隊(duì),貝1J進(jìn)行active/appending倒換操作。當(dāng)前appending表變成active表,而當(dāng)前active 表變成 appending 表?,F(xiàn)有的TM芯片可以支持的隊(duì)列數(shù)量都在千條以上,甚至達(dá)到256k以上,并且同時(shí)還需要支持層次化Q0S,多個(gè)層級的調(diào)度隊(duì)列。在這種需求下,調(diào)度器和隊(duì)列管理模板必然是分離的,這樣在調(diào)度產(chǎn)生與最終數(shù)據(jù)出隊(duì)之間就會(huì)有一個(gè)時(shí)間上的延遲。而在某些特定的調(diào)度情況時(shí),例如每次調(diào)度都是比較長的報(bào)文,那么在得知出隊(duì)報(bào)文長度的同時(shí)又發(fā)現(xiàn)deficit (赤字)或者token (令牌)已經(jīng)小于0,此時(shí)即使立刻停止當(dāng)前調(diào)度單元的調(diào)度,而已經(jīng)產(chǎn)生的調(diào)度如果繼續(xù)生效,就會(huì)出現(xiàn)deficit或者token溢出的情況。為了防止deficit或者token溢出,并且為了防止突發(fā)調(diào)度較長數(shù)據(jù),現(xiàn)有的調(diào)度算法通常在調(diào)度器上還有一個(gè)反壓,即在總的出口必須有一個(gè)帶寬限制的token桶,這樣當(dāng)出隊(duì)流量過大,或者突發(fā)調(diào)度較長數(shù)據(jù)時(shí),就反壓調(diào)度器停止調(diào)度,同時(shí)將反壓有效期內(nèi)來不及反壓的調(diào)度無效化。而通過對現(xiàn)有技術(shù)的研究,發(fā)明人發(fā)現(xiàn)由于RR輪詢的調(diào)度方式為依次調(diào)度,所以在一輪RR輪詢中,每個(gè)調(diào)度單元只能得到一次調(diào)度的機(jī)會(huì),這樣現(xiàn)有的這種隊(duì)列算法就存在以下幾個(gè)問題I)、當(dāng)某些調(diào)度單元的報(bào)文長度都比較長,其他的調(diào)度單元報(bào)文長度都比較短,那么調(diào)度時(shí),長報(bào)文的調(diào)度單元就會(huì)獲得比較大的出隊(duì)帶寬,直到把自己的deficit用光,然后就只能調(diào)度報(bào)文比較短的調(diào)度單元了。而在這種情況下,如果預(yù)先設(shè)定的流量比較小,且權(quán)重比較大時(shí),一輪的active/appending倒換的時(shí)間久會(huì)比較長,進(jìn)而導(dǎo)致流量抖動(dòng)比較大。2)、當(dāng)所有的調(diào)度單元都是長包的情況時(shí),此時(shí)某一個(gè)調(diào)度單元的調(diào)度生效,成功出隊(duì)的時(shí)候,就必然會(huì)引起反壓調(diào)度,并且下面的一個(gè)調(diào)度單元的出隊(duì)調(diào)度就被取消,這樣就浪費(fèi)了一次RR輪詢的機(jī)會(huì)。雖然有可能通過緩存調(diào)度的方法來解決調(diào)度反壓的問題,但是通常大規(guī)模用戶隊(duì)列的調(diào)度結(jié)果都需要在固定的時(shí)間返回調(diào)度結(jié)果,用以刷新隊(duì)列狀態(tài),所以一般不能緩存調(diào)度。而在隊(duì)列比較多的情況下,一輪active/appending倒換的時(shí)間會(huì)比較長,而且如果deficit都夠用的時(shí)候,有可能總是取消某些調(diào)度單元的調(diào)度,造成調(diào)度不均勻。同時(shí)因?yàn)榇笠?guī)模用戶隊(duì)列有的用戶遲遲不能得到調(diào)度,會(huì)造成隊(duì)列管理的難度,造成用戶的連接斷開,服務(wù)質(zhì)量變差。
發(fā)明內(nèi)容
有鑒于此,本申請實(shí)施例提供一種隊(duì)列調(diào)度方法及系統(tǒng),可以根據(jù)待調(diào)度的子調(diào) 度單元的隊(duì)列情況進(jìn)行靈活調(diào)度,以解決現(xiàn)有的采用RR輪詢調(diào)度時(shí)存在的流量抖動(dòng)、調(diào)度不均勻以及由于調(diào)度不均勻而導(dǎo)致服務(wù)質(zhì)量變差的問題。為了實(shí)現(xiàn)上述目的,本申請實(shí)施例提供的技術(shù)方案如下一種隊(duì)列調(diào)度方法,待調(diào)度范圍內(nèi)的所有子調(diào)度單元依次設(shè)置有編號(hào),并且在待調(diào)度范圍內(nèi)已選取起始指針的初始位置和尾指針的初始位置,包括選取當(dāng)前起始指針的初始位置與尾指針初始位置之間、且沿所述起始指針位置指向尾指針位置方向上第一個(gè)有效的子調(diào)度單元的位置作為調(diào)度指針的位置,并將當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元中的隊(duì)列輸出一次;根據(jù)所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的隊(duì)列長度判斷所述起始指針是否駐留,所述駐留是指所述起始指針移動(dòng)到所述當(dāng)前調(diào)度指針?biāo)谖恢?;?dāng)判斷所述起始指針駐留時(shí),將所述起始指針的位置移動(dòng)到當(dāng)前調(diào)度指針?biāo)谖恢?,且選取移位后所述始指針位置與尾指針位置之間、且沿移位后所述起始指針位置指向尾指針位置方向上第一個(gè)有效的子調(diào)度單元作為下一個(gè)調(diào)度指針的位置,并將下一個(gè)調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元中的隊(duì)列輸出一次;當(dāng)判斷所述起始指針不駐留時(shí),將所述起始指針的位置移動(dòng)到沿起所述始指針位置指向尾指針位置方向上當(dāng)前調(diào)度指針?biāo)谖恢煤笠晃蛔诱{(diào)度單元的位置,并選取移位后所述始指針位置與尾指針位置之間、且沿移位后所述起始指針位置指向尾指針位置方向上第一個(gè)有效的子調(diào)度單元作為下一個(gè)調(diào)度指針的位置,并將下一個(gè)調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元中的隊(duì)列輸出一次。一種調(diào)度系統(tǒng),待調(diào)度范圍內(nèi)的所有子調(diào)度單元依次設(shè)置有編號(hào),并且在待調(diào)度范圍內(nèi)已選取起始指針的初始位置和尾指針的初始位置,包括調(diào)度指針位置選取單元,用于選取當(dāng)前起始指針初始位置與尾指針初始位置之間、且沿起始指針位置指向尾指針位置方向上第一個(gè)有效的子調(diào)度單元的位置作為當(dāng)前調(diào)度指針的位置;駐留判斷單元,用于根據(jù)所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài)判斷所述起始指針是否駐留,所述駐留是指所述起始指針移動(dòng)到所述當(dāng)前調(diào)度指針?biāo)谖恢?;起始指針移位單元,用于?dāng)判斷所述起始指針駐留時(shí),將所述起始指針的位置移動(dòng)到當(dāng)前調(diào)度指針?biāo)谖恢?,或者,?dāng)判斷所述起始指針不駐留時(shí),將所述起始指針的位置移動(dòng)到沿起所述始指針位置指向尾指針位置方向上當(dāng)前調(diào)度指針?biāo)谖恢煤笠晃蛔诱{(diào)度單元的位置;輸出單元,用于將所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元中的隊(duì)列輸出一次。由以上技術(shù)方案可見,本申請實(shí)施例提供的該隊(duì)列調(diào)度方法,在對當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元進(jìn)行調(diào)度后,會(huì)對對當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài)進(jìn)行判斷起始指針是否駐留,當(dāng)判斷起始指針駐留時(shí),再次對當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元進(jìn)行調(diào)度。即該方法可以根據(jù)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的隊(duì)列長度來確定調(diào)度的次數(shù),這樣使得在調(diào)度時(shí),不再是對每一個(gè)子調(diào)度單元依次調(diào)度,而可以對待調(diào)度方位內(nèi)的某一個(gè)子調(diào)度單元有針對性地多次調(diào)度。因此本申請實(shí)施例提供該隊(duì)列調(diào)度方法,可以根據(jù)待調(diào)度的子調(diào)度單元的隊(duì)列情況進(jìn)行靈活調(diào)度,以解決現(xiàn)有的采用RR輪詢調(diào)度時(shí)存在的流量抖動(dòng)、調(diào)度不均勻以及由于調(diào)度不均勻而導(dǎo)致服務(wù)質(zhì)量變差的問題。
為了更清楚地說明本申請實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本申請實(shí)施例提供的一種隊(duì)列調(diào)度方法的流程示意圖;圖2為本申請實(shí)施例提供的判斷起始指針是否駐留的詳細(xì)流程示意圖;圖3為本申請實(shí)施例提供的根據(jù)權(quán)重值確定駐留參數(shù)的值的詳細(xì)流程示意圖;圖4為本申請實(shí)施例提供的根據(jù)調(diào)度反壓重新設(shè)定駐留參數(shù)的值的詳細(xì)流程示意圖;圖5為本申請實(shí)施例提供的另一種隊(duì)列調(diào)度方法的流程示意圖;圖6為本申請實(shí)施例提供的一種隊(duì)列調(diào)度系統(tǒng)的結(jié)構(gòu)示意圖;圖7為本申請實(shí)施例提供的駐留判斷單元的結(jié)構(gòu)示意圖;圖8為本申請實(shí)施例提供的駐留計(jì)算單元的結(jié)構(gòu)示意圖;圖9為本申請實(shí)施例提供的駐留參數(shù)調(diào)整單元的結(jié)構(gòu)示意圖;圖10為本申請實(shí)施例提供的另一種隊(duì)列調(diào)度系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了使本技術(shù)領(lǐng)域的人員更好地理解本申請中的技術(shù)方案,下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請保護(hù)的范圍。一個(gè)實(shí)施例圖I為本申請實(shí)施例提供的一種隊(duì)列調(diào)度方法的流程示意圖。、
在進(jìn)行調(diào)度前,預(yù)先將待調(diào)度范圍內(nèi)的所有子調(diào)度單元依次設(shè)置有編號(hào),并且在待調(diào)度范圍內(nèi)預(yù)先選取起始指針的初始位置和尾指針的初始位置。如圖I所示,該方法包括以下步驟SlOO :選取調(diào)度指針的位置,并將當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元中的隊(duì)列
輸出一次。在選取調(diào)度指針時(shí),選取位于當(dāng)前起始指針位置與尾指針位置之間、且沿起始指針位置指向尾指針位置方向上第一個(gè)有效的子調(diào)度單元的位置作為當(dāng)前調(diào)度指針的位置。這里當(dāng)前起始指針位置與尾指針位置之間是包括當(dāng)前起始指針和當(dāng)前尾指針,SP 如果當(dāng)前起始指針位置的子調(diào)度單元是有效的,那么第一次選取調(diào)度指針時(shí),就會(huì)選擇當(dāng)前起始指針位置作為調(diào)度指針的位置,即調(diào)度指針與當(dāng)前起始指針的位置會(huì)重合。S200:根據(jù)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的隊(duì)列長度判斷起始指針是否駐
&3甶o這里駐留是指起始指針移動(dòng)到當(dāng)前調(diào)度指針?biāo)谖恢?將起始指針移動(dòng)到當(dāng)前調(diào)度指針?biāo)谖恢?,使得起始指針的位置與當(dāng)前調(diào)度指針的位置相重合,那么在下一次選取調(diào)度指針時(shí),根據(jù)上述選取調(diào)度指針的方法,將會(huì)仍然選取當(dāng)前調(diào)度指針的位置為下一次調(diào)度指針的位置,即通過判斷起始指針是否駐留,就可以判斷出是否需要對當(dāng)前指針位置所在的子調(diào)度單元進(jìn)行重復(fù)調(diào)度。當(dāng)該步驟中判斷起始指針駐留時(shí),進(jìn)行S300 ;當(dāng)該步驟中判斷起始指針不駐留時(shí),進(jìn)行S400。S300 :將起始指針的位置移動(dòng)到當(dāng)前調(diào)度指針?biāo)谖恢谩T谏鲜鯯200中已經(jīng)描述了,駐留的目的是使得起始指針的位置與當(dāng)前調(diào)度指針的位置相重合。而在本申請實(shí)施例中,如果當(dāng)前調(diào)度指針的位置與當(dāng)前起始指針的位置不重合,那么當(dāng)判斷起始指針駐留時(shí),就需要將當(dāng)前起始指針的位置移動(dòng)到當(dāng)前調(diào)度指針?biāo)诘奈恢?。另外,如果?dāng)前調(diào)度指針的位置與當(dāng)前起始指針的位置是原本就是重合在一起的,那么當(dāng)判斷起始指針駐留時(shí),就可以直接保持當(dāng)前起始指針的位置不動(dòng),而無需移動(dòng),當(dāng)然也可以認(rèn)為當(dāng)前起始指針的移動(dòng)位置是O。在將起始指針的位置移動(dòng)后,進(jìn)行S500。S400:將起始指針的位置移動(dòng)到沿起始指針位置指向尾指針位置方向上當(dāng)前調(diào)度指針?biāo)谖恢煤笠晃蛔诱{(diào)度單元的位置。如果判斷起始指針不駐留時(shí),即不需要對當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元進(jìn)行重復(fù)調(diào)度,那么就需要沿著始指針的初始位置指向尾指針的初始位置方向上調(diào)度下一個(gè)子調(diào)度單元。在進(jìn)行移位時(shí),選擇將起始指針的位置移動(dòng)到當(dāng)前調(diào)度指針位置后移位子調(diào)度單元的位置,這樣在下一次選取調(diào)度指針的位置時(shí),必然將選取當(dāng)前調(diào)度指針之后的子調(diào)度單元。在將起始指針的位置移動(dòng)后,進(jìn)行S500。S500 :選取下一個(gè)調(diào)度指針的位置,并將下一個(gè)調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元中的隊(duì)列輸出一次。
在選取下一個(gè)調(diào)度指針的位置時(shí),選取的原則與上述SlOO中相同,選取移位后始指針位置與尾指針位置之間、且沿移位后起始指針位置指向尾指針位置方向上第一個(gè)有效的子調(diào)度單元作為下一個(gè)調(diào)度指針的位置。由于起始指針移位后,起始指針的位置將與當(dāng)前調(diào)度指針的位置重合,所以,選取的下一個(gè)調(diào)度指針的位置仍然是當(dāng)前調(diào)度指針,即實(shí)現(xiàn)了對某一個(gè)調(diào)度子單元重復(fù)調(diào)度。本申請實(shí)施例提供的該隊(duì)列調(diào)度方法,在對當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元進(jìn)行調(diào)度后,會(huì)對對當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài)進(jìn)行判斷起始指針是否駐留,當(dāng)判斷起始指針駐留時(shí),再次對當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元進(jìn)行調(diào)度。即該方法可以根據(jù)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的隊(duì)列長度來確定調(diào)度的次數(shù),這樣使得在調(diào)度時(shí),不再是對每一個(gè)子調(diào)度單元依次調(diào)度,而可以對待調(diào)度方位內(nèi)的某一個(gè)子調(diào)度單元有針對性地多次調(diào)度。
因此,本申請實(shí)施例提供該隊(duì)列調(diào)度方法,可以根據(jù)待調(diào)度的子調(diào)度單元的隊(duì)列情況進(jìn)行靈活調(diào)度,以解決現(xiàn)有的采用RR輪詢調(diào)度時(shí)存在的流量抖動(dòng)、調(diào)度不均勻以及由于調(diào)度不均勻而導(dǎo)致服務(wù)質(zhì)量變差的問題。又一個(gè)實(shí)施例在本申請實(shí)施例中,為了方便對子調(diào)度單元的隊(duì)列長度進(jìn)行描述,將待調(diào)度范圍內(nèi)所有子調(diào)度單元的隊(duì)列長度用四種狀態(tài)表示,分別為第一狀態(tài)、第二狀態(tài)、第三狀態(tài)和第四狀態(tài),其中第一狀態(tài),表示子調(diào)度單元為空;第二狀態(tài),表示子調(diào)度單元有少量報(bào)文,存在可能被調(diào)空的情況;第三狀態(tài),表示子調(diào)度單元在無調(diào)度反壓的情況下可以連續(xù)調(diào)度;第四狀態(tài),表示子調(diào)度單元已經(jīng)溢出。在實(shí)際應(yīng)用時(shí),除第一狀態(tài)和第四狀態(tài)外,其它兩種狀態(tài)的情況可以根據(jù)實(shí)際情況進(jìn)行調(diào)節(jié)。另外,為了方便對起始指針是否駐留有更加量化的表示,在本申請實(shí)施例中,采用駐留參數(shù)來指示起始指針是否駐留,具體為當(dāng)駐留參數(shù)為第一值時(shí),表示起始指針不駐留;當(dāng)駐留參數(shù)為第二值時(shí),表示起始指針駐留。圖2為本申請實(shí)施例提供的判斷起始指針是否駐留的詳細(xì)流程示意圖。如圖2所示,判斷起始指針是否駐留包括以下步驟S201 :確定當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài)。根據(jù)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元內(nèi)隊(duì)列的長度來確定子調(diào)度單元的狀態(tài)。S202 :將駐留參數(shù)設(shè)置成第一值。當(dāng)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài)為第一狀態(tài)或第二狀態(tài)時(shí),將駐留參數(shù)設(shè)置成第一值;S203 :判斷是否第一次調(diào)度當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元。當(dāng)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元為第三狀態(tài)時(shí),判斷是否第一次調(diào)度當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元。判斷是否第一調(diào)度當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的結(jié)果,可以作為是否多次調(diào)度當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的一種依據(jù)。
并且當(dāng)不是第一次調(diào)度時(shí),進(jìn)行S2031 ;當(dāng)是第一次調(diào)度時(shí),進(jìn)行S2032。S2031 :將駐留參數(shù)的值設(shè)定為第一值。S2032:根據(jù)權(quán)重值確定駐留參數(shù)的值。在本申請實(shí)施例中,如圖3所示,該步驟可以包括S301 :根據(jù)權(quán)重值確定一個(gè)包括權(quán)重值在內(nèi)的隨機(jī)數(shù)范圍,并在隨機(jī)數(shù)范圍內(nèi)隨機(jī)生成一個(gè)隨機(jī)數(shù);S302 :將隨機(jī)數(shù)的值與權(quán)重值進(jìn)行比較;S303 :當(dāng)隨機(jī)數(shù)的值小于等于權(quán)重值,將駐留參數(shù)的值設(shè)定為第二值; S304 :當(dāng)隨機(jī)數(shù)的值大于權(quán)重值,將駐留參數(shù)的值設(shè)定為第一值。S204 :將駐留參數(shù)的值設(shè)定為第二值,并在調(diào)度過程中根據(jù)調(diào)度反壓重新設(shè)定駐留參數(shù)的值。當(dāng)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元為第四狀態(tài)時(shí),將駐留參數(shù)的值設(shè)定為第二值,并在調(diào)度過程中根據(jù)調(diào)度反壓重新設(shè)定駐留參數(shù)的值。在本申請實(shí)施例中,如圖4所示,在調(diào)度過程中根據(jù)調(diào)度反壓重新設(shè)定駐留參數(shù)的值可以包括以下步驟S401 :將當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元被調(diào)度的次數(shù)與預(yù)設(shè)最大值進(jìn)行比較,且判斷是否出現(xiàn)調(diào)度反壓。這里預(yù)設(shè)最大值小于等于當(dāng)前子調(diào)度單元中調(diào)度的最長報(bào)文長度與從當(dāng)前子調(diào)度單元調(diào)度的最短報(bào)文長度的比值。S402:若當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元被調(diào)度的次數(shù)小于預(yù)設(shè)最大值、且未出現(xiàn)調(diào)度反壓,根據(jù)權(quán)重值確定駐留參數(shù)的值。S403 :將駐留參數(shù)的值設(shè)定為第一值。若當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元被調(diào)度的次數(shù)大于等于預(yù)設(shè)最大值或出現(xiàn)調(diào)度反壓中有任意一個(gè)情況發(fā)生時(shí),均將駐留參數(shù)的值設(shè)定為第一值。在本申請實(shí)施例中,詳細(xì)描述了如何根據(jù)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元內(nèi)的隊(duì)列長度來確定是否對當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元進(jìn)行重復(fù)調(diào)度。因而可以根據(jù)待調(diào)度的子調(diào)度單元的隊(duì)列情況進(jìn)行靈活調(diào)度,以解決現(xiàn)有的采用RR輪詢調(diào)度時(shí)存在的流量抖動(dòng)、調(diào)度不均勻以及由于調(diào)度不均勻而導(dǎo)致服務(wù)質(zhì)量變差的問題。又一個(gè)實(shí)施例在上述兩個(gè)實(shí)施例的基礎(chǔ)上,當(dāng)起始指針沿著起始指針指向尾指針方向移動(dòng)時(shí),最終會(huì)出現(xiàn)起始指針與尾指針重合的情況,當(dāng)起始指針與尾指針重合,本申請實(shí)施例提供了另外一種隊(duì)列調(diào)度方法,以便可以重新對待調(diào)度范圍內(nèi)所有子調(diào)度單元再次進(jìn)行調(diào)度。圖5為本申請實(shí)施例提供的另一種隊(duì)列調(diào)度方法的流程示意圖。如圖5所示,該隊(duì)列調(diào)度方法還可以包括S600 :判斷起始指針的位置是否與尾指針的位置重合。上面已經(jīng)描述了,當(dāng)起始指針沿著起始指針指向尾指針方向移動(dòng)時(shí),最終會(huì)出現(xiàn)起始指針與尾指針重合的情況,所以在調(diào)度過程中,需要判斷起始指針是否與尾指針相重
口 oS700:當(dāng)起始指針的位置是否與尾指針的位置重合后,將起始指針移動(dòng)到起始指針的初始位置。將起始指針移動(dòng)到其初始位置,也就意味著可以再次對待調(diào)度范圍內(nèi)所有子調(diào)度單元進(jìn)行調(diào)度。本申請實(shí)施例提供的該方法,在一次調(diào)度完成后,可以將起始指針的位置移動(dòng)到起始指針的初始位置,進(jìn)而可以在一次調(diào)度完成后,可以再次對所有子調(diào)度單元進(jìn)行調(diào)度。又一個(gè)實(shí)施例圖6為本申請實(shí)施例提供的一種隊(duì)列調(diào)度系統(tǒng)的結(jié)構(gòu)示意圖。在進(jìn)行調(diào)度前,預(yù)先將待調(diào)度范圍內(nèi)的所有子調(diào)度單元依次設(shè)置有編號(hào),并且在待調(diào)度范圍內(nèi)預(yù)先選取起始指針的初始位置和尾指針的初始位置。 如圖6所示,該隊(duì)列調(diào)度系統(tǒng)包括調(diào)度指針位置選取單元I、駐留判斷單元2、起始指針移位單元3和輸出單元4。調(diào)度指針位置選取單元I用于選取當(dāng)前起始指針初始位置與尾指針初始位置之間、且沿起始指針位置指向尾指針位置方向上第一個(gè)有效的子調(diào)度單元的位置作為當(dāng)前調(diào)度指針的位置。這里當(dāng)前起始指針位置與尾指針位置之間是包括當(dāng)前起始指針和當(dāng)前尾指針,SP如果當(dāng)前起始指針位置的子調(diào)度單元是有效的,那么第一次選取調(diào)度指針時(shí),就會(huì)選擇當(dāng)前起始指針位置作為調(diào)度指針的位置,即調(diào)度指針與當(dāng)前起始指針的位置會(huì)重合。駐留判斷單元2,用于當(dāng)調(diào)度指針位置選取單元I選取出當(dāng)前調(diào)度指針的位置后,根據(jù)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài)判斷起始指針是否駐留。通過判斷起始指針是否駐留,就可以判斷出是否需要對當(dāng)前指針位置所在的子調(diào)度單元進(jìn)行重復(fù)調(diào)度。起始指針移位單元3,用于當(dāng)駐留判斷單元判斷起始指針駐留時(shí),將起始指針的位置移動(dòng)到當(dāng)前調(diào)度指針?biāo)谖恢谩qv留的目的是使得起始指針的位置與當(dāng)前調(diào)度指針的位置相重合。而在本申請實(shí)施例中,如果當(dāng)前調(diào)度指針的位置與當(dāng)前起始指針的位置不重合,那么當(dāng)判斷起始指針駐留時(shí),就需要將當(dāng)前起始指針的位置移動(dòng)到當(dāng)前調(diào)度指針?biāo)诘奈恢?。另外,如果?dāng)前調(diào)度指針的位置與當(dāng)前起始指針的位置是原本就是重合在一起的,那么當(dāng)判斷起始指針駐留時(shí),就可以直接保持當(dāng)前起始指針的位置不動(dòng),而無需移動(dòng),當(dāng)然也可以認(rèn)為當(dāng)前起始指針的移動(dòng)位置是O。輸出單元4,用于當(dāng)選取出當(dāng)前調(diào)度指針的位置后,將當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的隊(duì)列輸出一次。該系統(tǒng)對當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元進(jìn)行調(diào)度后,會(huì)對對當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài)進(jìn)行判斷起始指針是否駐留,當(dāng)判斷起始指針駐留時(shí),再次對當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元進(jìn)行調(diào)度。即該方法可以根據(jù)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的隊(duì)列長度來確定調(diào)度的次數(shù),這樣使得在調(diào)度時(shí),不再是對每一個(gè)子調(diào)度單元依次調(diào)度,而可以對待調(diào)度方位內(nèi)的某一個(gè)子調(diào)度單元有針對性地多次調(diào)度。又一個(gè)實(shí)施例在本申請實(shí)施例中,為了方便對子調(diào)度單元的隊(duì)列長度進(jìn)行描述,將待調(diào)度范圍內(nèi)所有子調(diào)度單元的隊(duì)列長度用四種狀態(tài)表示,分別為第一狀態(tài)、第二狀態(tài)、第三狀態(tài)和第四狀態(tài),其中第一狀態(tài),表示子調(diào)度單元為空;第二狀態(tài),表示子調(diào)度單元有少量報(bào)文,存在可能被調(diào)空的情況;第三狀態(tài),表示子調(diào)度單元在無調(diào)度反壓的情況下可以連續(xù)調(diào)度;第四狀態(tài),表示子調(diào)度單元已經(jīng)溢出。在實(shí)際應(yīng)用時(shí),除第一狀態(tài)和第四狀態(tài)外,其它兩種狀態(tài)的情況可以根據(jù)實(shí)際情況進(jìn)行調(diào)節(jié)。圖7為本申請實(shí)施例提供的駐留判斷單元的結(jié)構(gòu)示意圖。如圖7所示,在本申請實(shí)施例中,駐留判斷單元2包括狀態(tài)確定單元21、第一次調(diào)度判斷單元22、駐留概率計(jì)算單元23、駐留參數(shù)值設(shè)置單元24和駐留參數(shù)調(diào)整單元25。狀態(tài)確定單元21用于確定當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài)。在確定時(shí),根據(jù)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元內(nèi)隊(duì)列的長度來確定子調(diào)度單元的狀態(tài)。 第一次調(diào)度判斷單元22,用于判斷是否第一次調(diào)度當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元。判斷是否第一調(diào)度當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的結(jié)果,可以作為是否多次調(diào)度當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的一種依據(jù)。駐留概率計(jì)算單元23,用于根據(jù)權(quán)重值確定起始指針的是否駐留在當(dāng)前起始指針的位置。在本申請實(shí)施例中,如圖8所示,該駐留計(jì)算單元23可以包括隨機(jī)數(shù)生成單元31、第二比較單元32和駐留概率計(jì)算子單元33,其中隨機(jī)數(shù)范圍生成單元31,用于根據(jù)權(quán)重值確定一個(gè)包括權(quán)重值在內(nèi)的隨機(jī)數(shù)范圍,并在隨機(jī)數(shù)范圍內(nèi)隨機(jī)生成一個(gè)隨機(jī)數(shù);第二比較單元32用于將隨機(jī)數(shù)的值與權(quán)重值進(jìn)行比較;駐留概率計(jì)算子單元33用于根據(jù)第二比較單元32的比較結(jié)果計(jì)算起始指針是否駐留,當(dāng)隨機(jī)數(shù)的值小于等于權(quán)重值,表示起始指針駐留;當(dāng)隨機(jī)數(shù)的值大于權(quán)重值,表示起始指針不駐留。駐留參數(shù)值設(shè)置單元23用于當(dāng)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài)為第一狀態(tài)或第二狀態(tài)時(shí),將駐留參數(shù)設(shè)置成第一值;當(dāng)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元為第三狀態(tài)時(shí),且不是第一次調(diào)度時(shí),將駐留參數(shù)的值設(shè)定為第一值;當(dāng)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元為第三狀態(tài)時(shí),且是第一次調(diào)度時(shí),根據(jù)駐留概率計(jì)算單元的計(jì)算結(jié)果將駐留參數(shù)設(shè)置成第一值或第二值;當(dāng)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元為第四狀態(tài)時(shí),將駐留參數(shù)的值設(shè)定為第二值。駐留參數(shù)調(diào)整單元25用于當(dāng)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元為第四狀態(tài)時(shí),且將駐留參數(shù)的值設(shè)定為第二值,在調(diào)度過程中根據(jù)調(diào)度反壓重新設(shè)定駐留參數(shù)的值。在本申請實(shí)施例中,如圖9所示,駐留參數(shù)調(diào)整單元24可以包括第一比較單元41和調(diào)度反壓檢測單元42,其中第一比較單元41用于將當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元被調(diào)度的次數(shù)與預(yù)設(shè)最大值進(jìn)行比較;調(diào)度反壓檢測單元42用于檢測在調(diào)度過程中是否出現(xiàn)反壓
當(dāng)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元被調(diào)度的次數(shù)小于預(yù)設(shè)最大值、且未出現(xiàn)調(diào)度反壓,駐留參數(shù)值設(shè)置單元24根據(jù)駐留概率計(jì)算單元23的計(jì)算結(jié)果將駐留參數(shù)設(shè)置成第一值或第二值,否則將駐留參數(shù)的值設(shè)定為第一值。這里預(yù)設(shè)最大值小于等于當(dāng)前子調(diào)度單元中調(diào)度的最長報(bào)文長度與從當(dāng)前子調(diào)度單元調(diào)度的最短報(bào)文長度的比值。又一個(gè)實(shí)施例在上述兩個(gè)實(shí)施例的基礎(chǔ)上,當(dāng)起始指針沿著起始指針指向尾指針方向移動(dòng)時(shí),最終會(huì)出現(xiàn)起始指針與尾指針重合的情況,當(dāng)起始指針與尾指針重合,本申請實(shí)施例提供了另外一種隊(duì)列調(diào)度方法,以便可以重新對待調(diào)度范圍內(nèi)所有子調(diào)度單元再次進(jìn)行調(diào)度。圖10為本申請實(shí)施例提供的另一種隊(duì)列調(diào)度系統(tǒng)的結(jié)構(gòu)示意圖。 如圖10所示,該隊(duì)列調(diào)度系統(tǒng)還可以包括位置判斷單元5和初始化單元6,其中位置判斷單元5用于判斷起始指針的位置是否與尾指針的位置重合。上面已經(jīng)描述了,當(dāng)起始指針沿著起始指針指向尾指針方向移動(dòng)時(shí),最終會(huì)出現(xiàn)起始指針與尾指針重合的情況,所以在調(diào)度過程中,需要判斷起始指針是否與尾指針相重合。初始化單元6用于當(dāng)起始指針的位置是否與尾指針的位置重合后,將起始指針移動(dòng)到起始指針的初始位置。將起始指針移動(dòng)到其初始位置,也就意味著可以再次對待調(diào)度范圍內(nèi)所有子調(diào)度單元進(jìn)行調(diào)度。本申請實(shí)施例提供的該系統(tǒng),在一次調(diào)度完成后,可以將起始指針的位置移動(dòng)到起始指針的初始位置,進(jìn)而可以在一次調(diào)度完成后,可以再次對所有子調(diào)度單元進(jìn)行調(diào)度。為了描述的方便,描述以上裝置時(shí)以功能分為各種單元分別描述。當(dāng)然,在實(shí)施本申請時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。通過以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn)?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。以上所述僅是本申請的優(yōu)選實(shí)施方式,使本領(lǐng)域技術(shù)人員能夠理解或?qū)崿F(xiàn)本申請。對這些實(shí)施例的多種修改對本領(lǐng)域的技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本申請將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。 ·
權(quán)利要求
1.一種隊(duì)列調(diào)度方法,待調(diào)度范圍內(nèi)的所有子調(diào)度單元依次設(shè)置有編號(hào),并且在待調(diào)度范圍內(nèi)已選取起始指針的初始位置和尾指針的初始位置,其特征在于,包括 選取當(dāng)前起始指針的初始位置與尾指針初始位置之間、且沿所述起始指針位置指向尾指針位置方向上第一個(gè)有效的子調(diào)度單元的位置作為調(diào)度指針的位置,并將當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元中的隊(duì)列輸出一次; 根據(jù)所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的隊(duì)列長度判斷所述起始指針是否駐留,所述駐留是指所述起始指針移動(dòng)到所述當(dāng)前調(diào)度指針?biāo)谖恢茫? 當(dāng)判斷所述起始指針駐留時(shí),將所述起始指針的位置移動(dòng)到當(dāng)前調(diào)度指針?biāo)谖恢?,且選取移位后所述始指針位置與尾指針位置之間、且沿移位后所述起始指針位置指向尾指針位置方向上第一個(gè)有效的子調(diào)度單元作為下一個(gè)調(diào)度指針的位置,并將下一個(gè)調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元中的隊(duì)列輸出一次; 當(dāng)判斷所述起始指針不駐留時(shí),將所述起始指針的位置移動(dòng)到沿起所述始指針位置指 向尾指針位置方向上當(dāng)前調(diào)度指針?biāo)谖恢煤笠晃蛔诱{(diào)度單元的位置,并選取移位后所述始指針位置與尾指針位置之間、且沿移位后所述起始指針位置指向尾指針位置方向上第一個(gè)有效的子調(diào)度單元作為下一個(gè)調(diào)度指針的位置,并將下一個(gè)調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單兀中的隊(duì)列輸出一次。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述待調(diào)度范圍內(nèi)的所有子調(diào)度單元的隊(duì)列長度用四種狀態(tài)表示,其中第一狀態(tài),表示子調(diào)度單元為空;第二狀態(tài),表示子調(diào)度單元有少量報(bào)文,存在可能被調(diào)空的情況;第三狀態(tài),表示子調(diào)度單元在無調(diào)度反壓的情況下可以連續(xù)調(diào)度;第四狀態(tài),表示子調(diào)度單元已經(jīng)溢出; 所述起始指針是否駐留采用駐留參數(shù)的來指示,并且當(dāng)所述駐留參數(shù)為第一值時(shí),表示所述起始指針不駐留;當(dāng)所述駐留參數(shù)為第二值時(shí),表示所述起始指針駐留; 所述根據(jù)當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài)判斷所述起始指針是否駐留,具體包括 確定所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài); 當(dāng)所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài)為第一狀態(tài)或第二狀態(tài)時(shí),將所述駐留參數(shù)設(shè)置成第一值; 當(dāng)所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元為第三狀態(tài)時(shí),判斷是否第一次調(diào)度所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元,并且當(dāng)不是第一次調(diào)度時(shí),將所述駐留參數(shù)的值設(shè)定為第一值,當(dāng)是第一次調(diào)度時(shí),根據(jù)權(quán)重值確定所述駐留參數(shù)的值; 當(dāng)所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元為第四狀態(tài)時(shí),將所述駐留參數(shù)的值設(shè)定為第二值,并在調(diào)度過程中根據(jù)調(diào)度反壓重新設(shè)定駐留參數(shù)的值。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,當(dāng)所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元為第四狀態(tài)時(shí),在調(diào)度過程中根據(jù)調(diào)度反壓重新設(shè)定駐留參數(shù)的值,具體包括 將當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元被調(diào)度的次數(shù)與預(yù)設(shè)最大值進(jìn)行比較,且判斷是否出現(xiàn)調(diào)度反壓; 若當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元被調(diào)度的次數(shù)小于預(yù)設(shè)最大值、且未出現(xiàn)調(diào)度反壓,根據(jù)權(quán)重值確定所述駐留參數(shù)的值,否則將所述駐留參數(shù)的值設(shè)定為第一值。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述預(yù)設(shè)最大值小于等于當(dāng)前子調(diào)度單元中調(diào)度的最長報(bào)文長度與從當(dāng)前子調(diào)度單元調(diào)度的最短報(bào)文長度的比值。
5.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,所述根據(jù)權(quán)重值確定所述駐留參數(shù)的值,具體包括 根據(jù)權(quán)重值確定一個(gè)包括所述權(quán)重值在內(nèi)的隨機(jī)數(shù)范圍; 在所述隨機(jī)數(shù)范圍內(nèi)隨機(jī)生成一個(gè)隨機(jī)數(shù); 將所述隨機(jī)數(shù)的值與所述權(quán)重值進(jìn)行比較; 當(dāng)所述隨機(jī)數(shù)的值小于等于所述權(quán)重值,將所述駐留參數(shù)的值設(shè)定為第二值; 當(dāng)所述隨機(jī)數(shù)的值大于所述權(quán)重值,將所述駐留參數(shù)的值設(shè)定為第一值。
6.根據(jù)權(quán)利要求1-5任一項(xiàng)所述的方法,其特征在于,進(jìn)一步包括 判斷所述起始指針的位置是否與所述尾指針的位置重合; 當(dāng)所述起始指針的位置是否與所述尾指針的位置重合后,將所述起始指針移動(dòng)到所述起始指針的初始位置。
7.一種調(diào)度系統(tǒng),待調(diào)度范圍內(nèi)的所有子調(diào)度單元依次設(shè)置有編號(hào),并且在待調(diào)度范圍內(nèi)已選取起始指針的初始位置和尾指針的初始位置,其特征在于,包括 調(diào)度指針位置選取單元,用于選取當(dāng)前起始指針初始位置與尾指針初始位置之間、且沿起始指針位置指向尾指針位置方向上第一個(gè)有效的子調(diào)度單元的位置作為當(dāng)前調(diào)度指針的位置; 駐留判斷單元,用于根據(jù)所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài)判斷所述起始指針是否駐留,所述駐留是指所述起始指針移動(dòng)到所述當(dāng)前調(diào)度指針?biāo)谖恢茫? 起始指針移位單元,用于當(dāng)判斷所述起始指針駐留時(shí),將所述起始指針的位置移動(dòng)到當(dāng)前調(diào)度指針?biāo)谖恢?,或者,?dāng)判斷所述起始指針不駐留時(shí),將所述起始指針的位置移動(dòng)到沿起所述始指針位置指向尾指針位置方向上當(dāng)前調(diào)度指針?biāo)谖恢煤笠晃蛔诱{(diào)度單元的位置; 輸出單元,用于將所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元中的隊(duì)列輸出一次。
8.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述待調(diào)度范圍內(nèi)的所有子調(diào)度單元的隊(duì)列長度用四種狀態(tài)表示,其中第一狀態(tài),表示子調(diào)度單元為空;第二狀態(tài),表示子調(diào)度單元有少量報(bào)文,存在可能被調(diào)空的情況;第三狀態(tài),表示子調(diào)度單元在無調(diào)度反壓的情況下可以連續(xù)調(diào)度;第四狀態(tài),表示子調(diào)度單元已經(jīng)溢出; 所述起始指針是否駐留采用駐留參數(shù)的來指示,并且當(dāng)所述駐留參數(shù)為第一值時(shí),表示所述起始指針不駐留;當(dāng)所述駐留參數(shù)為第二值時(shí),表示所述起始指針駐留; 所述駐留判斷單元包括 狀態(tài)確定單元,用于確定所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài); 第一次調(diào)度判斷單元,用于判斷是否第一次調(diào)度所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元; 駐留概率計(jì)算單元,用于根據(jù)權(quán)重值確定所述起始指針的是否駐留在當(dāng)前起始指針的位置; 駐留參數(shù)值設(shè)置單元,用于當(dāng)所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元的狀態(tài)為第一狀態(tài)或第二狀態(tài)時(shí),將駐留參數(shù)設(shè)置成第一值;當(dāng)所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元為第三狀態(tài)時(shí),且不是第一次調(diào)度時(shí),將所述駐留參數(shù)的值設(shè)定為第一值;當(dāng)所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元為第三狀態(tài)時(shí),且是第一次調(diào)度時(shí),根據(jù)駐留概率計(jì)算單元的計(jì)算結(jié)果將所述駐留參數(shù)設(shè)置成第一值或第二值;當(dāng)所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元為第四狀態(tài)時(shí),將所述駐留參數(shù)的值設(shè)定為第二值; 駐留參數(shù)調(diào)整單元,用于當(dāng)所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元為第四狀態(tài)時(shí),且將所述駐留參數(shù)的值設(shè)定為第二值,在調(diào)度過程中根據(jù)調(diào)度反壓重新設(shè)定駐留參數(shù)的值。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述駐留參數(shù)調(diào)整單元包括 第一比較單元,用于將當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元被調(diào)度的次數(shù)與預(yù)設(shè)最大值進(jìn)行比較; 調(diào)度反壓檢測單元,用于檢測在調(diào)度過程中是否出現(xiàn)反壓; 當(dāng)所述當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元被調(diào)度的次數(shù)小于預(yù)設(shè)最大值、且未出現(xiàn)調(diào)度反壓,駐留參數(shù)值設(shè)置單元根據(jù)駐留概率計(jì)算單元的計(jì)算結(jié)果將所述駐留參數(shù)設(shè)置成第一值或第二值,否則將所述駐留參數(shù)的值設(shè)定為第一值。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述駐留概率計(jì)算單元包括 隨機(jī)數(shù)范圍選取單元,用于根據(jù)權(quán)重值確定一個(gè)包括所述權(quán)重值在內(nèi)的隨機(jī)數(shù)范圍; 隨機(jī)數(shù)生成單元,用于在所述隨機(jī)數(shù)范圍內(nèi)隨機(jī)生成一個(gè)隨機(jī)數(shù); 第二比較單元,用于將所述隨機(jī)數(shù)的值與所述權(quán)重值進(jìn)行比較; 駐留概率計(jì)算子單元,用于根據(jù)所述第二比較單元的比較結(jié)果計(jì)算所述起始指針是否駐留,當(dāng)所述隨機(jī)數(shù)的值小于等于所述權(quán)重值,表示所述起始指針駐留;當(dāng)所述隨機(jī)數(shù)的值大于所述權(quán)重值,表示所述起始指針不駐留。
11.根據(jù)權(quán)利要求7-10任意一項(xiàng)所述的系統(tǒng),其特征在于,該系統(tǒng)進(jìn)一步包括 位置判斷單元,用于判斷所述起始指針的位置是否與所述尾指針的位置重合; 初始化單元,用于當(dāng)所述起始指針的位置是否與所述尾指針的位置重合后,將所述起始指針移動(dòng)到所述起始指針的初始位置。
全文摘要
本申請公開了一種隊(duì)列調(diào)度方法及系統(tǒng),該方法包括選取當(dāng)前調(diào)度指針的位置,并將當(dāng)前調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元中的隊(duì)列輸出一次;確定所述起始指針是否駐留;當(dāng)判斷駐留時(shí),將所述起始指針的位置移動(dòng)到當(dāng)前調(diào)度指針?biāo)谖恢?,?dāng)判斷不駐留時(shí),將所述起始指針的位置移動(dòng)到沿起所述始指針位置指向尾指針位置方向上當(dāng)前調(diào)度指針?biāo)谖恢煤笠晃蛔诱{(diào)度單元的位置,在將起始指針移位后,選取下一個(gè)調(diào)度指針的位置,并將下一個(gè)調(diào)度指針?biāo)谖恢玫淖诱{(diào)度單元中的隊(duì)列輸出一次。該方法,可以根據(jù)待調(diào)度的子調(diào)度單元的隊(duì)列情況進(jìn)行靈活調(diào)度,以解決現(xiàn)有的采用RR輪詢調(diào)度時(shí)存在的流量抖動(dòng)、調(diào)度不均勻以及由于調(diào)度不均勻而導(dǎo)致服務(wù)質(zhì)量變差的問題。
文檔編號(hào)H04L12/56GK102752202SQ20121022275
公開日2012年10月24日 申請日期2012年6月29日 優(yōu)先權(quán)日2012年6月29日
發(fā)明者袁蘊(yùn)超 申請人:華為技術(shù)有限公司