一種cpu利用率控制方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種CPU利用率控制方法及裝置。
【背景技術(shù)】
[0002] 在交換設(shè)備和路由設(shè)備中,分組芯片負(fù)責(zé)數(shù)據(jù)平面的工作,比如數(shù)據(jù)包的轉(zhuǎn)發(fā)或 者路由,CPU(Central Processing Unit,中央處理器)負(fù)責(zé)控制平面的工作,比如協(xié)議處理 工作,協(xié)處理器也可分擔(dān)一些協(xié)議處理工作。
[0003] CPU利用率是指一段時(shí)間內(nèi)CPU實(shí)際處理數(shù)據(jù)的時(shí)間占實(shí)際運(yùn)行時(shí)間的百分比, 是反映CPU工作狀態(tài)及處理效率的指標(biāo)。影響CPU利用率的因素主要有兩個(gè)方面,一方面 是物理事件,比如端口連接或斷開(kāi),物理溫度過(guò)高或過(guò)低等;另一方面是數(shù)據(jù)包對(duì)CPU的沖 擊,一般情況下,發(fā)送給CPU的數(shù)據(jù)包的速率越高,對(duì)CPU的沖擊越大,CPU的利用率就越高。
[0004] 在交換設(shè)備或路由設(shè)備正常工作狀態(tài)下,物理事件發(fā)生的次數(shù)遠(yuǎn)小于數(shù)據(jù)包沖擊 CPU的次數(shù),因此對(duì)進(jìn)入CPU的數(shù)據(jù)包進(jìn)行控制,成為控制CPU利用率高低的關(guān)鍵。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實(shí)施例提供一種CPU利用率控制方法及裝置,用以結(jié)合CPU當(dāng)前的利用率, 采用抑制數(shù)據(jù)包擠占控制數(shù)據(jù)包的方式,實(shí)現(xiàn)對(duì)CPU利用率的有效控制。
[0006] 本發(fā)明包括:
[0007] 一種CPU利用率控制方法,包括:
[0008] 探測(cè)中央處理器CPU的利用率;
[0009] 判斷所述CPU的利用率是否大于或等于第一閾值;
[0010] 若是,則根據(jù)控制數(shù)據(jù)包的優(yōu)先級(jí)確定需要加大流量抑制的控制數(shù)據(jù)包緩存隊(duì) 列,并提高向所述需要加大流量抑制的控制數(shù)據(jù)包緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包的速率;其中, 所述控制數(shù)據(jù)包中承載控制信息,通過(guò)分組芯片轉(zhuǎn)發(fā)給CPU,所述分組芯片中包括N個(gè)控制 數(shù)據(jù)包緩存隊(duì)列,N為大于1的整數(shù),一個(gè)控制數(shù)據(jù)包緩存隊(duì)列中的抑制數(shù)據(jù)包的優(yōu)先級(jí)高 于該緩存隊(duì)列中的控制數(shù)據(jù)包的優(yōu)先級(jí),一個(gè)控制數(shù)據(jù)包緩存隊(duì)列中的抑制數(shù)據(jù)包在從所 在的控制數(shù)據(jù)包緩存隊(duì)列出隊(duì)后被丟棄,一個(gè)控制數(shù)據(jù)包緩存隊(duì)列中的控制數(shù)據(jù)包被轉(zhuǎn)發(fā) 給所述CPU。
[0011] 所述根據(jù)分組芯片中的控制數(shù)據(jù)包緩存隊(duì)列的優(yōu)先級(jí)確定需要加大流量抑制的 控制數(shù)據(jù)包緩存隊(duì)列,包括:
[0012] 按照控制數(shù)據(jù)包的優(yōu)先級(jí)從低到高的順序,確定需要加大流量抑制的控制數(shù)據(jù)包 緩存隊(duì)列。
[0013] 按照所緩存的控制數(shù)據(jù)包優(yōu)先級(jí)從低到高的順序,所述N個(gè)控制數(shù)據(jù)包緩存隊(duì)列 包括第一緩存隊(duì)列至第N緩存隊(duì)列;
[0014] 所述按照控制數(shù)據(jù)包的優(yōu)先級(jí)從低到高的順序確定需要加大流量抑制的控制數(shù) 據(jù)包緩存隊(duì)列,并提高向所述需要加大流量抑制的控制數(shù)據(jù)包緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包的 速率,包括:
[0015] 步驟201 :將i設(shè)置為1 ;
[0016] 步驟202 :判斷第i緩存隊(duì)列中的控制數(shù)據(jù)包的發(fā)送速率是否高于所述控制數(shù)據(jù) 包的最低保證速率,若是,則轉(zhuǎn)入步驟203,否則轉(zhuǎn)入步驟205 ;
[0017] 步驟203 :向第i緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包,向第i緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包的速 率等于第i緩存隊(duì)列中的控制數(shù)據(jù)包的發(fā)送速率減去所述控制數(shù)據(jù)包的最低保證速率所 得到的差值;
[0018] 步驟204 :探測(cè)所述CPU的利用率,若所述CPU的利用率大于或等于所述第一閾 值,則轉(zhuǎn)入步驟205 ;
[0019] 步驟205:將i遞增1;
[0020] 步驟206 :若i彡N,則轉(zhuǎn)入步驟202。
[0021] 所述步驟206中,若i>N,則轉(zhuǎn)入步驟207 ;
[0022] 步驟207 :將i設(shè)置為1 ;
[0023] 步驟208 :增加向第i緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包的速率,向第i緩存隊(duì)列發(fā)送抑制 數(shù)據(jù)包增加的速率等于第i緩存隊(duì)列中的控制數(shù)據(jù)包的發(fā)送速率;
[0024] 步驟209 :探測(cè)所述CPU的利用率,若所述CPU的利用率大于或等于所述第一閾 值,則轉(zhuǎn)入步驟210 ;
[0025] 步驟210:將i遞增1;
[0026] 步驟211 :若i < N,則轉(zhuǎn)入步驟208。
[0027] 所述步驟211中,若i>N,則發(fā)送用于指示CPU利用率高的告警指示。
[0028] 若所述CPU的利用率小于第二閾值,則根據(jù)控制數(shù)據(jù)包的優(yōu)先級(jí)確定需要降低流 量抑制的控制數(shù)據(jù)包緩存隊(duì)列,并降低向所述需要降低流量抑制的控制數(shù)據(jù)包緩存隊(duì)列發(fā) 送抑制數(shù)據(jù)包的速率;其中,所述第二閾值小于或等于所述第一閾值。
[0029] 所述根據(jù)控制數(shù)據(jù)包的優(yōu)先級(jí)確定需要降低流量抑制的控制數(shù)據(jù)包緩存隊(duì)列,包 括:
[0030] 按照控制數(shù)據(jù)包的優(yōu)先級(jí)從高到低的順序,確定需要降低流量抑制的控制數(shù)據(jù)包 緩存隊(duì)列。
[0031 ] 所述N個(gè)緩存隊(duì)列的優(yōu)先級(jí)彼此各不相同,按照優(yōu)先級(jí)從低到高的順序,所述N個(gè) 緩存隊(duì)列包括第一緩存隊(duì)列至第N緩存隊(duì)列;
[0032] 所述按照所述分組芯片中的緩存隊(duì)列的優(yōu)先級(jí)從高到低的順序確定需要降低流 量抑制的緩存隊(duì)列,并降低向所述需要降低流量抑制的緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包的速率, 包括:
[0033] 步驟301 :將i設(shè)置為N ;
[0034] 步驟302 :判斷第i緩存隊(duì)列中的控制數(shù)據(jù)包的發(fā)送速率是否低于所述控制數(shù)據(jù) 包的最低保證速率,若是,則轉(zhuǎn)入步驟303,否則轉(zhuǎn)入步驟305 ;
[0035] 步驟303 :按照設(shè)定步長(zhǎng)降低向第i緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包的速率,轉(zhuǎn)入步驟 304 ;
[0036] 步驟304 :探測(cè)所述CPU的利用率,若所述CPU的利用率小于或等于所述第二閾 值,則轉(zhuǎn)入步驟302 ;
[0037] 步驟305 :將i遞減I ;
[0038] 步驟306 :若i彡1,則轉(zhuǎn)入步驟302。
[0039] 所述步驟306中,若i〈l,則轉(zhuǎn)入步驟307 ;
[0040] 步驟307 :將i設(shè)置為N ;
[0041] 步驟308 :判斷第i緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包的速率是否大于零,若是,則轉(zhuǎn)入步 驟309,否則轉(zhuǎn)入步驟311 ;
[0042] 步驟309 :按照設(shè)定步長(zhǎng)降低向第i緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包;
[0043] 步驟310 :探測(cè)所述CPU的利用率,若所述CPU的利用率小于或等于所述第二閾 值,則轉(zhuǎn)入步驟311 ;
[0044] 步驟311:將i遞減1;
[0045] 步驟312 :若i彡1,則轉(zhuǎn)入步驟308。
[0046] 所述第i緩存隊(duì)列中的控制數(shù)據(jù)包的發(fā)送速率為:
[0047] Rf1= CIR1-Df1-Hf1
[0048] 其中,Rf1為第i緩存隊(duì)列中的控制數(shù)據(jù)包的發(fā)送速率,CIR i為第i緩存隊(duì)列中的 保證信息速率,Df1為第i緩存隊(duì)列中的抑制數(shù)據(jù)包的發(fā)送速率,Hf i為第i緩存隊(duì)列中的 測(cè)量數(shù)據(jù)包的接收速率;一個(gè)緩存隊(duì)列中的測(cè)量數(shù)據(jù)包的優(yōu)先級(jí)低于該緩存隊(duì)列中的控制 數(shù)據(jù)包的優(yōu)先級(jí)。
[0049] 所述探測(cè)CPU的利用率,包括:
[0050] 向所述CPU發(fā)送探測(cè)數(shù)據(jù)包,并接收所述CPU返回的所述探測(cè)數(shù)據(jù)包;
[0051] 根據(jù)所述探測(cè)數(shù)據(jù)包的發(fā)送時(shí)間和接收時(shí)間之差,得出所述探測(cè)數(shù)據(jù)包在所述 CPU中的駐留時(shí)間;
[0052] 根據(jù)所述探測(cè)數(shù)據(jù)包在所述CPU中的駐留時(shí)間查詢(xún)預(yù)先設(shè)置的駐留時(shí)間與CPU利 用率的對(duì)應(yīng)關(guān)系,得到所述CPU的利用率。
[0053] -種CPU利用率控制裝置,包括:探測(cè)模塊、判斷模塊和抑制模塊;
[0054] 所述探測(cè)模塊,用于探測(cè)中央處理器CPU的利用率;
[0055] 所述判斷模塊,用于判斷所述CPU的利用率是否大于或等于第一閾值;
[0056] 所述抑制模塊,用于當(dāng)所述CPU的利用率大于或等于所述第一閾值時(shí),根據(jù)控制 數(shù)據(jù)包的優(yōu)先級(jí)確定需要加大流量抑制的控制數(shù)據(jù)包緩存隊(duì)列,并提高向所述需要加大流 量抑制的控制數(shù)據(jù)包緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包的速率;其中,所述控制數(shù)據(jù)包中承載控制 信息,通過(guò)分組芯片轉(zhuǎn)發(fā)給CPU,所述分組芯片中包括N個(gè)控制數(shù)據(jù)包緩存隊(duì)列,N為大于1 的整數(shù),一個(gè)控制數(shù)據(jù)包緩存隊(duì)列中的抑制數(shù)據(jù)包的優(yōu)先級(jí)高于該緩存隊(duì)列中的控制數(shù)據(jù) 包的優(yōu)先級(jí),一個(gè)控制數(shù)據(jù)包緩存隊(duì)列中的抑制數(shù)據(jù)包在從所在的控制數(shù)據(jù)包緩存隊(duì)列出 隊(duì)后被丟棄,一個(gè)控制數(shù)據(jù)包緩存隊(duì)列中的控制數(shù)據(jù)包被轉(zhuǎn)發(fā)給所述CPU。
[0057] 所述抑制模塊還用于:按照控制數(shù)據(jù)包的優(yōu)先級(jí)從低到高的順序,確定需要加大 流量抑制的控制數(shù)據(jù)包緩存隊(duì)列。
[0058] 按照所緩存的控制數(shù)據(jù)包優(yōu)先級(jí)從低到高的順序,所述N個(gè)控制數(shù)據(jù)包緩存隊(duì)列 包括第一緩存隊(duì)列至第N緩存隊(duì)列;
[0059] 所述抑制模塊具體用于執(zhí)行以下步驟:
[0060] 步驟201 :將i設(shè)置為1 ;
[0061] 步驟202 :判斷第i緩存隊(duì)列中的控制數(shù)據(jù)包的發(fā)送速率是否高于所述控制數(shù)據(jù) 包的最低保證速率,若是,則轉(zhuǎn)入步驟203,否則轉(zhuǎn)入步驟205 ;
[0062] 步驟203 :向第i緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包,向第i緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包的速 率等于第i緩存隊(duì)列中的控制數(shù)據(jù)包的發(fā)送速率減去所述控制數(shù)據(jù)包的最低保證速率所 得到的差值;
[0063] 步驟204 :探測(cè)所述CPU的利用率,若所述CPU的利用率大于或等于所述第一閾 值,則轉(zhuǎn)入步驟205 ;
[0064] 步驟205 :將i遞增1 ;
[0065] 步驟206 :若i彡N,則轉(zhuǎn)入步驟202。
[0066] 所述抑制模塊還用于執(zhí)行以下步驟:
[0067] 所述步驟206中,若i>N,則轉(zhuǎn)入步驟207 ;
[0068] 步驟207 :將i設(shè)置為1 ;
[0069] 步驟208 :增加向第i緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包的速率,向第i緩存隊(duì)列發(fā)送抑制 數(shù)據(jù)包增加的速率等于第i緩存隊(duì)列中的控制數(shù)據(jù)包的發(fā)送速率;
[0070] 步驟209 :探測(cè)所述CPU的利用率,若所述CPU的利用率大于或等于所述第一閾 值,則轉(zhuǎn)入步驟210 ;
[0071] 步驟210:將i遞增1;
[0072] 步驟211 :若i < N,則轉(zhuǎn)入步驟208。
[0073] 所述抑制模塊還用于:所述步驟211中,若i>N,則發(fā)送用于指示CPU利用率高的 告警指示。
[0074] 所述抑制模塊還用于:若所述CPU的利用率小于第二閾值,則根據(jù)控制數(shù)據(jù)包的 優(yōu)先級(jí)確定需要降低流量抑制的控制數(shù)據(jù)包緩存隊(duì)列,并降低向所述需要降低流量抑制的 控制數(shù)據(jù)包緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包的速率;其中,所述第二閾值小于或等于所述第一閾 值。
[0075] 所述抑制模塊還用于:按照控制數(shù)據(jù)包的優(yōu)先級(jí)從高到低的順序,確定需要降低 流量抑制的控制數(shù)據(jù)包緩存隊(duì)列。
[0076] 所述N個(gè)緩存隊(duì)列的優(yōu)先級(jí)彼此各不相同,按照優(yōu)先級(jí)從低到高的順序,所述N個(gè) 緩存隊(duì)列包括第一緩存隊(duì)列至第N緩存隊(duì)列;
[0077] 所述抑制模塊具體用于執(zhí)行以下步驟:
[0078] 步驟301 :將i設(shè)置為N ;
[0079] 步驟302 :判斷第i緩存隊(duì)列中的控制數(shù)據(jù)包的發(fā)送速率是否低于所述控制數(shù)據(jù) 包的最低保證速率,若是,則轉(zhuǎn)入步驟303,否則轉(zhuǎn)入步驟305 ;
[0080] 步驟303 :按照設(shè)定步長(zhǎng)降低向第i緩存隊(duì)列發(fā)送抑制數(shù)據(jù)包的速率,轉(zhuǎn)入步驟 304 ;
[0081] 步驟304 :探測(cè)所述CP