本公開涉及計算機領(lǐng)域,具體地,涉及一種調(diào)整CPU頻率的方法及裝置。
背景技術(shù):
傳統(tǒng)的網(wǎng)絡(luò)設(shè)備采用中斷的方式收取數(shù)據(jù)包,即當數(shù)據(jù)包到達網(wǎng)卡時,網(wǎng)卡給CPU(Central Processing Unit,中央處理器)發(fā)送一個中斷信號,CPU才開始從網(wǎng)卡中接收并處理數(shù)據(jù)包,當沒有數(shù)據(jù)包時,CPU不做運算,CPU的使用率較低,功耗也較低。
但是,對于中斷方式來說,由于每收到一個數(shù)據(jù)包都會產(chǎn)生一個中斷,而處理器會迅速進行上下文切換跳到中斷服務(wù)程序中去處理收包,這樣,如果遇到數(shù)據(jù)包流量很大的情況,過多的中斷會增加系統(tǒng)的負荷。因此,近年來中斷方式收包已經(jīng)逐步被UIO(Userspace I/O,用戶空間的I/O)技術(shù)取代。
UIO技術(shù)是把網(wǎng)卡映射到用戶空間,在用戶態(tài)通過程序輪詢的方式不斷查詢網(wǎng)卡中是否有數(shù)據(jù)包到來。輪詢方式收取數(shù)據(jù)包沒有上下文切換的開銷,但輪詢方式導致CPU頻率始終維持100%,即使沒有數(shù)據(jù)包,CPU也以高功耗的方式運行,浪費了電力資源。
技術(shù)實現(xiàn)要素:
本公開的目的是提供一種調(diào)整CPU頻率的方法及裝置,用以解決采用輪詢方式收包的網(wǎng)絡(luò)設(shè)備的CPU始終高功耗運行,浪費了電力資源的問題。
為了實現(xiàn)上述目的,本公開第一方面提供一種調(diào)整中央處理器CPU頻率的方法,所述CPU包括至少一個CPU核心,每一所述CPU核心對應(yīng)網(wǎng)卡中的至少一個網(wǎng)卡隊列,所述網(wǎng)卡中的每一網(wǎng)卡隊列對應(yīng)一個CPU核心,所述方法包括:根據(jù)所述CPU核心的收包線程采用輪詢方式讀取所述CPU核心對應(yīng)的網(wǎng)卡隊列中的數(shù)據(jù);根據(jù)所述CPU核心從每個網(wǎng)卡隊列讀取到的數(shù)據(jù)包的數(shù)量,確定所述CPU核心對應(yīng)的每個網(wǎng)卡隊列的負載;根據(jù)所述CPU核心對應(yīng)的每個網(wǎng)卡隊列的負載調(diào)整所述CPU核心的頻率。
可選地,所述根據(jù)所述CPU核心的收包線程采用輪詢方式讀取所述CPU核心對應(yīng)的網(wǎng)卡隊列中的數(shù)據(jù),包括:在所述CPU核心的收包線程每次輪詢到第一網(wǎng)卡隊列時,從所述第一網(wǎng)卡隊列中讀取m個數(shù)據(jù)包,所述第一網(wǎng)卡隊列是所述CPU核心對應(yīng)的網(wǎng)卡隊列中的任一網(wǎng)卡隊列,m是大于0且小于或等于s的正整數(shù),s是所述CPU核心能夠一次讀取的數(shù)據(jù)包的最大數(shù)量。
可選地,所述根據(jù)所述CPU核心從每個網(wǎng)卡隊列讀取到的數(shù)據(jù)包的數(shù)量,確定所述CPU核心對應(yīng)的每個網(wǎng)卡隊列的負載,包括:在所述CPU核心第n次輪詢讀取所述第一網(wǎng)卡隊列的數(shù)據(jù)包后,采用如下公式計算所述第一網(wǎng)卡隊列的負載:
ln=(1-W)×ln-1+W×m;
其中,bn表示所述第一網(wǎng)卡隊列在第n次輪詢之后的負載;W為預(yù)設(shè)的權(quán)值,W的取值范圍是(0,1);當n等于1時,l0=0,l1是第一次負載計算的中間值,當n大于1時,ln-1是第n-1次迭代過程的中間值,ln是第n次負載計算的中間值。
可選地,所述根據(jù)所述CPU核心對應(yīng)的每個網(wǎng)卡隊列的負載調(diào)整所述CPU核心的頻率,包括:每次輪詢后,若計算得到的任何一個網(wǎng)卡隊列的負載大于或等于第一閾值,則提升所述CPU核心的頻率。
可選地,所述根據(jù)所述CPU核心對應(yīng)的每個網(wǎng)卡隊列的負載調(diào)整所述CPU核心的頻率,包括:每次輪詢后,若計算得到的任何一個網(wǎng)卡隊列的負載大于或等于閾值T1,則將所述CPU核心的頻率提升一級,若計算得到的任何一個網(wǎng)卡隊列的負載大于或等于閾值T2,則將所述CPU核心的頻率提升至100%,其中,T2大于T1。
值得說明的是,由于只要任何一個網(wǎng)卡隊列的負載過大,CPU核心即可提升頻率,因此實現(xiàn)了網(wǎng)卡負載增大時,CPU核心迅速提升頻率的技術(shù)效果,充分發(fā)揮了CPU核心的性能,避免了數(shù)據(jù)擁塞。
可選地,所述根據(jù)所述CPU核心對應(yīng)的每個網(wǎng)卡隊列的負載調(diào)整所述CPU核心的頻率,包括:連續(xù)N次輪詢后,若每次計算得到的所述CPU核心對應(yīng)的所有網(wǎng)卡隊列的負載均小于第二閾值,則降低所述CPU核心的頻率。
可選地,在N次輪詢中,若每次計算得到的所述CPU核心對應(yīng)的所有網(wǎng)卡隊列的負載均小于T3,則將所述CPU核心的頻率降低一級。由于所有網(wǎng)卡隊列負載在N次輪詢中均小于T3,才降低CPU核心頻率一級,因此實現(xiàn)了網(wǎng)卡負載減小時,慢慢降低CPU核心的頻率的技術(shù)效果,保證了在不影響CPU核心讀取數(shù)據(jù)的性能的前提下,節(jié)省電力資源,實現(xiàn)綠色節(jié)能。
第二方面,提供一種調(diào)整CPU頻率的裝置,所述CPU包括至少一個CPU核心,每一所述CPU核心對應(yīng)網(wǎng)卡中的至少一個網(wǎng)卡隊列,所述網(wǎng)卡中的每一網(wǎng)卡隊列對應(yīng)一個CPU核心,所述裝置包括:輪詢讀取單元,用于根據(jù)所述CPU核心的收包線程采用輪詢方式讀取所述CPU核心對應(yīng)的網(wǎng)卡隊列中的數(shù)據(jù);負載確定單元,用于根據(jù)所述CPU核心從每個網(wǎng)卡隊列讀取到的數(shù)據(jù)包的數(shù)量,確定所述CPU核心對應(yīng)的每個網(wǎng)卡隊列的負載;頻率調(diào)整單元,用于根據(jù)所述CPU核心對應(yīng)的每個網(wǎng)卡隊列的負載調(diào)整所述CPU核心的頻率。
可選地,所述輪詢讀取單元用于:在所述CPU核心的收包線程每次輪詢到第一網(wǎng)卡隊列時,從所述第一網(wǎng)卡隊列中讀取m個數(shù)據(jù)包,所述第一網(wǎng)卡隊列是所述CPU核心對應(yīng)的網(wǎng)卡隊列中的任一網(wǎng)卡隊列,m是大于0且小于或等于s的正整數(shù),s是所述CPU核心能夠一次讀取的數(shù)據(jù)包的最大數(shù)量。
可選地,所述負載確定單元用于:在所述CPU核心第n次輪詢讀取所述第一網(wǎng)卡隊列的數(shù)據(jù)包后,采用如下公式計算所述第一網(wǎng)卡隊列的負載:
ln=(1-W)×ln-1+W×m;
其中,bn表示所述第一網(wǎng)卡隊列在第n次輪詢之后的負載;W為預(yù)設(shè)的權(quán)值,W的取值范圍是(0,1);當n等于1時,l0=0,l1是第一次負載計算的中間值,當n大于1時,ln-1是第n-1次迭代過程的中間值,ln是第n次負載計算的中間值。
可選地,所述頻率調(diào)整單元用于:在每次輪詢后,計算得到的任何一個網(wǎng)卡隊列的負載大于或等于第一閾值時,提升所述CPU核心的頻率。
可選地,所述頻率調(diào)整單元用于:在連續(xù)N次輪詢后,每次計算得到的所述CPU核心對應(yīng)的所有網(wǎng)卡隊列的負載均小于第二閾值時,降低所述CPU核心的頻率。
通過上述技術(shù)方案,本發(fā)明提供了一種調(diào)整CPU頻率的方法,由于網(wǎng)卡中的每一網(wǎng)卡隊列只對應(yīng)一個CPU核心收取數(shù)據(jù)包,因此,針對所述CPU核心收取數(shù)據(jù)包的數(shù)量即可對網(wǎng)卡隊列的負載進行計算,從而根據(jù)網(wǎng)卡隊列的負載調(diào)整CPU核心的頻率。這樣,在網(wǎng)卡隊列的負載較低時,降低CPU頻率,實現(xiàn)綠色節(jié)能;在網(wǎng)卡隊列負載較高時,提高CPU頻率,使得CPU的性能能夠得到有效發(fā)揮,避免數(shù)據(jù)擁塞,解決了CPU始終高功耗運行,浪費了電力資源的問題。
本公開的其他特征和優(yōu)點將在隨后的具體實施方式部分予以詳細說明。
附圖說明
附圖是用來提供對本公開的進一步理解,并且構(gòu)成說明書的一部分,與下面的具體實施方式一起用于解釋本公開,但并不構(gòu)成對本公開的限制。在附圖中:
圖1是本公開實施例提供的一種網(wǎng)絡(luò)設(shè)備的結(jié)構(gòu)示意圖;
圖2是本公開實施例提供的一種調(diào)整CPU頻率的方法的流程示意圖;
圖3是本公開實施例提供的另一種調(diào)整CPU頻率的方法的流程示意圖;
圖4是本公開實施例提供的一種調(diào)整CPU頻率的裝置的結(jié)構(gòu)示意圖。
具體實施方式
以下結(jié)合附圖對本公開的具體實施方式進行詳細說明。應(yīng)當理解的是,此處所描述的具體實施方式僅用于說明和解釋本公開,并不用于限制本公開。
為了是本領(lǐng)域技術(shù)人員更容易理解本公開提供的技術(shù)方案,下面對本公開技術(shù)方案的實施環(huán)境進行介紹。
圖1是一種網(wǎng)絡(luò)設(shè)備100的結(jié)構(gòu)示意圖。如1圖所示,該網(wǎng)絡(luò)設(shè)備100包括CPU 101,其中,該CPU 101包括至少一個CPU核心,例如圖1示出的CPU核心1011、CPU核心1012、CPU核心1013和CPU核心1014。該網(wǎng)絡(luò)設(shè)備100還包括網(wǎng)卡102,其中,該網(wǎng)卡102包括多個網(wǎng)卡隊列,例如圖1示出的網(wǎng)卡隊列1至網(wǎng)卡隊列8。另外,一個CPU核心還對應(yīng)有一個收包線程,如圖1所示的收包線程1至收包線程4所示,用于收取網(wǎng)卡隊列中的數(shù)據(jù)。
值得說明的是,現(xiàn)有技術(shù)中,為了保證性能,每一CPU核心均高功耗運行,即頻率維持在最高頻率運行,浪費了電力資源。
本發(fā)明為了解決上述技術(shù)問題,提供了一種調(diào)整CPU頻率的方法,其中,該方法可以應(yīng)用于網(wǎng)絡(luò)設(shè)備中的CPU,例如圖1所示的CPU 101,該CPU包括至少一個CPU核心,每一CPU核心對應(yīng)網(wǎng)卡中的至少一個網(wǎng)卡隊列,所述網(wǎng)卡中的每一網(wǎng)卡隊列對應(yīng)一個CPU核心,如圖2所示,該方法包括:
S201、根據(jù)所述CPU核心的收包線程采用輪詢方式讀取所述CPU核心對應(yīng)的網(wǎng)卡隊列中的數(shù)據(jù)。
以圖1所示的網(wǎng)絡(luò)設(shè)備進行舉例說明,本發(fā)明實施例可以在初始化時,建立CPU核心1011與收包線程1的親和關(guān)系,CPU核心1012與收包線程2的親和關(guān)系,CPU核心1013與收包線程3的親和關(guān)系,CPU核心1014與收包線程4的親和關(guān)系,這樣,上述CPU核心的收包線程即為與所述CPU核心具有親和關(guān)系的收包線程。并且,還可以建立每一CPU核心與網(wǎng)卡隊列的對應(yīng)關(guān)系。例如,CPU核心1011對應(yīng)網(wǎng)卡隊列1和網(wǎng)卡隊列2,CPU核心1012對應(yīng)網(wǎng)卡隊列3和網(wǎng)卡隊列4,CPU核心1013對應(yīng)網(wǎng)卡隊列5和網(wǎng)卡隊列6,CPU核心1014對應(yīng)網(wǎng)卡隊列7和網(wǎng)卡隊列8。
上述只是舉例說明,在具體實施時,可以根據(jù)CPU核心的實際數(shù)量以及網(wǎng)卡隊列的實際數(shù)量建立對應(yīng)關(guān)系,其中,每一個CPU核心對應(yīng)至少一個網(wǎng)卡隊列,每一網(wǎng)卡隊列只對應(yīng)一個CPU核心,以確保了同一網(wǎng)卡隊列中的數(shù)據(jù)包只能被同一個CPU核心的收包線程讀取到。
S202、根據(jù)所述CPU核心從每個網(wǎng)卡隊列讀取到的數(shù)據(jù)包的數(shù)量,確定所述CPU核心對應(yīng)的每個網(wǎng)卡隊列的負載。
也就是說,由于同一網(wǎng)卡隊列中的數(shù)據(jù)包被一個CPU核心的收包線程讀取,因此,根據(jù)該CPU核心每次從該網(wǎng)卡隊列獲取到的數(shù)據(jù)包的數(shù)量即可評估該網(wǎng)卡隊列的負載。
S203、根據(jù)所述CPU核心對應(yīng)的每個網(wǎng)卡隊列的負載調(diào)整所述CPU核心的頻率。
具體地,在網(wǎng)卡隊列的負載較小時,可以降低對應(yīng)的CPU核心的頻率,在網(wǎng)卡隊列的負載較大時,可以提升對應(yīng)的CPU核心的頻率。
采用上述技術(shù)方案,由于網(wǎng)卡中的每一網(wǎng)卡隊列只對應(yīng)一個CPU核心收取數(shù)據(jù)包,因此,針對所述CPU核心收取數(shù)據(jù)包的數(shù)量即可對網(wǎng)卡隊列的負載進行計算,從而根據(jù)網(wǎng)卡隊列的負載調(diào)整CPU核心的頻率。這樣,在網(wǎng)卡隊列的負載較低時,降低CPU頻率,實現(xiàn)綠色節(jié)能;在網(wǎng)卡隊列負載較高時,提高CPU頻率,使得CPU的性能能夠得到有效發(fā)揮,避免數(shù)據(jù)擁塞,解決了CPU始終高功耗運行,浪費了電力資源的問題。
為了使本領(lǐng)域技術(shù)人員更加理解本公開提供的技術(shù)方案,下面對上述步驟進行詳細的說明。
仍然以圖1所示的網(wǎng)絡(luò)設(shè)備舉例說明,上述步驟S201中所述的CPU核心可以為網(wǎng)絡(luò)設(shè)備100中的任一CPU核心,例如,CPU核心1011,則所述CPU核心1011對應(yīng)的收包線程即為圖1中示出的收包線程1,所述CPU核心1011對應(yīng)的至少一個網(wǎng)卡隊列即為圖1中示出網(wǎng)卡隊列1和網(wǎng)卡隊列2。這樣,上述步驟201具體可以是,CPU核心1011每間隔一段時間,采用收包線程1輪詢網(wǎng)卡隊列1和網(wǎng)卡隊列2。若輪詢到某一網(wǎng)卡隊列存在新的數(shù)據(jù)包則,讀取所述新的數(shù)據(jù)包,若對應(yīng)的所有網(wǎng)卡隊列均不存在新的數(shù)據(jù)包時,線程掛起等待固定的時間間隔后,再次輪詢所述CPU核心對應(yīng)的每一個網(wǎng)卡隊列。
所述CPU核心在確定某一網(wǎng)卡隊列存在新的數(shù)據(jù)包后,可以采用突發(fā)收包模式讀取該網(wǎng)卡隊列中的數(shù)據(jù)包。其中,突發(fā)收包模式是指,網(wǎng)絡(luò)設(shè)備運行的上層應(yīng)用給網(wǎng)卡驅(qū)動傳一個參數(shù)s,網(wǎng)卡驅(qū)動給上層應(yīng)用返回m個數(shù)據(jù)包,其中m的取值范圍是[0,s]。值得說明的是,網(wǎng)絡(luò)設(shè)備的上層應(yīng)用可以理解為運行在CPU上的應(yīng)用,網(wǎng)卡驅(qū)動可以理解為網(wǎng)卡的一部分,為了描述方便,本公開直接描述CPU核心從網(wǎng)卡的網(wǎng)卡隊列讀取數(shù)據(jù)。
因此,上述步驟S201中,在所述CPU核心的收包線程每次輪詢到第一網(wǎng)卡隊列時,從所述第一網(wǎng)卡隊列中讀取m個數(shù)據(jù)包,所述第一網(wǎng)卡隊列是所述CPU核心對應(yīng)的網(wǎng)卡隊列中的任一網(wǎng)卡隊列,m是大于0且小于或等于s的正整數(shù),s是所述CPU核心能夠一次讀取的數(shù)據(jù)包的最大數(shù)量。具體地,若網(wǎng)卡隊列中新的數(shù)據(jù)包的數(shù)量大于或等于s,則所述CPU核心的收包線程讀取s個數(shù)據(jù)包,若網(wǎng)卡隊列中新的數(shù)據(jù)包的數(shù)量小于s,則所述CPU核心的收包線程讀取所述網(wǎng)卡隊列中的所有新的數(shù)據(jù)包。
進一步地,上述步驟S202可以是在每次輪詢后,根據(jù)所述CPU核心從每個網(wǎng)卡隊列讀取到的數(shù)據(jù)包的數(shù)量,迭代計算所述CPU核心對應(yīng)的每個網(wǎng)卡隊列的負載。
具體地,在所述CPU核心第n次輪詢讀取所述第一網(wǎng)卡隊列的數(shù)據(jù)包后,采用如下公式計算所述第一網(wǎng)卡隊列的負載:
ln=(1-W)×ln-1+W×m;
其中,bn表示所述第一網(wǎng)卡隊列在第n次輪詢之后的負載;W為預(yù)設(shè)的權(quán)值,W的取值范圍是(0,1);當n等于1時,l0=0,l1是第一次負載計算的中間值,當n大于1時,ln-1是第n-1次迭代過程的中間值,ln是第n次負載計算的中間值。
由上述公式可知,bn的取值范圍是[0,1],bn值越大,表示該網(wǎng)卡隊列負載強度越高。并且,迭代多次計算后,bn反映的是一段時間以來,網(wǎng)卡隊列的繁忙程度,網(wǎng)絡(luò)數(shù)據(jù)的突發(fā)或者短暫擁塞不會使得網(wǎng)卡隊列繁忙程度bn有顯著變化。
W具體是可由設(shè)備管理員配置的權(quán)值,其默認值可以是0.5,其中,W越大,bn的反應(yīng)越快,同時過濾短暫擁塞的能力也越差,網(wǎng)絡(luò)管理員可以根據(jù)網(wǎng)絡(luò)流量特征選擇合適的數(shù)值。
進一步地,上述步驟S203包括:每次輪詢后,若計算得到的任何一個網(wǎng)卡隊列的負載大于或等于第一閾值,則提升所述CPU核心的頻率。
也就是說,在第一次輪詢后,根據(jù)CPU核心從網(wǎng)卡隊列獲取到的數(shù)據(jù)包的數(shù)量,計算每一個網(wǎng)卡隊列的負載b1,若任何一個網(wǎng)卡隊列的負載b1大于或等于第一閾值,則提升所述CPU核心的頻率。第一次輪詢之后,該CPU核心在后續(xù)的每次輪詢之后,根據(jù)從網(wǎng)卡隊列獲取到的數(shù)據(jù)包的數(shù)量,進行一次迭代計算,得到本次輪詢后表示該網(wǎng)卡隊列的負載bn,若有任何一個網(wǎng)卡隊列在本次輪詢結(jié)束后計算得到的bn大于或等于第一閾值,則提升所述CPU核心的頻率。其中,該第一閾值可以是預(yù)先設(shè)置的大于0小于或等于1的數(shù)值。
由于只要任何一個網(wǎng)卡隊列的負載過大,CPU核心即可提升頻率,因此實現(xiàn)了網(wǎng)卡負載增大時,CPU核心迅速提升頻率的技術(shù)效果,充分發(fā)揮了CPU核心的性能,避免了數(shù)據(jù)擁塞。
在本發(fā)明實施例的一種可能的實現(xiàn)方式中,上述步驟S203具體包括:每次輪詢后,若計算得到的任何一個網(wǎng)卡隊列的負載大于或等于閾值T1,則將所述CPU核心的頻率提升一級,若計算得到的任何一個網(wǎng)卡隊列的負載大于或等于閾值T2,則將所述CPU核心的頻率提升至100%,其中,T2大于T1。
上述步驟S203還可以包括:連續(xù)N次輪詢后,若每次計算得到的所述CPU核心對應(yīng)的所有網(wǎng)卡隊列的負載均小于第二閾值,則降低所述CPU核心的頻率。
示例地,在N次輪詢中,若每次計算得到的所述CPU核心對應(yīng)的所有網(wǎng)卡隊列的負載均小于T3,則將所述CPU核心的頻率降低一級。由于所有網(wǎng)卡隊列負載在N次輪詢中均小于T3,才降低CPU核心頻率一級,因此實現(xiàn)了網(wǎng)卡負載減小時,慢慢降低CPU核心的頻率的技術(shù)效果,保證了在不影響CPU核心讀取數(shù)據(jù)的性能的前提下,節(jié)省電力資源,實現(xiàn)綠色節(jié)能。
下面以圖1所示的網(wǎng)絡(luò)設(shè)備為例,對本公開的技術(shù)方案進行詳細的說明,如圖3所示,本公開提供的一種調(diào)整CPU頻率的方法包括如下步驟:
S301、CPU核心1011采用收包線程1對網(wǎng)卡隊列1和網(wǎng)卡隊列2輪詢讀取數(shù)據(jù)包。
其中,網(wǎng)卡隊列1和網(wǎng)卡隊列2是網(wǎng)卡102中預(yù)先與CPU核心1011建立對應(yīng)關(guān)系的網(wǎng)卡隊列。
值得說明的是,圖3是以CPU核心1011為例進行說明,在具體實施時,網(wǎng)絡(luò)設(shè)備100中的所有CPU核心均可以執(zhí)行圖3所示的方法步驟,在此種情況下,本發(fā)明實施例可以在初始化時,建立CPU核心1011與收包線程1的親和關(guān)系,CPU核心1012與收包線程2的親和關(guān)系,CPU核心1013與收包線程3的親和關(guān)系,CPU核心1014與收包線程4的親和關(guān)系。并且建立CPU核心1011與網(wǎng)卡隊列1和網(wǎng)卡隊列2的對應(yīng)關(guān)系,CPU核心1012與網(wǎng)卡隊列3和網(wǎng)卡隊列4的對應(yīng)關(guān)系,CPU核心1013與網(wǎng)卡隊列5和網(wǎng)卡隊列6的對應(yīng)關(guān)系,以及CPU核心1014與網(wǎng)卡隊列7和網(wǎng)卡隊列8的對應(yīng)關(guān)系。
并且,具體的數(shù)據(jù)包讀取可以參照上述對突發(fā)收包模式的描述,此處不再贅述。
S302、在本次輪詢后,CPU核心1011根據(jù)從網(wǎng)卡隊列1中讀取到的數(shù)據(jù)包的數(shù)量迭代計算網(wǎng)卡隊列1的負載,根據(jù)從網(wǎng)卡隊列2中讀取到的數(shù)據(jù)包的數(shù)量迭代計算網(wǎng)卡隊列2的負載。
具體參照上述對步驟S202的描述,此處不再贅述。
S303、若網(wǎng)卡隊列1和/或網(wǎng)卡隊列2的負載大于或等于閾值T1,則將所述CPU核心1011的頻率提升一個等級。
進一步地,執(zhí)行步驟S305。
S304、若網(wǎng)卡隊列1和/或網(wǎng)卡隊列2的負載大于或等于閾值T2,則將所述CPU核心1011的頻率提升至100%。
其中,T2大于T1。
進一步地,執(zhí)行步驟S305。
值得說明的是,若網(wǎng)卡隊列1和網(wǎng)卡隊列2的負載均小于T1,也可以進一步執(zhí)行步驟S305。
S305、對輪詢次數(shù)加1,并判斷當前輪詢次數(shù)是否等于N。
進一步地,當前輪詢次數(shù)等于N,則執(zhí)行步驟S306至步驟S307,當前輪詢次數(shù)小于N時,則執(zhí)行步驟S308。
S306、若網(wǎng)卡隊列1和網(wǎng)卡隊列2在每次輪詢后的負載均小于閾值T3,則將所述CPU核心1011的頻率降低一個等級。
S307、對輪詢次數(shù)置0。
進一步地,執(zhí)行步驟S308。
S308、啟動定時器,判斷所述定時器是否超時。
具體地,在確定所述定時器超時的情況下,執(zhí)行步驟S301,實現(xiàn)上述步驟的循環(huán)執(zhí)行。
采用上述方案,由于網(wǎng)卡中的每一網(wǎng)卡隊列只對應(yīng)一個CPU核心收取數(shù)據(jù)包,因此,針對所述CPU核心收取數(shù)據(jù)包的數(shù)量即可對網(wǎng)卡隊列的負載進行計算,從而根據(jù)網(wǎng)卡隊列的負載調(diào)整CPU核心的頻率。這樣,在網(wǎng)卡隊列的負載較低時,圖3所示的方法可以慢慢降低CPU頻率,實現(xiàn)綠色節(jié)能;在網(wǎng)卡隊列負載較高時,圖3所示的方法可以迅速提高CPU頻率,使得CPU的性能能夠得到有效發(fā)揮,避免數(shù)據(jù)擁塞,解決了CPU始終高功耗運行,浪費了電力資源的問題。
本公開實施例還提供一種調(diào)整CPU頻率的裝置400,用于實施上述方法實施例提供的一種調(diào)整CPU頻率的方法,其中,所述CPU包括至少一個CPU核心,每一所述CPU核心對應(yīng)網(wǎng)卡中的至少一個網(wǎng)卡隊列,所述網(wǎng)卡中的每一網(wǎng)卡隊列對應(yīng)一個CPU核心,如圖4所示,所述裝置400包括:
輪詢讀取單元401,用于根據(jù)所述CPU核心的收包線程采用輪詢方式讀取所述CPU核心對應(yīng)的網(wǎng)卡隊列中的數(shù)據(jù);
負載確定單元402,用于根據(jù)所述CPU核心從每個網(wǎng)卡隊列讀取到的數(shù)據(jù)包的數(shù)量,確定所述CPU核心對應(yīng)的每個網(wǎng)卡隊列的負載;
頻率調(diào)整單元403,用于根據(jù)所述CPU核心對應(yīng)的每個網(wǎng)卡隊列的負載調(diào)整所述CPU核心的頻率。
采用上述裝置,由于網(wǎng)卡中的每一網(wǎng)卡隊列只對應(yīng)一個CPU核心收取數(shù)據(jù)包,因此,針對所述CPU核心收取數(shù)據(jù)包的數(shù)量即可對網(wǎng)卡隊列的負載進行計算,從而根據(jù)網(wǎng)卡隊列的負載調(diào)整CPU核心的頻率。這樣,在網(wǎng)卡隊列的負載較低時,降低CPU頻率,實現(xiàn)綠色節(jié)能;在網(wǎng)卡隊列負載較高時,提高CPU頻率,使得CPU的性能能夠得到有效發(fā)揮,避免數(shù)據(jù)擁塞,解決了CPU始終高功耗運行,浪費了電力資源的問題。
可選地,所述輪詢讀取單元401用于:在所述CPU核心的收包線程每次輪詢到第一網(wǎng)卡隊列時,從所述第一網(wǎng)卡隊列中讀取m個數(shù)據(jù)包,所述第一網(wǎng)卡隊列是所述CPU核心對應(yīng)的網(wǎng)卡隊列中的任一網(wǎng)卡隊列,m是大于0且小于或等于s的正整數(shù),s是所述CPU核心能夠一次讀取的數(shù)據(jù)包的最大數(shù)量。
可選地,所述負載確定單元402用于:在所述CPU核心第n次輪詢讀取所述第一網(wǎng)卡隊列的數(shù)據(jù)包后,采用如下公式計算所述第一網(wǎng)卡隊列的負載:
ln=(1-W)×ln-1+W×m;
其中,bn表示所述第一網(wǎng)卡隊列在第n次輪詢之后的負載;W為預(yù)設(shè)的權(quán)值,W的取值范圍是(0,1);當n等于1時,l0=0,l1是第一次負載計算的中間值,當n大于1時,ln-1是第n-1次迭代過程的中間值,ln是第n次負載計算的中間值。
bn的取值范圍是[0,1],bn值越大,表示該網(wǎng)卡隊列負載強度越高。并且,迭代多次計算后,bn反映的是一段時間以來,網(wǎng)卡隊列的繁忙程度,網(wǎng)絡(luò)數(shù)據(jù)的突發(fā)或者短暫擁塞不會使得網(wǎng)卡隊列繁忙程度bn有顯著變化。
W具體是可由設(shè)備管理員配置的權(quán)值,其默認值可以是0.5,其中,W越大,bn的反應(yīng)越快,同時過濾短暫擁塞的能力也越差,網(wǎng)絡(luò)管理員可以根據(jù)網(wǎng)絡(luò)流量特征選擇合適的數(shù)值。
可選地,所述頻率調(diào)整單元403用于:在每次輪詢后,計算得到的任何一個網(wǎng)卡隊列的負載大于或等于第一閾值時,提升所述CPU核心的頻率。
示例地,所述頻率調(diào)整單元403具體用于,每次輪詢后,若計算得到的任何一個網(wǎng)卡隊列的負載大于或等于閾值T1,則將所述CPU核心的頻率提升一級,若計算得到的任何一個網(wǎng)卡隊列的負載大于或等于閾值T2,則將所述CPU核心的頻率提升至100%,其中,T2大于T1。
由于只要任何一個網(wǎng)卡隊列的負載過大,CPU核心即可提升頻率,因此實現(xiàn)了網(wǎng)卡負載增大時,CPU核心迅速提升頻率的技術(shù)效果,充分發(fā)揮了CPU核心的性能,避免了數(shù)據(jù)擁塞。
可選地,所述頻率調(diào)整單元403用于:在連續(xù)N次輪詢后,每次計算得到的所述CPU核心對應(yīng)的所有網(wǎng)卡隊列的負載均小于第二閾值時,降低所述CPU核心的頻率。
示例地,在N次輪詢中,若每次計算得到的所述CPU核心對應(yīng)的所有網(wǎng)卡隊列的負載均小于T3,則將所述CPU核心的頻率降低一級。由于所有網(wǎng)卡隊列負載在N次輪詢中均小于T3,才降低CPU核心頻率一級,因此實現(xiàn)了網(wǎng)卡負載減小時,慢慢降低CPU核心的頻率的技術(shù)效果,保證了在不影響CPU核心讀取數(shù)據(jù)的性能的前提下,節(jié)省電力資源,實現(xiàn)綠色節(jié)能。
本領(lǐng)域技術(shù)人員應(yīng)該知悉,以上對裝置400的單元劃分,僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式。并且,上述各功能單元的物理實現(xiàn)也可能有多種實現(xiàn)方式,本發(fā)明對此不做限定。
另外,為描述的方便和簡潔,上述描述的調(diào)整CPU頻率的裝置的各單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,此處不再贅述。
在本申請所提供的實施例中,應(yīng)該理解到,所公開的裝置和方法,可以通過其它的方式實現(xiàn)。例如,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。
上述以軟件功能單元的形式實現(xiàn)的集成的單元,可以存儲在一個計算機可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、RAM(Random Access Memory,隨機存取存儲器)、磁碟或者光盤等各種可以存儲數(shù)據(jù)的介質(zhì)。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以權(quán)利要求的保護范圍為準。