對多隊列的緩存空間進行分配控制的方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種對多隊列的緩存空間進行分配控制的方法及裝置,本發(fā)明通過確定的需要分配待共享的緩存空間的隊列個數(shù)為每個需要分配待共享的緩存空間的隊列分配共享緩存空間,并隨著需要分配待共享的緩存空間的隊列個數(shù)的變化為每個需要分配待共享的緩存空間的隊列分配共享緩存空間,實現(xiàn)了根據(jù)網(wǎng)絡流量進行緩存空間自動調整分配,節(jié)約了硬件資源,有利于硬件實踐,同時提高了緩存空間的利用率。
【專利說明】對多隊列的緩存空間進行分配控制的方法及裝置
【技術領域】
[0001]本發(fā)明涉及到緩存領域,特別涉及到一種對多隊列的緩存空間進行分配控制的方法及裝置。
【背景技術】
[0002]隨著網(wǎng)絡的普及,信息交流與信息共享成為人們日常生活中必不可少的一部分。而隨著網(wǎng)絡中交互信息(數(shù)據(jù)包)的不斷增長,必然引起網(wǎng)絡擁塞。因此,如何避免擁塞顯得尤為重要,現(xiàn)在Internet (互聯(lián)網(wǎng))上使用得比較廣泛的擁塞避免機制是RED (RandomEarly Discard,隨機早期丟棄)機制。而RED機制的關鍵在于如何有效的使用有限的緩存資源,執(zhí)行合理的丟棄,從而實現(xiàn)擁塞避免,保障網(wǎng)絡的順暢。
[0003]在現(xiàn)有的采用RED機制的RED裝置的多隊列緩存中,通常的分配緩存方式包括--方式一、使用的都是按照端口、隊列的數(shù)量及隊列的優(yōu)先級來分配緩存的方式;方式二、采用指數(shù)移動加權平均算法并配合其他函數(shù)實現(xiàn)多隊列共享緩存的方式。
[0004]然而,上述方式存在不可回避的缺陷:
[0005]缺陷一、采用上述方式一劃分緩存比較簡單,但由于各隊列的緩存是預先分配,且分配完畢即是固定的,不能根據(jù)各隊列實時網(wǎng)絡流量進行自動調整,緩存利用率偏低,缺乏自適應性,并且也無法真正達到共享緩存的效果,因為分配好之后,每個隊列能使用緩存的最大額度就是分配給自己的那一部分;
[0006]缺陷二、采用上述方式二進行共享緩存,在激活隊列較少時,緩存利用率偏低,并且算法相對復雜,不利于硬件實現(xiàn)。
【發(fā)明內容】
[0007]本發(fā)明的主要目的為提供一種對多隊列的緩存空間進行分配控制的方法及裝置,旨在實現(xiàn)根據(jù)網(wǎng)絡流量進行緩存自動調整分配,進而提高緩存空間的利用率。
[0008]本發(fā)明提出一種對多隊列的緩存空間進行分配控制的方法,該方法包括:
[0009]分析各個隊列中是否存在需要分配待共享的緩存空間的隊列;
[0010]在存在需要分配待共享的緩存空間的隊列時,確定需要分配待共享的緩存空間的隊列的個數(shù);
[0011]根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
[0012]優(yōu)選地,所述根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列的步驟包括:
[0013]將所述待共享的緩存空間中預留出預設值的緩存空間,并將預留后剩余的緩存空間作為待分配的緩存空間;
[0014]根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將所述待分配的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
[0015]優(yōu)選地,在所述分析各個隊列中是否存在需要分配待共享的緩存空間的隊列的步驟之前,該方法還包括:
[0016]將待獨享的緩存空間分配給各個隊列。
[0017]優(yōu)選地,所述將待獨享的緩存空間分配給各個隊列的步驟之后,該方法還包括:
[0018]分析為各個隊列分配的待獨享的緩存空間是否滿足各個隊列的執(zhí)行需要;
[0019]若有隊列被分配的待獨享的緩存空間不滿足執(zhí)行需要,則確定該隊列為需要分配待共享的緩存空間的隊列。
[0020]優(yōu)選地,在所述將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列的步驟之后,該方法還包括:
[0021]分析為各個需要分配待共享的緩存空間的隊列分配的共享緩存空間是否被占用;
[0022]當有需要分配待共享的緩存空間的隊列被分配的共享緩存空間未被占用時,則確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一,并根據(jù)減一后的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
[0023]一種對多隊列的緩存空間進行分配控制的裝置,該裝置包括:
[0024]分析模塊,用于分析各個隊列中是否存在需要分配待共享的緩存空間的隊列;
[0025]處理模塊,用于在存在需要分配待共享的緩存空間的隊列時,確定需要分配待共享的緩存空間的隊列的個數(shù);
[0026]分配模塊,用于根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
[0027]優(yōu)選地,所述處理模塊,還用于將所述待共享的緩存空間中預留出預設值的緩存空間,并將預留后剩余的緩存空間作為待分配的緩存空間;
[0028]所述分配模塊,還用于根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將所述待分配的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
[0029]優(yōu)選地,所述分配模塊,還用于將待獨享的緩存空間分配給各個隊列。
[0030]優(yōu)選地,所述分析模塊,還用于分析為各個隊列分配的待獨享的緩存空間是否滿足各個隊列的執(zhí)行需要;
[0031]所述處理模塊,還用于若有隊列被分配的待獨享的緩存空間不滿足執(zhí)行需要,則確定該隊列為需要分配待共享的緩存空間的隊列。
[0032]優(yōu)選地,所述分析模塊,還用于分析為各個需要分配待共享的緩存空間的隊列分配的共享緩存空間是否被占用;
[0033]所述處理模塊,還用于當有需要分配待共享的緩存空間的隊列被分配的共享緩存空間未被占用時,則確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一;
[0034]所述分配模塊,還用于根據(jù)減一后的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
[0035]相對現(xiàn)有技術,通過確定的需要分配待共享的緩存空間的隊列個數(shù)為每個需要分配待共享的緩存空間的隊列分配共享緩存空間,并隨著需要分配待共享的緩存空間的隊列個數(shù)的變化為每個需要分配待共享的緩存空間的隊列分配共享緩存空間,實現(xiàn)了根據(jù)網(wǎng)絡流量進行緩存空間自動調整分配,節(jié)約了硬件資源,有利于硬件實踐,同時提高了緩存空間的利用率。
【專利附圖】
【附圖說明】
[0036]圖1為本發(fā)明對多隊列的緩存空間進行分配控制的方法的第一實施例的具體流程圖;
[0037]圖2為本發(fā)明對多隊列的緩存空間進行分配控制的方法的第二實施例的具體流程圖;
[0038]圖3為本發(fā)明對多隊列的緩存空間進行分配控制的方法的第三實施例的具體流程圖;
[0039]圖4為本發(fā)明對多隊列的緩存空間進行分配控制的方法的第四實施例的具體流程圖;
[0040]圖5為本發(fā)明對多隊列的緩存空間進行分配控制的方法的第五實施例的具體流程圖;
[0041]圖6為本發(fā)明對多隊列的緩存空間進行分配控制的裝置的較佳實施例的具體架構圖。
[0042]本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結合實施例,參照附圖做進一步說明。
【具體實施方式】
[0043]應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0044]如圖1所示,為本發(fā)明對多隊列的緩存空間進行分配控制的方法的第一實施例的具體流程圖。
[0045]需要強調的是:圖1所示流程圖僅為一個較佳實施例,本領域的技術人員當知,任何圍繞本發(fā)明思想構建的實施例都不應脫離于如下技術方案涵蓋的范圍:
[0046]分析各個隊列中是否存在需要分配待共享的緩存空間的隊列;在存在需要分配待共享的緩存空間的隊列時,確定需要分配待共享的緩存空間的隊列的個數(shù);根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
[0047]以下是本實施例逐步實現(xiàn)對多隊列的緩存進行控制的具體步驟:
[0048]步驟S11,分析各個隊列中是否存在需要分配待共享的緩存空間的隊列。
[0049]具體的,實時或定時分析各個隊列是否需要分配待共享的緩存空間的隊列。
[0050]步驟S12,在存在需要分配待共享的緩存空間的隊列時,確定需要分配待共享的緩存空間的隊列個數(shù)。
[0051]具體的,當存在需要分配待共享的緩存空間的隊列時,確定需要分配待共享的緩存空間的隊列個數(shù);例如,當找出有3個需要分配待共享的緩存空間的隊列時,即需要分配待共享的緩存空間的隊列個數(shù)為3。
[0052]步驟S13,根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
[0053]具體的,獲取待共享的緩存空間的大小,即為總的多隊列待共享的緩存空間的大小,例如,可以是100M,也還可以是其他任意預先設置的共享緩存空間;將所述獲取的多隊列的共享緩存空間的大小根據(jù)所述確定的需要分配待共享的緩存空間的隊列個數(shù)平均分配給各個需要分配待共享的緩存空間的隊列。例如,獲取的多隊列的共享緩存空間的大小是100M,確定的需要分配待共享的緩存空間的隊列個數(shù)是4個,則將100M共享緩存空間平均分配給4個需要分配待共享的緩存空間的隊列,每個需要分配待共享的緩存空間的隊列得到的共享緩存空間的大小為25M ;需要分配待共享的緩存空間的隊列得到共享緩存空間大小的計算公式為:Q共隊列=Q共/N,其中,Q共為總的多隊列的共享緩存大小,N為需要分配待共享的緩存空間的隊列個數(shù),Q共隊列為每個需要分配待共享的緩存空間的隊列分配的共享緩存空間的獨享。在本發(fā)明其他實施例中,分配待共享的緩存空間的大小給需要分配待共享的緩存空間的隊列的方式,還可以是按照各個隊列的優(yōu)先級高低順序及各個優(yōu)先級對應的預設的參數(shù)將獲取的多隊列的共享緩存空間的大小分配給各個需要分配待共孚的緩存空間的隊列。
[0054]通過確定的需要分配待共享的緩存空間的隊列個數(shù)為每個需要分配待共享的緩存空間的隊列分配共享緩存空間,并隨著需要分配待共享的緩存空間的隊列個數(shù)的變化為每個需要分配待共享的緩存空間的隊列分配共享緩存空間,實現(xiàn)了根據(jù)網(wǎng)絡流量進行緩存空間自動調整分配,節(jié)約了硬件資源,有利于硬件實踐,同時提高了緩存空間的利用率。
[0055]如圖2所示,為本發(fā)明對多隊列的緩存空間進行分配控制的方法的第二實施例的具體流程圖。
[0056]基于上述第一實施例,步驟S13包括:
[0057]步驟S14,將所述待共享的緩存空間中預留出預設值的緩存空間,并將預留后剩余的緩存空間作為待分配的緩存空間;
[0058]步驟S15,根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將所述待分配的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
[0059]具體的,獲取待共享的緩存空間的大小,即為多隊列分配的共享緩存空間的大小,例如,可以是100M,也還可以是其他任意預先設置的共享緩存空間;預留預設值的共享緩存空間,所述預設值可以是10M,或15M或30M等任意提前設置的共享緩存空間,并將預留后剩余的緩存空間作為待分配的緩存空間;根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將所述待分配的緩存空間分配給各個需要分配待共享的緩存空間的隊列。例如,獲取的多隊列的共享緩存空間的大小是100M,預留出預設值的緩存空間的預設值為15M,獲取的需要分配待共享的緩存空間的隊列個數(shù)是5個,則將100M減去15M之后的共享緩存空間85M作為待分配的緩存空間,將所述待分配的緩存空間85M平均分配給5個需要分配待共享的緩存空間的隊列,每個需要分配待共享的緩存空間的隊列得到的共享緩存空間的大小為17M ;需要分配待共享的緩存空間的隊列得到共享緩存空間的大小的計算公式為:Q共隊列=(Q共-Q預留)/N,其中,Q共為總的多隊列的共享緩存空間,N為需要分配待共享的緩存空間的隊列個數(shù),Q預留為按照預設值預留的多隊列的共享緩存空間,Q共隊列為每個需要分配待共享的緩存空間的隊列分配的共享緩存空間。
[0060]通過預留預設值的共享緩存空間,以便在總的共享緩存空間在被一個或多個需要分配待共享的緩存空間的隊列全部占用時,其他隊列有共享緩存空間可用,能更加靈活的分配多隊列的共享緩存空間,提高用戶體驗。
[0061]如圖3所示,為本發(fā)明對多隊列的緩存空間進行分配控制的方法的第三實施例的具體流程圖。
[0062]基于上述第一實施例,在步驟Sll之前,還包括:
[0063]步驟S16,將待獨享的緩存空間分配給各個隊列。
[0064]具體的,獲取多隊列中總的隊列個數(shù),待獨享的緩存空間、各個隊列在多隊列中的優(yōu)先級以及各個優(yōu)先級對應的分配系數(shù);例如,隊列的個數(shù)為4個,分別是隊列A、隊列B、隊列C和隊列D,多隊列的總的獨享緩存空間的大小為200M,各個隊列的優(yōu)先級順序為:隊列A、隊列B、隊列C及隊列D,各個隊列的對應的分配系數(shù)。根據(jù)獲取的隊列的優(yōu)先級的高低順序、總的隊列個數(shù)以及各個優(yōu)先級對應的分配系數(shù),將所述待獨享緩存空間對應的分配給各個隊列,根據(jù)各個隊列的優(yōu)先級的高低順序,高優(yōu)先級的隊列和低優(yōu)先級的隊列分配的獨享緩存可以不同,也可以將待獨享的緩存空間平均分配給各個隊列。當將待獨享的緩存空間平均分配給各個隊列時,其公式可以是Q獨隊列=Q獨/n,其中Q獨隊列為隊列分配的獨享緩存空間,Q獨為多隊列總的獨享緩存空間,η為多隊列中的隊列個數(shù);當高優(yōu)先級的隊列和低優(yōu)先級的隊列分配的獨享緩存空間可以不同時,其公式可以是Q獨隊列=(Q獨/n)*c,c為優(yōu)先級對應的分配常數(shù),也還可以是其他任意適用的計算方式得到每個隊列分配的獨享緩存空間,所述優(yōu)先級根據(jù)每個隊列的流量的大小來動態(tài)設置,即每個隊列在每個不同的時刻優(yōu)先級是不一致的。例如,按照Q獨隊列=Q獨/n,分配待獨享的緩存空間,待獨享的緩存空間Q獨=200M,多隊列中的隊列個數(shù)n=4,Q獨對列=Q獨/n=200M/4=50M ;按照Q獨隊列=(Q獨/n ) *c分配待獨享的緩存空間,若隊列A的優(yōu)先級對應的分配常數(shù)為1.5,隊列B優(yōu)先級對應的分配常數(shù)為1.2,隊列C優(yōu)先級對應的分配常數(shù)為0.8,隊列D優(yōu)先級對應的分配常數(shù)為0.5,則對應的隊列A分配的獨享緩存空間為Q獨對列A= (200M/4) *1.5=50Μ*1.5=75Μ,隊列B分配的獨享緩存空間為Q獨對列B= (200Μ/4) * I.2=50Μ* I.2=60Μ,隊列C分配的獨享緩存空間為Q獨對列C= (200Μ/4) *0.8=50Μ*0.8=40Μ,隊列D分配的獨享緩空間存為Q獨對列D=(200M/4)*0.5=50M*0.5=25M。本實施例中,優(yōu)選地以根據(jù)獲取的隊列的優(yōu)先級的高低順序,將所述待獨享的緩存空間對應的分配給各個隊列,根據(jù)各個隊列的優(yōu)先級的高低順序,高優(yōu)先級的隊列和低優(yōu)先級的隊列分配的獨享緩存空間可以不同的方式分配多隊列的獨享緩存空間,即按照公式Q獨隊列=(Q獨/n) *c分配待獨享的緩存空間。
[0065]通過按照預設優(yōu)先級對應的分配常數(shù)給各個隊列合理的分配待獨享的緩存空間,使得獨享緩存空間的分配按照各個隊列的流量的大小合理分配,提高獨享緩存空間分配的靈活性,使得獨享緩存空間能得到更好更合理的利用,進而提高獨享緩存空間的利用率。
[0066]如圖4所示,為本發(fā)明對多隊列的緩存進行分配控制的方法的第四實施例的具體流程圖。
[0067]基于上述第一實施例,在步驟S13之后,還包括:
[0068]步驟S17,分析為各個需要分配待共享的緩存空間的隊列分配的共享緩存空間是否被占用。
[0069]具體的,在獲取待共享的緩存空間,將所述待共享的緩存空間根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù)分配給各個需要分配待共享的緩存空間的隊列之后,分析為各個需要分配待共享的緩存空間的隊列分配的共享緩存空間是否被占用,即分析存入該隊列的共享緩存空間內的數(shù)據(jù)包是否被調度出隊。
[0070]步驟S18,當有需要分配待共享的緩存空間的隊列被分配的共享緩存空間未被占用時,則確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一。
[0071]具體的,當有需要分配待共享的緩存空間的隊列被分配的共享緩存空間未被占用時,則確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一。例如,選取平均分配待共享的緩存空間的方式,獲取待共享的緩存空間的大小是100M,確定的需要分配待共享的緩存空間的隊列個數(shù)是4個,則將100M待共享的緩存空間平均分配給4個需要分配待共享的緩存空間的隊列,每個需要分配待共享的緩存空間的隊列得到的共享緩存空間為25M ;需要分配待共享的緩存空間的隊列得到的共享緩存空間的計算公式為:Q共隊列=Q共/N,其中,Q共為待共享的緩存空間,N為需要分配待共享的緩存空間的隊列個數(shù),Q共隊列為每個需要分配待共享的緩存空間的隊列分配的共享緩存空間;當存入某個隊列的共享緩存空間內的數(shù)據(jù)包被調度出隊時,即為隊列分配的共享緩存空間不被占用,則確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一,即需要分配待共享的緩存空間的隊列個數(shù)變?yōu)?個。
[0072]步驟S19,根據(jù)減一后的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共孚的緩存空間的隊列。
[0073]具體的,例如,確定的需要分配待共享的緩存空間的隊列個數(shù)為4個,當存入某個隊列的共享緩存空間內的數(shù)據(jù)包被調度出隊時,即為隊列分配的共享緩存空間不被占用,則確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一,即需要分配待共享的緩存空間的隊列個數(shù)變?yōu)?個,則將100M待共享的緩存空間平均分配給3個需要分配待共享的緩存空間的隊列,Q共隊列=Q共/N=100M/3=33.33M。
[0074]通過當有需要分配待共享的緩存空間的隊列被分配的共享緩存空間未被占用時,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一,并根據(jù)減一后的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列,通過動態(tài)監(jiān)控需要分配待共享的緩存空間的隊列個數(shù)并及時對待共享的緩存空間重新分配,提高待共享的緩存空間分配的靈活性,使得緩存能得到更好更合理的利用,進而提高緩存空間的利用率。
[0075]如圖5所示,為本發(fā)明對多隊列的緩存進行分配控制的方法的第五實施例的具體流程圖。
[0076]基于上述第二實施例,在步驟S15之后,包括:
[0077]步驟S20,分析為各個需要分配待共享的緩存空間的隊列分配的共享緩存空間是否被占用。
[0078]具體的,將所述待共享的緩存空間中預留出預設值的緩存空間,并將預留后剩余的緩存空間作為待分配的緩存空間;根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將所述待分配的緩存空間分配給各個需要分配待共享的緩存空間的隊列之后,分析為各個需要分配待共享的緩存空間的隊列分配的共享緩存空間是否被占用,即分析存入該隊列的共享緩存空間內的數(shù)據(jù)包是否被調度出隊。
[0079]步驟S21,當有需要分配待共享的緩存空間的隊列被分配的共享緩存空間未被占用時,則確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一。
[0080]具體的,當有需要分配待共享的緩存空間的隊列被分配的共享緩存空間未被占用時,則確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一。例如,選取平均分配待共享的緩存空間的方式,獲取待共享的緩存空間的大小是100M,確定的需要分配待共享的緩存空間的隊列個數(shù)是5個,預留出預設值的緩存空間的預設值為15M,則將100M減去15M之后的共享緩存空間85M作為待分配的緩存空間,將待分配的緩存空間平均分配給5個需要分配待共享的緩存空間的隊列,每個需要分配待共享的緩存空間的隊列得到的共享緩存空間為17M ;需要分配待共享的緩存空間的隊列得到的共享緩存空間的計算公式為:Q共隊列=(Q共-Q預留)/N,其中,Q共為總的多隊列的共享緩存空間,N為需要分配待共享的緩存空間的隊列個數(shù),Q預留為按照預設值預留的多隊列的共享緩存空間,Q共隊列為每個需要分配待共享的緩存空間的隊列分配的共享緩存空間;當存入某個隊列的共享緩存空間內的數(shù)據(jù)包被調度出隊時,即為隊列分配的共享緩存空間不被占用,則確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一,即需要分配待共享的緩存空間的隊列個數(shù)變?yōu)?個。
[0081]步驟S22,根據(jù)減一后的隊列個數(shù),將待分配的緩存空間分配給各個需要分配待共孚的緩存空間的隊列。
[0082]具體的,例如,確定的需要分配待共享的緩存空間的隊列個數(shù)為5個,當存入某個隊列的共享緩存空間內的數(shù)據(jù)包被調度出隊時,即為隊列分配的共享緩存空間不被占用,則確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一,即需要分配待共享的緩存空間的隊列個數(shù)變?yōu)?個,則將85M待分配的緩存空間平均分配給4個需要分配待共享的緩存空間的隊列,Q共隊列=Q共隊列=(Q共-Q預留)/N= (100M-85M) /4=22.5M。
[0083]通過當有需要分配待共享的緩存空間的隊列被分配的共享緩存空間未被占用時,將確定的需要分配待分配的緩存空間的隊列個數(shù)減一,并根據(jù)減一后的隊列個數(shù),將待分配的緩存空間分配給各個需要分配待分配的緩存空間的隊列,通過動態(tài)監(jiān)控需要分配待分配的緩存空間的隊列個數(shù)并及時對待分配的緩存空間重新分配,提高待共享的緩存空間分配的靈活性,使得緩存能得到更好更合理的利用,進而提高緩存空間的利用率。
[0084]如圖6所示,為本發(fā)明對多隊列的緩存空間進行分配控制的裝置的較佳實施例的具體架構圖。該裝置包括:分析模塊10,處理模塊20及分配模塊30,
[0085]所述分析模塊10,用于分析各個隊列中是否存在需要分配待共享的緩存空間的隊列。
[0086]具體的,分析模塊10實時或定時分析各個隊列是否需要分配待共享的緩存空間的隊列。
[0087]所述處理模塊20,用于在存在需要分配待共享的緩存空間的隊列時,確定需要分配待共享的緩存空間的隊列的個數(shù)。
[0088]具體的,當存在需要分配待共享的緩存空間的隊列時,處理模塊20確定需要分配待共享的緩存空間的隊列個數(shù);例如,當找出有3個需要分配待共享的緩存空間的隊列時,即需要分配待共享的緩存空間的隊列個數(shù)為3。
[0089]所述分配模塊30,用于根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
[0090]具體的,分配模塊30獲取待共享的緩存空間的大小,即為總的多隊列待共享的緩存空間的大小,例如,可以是100M,也還可以是其他任意預先設置的共享緩存空間;分配模塊30將所述獲取的多隊列的共享緩存空間的大小根據(jù)所述確定的需要分配待共享的緩存空間的隊列個數(shù)平均分配給各個需要分配待共享的緩存空間的隊列。例如,分配模塊30獲取的多隊列的共享緩存空間的大小是100M,處理模塊20確定的需要分配待共享的緩存空間的隊列個數(shù)是4個,則分配模塊30將100M共享緩存空間平均分配給4個需要分配待共享的緩存空間的隊列,每個需要分配待共享的緩存空間的隊列得到的共享緩存空間的大小為25M ;需要分配待共享的緩存空間的隊列得到共享緩存空間大小的計算公式為:Q共隊列=Q共/N,其中,Q共為總的多隊列的共享緩存大小,N為需要分配待共享的緩存空間的隊列個數(shù),Q共隊列為每個需要分配待共享的緩存空間的隊列分配的共享緩存空間的獨享。在本發(fā)明其他實施例中,分配模塊30分配待共享的緩存空間的大小給需要分配待共享的緩存空間的隊列的方式,還可以是按照各個隊列的優(yōu)先級高低順序及各個優(yōu)先級對應的預設的參數(shù)將獲取的多隊列的共享緩存空間的大小分配給各個需要分配待共享的緩存空間的隊列。
[0091]通過分配模塊30根據(jù)處理模塊20確定的需要分配待共享的緩存空間的隊列個數(shù)為每個需要分配待共享的緩存空間的隊列分配共享緩存空間,并隨著需要分配待共享的緩存空間的隊列個數(shù)的變化為每個需要分配待共享的緩存空間的隊列分配共享緩存空間,實現(xiàn)了根據(jù)網(wǎng)絡流量進行緩存空間自動調整分配,節(jié)約了硬件資源,有利于硬件實踐,同時提高了緩存空間的利用率。
[0092]進一步地,所述處理模塊20,還用于將所述待共享的緩存空間中預留出預設值的緩存空間,并將預留后剩余的緩存空間作為待分配的緩存空間;
[0093]所述分配模塊30,還用于根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將所述待分配的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
[0094]具體的,分配模塊30獲取待共享的緩存空間的大小,即為多隊列分配的共享緩存空間的大小,例如,可以是100M,也還可以是其他任意預先設置的共享緩存空間;處理模塊20預留預設值的共享緩存空間,所述預設值可以是10M,或15M或30M等任意提前設置的共享緩存空間,并將預留后剩余的緩存空間作為待分配的緩存空間;分配模塊30根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將所述待分配的緩存空間分配給各個需要分配待共享的緩存空間的隊列。例如,分配模塊30獲取的多隊列的共享緩存空間的大小是100M,處理模塊20預留出預設值的緩存空間的預設值為15M,獲取的需要分配待共享的緩存空間的隊列個數(shù)是5個,則將100M減去15M之后的共享緩存空間85M作為待分配的緩存空間,分配模塊30將所述待分配的緩存空間85M平均分配給5個需要分配待共享的緩存空間的隊列,每個需要分配待共享的緩存空間的隊列得到的共享緩存空間的大小為17M;需要分配待共享的緩存空間的隊列得到共享緩存空間的大小的計算公式為:Q共隊列=(Q共-Q預留)/N,其中,Q共為總的多隊列的共享緩存空間,N為需要分配待共享的緩存空間的隊列個數(shù),Q預留為按照預設值預留的多隊列的共享緩存空間,Q共隊列為每個需要分配待共享的緩存空間的隊列分配的共享緩存空間。
[0095]通過處理模塊20預留預設值的共享緩存空間,以便在總的共享緩存空間在被一個或多個需要分配待共享的緩存空間的隊列全部占用時,其他隊列有共享緩存空間可用,能更加靈活的分配多隊列的共享緩存空間,提高用戶體驗。
[0096]進一步地,所述分配模塊30,還用于將待獨享的緩存空間分配給各個隊列。
[0097]具體的,處理模塊20獲取多隊列中總的隊列個數(shù),待獨享的緩存空間、各個隊列在多隊列中的優(yōu)先級以及各個優(yōu)先級對應的分配系數(shù);例如,隊列的個數(shù)為4個,分別是隊列A、隊列B、隊列C和隊列D,多隊列的總的獨享緩存空間的大小為200M,各個隊列的優(yōu)先級順序為:隊列A、隊列B、隊列C及隊列D,各個隊列的對應的分配系數(shù)。分配模塊30根據(jù)獲取的隊列的優(yōu)先級的高低順序、總的隊列個數(shù)以及各個優(yōu)先級對應的分配系數(shù),將所述待獨享緩存空間對應的分配給各個隊列。分配模塊30根據(jù)各個隊列的優(yōu)先級的高低順序,高優(yōu)先級的隊列和低優(yōu)先級的隊列分配的獨享緩存可以不同,也可以將待獨享的緩存空間平均分配給各個隊列。當分配模塊30將待獨享的緩存空間平均分配給各個隊列時,其公式可以是Q獨隊列=Q獨/n,其中Q獨隊列為隊列分配的獨享緩存空間,Q獨為多隊列總的獨享緩存空間,η為多隊列中的隊列個數(shù);分配模塊30當高優(yōu)先級的隊列和低優(yōu)先級的隊列分配的獨享緩存空間可以不同時,其公式可以是Q獨隊列=(Q獨/n)*c,c為優(yōu)先級對應的分配常數(shù),也還可以是其他任意適用的計算方式得到每個隊列分配的獨享緩存空間,所述優(yōu)先級根據(jù)每個隊列的流量的大小來動態(tài)設置,即每個隊列在每個不同的時刻優(yōu)先級是不一致的。例如,分配模塊30按照Q獨隊列=Q獨/n,分配待獨享的緩存空間,待獨享的緩存空間Q獨=200M,多隊列中的隊列個數(shù)n=4,Q獨對列=Q獨/n=200M/4=50M ;按照Q獨隊列=(Q獨/n)*c分配待獨享的緩存空間,若隊列A的優(yōu)先級對應的分配常數(shù)為1.5,隊列B優(yōu)先級對應的分配常數(shù)為1.2,隊列C優(yōu)先級對應的分配常數(shù)為0.8,隊列D優(yōu)先級對應的分配常數(shù)為0.5,則對應的隊列A分配的獨享緩存空間為Q獨對列A=(200M/4)*1.5=50M*1.5=75M,隊列B分配的獨享緩存空間為Q獨對列B=(200M/4)*1.2=50M*1.2=60M,隊列C分配的獨享緩存空間為Q獨對列C=(200M/4)*0.8=50M*0.8=40M,隊列D分配的獨享緩空間存為Q獨對列D=(200M/4)*0.5=50M*0.5=25M。本實施例中,優(yōu)選地以根據(jù)獲取的隊列的優(yōu)先級的高低順序,分配模塊30將所述待獨享的緩存空間對應的分配給各個隊列,根據(jù)各個隊列的優(yōu)先級的高低順序,高優(yōu)先級的隊列和低優(yōu)先級的隊列分配的獨享緩存空間可以不同的方式分配多隊列的獨享緩存空間,即按照公式Q獨隊列=(Q獨/n) *c分配待獨享的緩存空間。
[0098]通過分配模塊30按照預設優(yōu)先級對應的分配常數(shù)給各個隊列合理的分配待獨享的緩存空間,使得獨享緩存空間的分配按照各個隊列的流量的大小合理分配,提高獨享緩存空間分配的靈活性,使得獨享緩存空間能得到更好更合理的利用,進而提高獨享緩存空間的利用率。
[0099]進一步地,所述分析模塊10,還用于分析為各個需要分配待共享的緩存空間的隊列分配的共享緩存空間是否被占用。
[0100]具體的,在獲取待共享的緩存空間,將所述待共享的緩存空間根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù)分配給各個需要分配待共享的緩存空間的隊列之后,分析模塊10分析為各個需要分配待共享的緩存空間的隊列分配的共享緩存空間是否被占用,即分析存入該隊列的共享緩存空間內的數(shù)據(jù)包是否被調度出隊。
[0101]所述處理模塊20,還用于當有需要分配待共享的緩存空間的隊列被分配的共享緩存空間未被占用時,則確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一。
[0102]具體的,當有需要分配待共享的緩存空間的隊列被分配的共享緩存空間未被占用時,則分析模塊10確定該隊列為不需要分配待共享的緩存空間的隊列,處理模塊20將確定的需要分配待共享的緩存空間的隊列個數(shù)減一。例如,選取平均分配待共享的緩存空間的方式,分配模塊30獲取待共享的緩存空間的大小是100M,處理模塊20確定的需要分配待共享的緩存空間的隊列個數(shù)是4個,則分配模塊30將100M待共享的緩存空間平均分配給4個需要分配待共享的緩存空間的隊列,每個需要分配待共享的緩存空間的隊列得到的共享緩存空間為25M ;需要分配待共享的緩存空間的隊列得到的共享緩存空間的計算公式為:Q共隊列=Q共/N,其中,Q共為待共享的緩存空間,N為需要分配待共享的緩存空間的隊列個數(shù),Q共隊列為每個需要分配待共享的緩存空間的隊列分配的共享緩存空間;當存入某個隊列的共享緩存空間內的數(shù)據(jù)包被調度出隊時,即為隊列分配的共享緩存空間不被占用,則處理模塊20確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一,即需要分配待共享的緩存空間的隊列個數(shù)變?yōu)?個。
[0103]所述分配模塊30,還用于根據(jù)減一后的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
[0104]具體的,例如,處理模塊20確定的需要分配待共享的緩存空間的隊列個數(shù)為4個,當存入某個隊列的共享緩存空間內的數(shù)據(jù)包被調度出隊時,即為隊列分配的共享緩存空間不被占用,則處理模塊20確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一,即需要分配待共享的緩存空間的隊列個數(shù)變?yōu)?個,則分配模塊30將100M待共享的緩存空間平均分配給3個需要分配待共享的緩存空間的隊列,Q共隊列=Q共/N=100M/3=33.33M。
[0105]通過當有需要分配待共享的緩存空間的隊列被分配的共享緩存空間未被占用時,將處理模塊20確定的需要分配待共享的緩存空間的隊列個數(shù)減一,并根據(jù)減一后的隊列個數(shù),分配模塊30將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列,通過動態(tài)監(jiān)控需要分配待共享的緩存空間的隊列個數(shù)并及時對待共享的緩存空間重新分配,提高待共享的緩存空間分配的靈活性,使得緩存能得到更好更合理的利用,進而提高緩存空間的利用率。
[0106]以上所述僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的【技術領域】,均同理包括在本發(fā)明的專利保護范圍內。
【權利要求】
1.一種對多隊列的緩存空間進行分配控制的方法,其特征在于,該方法包括: 分析各個隊列中是否存在需要分配待共享的緩存空間的隊列; 在存在需要分配待共享的緩存空間的隊列時,確定需要分配待共享的緩存空間的隊列的個數(shù); 根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
2.根據(jù)權利要求1所述的對多隊列的緩存空間進行分配控制的方法,其特征在于,所述根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列的步驟包括: 將所述待共享的緩存空間中預留出預設值的緩存空間,并將預留后剩余的緩存空間作為待分配的緩存空間; 根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將所述待分配的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
3.根據(jù)權利要求1或2所述的對多隊列的緩存空間進行分配控制的方法,其特征在于,在所述分析各個隊列中是否存在需要分配待共享的緩存空間的隊列的步驟之前,該方法還包括: 將待獨享的緩存空間分配給各個隊列。
4.根據(jù)權利要求3所述的對多隊列的緩存空間進行分配控制的方法,其特征在于,所述將待獨享的緩存空間分配給各個隊列的步驟之后,該方法還包括: 分析為各個隊列分配的待獨享的緩存空間是否滿足各個隊列的執(zhí)行需要; 若有隊列被分配的待獨享的緩存空間不滿足執(zhí)行需要,則確定該隊列為需要分配待共孚的緩存空間的隊列。
5.根據(jù)權利要求1或2所述的對多隊列的緩存空間進行分配控制的方法,其特征在于,在所述將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列的步驟之后,該方法還包括: 分析為各個需要分配待共享的緩存空間的隊列分配的共享緩存空間是否被占用; 當有需要分配待共享的緩存空間的隊列被分配的共享緩存空間未被占用時,則確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一,并根據(jù)減一后的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
6.一種對多隊列的緩存空間進行分配控制的裝置,其特征在于,該裝置包括: 分析模塊,用于分析各個隊列中是否存在需要分配待共享的緩存空間的隊列; 處理模塊,用于在存在需要分配待共享的緩存空間的隊列時,確定需要分配待共享的緩存空間的隊列的個數(shù); 分配模塊,用于根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
7.根據(jù)權利要求6所述的對多隊列的緩存空間進行分配控制的裝置,其特征在于, 所述處理模塊,還用于將所述待共享的緩存空間中預留出預設值的緩存空間,并將預留后剩余的緩存空間作為待分配的緩存空間; 所述分配模塊,還用于根據(jù)確定的需要分配待共享的緩存空間的隊列個數(shù),將所述待分配的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
8.根據(jù)權利要求6或7所述的對多隊列的緩存空間進行分配控制的裝置,其特征在于, 所述分配模塊,還用于將待獨享的緩存空間分配給各個隊列。
9.根據(jù)權利要求8所述的對多隊列的緩存空間進行分配控制的裝置,其特征在于, 所述分析模塊,還用于分析為各個隊列分配的待獨享的緩存空間是否滿足各個隊列的執(zhí)行需要; 所述處理模塊,還用于若有隊列被分配的待獨享的緩存空間不滿足執(zhí)行需要,則確定該隊列為需要分配待共享的緩存空間的隊列。
10.根據(jù)權利要求6或7所述的對多隊列的緩存空間進行分配控制的裝置,其特征在于, 所述分析模塊,還用于分析為各個需要分配待共享的緩存空間的隊列分配的共享緩存空間是否被占用; 當為隊列分配的共享緩存不被占用時,判定該隊列恢復未激活狀態(tài), 所述處理模塊,還用于當有需要分配待共享的緩存空間的隊列被分配的共享緩存空間未被占用時,則確定該隊列為不需要分配待共享的緩存空間的隊列,將確定的需要分配待共享的緩存空間的隊列個數(shù)減一; 所述分配模塊,還用于根據(jù)減一后的隊列個數(shù),將待共享的緩存空間分配給各個需要分配待共享的緩存空間的隊列。
【文檔編號】H04L12/801GK104426790SQ201310377185
【公開日】2015年3月18日 申請日期:2013年8月26日 優(yōu)先權日:2013年8月26日
【發(fā)明者】陳杭洲 申請人:中興通訊股份有限公司