專利名稱:緩存調(diào)整方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種緩存調(diào)整方法及裝置。
背景技術(shù):
在通信系統(tǒng)中,設(shè)備通常具有多個出口,而且每個出口的速率是可變的(如以太網(wǎng)口、低速的同步串口等),在報文從設(shè)備的入口進入后,會分發(fā)到該設(shè)備的多個速率不同的出口而發(fā)送出去。當報文從設(shè)備入口進入后,緩存到一個出口對應的緩存隊列中,如果該出口緩存隊列中的報文達到一定數(shù)量時,新發(fā)往該出口的報文將被丟棄。在確定每個出口對應的緩存隊列大小時,需要考慮該設(shè)備的總緩存量以及該設(shè)備中出口的數(shù)量、各出口的出口速率以及不同出口的優(yōu)先級等。通常在設(shè)備初始化時會配置每個出口緩存隊列大小,且以后不再改變。如果出口緩存隊列配置得太小,在有數(shù)據(jù)突發(fā)時,會造成大量丟包,影響整體性能;如果出口緩存隊列配置得太大,則會占用更多緩存,這會增加設(shè)備硬件成本。當出口的出口速率為低速且是傳輸語音之類對延遲要求較高的業(yè)務時,如果該出口的緩存空間太大的話會增加數(shù)據(jù)傳輸延遲,使得該出口的緩存隊列的尾部數(shù)據(jù)經(jīng)常需要超時重傳,浪費了入口有效帶寬以及緩存空間?,F(xiàn)有動態(tài)調(diào)整緩存的技術(shù)是檢測設(shè)備每個出口處報文的駐留時長,對于設(shè)備中每個出口來說,當存在每個出口出口處報文的駐留時長超過預設(shè)駐留時長閾值的報文時,則從該出口對應的緩存隊列中刪除駐留時長超過預設(shè)駐留時長閾值的報文,釋放已刪除的報文占用的緩存,并將因釋放共享緩存而節(jié)省出來的緩存給其它出口使用。發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),現(xiàn)有技術(shù)至少存在以下缺陷只是給出了每個出口釋放共享緩存的條件,并未給出如何分配釋放出的緩存,因而不能實現(xiàn)對于有多個出口的設(shè)備中,在緩存總量不變的前提下,如何為多個出口動態(tài)地調(diào)整緩存空間。因此現(xiàn)有技術(shù)存在設(shè)備緩存利用率不高的問題。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種緩存調(diào)整方法及裝置,能夠?qū)τ谟卸鄠€出口的設(shè)備,在緩存總量不變的前提下,根據(jù)每個出口當前實際速率自動調(diào)整出口緩存隊列深度,實現(xiàn)為多個出口動態(tài)地調(diào)整緩存空間。第一方面,提供一種緩存調(diào)整方法,包括根據(jù)設(shè)備中每個出口的預定出口速率,確定每個出口對應的緩存隊列的初始值;根據(jù)每個出口的預先設(shè)定的最大時延值,確定每個出口對應的緩存隊列的最大緩存值;檢測設(shè)備中每個出口的當前實際速率,在當前實際速率高于該出口的預定出口速率時,從動態(tài)緩存中為該出口分配緩存,分配緩存后該出口對應的緩存隊列的緩存值小于或等于該出口的最大緩存值,所述動態(tài)緩存的大小不大于設(shè)備總緩存值減去所有出口對應的緩存隊列的初始值之和得到的差值。
在所述第一方面的第一種可能的實現(xiàn)方式中,所述根據(jù)設(shè)備中每個出口的預定出口速率,確定每個出口對應的緩存隊列的初始值,包括將用于分配的固定緩存值除以預設(shè)系統(tǒng)速率精度與出口數(shù)的乘積得到的結(jié)果,作為所述系統(tǒng)速率精度下的緩存數(shù);針對每個出口,當所述系統(tǒng)速率精度下的緩存數(shù)大于或等于預置的該出口的最小緩存數(shù)時,將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的預定出口速率,得到該出口對應的緩存隊列的初始值。在所述第一方面的第二種可能的實現(xiàn)方式中,所述檢測設(shè)備中每個出口的當前實際速率,在當前實際速率高于該出口的預定出口速率時,從動態(tài)緩存中為該出口分配緩存,包括檢測設(shè)備中每個出口的當前實際速率,若當前實際速率高于該出口的預定出口速率,判斷該出口對應的緩存隊列的當前緩存值與固定步長之和是否小于該出口的最大緩存值;若是,按照所述固定步長從動態(tài)緩存中為該出口分配緩存。在所述第一方面的第二種可能的實現(xiàn)方式中,還提供了所述第一方面的第三種可能的實現(xiàn)方式,若當前實際速率低于該出口的預定出口速率,根據(jù)該出口當前實際速率計算該出口實際所需的緩存值;判斷所述出口實際所需的緩存值是否大于該出口對應的緩存隊列的初始值;若大于該出口對應的緩存隊列的初始值,則在所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間已被占用的情況下,在發(fā)送完數(shù)據(jù)后,將所述部分空間釋放給動態(tài)緩存;在所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間未占用的情況下,將所述部分空間釋放給動態(tài)緩存;若不大于該出口對應的緩存隊列的初始值,則在所述出口對應的緩存隊列中超出所述該出口對應的緩存隊列的初始值的部分空間已被占用的情況下,在發(fā)送完數(shù)據(jù)后,將所述部分空間釋放給動態(tài)緩存;在所述出口對應的緩存隊列中超出所述對應的緩存隊列的初始值的部分空間未占用的情況下,將所述部分空間釋放給動態(tài)緩存。在所述第一方面或所述第一方面的前述任意一種可能的實現(xiàn)方式中,還提供了所述第一方面的第四種可能的實現(xiàn)方式,所述動態(tài)緩存是所述確定每個出口對應的緩存隊列的初始值之后,計算設(shè)備中所有出口對應的緩存隊列的初始值之和,將設(shè)備總緩存值減去所述所有出口對應的緩存隊列的初始值之和得到的。第二方面,提供了一種緩存調(diào)整裝置,包括第一確定單元,用于根據(jù)設(shè)備中每個出口的預定出口速率,確定每個出口對應的緩存隊列的初始值;第二確定單元,用于根據(jù)每個出口的預先設(shè)定的最大時延值,確定每個出口對應的緩存隊列的最大緩存值;分配單元,用于檢測設(shè)備中每個出口的當前實際速率,在當前實際速率高于該出口的預定出口速率時,從動態(tài)緩存中為該出口分配緩存,分配緩存后該出口對應的緩存隊列的緩存值小于或等于該出口的最大緩存值,所述動態(tài)緩存的大小不大于設(shè)備總緩存值減去所有出口對應的緩存隊列的初始值之和得到的差值。
在所述第二方面的第一種可能的實現(xiàn)方式中,所述第一確定單元包括第一計算子單元,用于將用于分配的固定緩存值除以預設(shè)系統(tǒng)速率精度與出口數(shù)的乘積得到的結(jié)果,作為所述系統(tǒng)速率精度下的緩存數(shù);確定子單元,用于針對每個出口,當所述系統(tǒng)速率精度下的緩存數(shù)大于或等于預置的該出口的最小緩存數(shù)時,將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的預定出口速率,得到該出口對應的緩存隊列的初始值。在所述第二方面的第二種可能的實現(xiàn)方式中,所述分配單元,包括檢測子單元,用于檢測設(shè)備中每個出口的當前實際速率;第一判斷子單元,用于當所述檢測子單元檢測到的設(shè)備中每個出口的當前實際速率高于該出口的預定出口速率時,判斷該出口對應的緩存隊列的當前緩存值與固定步長之和是否小于該出口的最大緩存值;分配子單元,用于當所述第一判斷子單元的判斷結(jié)果為是時,按照所述固定步長從動態(tài)緩存中為該出口分配緩存。在所述第二方面的第二種可能的實現(xiàn)方式中,還提供了所述第二發(fā)面的第三種可能的實現(xiàn)方式,所述裝置還包括第二計算子單元,用于當所述檢測子單元檢測到的設(shè)備中每個出口的當前實際速率低于該出口的預定出口速率時,根據(jù)該出口當前實際速率計算該出口實際所需的緩存值;第二判斷子單元,用于判斷所述第二計算子單元計算得到的出口實際所需的緩存值是否大于該出口對應的緩存隊列的初始值;第一處理子單元,用于當所述第二判斷子單元的判斷結(jié)果為是時,在所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間已被占用的情況下,在發(fā)送完數(shù)據(jù)后,將所述部分空間釋放給動態(tài)緩存;在所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間未占用的情況下,將所述部分空間釋放給動態(tài)緩存;第二處理子單元,用于當所述第二判斷子單元的判斷結(jié)果為否時,在所述出口對應的緩存隊列中超出所述該出口對應的緩存隊列的初始值的部分空間已被占用的情況下,在發(fā)送完數(shù)據(jù)后,將所述部分空間釋放給動態(tài)緩存;在所述出口對應的緩存隊列中超出所述對應的緩存隊列的初始值的部分空間未占用的情況下,將所述部分空間釋放給動態(tài)緩存。第三方面,提供了一種設(shè)備,包括至少兩個出口、以及存儲器和處理器,其中所述存儲器,用于被配置存儲代碼;所述處理器,用于被配置讀取所述存儲器中存儲的代碼,執(zhí)行上述第一方面、或第一方面的任意一種可能的實現(xiàn)方式所述的方法。通過上述描述可知,本發(fā)明實施例在動態(tài)調(diào)整緩存的技術(shù)中利用了設(shè)備中每個出口的當前實際速率自動調(diào)整出口緩存隊列深度,以實現(xiàn)為多個出口動態(tài)地調(diào)整緩存空間。由于對于有多個出口的設(shè)備來說,在緩存總量不變的前提下,可根據(jù)每個出口當前實際速率自動調(diào)整出口緩存隊列深度。因此,本發(fā)明實施例利用每個出口當前實際速率自動調(diào)整出口緩存隊列深度,可以實現(xiàn)為多個出口動態(tài)地調(diào)整緩存空間,從而提高緩存利用率和整體性能。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是本發(fā)明實施例提供的緩存調(diào)整方法的流程示意圖;圖2是本發(fā)明實施例提供的一個確定設(shè)備中每個出口對應的緩存隊列的初始值的詳細實例的流程圖;圖3是本發(fā)明實施例提供的根據(jù)每個出口的實際速率,動態(tài)調(diào)整各出口緩存的方案的流程圖;圖4是本發(fā)明實施例給出了計算動態(tài)緩存的大小的方案的流程·
圖5是本發(fā)明實施例提供的一種緩存調(diào)整裝置的結(jié)構(gòu)示意圖;圖6是本發(fā)明實施例中第一確定單元的結(jié)構(gòu)示意圖;圖7是本發(fā)明實施例中分配單元的結(jié)構(gòu)示意圖;圖8是本發(fā)明實施例中分配單元另一結(jié)構(gòu)示意圖;圖9是本發(fā)明實施例中第一確定單元另一結(jié)構(gòu)示意圖;圖10是本發(fā)明實施例提供的一種設(shè)備的結(jié)構(gòu)示意圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。參見圖1,是本發(fā)明實施例的緩存調(diào)整方法的第一實施例的流程示意圖,所述方法包括101,根據(jù)設(shè)備中每個出口的預定出口速率,確定每個出口對應的緩存隊列的初始值。在通信系統(tǒng)中,設(shè)備通常具有多個速率可變的出口,每個出口處有一個出口緩存隊列,當報文從設(shè)備入口進入后,緩存到出口對應的緩存隊列中等待通過出口發(fā)送出去。通過設(shè)置的系統(tǒng)速率精度和設(shè)備中每個出口的預定出口速率,確定每個出口對應的緩存隊列的初始值,其中,系統(tǒng)速率精度是指能檢測的速率最小單位,例如O. I兆字節(jié)/秒,設(shè)備中每個出口的速率是該出口的工作速率且該出口的速率必須是系統(tǒng)速率精度的整數(shù)倍,比如系統(tǒng)速率精度假設(shè)為O. 1M/S,出口支持的速率2. ΙΜ/s是O. ΙΜ/s的整數(shù)倍。具體的,根據(jù)設(shè)備中每個出口的預定出口速率,確定每個出口對應的緩存隊列的初始值,包括將用于分配的固定緩存值除以預設(shè)系統(tǒng)速率精度與出口數(shù)的乘積得到的結(jié)果,作為所述系統(tǒng)速率精度下的緩存數(shù);針對每個出口,當所述系統(tǒng)速率精度下的緩存數(shù)大于或等于預置的該出口的最小緩存數(shù)時,將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的預定出口速率,得到該出口對應的緩存隊列的初始值。可選地,在根據(jù)所述系統(tǒng)速率精度計算得到系統(tǒng)速率精度下的緩存數(shù)后,當判斷該系統(tǒng)速率精度下的緩存數(shù)小于設(shè)置的最小緩存數(shù)時,就需要改變速率精度,并依據(jù)改變后的速率精度重新計算該速率精度下的緩存數(shù),例如適當增加系統(tǒng)速率精度。本實施例中根據(jù)設(shè)置的系統(tǒng)速率精度計算得到該系統(tǒng)速率精度下的緩存數(shù),并判斷該系統(tǒng)速率精度下的緩存數(shù)是否小于預置的該出口的最小緩存數(shù)。若是,則調(diào)整系統(tǒng)速率精度并計算調(diào)整后的系統(tǒng)速率精度下的緩存數(shù)。若否,將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的預定出口速率,得到該出口對應的緩存隊列的初始值。102,根據(jù)每個出口的預先設(shè)定的最大時延值,確定每個出口對應的緩存隊列的最大緩存值。具體的,根據(jù)每個出口的預先設(shè)定的最大時延值,確定每個出口對應的緩存隊列的最大緩存值,即針對每個出口,將該出口的預定出口速率乘以系統(tǒng)速率精度每秒發(fā)送的緩存數(shù)據(jù)再乘以該出口的預先設(shè)定的最大時延值的乘積,作為該出口對應的緩存隊列的最大緩存值。舉例,假設(shè)設(shè)備所有出口可用的總緩存數(shù)為150000個單元,出口數(shù)為4個,系統(tǒng)速率精度為lM/s,且IM速率每秒可以發(fā)送125個緩存數(shù)據(jù),設(shè)備中每個出口的預定出口速率為1G、100M、10M、2M。假設(shè)設(shè)備中每個出口要求的最大時延值分別為ls、2s、2s、4s。在設(shè)備的出口的緩存隊列不為空,指示這個出口有數(shù)據(jù)需要發(fā)送時,以IM的系統(tǒng)速率精度為單位檢測每個出口的預定出口速率,并根據(jù)每個出口的預定出口速率乘以IM速率每秒發(fā)送的緩存數(shù)乘以最大時延值,可以得到上述4個出口對應的緩存隊列的最大緩存值分別為125000 個、25000 個、2500 個、1000 個。103,檢測設(shè)備中每個出口的當前實際速率,在當前實際速率高于該出口的預定出口速率時,從動態(tài)緩存中為該出口分配緩存,分配緩存后該出口對應的緩存隊列的緩存值小于或等于該出口的最大緩存值,所述動態(tài)緩存的大小不大于設(shè)備總緩存值減去所有出口對應的緩存隊列的初始值之和得到的差值。具體的,由于設(shè)備中每個出口具有多個可變速率,需要檢測設(shè)備中每個出口的當前實際速率,在檢測到設(shè)備中每個出口的當前實際速率高于該出口的預定出口速率時,需要從動態(tài)緩存中為該出口分配緩存,否則當出口的緩存隊列中數(shù)據(jù)達到該出口對應的緩存隊列的初始值后,如果不增加當前出口的緩存隊列的緩存值,再來數(shù)據(jù)就會被丟棄,因此還需要判斷該出口對應的緩存隊列的當前緩存值與固定步長之和是否小于該出口的最大緩存值,若是,按照所述固定步長從動態(tài)緩存中為該出口分配緩存,這是為了確保分配緩存后該出口對應的緩存隊列的緩存值小于或等于該出口的最大緩存值。可選地,所述固定步長可以為I個或多個所述系統(tǒng)速率精度下的緩存數(shù),即為所述系統(tǒng)速率精度下的緩存數(shù)的整數(shù)倍。其中所述動態(tài)緩存的大小不大于設(shè)備總緩存值減去所有出口對應的緩存隊列的初始值之和得到的差值。舉例,假設(shè)設(shè)備中一個出口的預定出口速率為2M,則該出口對應的緩存隊列的初始值為24。在檢測到該出口的當前實際速率為10M,如果不增加當前出口的緩存隊列的緩存值,再來數(shù)據(jù)就會被丟棄,因此可以從動態(tài)緩存中為該出口分配緩存,以便可以繼續(xù)發(fā)送
8數(shù)據(jù)。本發(fā)明實施例是根據(jù)設(shè)備中每個出口的預定出口速率和最大時延值,分別確定每個出口對應的緩存隊列的初始值和最大緩存值,當檢測設(shè)備中每個出口的當前實際速率高于該出口的預定出口速率時,從動態(tài)緩存中為該出口分配緩存,即利用每個出口當前實際速率自動調(diào)整出口緩存隊列深度,這樣對于有多個出口的設(shè)備來說,在緩存總量不變的前提下,實現(xiàn)為多個出口動態(tài)地調(diào)整緩存空間,從而提高緩存利用率和整體性能。
參見圖2,本實施例給出了一個確定設(shè)備中每個出口對應的緩存隊列的初始值的詳細實例,包括201,將用于分配的固定緩存值除以預設(shè)系統(tǒng)速率精度與出口數(shù)的乘積得到的結(jié)果,作為所述系統(tǒng)速率精度下的緩存數(shù)。具體的,本發(fā)明實施例中設(shè)備所有出口可用的緩存數(shù)是固定的,假設(shè)設(shè)備中所有出口可用的緩存數(shù)為150000個,出口數(shù)為4個,每個出口對應一個出口緩存隊列,系統(tǒng)速率精度為1M。每個出口的速率分別為1G、100M、10M、2M,設(shè)置每個出口的最小緩存數(shù),比如為10個單元,用以保證每個出口都可以正常轉(zhuǎn)發(fā)。在確定設(shè)備所有出口可用的緩存數(shù)為150000個單元后,按照一定的比例將設(shè)備所有出口可用的緩存總量用于分配的固定緩存數(shù),如1/3的比例,則用于分配的固定緩存數(shù)為50000個。根據(jù)設(shè)備中預設(shè)的系統(tǒng)速率精度和用于分配的固定緩存數(shù)以及出口數(shù),可以得到所述系統(tǒng)速率精度下的緩存數(shù),即將用于分配的固定緩存數(shù)除以預設(shè)系統(tǒng)速率精度與出口數(shù)的乘積得到的結(jié)果,作為所述系統(tǒng)速率精度下的緩存數(shù),比如當系統(tǒng)速率精度為IM時,可以得到該系統(tǒng)速率精度下的緩存數(shù)為(150000/3)/4000 = 12。202,針對每個出口,當所述系統(tǒng)速率精度下的緩存數(shù)大于或等于預置的該出口的最小緩存數(shù)時,將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的預定出口速率,得到該出口對應的緩存隊列的初始值。具體的,在將用于分配的固定緩存值除以預設(shè)系統(tǒng)速率精度與出口數(shù)的乘積得到的結(jié)果,作為所述系統(tǒng)速率精度下的緩存數(shù)后,針對每個出口,當所述系統(tǒng)速率精度下的緩存數(shù)大于或等于預置的該出口的最小緩存數(shù)時,將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的預定出口速率,可以得到該出口對應的緩存隊列的初始值,比如根據(jù)預置的系統(tǒng)速率精度為1M,以及該系統(tǒng)速率精度下的緩存數(shù)12,將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的預定出口速率,可以得到該出口對應的緩存隊列的初始值為12000、1200、120、24。本發(fā)明實施例中根據(jù)設(shè)備中預置的系統(tǒng)速率精度和用于分配的固定緩存數(shù)以及出口數(shù),將用于分配的固定緩存值除以預設(shè)系統(tǒng)速率精度與出口數(shù)的乘積得到的結(jié)果,作為所述系統(tǒng)速率精度下的緩存數(shù)。針對每個出口,當所述系統(tǒng)速率精度下的緩存數(shù)大于或等于預置的出口的最小緩存數(shù)時,進一步將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的預定出口速率,可以得到該出口對應的緩存隊列的初始值。參見圖3,本實施例給出了根據(jù)每個出口的實際速率,動態(tài)調(diào)整各出口緩存的詳細流程,包括301,檢測設(shè)備中每個出口的當前實際速率。具體的,設(shè)備的每個出口有一個對應的緩存隊列,在出口的緩存隊列不空指示這個出口有數(shù)據(jù)需要發(fā)送時,通過檢測該出口一段時間,比如I秒內(nèi)發(fā)送的字節(jié)數(shù)來實時檢CN 102916903 A
書
明
說
7/13 頁
測出口當前實際速率。若設(shè)備的出口的緩存隊列為空,指示這個出口當前沒有數(shù)據(jù)需要發(fā)送時,就不能通過檢測該出口一段時間內(nèi)發(fā)送的字節(jié)數(shù)來計算該出口當前的實際出口速率了,則可以確認該次檢測的出口當前的實際出口速率使用了滿速率,比如上述設(shè)置4個出口的速率 1G、100M、10M、2M。302,對于每個出口,判斷檢測出的該出口的實際速率是否高于該出口的預定出口速率,若是,進入303,否則進入304。具體的,檢測每個出口的當前實際速率,并根據(jù)檢測到的當前實際速率計算該出口對應的緩存隊列需要提供的緩存值,即將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的當前實際速率可以得到該出口實際所需的緩存值。如果檢測到的出口的當前實際速率高于該出口的預定出口速率,則該出口對應的緩存隊列實際所需的緩存值超過該出口對應的緩存隊列的初始值,在出口緩存隊列中數(shù)據(jù)到達原隊列深度時,需要增加隊列深度,進入步驟303,如果檢測到的出口的當前實際速率低于該出口的預定出口速率,則該出口對應的緩存隊列實際所需的緩存值低于該出口對應的緩存隊列的初始值,進入步驟304。303,判斷該出口對應的緩存隊列的當前緩存值與固定步長之和是否小于該出口的最大緩存值,若是進入305,否則進入306。具體的,在檢測到設(shè)備中每個出口的當前實際速率高于該出口的預定出口速率時,需要從動態(tài)緩存中為該出口分配緩存,因為當出口的緩存隊列中數(shù)據(jù)達到該出口對應的緩存隊列的初始值后,如果不增加當前出口的緩存隊列的緩存值的話,再來數(shù)據(jù)就會被丟棄。為了確保分配緩存后該出口對應的緩存隊列的緩存值小于或等于該出口的最大緩存值,需要判斷該出口對應的緩存隊列的當前緩存值與固定步長之和是否小于該出口的最大緩存值,若是,進入步驟305,否則進入步驟306。304,計算該出口實際所需的緩存值,并判斷該出口實際所需的緩存值是否大于該出口對應的緩存隊列的初始值,若是進入307,否則進入308。具體的,當檢測到設(shè)備中每個出口的當前實際速率低于該出口的預定出口速率時,需要根據(jù)檢測到的設(shè)備中每個出口當前實際速率計算該出口實際所需的緩存值,并進一步判斷所述出口實際所需的緩存值是否大于該出口對應的緩存隊列的初始值,若是,進入步驟307,否則,進入步驟308。305,按照所述固定步長從動態(tài)緩存中為該出口分配緩存。具體的,在分配緩存后該出口對應的緩存隊列當前緩存值與固定步長之和小于或者等于該出口的最大緩存值時,按照固定步長從動態(tài)緩存中為該出口分配緩存,增加該出口對應的緩存隊列的緩存值,以便再來數(shù)據(jù)不會被丟棄??蛇x地所述固定步長可以為系統(tǒng)速率精度下的緩存數(shù)的整數(shù)倍,所述動態(tài)緩存的大小不大于設(shè)備總緩存值減去所有出口對應的緩存隊列的初始值之和得到的差值,以確保分配緩存后該出口對應的緩存隊列的緩存值小于或等于該出口的最大緩存值。306,停止按照固定步長從動態(tài)緩存值中為該出口分配緩存。具體的,在分配緩存后該出口對應的緩存隊列當前緩存值與固定步長之和大于該出口的最大緩存值時,停止按照固定步長從動態(tài)緩存值中為該出口分配緩存。307,若大于該出口對應的緩存隊列的初始值,在出口對應的緩存隊列中超出所述
10出口實際所需的緩存值的部分空間已被占用的情況下,在發(fā)送完數(shù)據(jù)后,將所述部分空間釋放給動態(tài)緩存;在所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間未占用的情況下,將所述部分空間釋放給動態(tài)緩存。具體的,在判斷出口實際所需的緩存值大于該出口對應的緩存隊列的初始值時,表明所述出口對應的緩存隊列中超出所述出口實際所需的緩存值之間的部分空間是多余部分,可以釋放出來供其他出口使用,需要進一步判斷所述出口對應的緩存隊列中超出所述出口實際所需的緩存值之間的部分空間是否已被占用,若是,則已占用的空間繼續(xù)占用出口,并在發(fā)送完數(shù)據(jù)后,將所述出口對應的緩存隊列中超出所述出口需要的緩存的部分空間釋放給動態(tài)緩存。若否,將所述出口對應的緩存隊列中超出所述出口需要的緩存的部分空間釋放給動態(tài)緩存,其中,所述未占用的空間是允許該出口用,但還沒申請使用的空間,這部分空間還在共享的動態(tài)緩存中,申請后才真正被該出口占有,這類空間釋放后,就不會被該出口申請,可以給其它出口使用。實現(xiàn)了對于有多個出口的設(shè)備,在緩存總量不變的前提下,根據(jù)檢測得到的設(shè)備中每個出口當前實際速率自動調(diào)整出口緩存隊列深度。308,若不大于該出口對應的緩存隊列的初始值,在出口對應的緩存隊列中超出該·出口對應的緩存隊列的初始值的部分空間已被占用的情況下,在發(fā)送完數(shù)據(jù)后,將所述部分空間釋放給動態(tài)緩存;在出口對應的緩存隊列中超出出口對應的緩存隊列的初始值的部分空間未占用的情況下,將所述部分空間釋放給動態(tài)緩存。具體的,在判斷所述出口實際所需的緩存值不大于該出口對應的緩存隊列的初始值時,表明所述出口對應的緩存隊列中超出所述該出口對應的緩存隊列的初始值之間的部分空間是多余部分,可以釋放出來供其他出口使用,需要進一步判斷所述出口對應的緩存隊列中超出所述該出口對應的緩存隊列的初始值之間的部分空間是否已被占用,若是,已占用的空間繼續(xù)占用出口,并在發(fā)送完數(shù)據(jù)后,將所述出口對應的緩存隊列中超出所述出口對應的緩存隊列的初始值之間的部分空間釋放給動態(tài)緩存。若否,將所述出口對應的緩存隊列中超出所述出口對應的緩存隊列的初始值的部分空間釋放給動態(tài)緩存。本發(fā)明實施例中對于有多個出口的設(shè)備,在緩存總量不變的前提下,檢測設(shè)備中每個出口的當前實際速率,并根據(jù)檢測的設(shè)備中每個出口的當前實際速率自動調(diào)整出口緩存隊列深度來實現(xiàn)共享動態(tài)緩存,可以處理某一出口的突發(fā)流量及出口擁塞,又不會影響其它出口的正常業(yè)務,不損失入口帶寬,從而提高緩存利用率和整體性能。參見圖4,本實施例給出了計算動態(tài)緩存的大小的詳細流程,包括401,計算設(shè)備中所有出口對應的緩存隊列的初始值之和。具體的,在附圖I的步驟101中,按照以下方式計算各出口對應的緩存隊列的初始值根據(jù)設(shè)備中預置的系統(tǒng)速率精度和用于分配的固定緩存數(shù)以及出口數(shù),計算得到所述系統(tǒng)速率精度下的緩存數(shù),在所述系統(tǒng)速率精度下的緩存數(shù)大于或等于預置的該出口的最小緩存數(shù)時,將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的預定出口速率,得到該出口對應的緩存隊列的初始值。然后,進一步計算設(shè)備中所有出口對應的緩存隊列的初始值之和,以便通過設(shè)備總緩存值減去所述計算得到的設(shè)備中所有出口對應的緩存隊列的初始值之和,得到動態(tài)緩存的大小。402,將設(shè)備總緩存值減去所述計算得到的設(shè)備中所有出口對應的緩存隊列的初CN 102916903 A
書
明
說
9/13 頁
始值之和,得到動態(tài)緩存的大小。具體的,在計算得到設(shè)備中所有出口對應的緩存隊列的初始值之和后,將設(shè)備總緩存值減去所述計算得到的設(shè)備中所有出口對應的緩存隊列的初始值之和,得到動態(tài)緩存的大小,以將動態(tài)緩存作為共享的緩存,對于有多個出口的設(shè)備,在緩存總量不變的前提下,根據(jù)檢測得到的設(shè)備中每個出口的當前實際速率自動調(diào)整出口緩存隊列深度來實現(xiàn)共`享動態(tài)緩存,當檢測設(shè)備中每個出口的當前實際速率高于該出口的預定出口速率時,從動態(tài)緩存中為該出口分配緩存。當檢測設(shè)備中每個出口的當前實際速率低于該出口的預先設(shè)出口速率,根據(jù)該出口當前實際速率計算該出口實際所需的緩存值,并進一步判斷所述出口實際所需的緩存值是否大于該出口對應的緩存隊列的初始值;若是,則在所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間已被占用的情況下,在發(fā)送完數(shù)據(jù)后,將所述部分空間釋放給動態(tài)緩存;在所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間未占用的情況下,將所述部分空間釋放給動態(tài)緩存;若不大于該出口對應的緩存隊列的初始值,則在所述出口對應的緩存隊列中超出所述該出口對應的緩存隊列的初始值的部分空間已被占用的情況下,在發(fā)送完數(shù)據(jù)后,將所述部分空間釋放給動態(tài)緩存;在所述出口對應的緩存隊列中超出所述對應的緩存隊列的初始值的部分空間未占用的情況下,將所述部分空間釋放給動態(tài)緩存。本發(fā)明實施例在計算得到設(shè)備中所有出口對應的緩存隊列的初始值之和后,通過設(shè)備總緩存值減去所述計算得到的設(shè)備中所有出口對應的緩存隊列的初始值之和,得到動態(tài)緩存的大小,并將動態(tài)緩存作為共享的緩存,以實現(xiàn)根據(jù)檢測得到的設(shè)備中每個出口的當前實際速率自動調(diào)整出口緩存隊列深度來實現(xiàn)共享動態(tài)緩存,解決了在緩存總量不變的前提下,如何為多個出口動態(tài)地調(diào)整緩存空間的問題。參見圖5,本發(fā)明實施例提供的一種緩存調(diào)整裝置,所述裝置包括第一確定單元501,用于根據(jù)設(shè)備中每個出口的預定出口速率,確定每個出口對應的緩存隊列的初始值。具體地,在通信系統(tǒng)中,設(shè)備通常具有多個速率是可變的出口,每個出口處有一個出口緩存隊列,當報文從設(shè)備入口進入后,緩存到出口對應的緩存隊列中等待通過出口發(fā)送出去。第一確定單元501根據(jù)設(shè)置的系統(tǒng)速率精度和設(shè)備中每個出口的預定出口速率,確定每個出口對應的緩存隊列的初始值,其中,系統(tǒng)速率精度是指能檢測的速率最小單位,設(shè)備中每個出口的速率是該出口的工作速率且該出口的速率必須是系統(tǒng)速率精度的整數(shù)倍。可選地,在根據(jù)所述系統(tǒng)速率精度計算得到系統(tǒng)速率精度下的緩存數(shù)后,當判斷該系統(tǒng)速率精度下的緩存數(shù)小于設(shè)置的最小緩存數(shù)時,就需要改變速率精度,并依據(jù)改變后的速率精度重新計算該速率精度下的緩存數(shù)。第二確定單元502,用于根據(jù)每個出口的預先設(shè)定的最大時延值,確定每個出口對應的緩存隊列的最大緩存值。具體的,第二確定單元502根據(jù)每個出口的預先設(shè)定的最大時延值,確定每個出口對應的緩存隊列的最大緩存值,即將每個出口的預定出口速率乘以系統(tǒng)速率精度每秒發(fā)送的緩存數(shù)乘最大時延值的乘積,作為每個出口對應的緩存隊列的最大緩存值。分配單元503,用于檢測設(shè)備中每個出口的當前實際速率,在當前實際速率高于該出口的預定出口速率時,從動態(tài)緩存中為該出口分配緩存,分配緩存后該出口對應的緩存
12隊列的緩存值小于或等于該出口的最大緩存值,所述動態(tài)緩存的大小不大于設(shè)備總緩存值減去所有出口對應的緩存隊列的初始值之和得到的差值。具體的,由于設(shè)備中每個出口具有多個可變速率,需要檢測設(shè)備中每個出口的當前實際速率,在檢測到設(shè)備中每個出口的當前實際速率高于該出口的預定出口速率時,需要從動態(tài)緩存中為該出口分配緩存,否則當出口的緩存隊列中數(shù)據(jù)達到該出口對應的緩存隊列的初始值后,如果不增加當前出口的緩存隊列的緩存值,再來數(shù)據(jù)就會被丟棄,因此還需要判斷該出口對應的緩存隊列的當前緩存值與固定步長之和是否小于該出口的最大緩存值,若是,分配單元503按照固定步長從動態(tài)緩存中為該出口分配緩存,這是為了確保分配緩存后該出口對應的緩存隊列的緩存值小于或等于該出口的最大緩存值,所述動態(tài)緩存的大小不大于設(shè)備總緩存值減去所有出口對應的緩存隊列的初始值之和得到的差值。本發(fā)明實施例中的第一確定單元501和第二確定單元502根據(jù)設(shè)備中每個出口的預定出口速率和最大時延值,分別確定每個出口對應的緩存隊列的初始值和最大緩存值,當檢測設(shè)備中每個出口的當前實際速率高于該出口預先設(shè)定的出口速率時,分配單元503從動態(tài)緩存中為該出口分配緩存,即利用每個出口當前實際速率自動調(diào)整出口緩存隊列深度,這樣對于有多個出口的設(shè)備來說,在緩存總量不變的前提下,實現(xiàn)為多個出口動態(tài)地調(diào)整緩存空間,從而提高緩存利用率和整體性能。·可選地,參見圖6,所述第一確定單元501包括第一計算子單元601,用于將用于分配的固定緩存值除以預設(shè)系統(tǒng)速率精度與出口數(shù)的乘積得到的結(jié)果,作為所述系統(tǒng)速率精度下的緩存數(shù)。具體的,所述第一計算子單元601,確定所述系統(tǒng)速率精度下的緩存數(shù)的詳細過程參照方法實施例2中的描述。確定子單元602,用于針對每個出口,當所述第一計算子單元601計算的系統(tǒng)速率精度下的緩存數(shù)大于或者等于預置的出口的最小緩存數(shù)時,將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的預定出口速率,得到該出口對應的緩存隊列的初始值。具體的,所述確定子單元602,確定每個出口對應的緩存隊列的初始值的詳細過程參照方法實施例2中的描述。本發(fā)明實施例中第一計算子單元601根據(jù)設(shè)備中預置的系統(tǒng)速率精度和用于分配的固定緩存數(shù)以及出口數(shù),計算得到所述系統(tǒng)速率精度下的緩存數(shù)。針對每個出口,當所述第一計算子單元601計算的系統(tǒng)速率精度下的緩存數(shù)大于或者等于預置的出口的最小緩存數(shù)時,確定子單元602將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的預定出口速率,得到該出口對應的緩存隊列的初始值??蛇x地,參見圖7,分配單元503包括檢測子單元701,用于檢測設(shè)備中每個出口的當前實際速率。具體的,對于有多個出口的設(shè)備來說,設(shè)備中的每個出口的速率是可變,需要檢測設(shè)備中每個出口的當前實際速率,在出口的緩存隊列不空指示這個出口有數(shù)據(jù)需要發(fā)送時,通過檢測子單元701檢測該出口一段時間發(fā)送的字節(jié)數(shù)來實時檢測出口當前實際速率,若設(shè)備的出口的緩存隊列為空,指示這個出口當前沒有數(shù)據(jù)需要發(fā)送時,檢測子單元701就不能通過檢測該出口一段時間內(nèi)發(fā)送的字節(jié)數(shù)來計算該出口當前的實際出口速率了,則可以判斷該次檢測的出口當前的實際出口速率使用了滿速率,比如上述設(shè)置4個出口的速率 1G、100M、10M、2M。第一判斷子單元702,用于當所述檢測子單元701檢測到的設(shè)備中每個出口的當前實際速率高于該出口的預定出口速率時,判斷該出口對應的緩存隊列的當前緩存值與固定步長之和是否小于該出口的最大緩存值;具體的,在檢測子單元701檢測到設(shè)備中每個出口的當前實際速率高于該出口的預定出口速率時,需要從動態(tài)緩存中為該出口分配緩存,因為當出口的緩存隊列中數(shù)據(jù)達到該出口對應的緩存隊列的初始值后,如果不增加當前出口的緩存隊列的緩存值的話,再來數(shù)據(jù)就會被丟棄。為了確保分配緩存后該出口對應的緩存隊列的緩存值小于或等于該出口的最大緩存值。分配子單元703,用于當所述第一判斷子單元701的判斷結(jié)果為是時,按照所述固定步長從動態(tài)緩存中為該出口分配緩存。具體的,當所述第一判斷子單元701判斷該出口對應的緩存隊列的當前緩存值與固定步長之和小于該出口的最大緩存值時,分配子單元703按照固定步長從動態(tài)緩存中為該出口分配緩存,增加當前出口的緩存隊列的緩存值,以便再來數(shù)據(jù)不會被丟棄,分配緩存后該出口對應的緩存隊列的緩存值小于或等于該出口的最大緩存值。實現(xiàn)了對于有多個出口的設(shè)備,在緩存總量不變的前提下,根據(jù)檢測設(shè)備中每個出口的當前實際速率自動調(diào)整出口緩存隊列深度。本發(fā)明實施例中當檢測子單元701檢測設(shè)備中每個出口的當前實際速率高于該出口的預定出口速率,第一判斷子單元702進一步判斷該出口對應的緩存隊列的當前緩存值與固定步長之和小于該出口的最大緩存值時,分配子單元703按照固定步長從動態(tài)緩存中為該出口分配緩存,利用每個出口當前實際速率自動調(diào)整出口緩存隊列深度,實現(xiàn)為多個出口動態(tài)地調(diào)整緩存空間,從而提高緩存利用率和整體性能。可選地,參見圖8,所述分配單元503還包括第二計算子單元804,用于當所述檢測子單元701檢測到的設(shè)備中每個出口的當前實際速率低于該出口的預定出口速率時,根據(jù)該出口當前實際速率計算該出口實際所需的緩存值。具體的,當檢測子單元701檢測到設(shè)備中每個出口的當前實際速率低于該出口的預定出口速率時,第二計算子單元804根據(jù)檢測到的設(shè)備中每個出口的當前實際速率計算該出口實際所需的緩存值,以便第二判斷子單元805判斷所述第二計算子單元804計算得到的出口實際所需的緩存值是否大于該出口對應的緩存隊列的初始值。第二判斷子單元805,用于判斷所述第二計算子單元804計算得到的出口實際所需的緩存值是否大于該出口對應的緩存隊列的初始值。第一處理子單元806,用于當所述第二判斷子單元805的判斷結(jié)果為是時,在所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間已被占用的情況下,在發(fā)送完數(shù)據(jù)后,將所述部分空間釋放給動態(tài)緩存;在所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間未占用的情況下,將所述部分空間釋放給動態(tài)緩存。具體的,當?shù)诙袛嘧訂卧?05判斷所述出口實際所需的緩存值大于該出口對應的緩存隊列的初始值時,表明所述出口對應的緩存隊列中超出所述出口實際所需的緩存值之間的部分空間是多余部分,可以釋放出來供其他出口使用,第一處理子單元806判斷所述出口對應的緩存隊列中超出所述出口實際所需的緩存值之間的部分空間是否已被占用,若判斷所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間是否已被占用時,已占用的空間繼續(xù)占用出口,并在發(fā)送完數(shù)據(jù)后,將所述空間釋放給動態(tài)緩存。若第一處理子單元806判斷所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間未占用時,將所述部分空間釋放給動態(tài)緩存,其中,所述未占用的空間是允許該出口用,但還沒申請使用的空間,這部分空間還在共享的動態(tài)緩存中,申請后才真正被該出口占有,這類空間釋放后,就不會被該出口申請,可以給其它出口使用。第二處理子單元807,用于當所述第二判斷子單元805的判斷結(jié)果為否時,在所述出口對應的緩存隊列中超出所述該出口對應的緩存隊列的初始值的部分空間已被占用的情況下,在發(fā)送完數(shù)據(jù)后,將所述空間釋放給動態(tài)緩存;在所述出口對應的緩存隊列中超出所述對應的緩存隊列的初始值的部分空間未占用的情況下,將所述空間釋放給動態(tài)緩存。具體的,當?shù)诙袛嘧訂卧?05判斷所述出口實際所需的緩存值不大于該出口對應的緩存隊列的初始值時,表明所述出口對應的緩存隊列中超出所述該出口對應的緩存隊列的初始值之間部分空間是多余部分,第二處理子單元807需要進一步判斷出口對應的緩存隊列中超出所述該出口對應的緩存隊列的初始值之間的部分空間是否已被占用,若判斷出口對應的緩存隊列中超出所述該出口對應的緩存隊列的初始值的部分空間已被占用時,已占用的空間繼續(xù)占用出口,并在發(fā)送完數(shù)據(jù)后,將所述空間釋放給動態(tài)緩存。若第二處理子單元807判斷出口對應的緩存隊列中超出所述該出口對應的緩存隊列的初始值的部分空間未占用時,將所述空間釋放給動態(tài)緩存。可選地,參見圖9,所述第一確定單元501還包括第三計算子單元903,用于計算設(shè)備中所有出口對應的緩存隊列的初始值之和。具體的,在確定子單元602在第一計算子單元601確定的系統(tǒng)速率精度下的緩存數(shù)大于或者等于預置的出口的最小緩存數(shù)時,將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的預定出口速率,得到該出口對應的緩存隊列的初始值,第三計算子單元903根據(jù)確定子單元602確定的設(shè)備中所有出口對應的緩存隊列的初始值,計算得到設(shè)備中所有出口對應的緩存隊列的初始值之和。
獲取子單元904,用于將設(shè)備總緩存值減去所述第三計算子單元計算得到的設(shè)備中所有出口對應的緩存隊列的初始值之和,得到動態(tài)緩存的大小。具體的,在第三計算子單元903計算得到設(shè)備中所有出口對應的緩存隊列的初始值之和后,獲取子單元904將設(shè)備總緩存值減去所述第三計算子單元903計算可得到的設(shè)備中所有出口對應的緩存隊列的初始值之和,可得到動態(tài)緩存的大小。本發(fā)明實施例在第三計算子單元903計算獲取設(shè)備中所有出口對應的緩存隊列的初始值之和后,獲取子單元904通過設(shè)備總緩存值減去所述第三計算子單元903計算得到的設(shè)備中所有出口對應的緩存隊列的初始值之和,得到動態(tài)緩存的大小,并基于出口當前實際速率自動調(diào)整出口的緩存隊列深度來實現(xiàn)共享動態(tài)緩存,解決了現(xiàn)有具有多個速率可變的出口設(shè)備內(nèi)存利用率不高、整體性能不高等問題。參見圖10,本發(fā)明實施例還提供了一種設(shè)備,該設(shè)備包括至少兩個出口、以及存儲器和處理器,其中所述存儲器被配置存儲代碼;所述處理器被配置讀取所述存儲器中存儲的代碼,執(zhí)行方法實施例中的各個步驟,請參考圖I、圖2、圖3和圖4,以及方法實施例中的描述,在這里不再重復。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random AccessMemory, RAM)等。以上所揭露的僅為本發(fā)明較佳實施例而已,當然不能以此來限定本發(fā)明之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。
1權(quán)利要求
1.一種緩存調(diào)整方法,其特征在于,包括根據(jù)設(shè)備中每個出口的預定出口速率,確定每個出口對應的緩存隊列的初始值;根據(jù)每個出口的預先設(shè)定的最大時延值,確定每個出口對應的緩存隊列的最大緩存值;檢測設(shè)備中每個出口的當前實際速率,在當前實際速率高于該出口的預定出口速率時,從動態(tài)緩存中為該出口分配緩存,分配緩存后該出口對應的緩存隊列的緩存值小于或等于該出口的最大緩存值,所述動態(tài)緩存的大小不大于設(shè)備總緩存值減去所有出口對應的緩存隊列的初始值之和得到的差值。
2.如權(quán)利要求I所述的方法,其特征在于,所述根據(jù)設(shè)備中每個出口的預定出口速率,確定每個出口對應的緩存隊列的初始值,包括將用于分配的固定緩存值除以預設(shè)系統(tǒng)速率精度與出口數(shù)的乘積得到的結(jié)果,作為所述系統(tǒng)速率精度下的緩存數(shù);針對每個出口,當所述系統(tǒng)速率精度下的緩存數(shù)大于或等于預置的該出口的最小緩存數(shù)時,將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的預定出口速率,得到該出口對應的緩存隊列的初始值。
3.如權(quán)利要I所述的方法,其特征在于,所述檢測設(shè)備中每個出口的當前實際速率,在當前實際速率高于該出口的預定出口速率時,從動態(tài)緩存中為該出口分配緩存,包括檢測設(shè)備中每個出口的當前實際速率,若當前實際速率高于該出口的預定出口速率,判斷該出口對應的緩存隊列的當前緩存值與固定步長之和是否小于該出口的最大緩存值;若是,按照所述固定步長從動態(tài)緩存中為該出口分配緩存。
4.如權(quán)利要求3所述的方法,其特征在于,還包括若當前實際速率低于該出口的預定出口速率,根據(jù)該出口當前實際速率計算該出口實際所需的緩存值;判斷所述出口實際所需的緩存值是否大于該出口對應的緩存隊列的初始值;若大于該出口對應的緩存隊列的初始值,則在所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間已被占用的情況下,在發(fā)送完數(shù)據(jù)后,將所述部分空間釋放給動態(tài)緩存;在所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間未占用的情況下,將所述部分空間釋放給動態(tài)緩存;若不大于該出口對應的緩存隊列的初始值,則在所述出口對應的緩存隊列中超出所述該出口對應的緩存隊列的初始值的部分空間已被占用的情況下,在發(fā)送完數(shù)據(jù)后,將所述部分空間釋放給動態(tài)緩存;在所述出口對應的緩存隊列中超出所述對應的緩存隊列的初始值的部分空間未占用的情況下,將所述部分空間釋放給動態(tài)緩存。
5.如權(quán)利要求I至4中任一所述的方法,其特征在于,所述動態(tài)緩存是所述確定每個出口對應的緩存隊列的初始值之后,計算設(shè)備中所有出口對應的緩存隊列的初始值之和,將設(shè)備總緩存值減去所述所有出口對應的緩存隊列的初始值之和得到的。
6.一種緩存調(diào)整裝置,其特征在于,包括第一確定單元,用于根據(jù)設(shè)備中每個出口的預定出口速率,確定每個出口對應的緩存隊列的初始值;第二確定單元,用于根據(jù)每個出口的預先設(shè)定的最大時延值,確定每個出口對應的緩存隊列的最大緩存值; 分配單元,用于檢測設(shè)備中每個出口的當前實際速率,在當前實際速率高于該出口的預定出口速率時,從動態(tài)緩存中為該出口分配緩存,分配緩存后該出口對應的緩存隊列的緩存值小于或等于該出口的最大緩存值,所述動態(tài)緩存的大小不大于設(shè)備總緩存值減去所有出口對應的緩存隊列的初始值之和得到的差值。
7.如權(quán)利要求6所述的裝置,其特征在于,所述第一確定單元包括 第一計算子單元,用于將用于分配的固定緩存值除以預設(shè)系統(tǒng)速率精度與出口數(shù)的乘積得到的結(jié)果,作為所述系統(tǒng)速率精度下的緩存數(shù); 確定子單元,用于針對每個出口,當所述系統(tǒng)速率精度下的緩存數(shù)大于或等于預置的該出口的最小緩存數(shù)時,將所述系統(tǒng)速率精度下的緩存數(shù)乘以該出口的預定出口速率,得到該出口對應的緩存隊列的初始值。
8.如權(quán)利要求6所述的裝置,其特征在于,所述分配單元包括 檢測子單元,用于檢測設(shè)備中每個出口的當前實際速率; 第一判斷子單元,用于當所述檢測子單元檢測到的設(shè)備中每個出口的當前實際速率高于該出口的預定出口速率時,判斷該出口對應的緩存隊列的當前緩存值與固定步長之和是否小于該出口的最大緩存值; 分配子單元,用于當所述第一判斷子單元的判斷結(jié)果為是時,按照所述固定步長從動態(tài)緩存中為該出口分配緩存。
9.如權(quán)利要求8所述的裝置,其特征在于,所述分配單元還包括 第二計算子單元,用于當所述檢測子單元檢測到的設(shè)備中每個出口的當前實際速率低于該出口的預定出口速率時,根據(jù)該出口當前實際速率計算該出口實際所需的緩存值; 第二判斷子單元,用于判斷所述第二計算子單元計算得到的出口實際所需的緩存值是否大于該出口對應的緩存隊列的初始值; 第一處理子單元,用于當所述第二判斷子單元的判斷結(jié)果為是時,在所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間已被占用的情況下,在發(fā)送完數(shù)據(jù)后,將所述部分空間釋放給動態(tài)緩存;在所述出口對應的緩存隊列中超出所述出口實際所需的緩存值的部分空間未占用的情況下,將所述部分空間釋放給動態(tài)緩存; 第二處理子單元,用于當所述第二判斷子單元的判斷結(jié)果為否時,在所述出口對應的緩存隊列中超出所述該出口對應的緩存隊列的初始值的部分空間已被占用的情況下,在發(fā)送完數(shù)據(jù)后,將所述部分空間釋放給動態(tài)緩存;在所述出口對應的緩存隊列中超出所述對應的緩存隊列的初始值間的部分空間未占用的情況下,將所述部分空間釋放給動態(tài)緩存。
10.一種設(shè)備,其特征在于包括至少兩個出口、以及存儲器和處理器,其中 所述存儲器被配置存儲代碼; 所述處理器被配置讀取所述存儲器中存儲的代碼,執(zhí)行如權(quán)利要求1-4任一所述的方法。
全文摘要
本發(fā)明實施例公開了一種緩存調(diào)整方法,包括根據(jù)設(shè)備中每個出口的預定出口速率,確定每個出口對應的緩存隊列的初始值;根據(jù)每個出口的預先設(shè)定的最大時延值,確定每個出口對應的緩存隊列的最大緩存值;檢測設(shè)備中每個出口的當前實際速率,在當前實際速率高于該出口的預定出口速率時,從動態(tài)緩存中為該出口分配緩存,分配緩存后該出口對應的緩存隊列的緩存值小于或等于該出口的最大緩存值,所述動態(tài)緩存的大小不大于設(shè)備總緩存值減去所有出口對應的緩存隊列的初始值之和得到的差值。采用本發(fā)明,對有多個出口的設(shè)備,在緩存總量不變的前提下,根據(jù)每個出口當前實際速率自動調(diào)整出口緩存隊列深度,實現(xiàn)為多個出口動態(tài)地調(diào)整緩存空間。
文檔編號H04L12/861GK102916903SQ20121041198
公開日2013年2月6日 申請日期2012年10月25日 優(yōu)先權(quán)日2012年10月25日
發(fā)明者曹學成 申請人:華為技術(shù)有限公司