專利名稱:一種實(shí)現(xiàn)cpu節(jié)能的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種實(shí)現(xiàn)CPU節(jié)能的方法及裝置,尤其涉及一種在多核系統(tǒng)模式下實(shí) 現(xiàn)CPU節(jié)能的方法及裝置。
背景技術(shù):
節(jié)能減排已經(jīng)成為國(guó)際政治與經(jīng)濟(jì)中的一大熱點(diǎn)問(wèn)題,由于廣泛應(yīng)用而引起的通 信設(shè)備的節(jié)能問(wèn)題則是熱點(diǎn)問(wèn)題中的熱點(diǎn)。典型的電信環(huán)境是在一組機(jī)框中設(shè)有一組單 板,每個(gè)單板上有多個(gè)運(yùn)行實(shí)體,這些實(shí)體可以是CPU、核、VCPU或者超線程(邏輯核)。一 個(gè)CPU可以有多個(gè)核,一個(gè)核可能會(huì)有一個(gè)或者多個(gè)硬線程。一個(gè)OS (Operation System, 操作系統(tǒng))實(shí)例會(huì)部署到一個(gè)或者多個(gè)運(yùn)行實(shí)體。其中的CPU節(jié)能可以通過(guò)逐級(jí)調(diào)節(jié)頻率 達(dá)到低頻以降低功耗來(lái)實(shí)現(xiàn)。已有的OS實(shí)例主要包括SMP (Symmetric multiprocessing,對(duì)稱多處理器)和 AMP (Asymmetric multiprocessing,非對(duì)稱多處理器)。對(duì)于SMP,由于只有一個(gè)OS實(shí)例, 該OS實(shí)例可以同時(shí)管理所有的CPU內(nèi)核,能夠定時(shí)監(jiān)控CPU占有率,當(dāng)發(fā)現(xiàn)過(guò)高或者過(guò)低 時(shí)就可以調(diào)整CPU頻率以達(dá)到節(jié)能的目的。對(duì)于AMP部署模式的多核系統(tǒng)以及采用AMP和 SMP混合部署模式的多核系統(tǒng),其主要特征是在一個(gè)域內(nèi)運(yùn)行有多個(gè)操作系統(tǒng)實(shí)例,每個(gè) OS實(shí)例都可以獨(dú)立控制自己的CPU主頻,其中一個(gè)域中的所有硬線程共用同一個(gè)CPU頻率。 若在一個(gè)域內(nèi)運(yùn)行多個(gè)OS實(shí)例,當(dāng)每個(gè)OS實(shí)例分別去控制CPU頻率時(shí)就會(huì)發(fā)生沖突。在實(shí)現(xiàn)本發(fā)明過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問(wèn)題現(xiàn)有的CPU節(jié)能技術(shù)中,對(duì)于多核系統(tǒng),無(wú)法通過(guò)調(diào)整CPU的頻率以實(shí)現(xiàn)節(jié)能。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供了一種實(shí)現(xiàn)CPU節(jié)能的方法及裝置,能夠在多核系統(tǒng)下同步 CPU頻率值,以實(shí)現(xiàn)CPU的節(jié)能。一種實(shí)現(xiàn)CPU節(jié)能的方法,包括獲取每個(gè)域中所有觸發(fā)調(diào)頻的線程的CPU占有率及所屬的域;在所述觸發(fā)調(diào)頻的線程所屬的域中,根據(jù)所述觸發(fā)調(diào)頻的線程的CPU占有率計(jì)算 需要調(diào)整的CPU目標(biāo)頻率;根據(jù)所述CPU目標(biāo)頻率計(jì)算定時(shí)器參數(shù)并設(shè)置所述觸發(fā)調(diào)頻的線程的CPU頻率值。一種實(shí)現(xiàn)CPU節(jié)能的裝置,包括域獲取單元,用于獲取每個(gè)域中所有觸發(fā)調(diào)頻的線程的CPU占有率及所屬的域;頻率計(jì)算單元,用于在所述觸發(fā)調(diào)頻的線程所屬的域中,根據(jù)所述域獲取單元獲 取的觸發(fā)調(diào)頻的線程的CPU占有率計(jì)算需要調(diào)整的CPU目標(biāo)頻率;頻率調(diào)整單元,用于根據(jù)所述頻率計(jì)算單元獲得的CPU目標(biāo)頻率計(jì)算定時(shí)器參數(shù) 并設(shè)置所述觸發(fā)調(diào)頻的線程的CPU頻率值。
由上述本發(fā)明的實(shí)施例提供的技術(shù)方案可以看出,根據(jù)每個(gè)觸發(fā)調(diào)頻的線程的 CPU占有率對(duì)每個(gè)域中的線程的CPU頻率值進(jìn)行同步,進(jìn)而在多核系統(tǒng)下同步CPU頻率值, 從而實(shí)現(xiàn)了 CPU的節(jié)能。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用 的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本 領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的 附圖。圖1為本發(fā)明的實(shí)施例提供的AMP和SMP混合部署模式的結(jié)構(gòu)示意圖;圖2為本發(fā)明的實(shí)施例提供的在多核系統(tǒng)模式下實(shí)現(xiàn)CPU節(jié)能的方法流程示意 圖;圖3為本發(fā)明的實(shí)施例提供的初始化配置CpuFreql線程的時(shí)序圖;圖4為本發(fā)明的實(shí)施例提供的CpuFreql線程計(jì)算CPU目標(biāo)頻率的時(shí)序圖;圖5為本發(fā)明的實(shí)施例提供的CpuGoverl. 1觸發(fā)調(diào)頻流程的調(diào)整CPU頻率的時(shí)序 圖;圖6為本發(fā)明的實(shí)施例提供的CpuGoverl. 2觸發(fā)調(diào)頻流程的調(diào)整CPU頻率的時(shí)序 圖;圖7為本發(fā)明的實(shí)施例提供的CpuG0Ver2. 1觸發(fā)調(diào)頻流程的調(diào)整CPU頻率的時(shí)序 圖;圖8為本發(fā)明的實(shí)施例提供的CpuG0Ver2. 2觸發(fā)調(diào)頻流程的調(diào)整CPU頻率的時(shí)序 圖;圖9為本發(fā)明的實(shí)施例提供的CpuGoverf觸發(fā)調(diào)頻流程的調(diào)整CPU頻率的時(shí)序 圖;圖10為本發(fā)明的實(shí)施例提供的實(shí)現(xiàn)CPU節(jié)能的裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于 本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明的實(shí)施例提出的是一種實(shí)現(xiàn)CPU節(jié)能的方法,包 括獲取每個(gè)域中所有觸發(fā)調(diào)頻的線程的CPU占有率及所屬的域;在所述觸發(fā)調(diào)頻的線程所 屬的域中,根據(jù)所述觸發(fā)調(diào)頻的線程的CPU占有率計(jì)算需要調(diào)整的CPU目標(biāo)頻率;根據(jù)所述 CPU目標(biāo)頻率計(jì)算定時(shí)器參數(shù)并設(shè)置所述觸發(fā)調(diào)頻的線程的CPU頻率值。圖1所示的是一 種AMP和SMP混合部署模式的多核系統(tǒng),深色的圓和淺色的圓分別表示物理屬性一致的核, 該核被作為一個(gè)天然域(深色為域1、淺色為域2),因?yàn)橛騼?nèi)所有的硬線程共用同一 CPU主 頻。在每個(gè)域內(nèi)都有一個(gè)深色外環(huán)的硬線程(圖1中的pthreadl和pthread 5),該硬線程 表示域內(nèi)的主硬線程,其它硬線程為從硬線程。具體地,依據(jù)圖1的部署模式,每個(gè)OS實(shí)例 都有硬線程CpuFreq,CpuFreq依據(jù)跨域個(gè)數(shù)創(chuàng)建cpuGover線程,于是有如下的關(guān)系
0S1 包含 CpuFreql,CpuFreql 包括 CpuGover 1. 1 (包括 pthreadl、3 和 4,屬于域 1) 和 CpuGover 1. 2 (包括 pthread6 和 7,屬于域 2);0S2 包含 CpuFreq2,CpuFreq2 包括 CpuGover2. 1 (包括 pthread2,屬于域 1)和 CpuGover2. 2(包括 pthread5,屬于域 2);0S3 包含 CpuFreq3,CpuFreq3 包括 CpuGover3 (包括 pthread8,屬于域 2)。CpuGover線程主要負(fù)責(zé)CPU占有率的監(jiān)控及獲取,然后上報(bào)給自己的管理者 CpuFreq, CpuGover不存在分布式概念,在一個(gè)OS實(shí)例下只能看到自己,看不到0S實(shí)例內(nèi) 部的其它Gover,也看不到其它0S實(shí)例的Gover。CpuFreq負(fù)責(zé)收集CPU占有率,然后對(duì)CPU占有率就行分析處理;并處理結(jié)果同步 給主CpuFreq,各個(gè)CpuFreq自己進(jìn)行定時(shí)器參數(shù)的調(diào)整,最后由主CpuFreq進(jìn)行頻率設(shè)置。由于CpuFreq是分布式存在,因此相互之間需要同步信息。其中對(duì)于CPU占有率 的處理是在多個(gè)CPU占有率數(shù)值中依據(jù)配置的策略選擇合適的CPU占有率,然后硬件支持 特征設(shè)置頻率更新定時(shí)器參數(shù),以保證時(shí)間與頻率的一致。下面按各個(gè)線程對(duì)CPU的頻率進(jìn)行調(diào)整的順序?qū)?shí)現(xiàn)CPU節(jié)能的方法作具體說(shuō) 明,如圖2所示,該方法具體可以包括步驟21,初始化配置硬線程CpuFreq。CpuFreq的身份確定和部署是通過(guò)配置完成的,配置信息包括公共信息和私有信 息,公共信息為單板上所有域的ID及每個(gè)域的CpuFreq的位置信息,私有信息為所在0S下 的域特征。配置好的CpuFreq可以創(chuàng)建CpuGover實(shí)例,因?yàn)橹С謩?dòng)態(tài)創(chuàng)建,所以CpuFreq 需要清除原有的CpuGover后注冊(cè)新的CpuGover,并啟動(dòng)對(duì)線程的監(jiān)控。具體的,以CpuFreql為例,在圖3中,CpuFreql首先注銷原有的cpugovernor并 停止原有的cpu gover線程,然后注冊(cè)新的cpu gover并在域中創(chuàng)建cpu gover實(shí)例及創(chuàng) 建cpu gover線程,創(chuàng)建的線程包括CpuGoverl. 1和CpuGoverl. 2,線程創(chuàng)建完成后啟動(dòng)對(duì) 每個(gè)線程的監(jiān)控。步驟22,獲取每個(gè)域中所有觸發(fā)調(diào)頻的線程的CPU占有率及所屬的域。按層次可以將CpuGover劃分為底層,將CpuFreq劃分為上層,在一個(gè)0S實(shí)例內(nèi)底 層可能有多個(gè)實(shí)例,上層將多個(gè)實(shí)例進(jìn)行匯聚整合為一個(gè)硬線程。同時(shí)還為每個(gè)線程設(shè)置 一個(gè)定時(shí)器,定時(shí)器的步長(zhǎng)可以CPU的占有率更新頻率為基準(zhǔn)。具體的,以CpuFreql為例,如圖4所示,如果定時(shí)器超時(shí),則CpuGoverl. 1和 CpuGoverl. 2會(huì)獲取自身的CPU占有率并向CpuFreql上報(bào),CpuFreql記錄各線程的CPU占 有率及根據(jù)各線程的配置信息獲取相應(yīng)的線程所屬的域。對(duì)于CpuGover何時(shí)上報(bào)CPU占有率可以設(shè)置一個(gè)門限值,當(dāng)CPU占有率的變化值 大于門限值時(shí),則CpuGover向CpuFreq上報(bào)CPU占有率,當(dāng)CPU占有率的變化值小于門限 值時(shí),則不上報(bào)CPU占有率,以減少不必要的消息流量。步驟23,在所述觸發(fā)調(diào)頻的線程所屬的域中,根據(jù)所述觸發(fā)調(diào)頻的線程的CPU占 有率計(jì)算需要調(diào)整的CPU目標(biāo)頻率。在計(jì)算CPU目標(biāo)頻率的過(guò)程中,首先選擇最高CPU占有率的線程進(jìn)行處理,計(jì)算出 所在0S實(shí)例的定時(shí)器參數(shù)。如果在CpuFreq無(wú)法獲取域的主CpuFreq的信息時(shí)將按照最 高頻率進(jìn)行處理。
具體的,以CpuFreql為例,如圖4所示,CpuFreql依據(jù)策略,根據(jù)CpuGoverl. 1和 CpuGoverl. 2的CPU占有率計(jì)算需要調(diào)整的CPU目標(biāo)頻率。所述的策略可以在初始化配置 到配置信息中,相應(yīng)的策略可以為蹄選CPU占有率并獲取CPU占有率對(duì)應(yīng)的標(biāo)稱CPU頻率。步驟24,在所述觸發(fā)調(diào)頻的線程所屬的域中掛起定時(shí)器。具體地,CpuFreql首先通知其它域的CpuFreq掛起定時(shí)器,當(dāng)其它域的CpuFreq掛 起定時(shí)器并向CpuFreql返回掛起響應(yīng)后,CpuFreql再掛起本域的定時(shí)器,這樣是為了最大 限度的使所有定時(shí)器的時(shí)間保持一致,同時(shí)也能提高調(diào)整CPU頻率的可靠性。步驟25,根據(jù)所述CPU目標(biāo)頻率計(jì)算定時(shí)器參數(shù)并設(shè)置所述觸發(fā)調(diào)頻的線程的 CPU頻率值。由于調(diào)整定時(shí)器的時(shí)候會(huì)調(diào)整到定時(shí)器的關(guān)鍵參數(shù)(例如對(duì)于tick值,若調(diào)整之 前定時(shí)器設(shè)定為每lOOtick觸發(fā)一個(gè)定時(shí)器檢查,調(diào)整之后可能會(huì)設(shè)定為200tick觸發(fā)一 個(gè)定時(shí)器檢查),因此在CPU頻率調(diào)整之前,可以根據(jù)OS實(shí)例的配置表中的CPU頻率和定時(shí) 器參數(shù)的對(duì)應(yīng)關(guān)系,選擇對(duì)應(yīng)的定時(shí)器參數(shù)作為更新的定時(shí)器參數(shù)。具體的,CpuFreql發(fā)送CPU目標(biāo)頻率給其它域的CpuFreq,每個(gè)CpuFreq都會(huì)根據(jù) CPU目標(biāo)頻率計(jì)算自己何時(shí)的定時(shí)器參數(shù)。計(jì)算出定時(shí)器參數(shù)后,通過(guò)調(diào)用CPU的驅(qū)動(dòng)程序 調(diào)整CPU的頻率值,在AMP和SMP混合部署模式的多核系統(tǒng)中還支持動(dòng)態(tài)加載。步驟26,重新啟動(dòng)定時(shí)器。為了保證AMP和SMP混合部署模式的多核系統(tǒng)的可靠性,在每次設(shè)置完CPU頻率 值之后,還要重啟定時(shí)器,這樣當(dāng)CPU的頻率調(diào)整失敗時(shí),可以放棄本次操作,待下次定時(shí) 器超時(shí)則重新調(diào)整CPU的頻率。進(jìn)一步地,在步驟25中,對(duì)于圖1所示的情況,存在相同0S實(shí)例中相同域的線程 調(diào)整CPU頻率、相同0S實(shí)例中不同域的線程調(diào)整CPU頻率、不同0S實(shí)例中不同域的線程調(diào) 整CPU頻率等情況,因此下面對(duì)這些情況進(jìn)行詳細(xì)說(shuō)明。CPU調(diào)頻實(shí)施例一如圖5所示,當(dāng)CpuGoverl. 1觸發(fā)調(diào)頻流程時(shí),會(huì)先上報(bào)到所屬0S實(shí)例的主硬線 程CpuFreql (相當(dāng)于圖1中的pthreadl),CpuFreql計(jì)算出需要調(diào)整的CPU目標(biāo)頻率后,向 域2的主硬線程CpUFreq2(相當(dāng)于圖1中的pthread5)發(fā)送掛起操作通知(由于觸發(fā)調(diào)頻 的線程所在的域1僅包括0S1和0S2兩個(gè)實(shí)例,因此僅由0S1和0S2的主硬線程進(jìn)行CPU 頻率調(diào)整)。當(dāng)CpuFreql和CpuFreq2都掛起當(dāng)前觸發(fā)的定時(shí)器后,CpuFreql調(diào)用CPU驅(qū) 動(dòng)程序設(shè)置CPU頻率并將該CPU頻率發(fā)送給CpuFreq〗。CpuFreql根據(jù)新的CPU頻率計(jì)算 并設(shè)置本地的定時(shí)器參數(shù),同時(shí)CpuFreq也根據(jù)自身的規(guī)則設(shè)置CpuGoverf. 1的定時(shí)器參 數(shù)(CpuGoverf. 1是0S1的處于域2中的線程,因此在0S1設(shè)置CPU頻率時(shí)也需要與之同 步,同步的操作由域2中的主硬線程CpuFreq完成)。設(shè)置完定時(shí)器參數(shù)后,CpuFreql和 CpuFreq2都重新觸發(fā)定時(shí)器,完成本次觸發(fā)調(diào)頻流程。CPU調(diào)頻實(shí)施例二如圖6所示,當(dāng)CpuGoverl. 2觸發(fā)調(diào)頻流程時(shí),會(huì)先上報(bào)到所屬0S實(shí)例的主硬線 程CpuFreql,CpuFreql將CPU頻率參數(shù)發(fā)送給域2的主硬線程CpuFreq2,CpuFreq2計(jì)算 出需要調(diào)整的CPU目標(biāo)頻率后,向域2的主硬線程CpuFreq和從硬線程CpuFreq發(fā)送掛起操作通知(由于觸發(fā)調(diào)頻的線程所在的域2包括0S1、0S2和0S3共三個(gè)實(shí)例,因此需要 0S1和0S2的主硬線程以及0S3的從硬線程進(jìn)行CPU頻率調(diào)整)。當(dāng)CpuFreql、CpuFreq2 和CpUFreq3都掛起當(dāng)前觸發(fā)的定時(shí)器后,CpUFreq2調(diào)用CPU驅(qū)動(dòng)程序設(shè)置CPU頻率并將該 CPU頻率發(fā)送給CpuFreql和CpuFreq3。CpuFreq2根據(jù)自身規(guī)則設(shè)置本地的定時(shí)器參數(shù), 同時(shí)CpuFreql根據(jù)自身的規(guī)則設(shè)置CpuGoverl. 2的定時(shí)器參數(shù),以及CpuFreq3根據(jù)新的 CPU頻率調(diào)整自己的定時(shí)器參數(shù)。設(shè)置完定時(shí)器參數(shù)后,CpuFreql、CpuFreq2和CpuFreq3 都重新觸發(fā)定時(shí)器,完成本次觸發(fā)調(diào)頻流程。CPU調(diào)頻實(shí)施例三如圖7所示,當(dāng)CpuG0Ver2. 1觸發(fā)調(diào)頻流程時(shí),會(huì)先上報(bào)到所屬OS實(shí)例的主硬線 程CpuFreq2,CpuFreq2將CPU頻率參數(shù)發(fā)送給域1的主硬線程CpuFreql,CpuFreql計(jì)算出 需要調(diào)整的CPU目標(biāo)頻率后,向域2的主硬線程CpUFreq2發(fā)送掛起操作通知,當(dāng)CpuFreql 和CpUFreq2都掛起當(dāng)前觸發(fā)的定時(shí)器后,CpuFreql調(diào)用CPU驅(qū)動(dòng)程序設(shè)置CPU頻率并將該 CPU頻率發(fā)送給CpuFreq2。CpuFreql根據(jù)自身規(guī)則設(shè)置本地的定時(shí)器參數(shù),同時(shí)CpuFreq2 根據(jù)新CPU頻率計(jì)算并設(shè)置CpuGoverf. 1的定時(shí)器參數(shù)。設(shè)置完定時(shí)器參數(shù)后,CpuFreql 和CpUFreq2都重新觸發(fā)定時(shí)器,完成本次觸發(fā)調(diào)頻流程。CPU調(diào)頻實(shí)施例四如圖8所示,當(dāng)CpuGoverf. 2觸發(fā)調(diào)頻流程時(shí),會(huì)先上報(bào)到所屬OS實(shí)例的主硬線 程CpuFreq2,CpuFreq2計(jì)算出需要調(diào)整的CPU目標(biāo)頻率后,向域1的主硬線程CpuFreq2及 域2的從硬線程CpuFreq3發(fā)送掛起操作通知。當(dāng)CpuFreql、CpuFreq2和CpuFreq3都掛 起當(dāng)前觸發(fā)的定時(shí)器后,CpUFreq2調(diào)用CPU驅(qū)動(dòng)程序設(shè)置CPU頻率并將該CPU頻率發(fā)送給 CpuFreq2和CpuFreq3。CpuFreql根據(jù)自身規(guī)則設(shè)置本地的定時(shí)器參數(shù),同時(shí)CpuFreq2也 根據(jù)新的CPU頻率計(jì)算并設(shè)置CpuGoverf. 2的定時(shí)器參數(shù),以及CpuFreq3根據(jù)新的CPU頻 率計(jì)算并設(shè)置自身的定時(shí)器參數(shù)。設(shè)置完定時(shí)器參數(shù)后,CpuFreql, CpuFreq2和CpuFreq3 都重新觸發(fā)定時(shí)器,完成本次觸發(fā)調(diào)頻流程。CPU調(diào)頻實(shí)施例五如圖9所示,當(dāng)CpuGoverf觸發(fā)調(diào)頻流程時(shí),會(huì)先上報(bào)到所屬0S實(shí)例的從硬線程 CpuFreq3(由于0S3在域2內(nèi)沒(méi)有主硬線程,因此只能先上報(bào)到從硬線程),CpuFreq3將 CPU頻率參數(shù)發(fā)送給所述域中的主硬線程CpUFreq2,CpUFreq2計(jì)算出需要調(diào)整的CPU目標(biāo) 頻率后,向CpuFreq2及CpuFreq3發(fā)送掛起操作通知。當(dāng)CpuFreql、CpuFreq2和CpuFreq3 都掛起當(dāng)前觸發(fā)的定時(shí)器后,CpUFreq2調(diào)用CPU驅(qū)動(dòng)程序設(shè)置CPU頻率并將該CPU頻率發(fā) 送給CpuFreql和CpuFreq3。CpuFreql和CpuFreq2根據(jù)自身規(guī)則設(shè)置本地的定時(shí)器參數(shù), 同時(shí)CpUFreq3也根據(jù)新的CPU頻率計(jì)算并設(shè)置CpuGoverf的定時(shí)器參數(shù)。設(shè)置完定時(shí)器 參數(shù)后,CpuFreql, CpuFreq2和CpuFreq3都重新觸發(fā)定時(shí)器,完成本次觸發(fā)調(diào)頻流程。本發(fā)明提供的實(shí)施例根據(jù)每個(gè)觸發(fā)調(diào)頻的線程的CPU占有率對(duì)對(duì)每個(gè)域中的線 程的CPU頻率值進(jìn)行同步,實(shí)現(xiàn)了在AMP部署模式的多核系統(tǒng)以及采用AMP和SMP混合部 署模式的多核系統(tǒng)下同步CPU頻率值,從而實(shí)現(xiàn)了 CPU的節(jié)能。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以 通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì) 中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory, ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory, RAM)等。本發(fā)明的實(shí)施例還提供了一種實(shí)現(xiàn)CPU節(jié)能的裝置,如圖10所示,具體可以包括 域獲取單元101、頻率計(jì)算單元102和頻率調(diào)整單元103,域獲取單元101用于獲取每個(gè)域 中所有觸發(fā)調(diào)頻的線程的CPU占有率及所屬的域;頻率計(jì)算單元102用于在所述觸發(fā)調(diào)頻 的線程所屬的域中,根據(jù)所述域獲取單元101獲取的觸發(fā)調(diào)頻的線程的CPU占有率計(jì)算需 要調(diào)整的CPU目標(biāo)頻率;頻率調(diào)整單元103用于根據(jù)所述頻率計(jì)算單元102獲得的CPU目 標(biāo)頻率計(jì)算定時(shí)器參數(shù)并設(shè)置所述觸發(fā)調(diào)頻的線程的CPU頻率值。進(jìn)一步地,在所述域獲取單元中可以包括監(jiān)測(cè)發(fā)送子單元,用于監(jiān)測(cè)每個(gè)域中所 有從線程的CPU占有率,若其中一個(gè)或多個(gè)從線程的CPU占有率的變化大于門限值,則發(fā)送 所述CPU占有率;在所述頻率計(jì)算單元中包括頻率獲取子單元,用于在每個(gè)域中所有觸發(fā) 調(diào)頻的線程的CPU占有率中選出CPU占有率的最大值,并根據(jù)0S實(shí)例的配置表中的CPU占 有率和CPU頻率的對(duì)應(yīng)關(guān)系選擇相應(yīng)的CPU頻率值作為CPU目標(biāo)頻率;在所述頻率調(diào)整單 元中包括定時(shí)器掛起子單元,用于在所述觸發(fā)調(diào)頻的線程所屬的域中掛起定時(shí)器。以及,當(dāng)不同域中不同的線程觸發(fā)調(diào)頻時(shí),在頻率調(diào)整單元103可以包括以下的 情況①、當(dāng)觸發(fā)調(diào)頻的線程與所屬0S實(shí)例的主硬線程在同一域中時(shí),在頻率調(diào)整單元 103包括第一定時(shí)器掛起子單元、第一頻率設(shè)置發(fā)送子單元、第一定時(shí)器參數(shù)設(shè)置子單元和 第一定時(shí)器觸發(fā)子單元,第一定時(shí)器掛起子單元用于當(dāng)觸發(fā)調(diào)頻的線程與0S實(shí)例的主硬 線程同在一個(gè)域時(shí),同時(shí)掛起當(dāng)前觸發(fā)的定時(shí)器與所述0S實(shí)例的其它線程所在域的定時(shí) 器;第一頻率設(shè)置發(fā)送子單元用于與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程調(diào)用CPU 驅(qū)動(dòng)程序設(shè)置CPU頻率,并將所述CPU頻率發(fā)送到所述0S實(shí)例的其它線程所在域;第一定 時(shí)器參數(shù)設(shè)置子單元用于與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程計(jì)算并設(shè)置本地 的定時(shí)器參數(shù),所述0S實(shí)例的其它線程所在域的主硬線程根據(jù)自身規(guī)則設(shè)置所述0S實(shí)例 的其它線程的定時(shí)器參數(shù);第一定時(shí)器觸發(fā)子單元用于將觸發(fā)調(diào)頻的線程所在域與所述 0S實(shí)例的其它線程所在域的定時(shí)器重新觸發(fā)。②、當(dāng)觸發(fā)調(diào)頻的線程與所屬0S實(shí)例的主硬線程不在同一域中時(shí),在頻率調(diào)整單 元103包括第二 CPU頻率參數(shù)發(fā)送子單元、第二定時(shí)器掛起子單元、第二頻率設(shè)置發(fā)送子單 元、第二定時(shí)器參數(shù)設(shè)置子單元和第二定時(shí)器觸發(fā)子單元,第二 CPU頻率參數(shù)發(fā)送子單元 用于當(dāng)觸發(fā)調(diào)頻的線程與0S實(shí)例的主硬線程不在同一個(gè)域時(shí),所述觸發(fā)調(diào)頻的線程所屬 0S實(shí)例的主硬線程將所述觸發(fā)調(diào)頻的線程的CPU頻率參數(shù)發(fā)送給所述觸發(fā)調(diào)頻的線程所 屬域的主硬線程;第二定時(shí)器掛起子單元用于同時(shí)掛起當(dāng)前觸發(fā)的定時(shí)器、所述0S實(shí)例的 其它線程所在域的定時(shí)器;第二頻率設(shè)置發(fā)送子單元用于與所述觸發(fā)調(diào)頻的線程同在一個(gè) 域的主硬線程調(diào)用CPU驅(qū)動(dòng)程序設(shè)置CPU頻率,并將所述CPU頻率發(fā)送到所述觸發(fā)調(diào)頻的 線程所在域;第二定時(shí)器參數(shù)設(shè)置子單元用于與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線 程根據(jù)自身規(guī)則計(jì)算并設(shè)置本地的定時(shí)器參數(shù),所述觸發(fā)調(diào)頻的線程所屬0S實(shí)例的主硬 線程計(jì)算并設(shè)置所述觸發(fā)調(diào)頻的定時(shí)器參數(shù);第二定時(shí)器觸發(fā)子單元用于將觸發(fā)調(diào)頻的線 程所在域與所述0S實(shí)例的其它線程所在域的定時(shí)器重新觸發(fā)。③、當(dāng)觸發(fā)調(diào)頻的線程所述的域中沒(méi)有0S實(shí)例的主硬線程時(shí),在頻率調(diào)整單元103包括第三CPU頻率參數(shù)發(fā)送子單元、第三定時(shí)器掛起子單元、第三頻率設(shè)置發(fā)送子單 元、第三定時(shí)器參數(shù)設(shè)置子單元和第三定時(shí)器觸發(fā)子單元,第三CPU頻率參數(shù)發(fā)送子單元 用于當(dāng)觸發(fā)調(diào)頻的線程在所屬域中不占有主硬線程時(shí),將CPU頻率參數(shù)發(fā)送給所述觸發(fā)調(diào) 頻的線程所屬OS實(shí)例的主硬線程;第三定時(shí)器掛起子單元用于同時(shí)掛起當(dāng)前觸發(fā)的定時(shí) 器、觸發(fā)調(diào)頻的線程所屬域中其它OS實(shí)例的線程的定時(shí)器;第三頻率設(shè)置發(fā)送子單元用于 與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程調(diào)用CPU驅(qū)動(dòng)程序設(shè)置CPU頻率,并將所述 CPU頻率發(fā)送到所述觸發(fā)調(diào)頻的線程所在域中其它OS實(shí)例的硬線程;第三定時(shí)器參數(shù)設(shè)置 子單元用于與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程根據(jù)新CPU頻率計(jì)算并設(shè)置本 地的定時(shí)器參數(shù),所述觸發(fā)調(diào)頻的線程所在域中其它OS實(shí)例的硬線程根據(jù)自身規(guī)則設(shè)置 本地的定時(shí)器參數(shù);第三定時(shí)器觸發(fā)子單元,用于將觸發(fā)調(diào)頻的線程所在域與所述觸發(fā)調(diào) 頻的線程所在域中其它OS實(shí)例的硬線程的定時(shí)器重新觸發(fā)。上述裝置中包含的各單元及子單元的功能已在之前的方法實(shí)施例中詳細(xì)敘述,在 本實(shí)施例中就不再敷述。本發(fā)明提供的實(shí)施例根據(jù)每個(gè)觸發(fā)調(diào)頻的線程的CPU占有率對(duì)對(duì)每個(gè)域中的線 程的CPU頻率值進(jìn)行同步,實(shí)現(xiàn)了在AMP部署模式的多核系統(tǒng)以及采用AMP和SMP混合部 署模式的多核系統(tǒng)下同步CPU頻率值,從而實(shí)現(xiàn)了 CPU的節(jié)能。以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此, 任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換, 都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍 為準(zhǔn)。
權(quán)利要求
1.一種實(shí)現(xiàn)CPU節(jié)能的方法,其特征在于,包括獲取每個(gè)域中所有觸發(fā)調(diào)頻的線程的CPU占有率及所屬的域;在所述觸發(fā)調(diào)頻的線程所屬的域中,根據(jù)所述觸發(fā)調(diào)頻的線程的CPU占有率計(jì)算需要 調(diào)整的CPU目標(biāo)頻率;根據(jù)所述CPU目標(biāo)頻率計(jì)算定時(shí)器參數(shù)并設(shè)置所述觸發(fā)調(diào)頻的線程的CPU頻率值。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述觸發(fā)調(diào)頻包括監(jiān)測(cè)每個(gè)域中所有從線程的CPU占有率,若其中一個(gè)或多個(gè)從線程的CPU占有率的變 化大于門限值,則發(fā)送所述CPU占有率。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述觸發(fā)調(diào)頻的線程的CPU占有率計(jì) 算需要調(diào)整的CPU目標(biāo)頻率包括在每個(gè)域中所有觸發(fā)調(diào)頻的線程的CPU占有率中選出CPU占有率的最大值,并根據(jù)操 作系統(tǒng)OS實(shí)例的配置表中的CPU占有率和CPU頻率的對(duì)應(yīng)關(guān)系選擇相應(yīng)的CPU頻率值作 為CPU目標(biāo)頻率。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在根據(jù)所述觸發(fā)調(diào)頻的線程的CPU占有率 計(jì)算需要調(diào)整的CPU目標(biāo)頻率之后還包括在所述觸發(fā)調(diào)頻的線程所屬的域中掛起定時(shí)器。
5.根據(jù)權(quán)利要求1至4任意一項(xiàng)所述的方法,其特征在于,設(shè)置所述觸發(fā)調(diào)頻的線程的 CPU頻率值包括當(dāng)觸發(fā)調(diào)頻的線程與OS實(shí)例的主硬線程同在一個(gè)域時(shí),同時(shí)掛起當(dāng)前觸發(fā)的定時(shí)器 與所述OS實(shí)例的其它線程所在域的定時(shí)器;與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程調(diào)用CPU驅(qū)動(dòng)程序設(shè)置CPU頻率,并將 所述CPU頻率發(fā)送到所述OS實(shí)例的其它線程所在域;與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程計(jì)算并設(shè)置本地的定時(shí)器參數(shù),所述OS 實(shí)例的其它線程所在域的主硬線程根據(jù)自身規(guī)則設(shè)置所述OS實(shí)例的其它線程的定時(shí)器參 數(shù);將觸發(fā)調(diào)頻的線程所在域與所述OS實(shí)例的其它線程所在域的定時(shí)器重新觸發(fā)。
6.根據(jù)權(quán)利要求1至4任意一項(xiàng)所述的方法,其特征在于,設(shè)置所述觸發(fā)調(diào)頻的線程的 CPU頻率值包括當(dāng)觸發(fā)調(diào)頻的線程與OS實(shí)例的主硬線程不在同一個(gè)域時(shí),所述觸發(fā)調(diào)頻的線程所屬 OS實(shí)例的主硬線程將所述觸發(fā)調(diào)頻的線程的CPU頻率參數(shù)發(fā)送給所述觸發(fā)調(diào)頻的線程所 屬域的主硬線程;同時(shí)掛起當(dāng)前觸發(fā)的定時(shí)器、所述OS實(shí)例的其它線程所在域的定時(shí)器;與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程調(diào)用CPU驅(qū)動(dòng)程序設(shè)置CPU頻率,并將 所述CPU頻率發(fā)送到所述觸發(fā)調(diào)頻的線程所在域;與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程根據(jù)自身規(guī)則計(jì)算并設(shè)置本地的定時(shí) 器參數(shù),所述觸發(fā)調(diào)頻的線程所屬OS實(shí)例的主硬線程計(jì)算并設(shè)置所述觸發(fā)調(diào)頻的定時(shí)器 參數(shù);將觸發(fā)調(diào)頻的線程所在域與所述OS實(shí)例的其它線程所在域的定時(shí)器重新觸發(fā)。
7.根據(jù)權(quán)利要求1至4任意一項(xiàng)所述的方法,其特征在于,設(shè)置所述觸發(fā)調(diào)頻的線程的CPU頻率值包括當(dāng)觸發(fā)調(diào)頻的線程在所屬域中不占有主硬線程時(shí),將CPU頻率參數(shù)發(fā)送給所述觸發(fā)調(diào) 頻的線程所屬OS實(shí)例的主硬線程;同時(shí)掛起當(dāng)前觸發(fā)的定時(shí)器、觸發(fā)調(diào)頻的線程所屬域中其它OS實(shí)例的線程的定時(shí)器; 與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程調(diào)用CPU驅(qū)動(dòng)程序設(shè)置CPU頻率,并將 所述CPU頻率發(fā)送到所述觸發(fā)調(diào)頻的線程所在域中其它OS實(shí)例的硬線程;與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程根據(jù)新CPU頻率計(jì)算并設(shè)置本地的定 時(shí)器參數(shù),所述觸發(fā)調(diào)頻的線程所在域中其它OS實(shí)例的硬線程根據(jù)自身規(guī)則設(shè)置本地的 定時(shí)器參數(shù);將觸發(fā)調(diào)頻的線程所在域與所述觸發(fā)調(diào)頻的線程所在域中其它OS實(shí)例的硬線程的定 時(shí)器重新觸發(fā)。
8.一種實(shí)現(xiàn)CPU節(jié)能的裝置,其特征在于,包括域獲取單元,用于獲取每個(gè)域中所有觸發(fā)調(diào)頻的線程的CPU占有率及所屬的域; 頻率計(jì)算單元,用于在所述觸發(fā)調(diào)頻的線程所屬的域中,根據(jù)所述域獲取單元獲取的 觸發(fā)調(diào)頻的線程的CPU占有率計(jì)算需要調(diào)整的CPU目標(biāo)頻率;頻率調(diào)整單元,用于根據(jù)所述頻率計(jì)算單元獲得的CPU目標(biāo)頻率計(jì)算定時(shí)器參數(shù)并設(shè) 置所述觸發(fā)調(diào)頻的線程的CPU頻率值。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,在所述域獲取單元中包括監(jiān)測(cè)發(fā)送子單元,用于監(jiān)測(cè)每個(gè)域中所有從線程的CPU占有率,若其中一個(gè)或多個(gè)從 線程的CPU占有率的變化大于門限值,則發(fā)送所述CPU占有率。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,在所述頻率計(jì)算單元中包括頻率獲取子單元,用于在每個(gè)域中所有觸發(fā)調(diào)頻的線程的CPU占有率中選出CPU占有 率的最大值,并根據(jù)操作系統(tǒng)OS實(shí)例的配置表中的CPU占有率和CPU頻率的對(duì)應(yīng)關(guān)系選擇 相應(yīng)的CPU頻率值作為CPU目標(biāo)頻率。
11.根據(jù)權(quán)利要求8所述的裝置,其特征在于,在所述頻率調(diào)整單元中包括 定時(shí)器掛起子單元,用于在所述觸發(fā)調(diào)頻的線程所屬的域中掛起定時(shí)器。
12.根據(jù)權(quán)利要求8至11任意一項(xiàng)所述的裝置,其特征在于,在所述頻率調(diào)整單元中包括第一定時(shí)器掛起子單元,用于當(dāng)觸發(fā)調(diào)頻的線程與OS實(shí)例的主硬線程同在一個(gè)域時(shí), 同時(shí)掛起當(dāng)前觸發(fā)的定時(shí)器與所述OS實(shí)例的其它線程所在域的定時(shí)器;第一頻率設(shè)置發(fā)送子單元,用于與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程調(diào)用 CPU驅(qū)動(dòng)程序設(shè)置CPU頻率,并將所述CPU頻率發(fā)送到所述OS實(shí)例的其它線程所在域;第一定時(shí)器參數(shù)設(shè)置子單元,用于與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程計(jì)算 并設(shè)置本地的定時(shí)器參數(shù),所述OS實(shí)例的其它線程所在域的主硬線程根據(jù)自身規(guī)則設(shè)置 所述OS實(shí)例的其它線程的定時(shí)器參數(shù);第一定時(shí)器觸發(fā)子單元,用于將觸發(fā)調(diào)頻的線程所在域與所述OS實(shí)例的其它線程所 在域的定時(shí)器重新觸發(fā)。
13.根據(jù)權(quán)利要求8至11任意一項(xiàng)所述的裝置,其特征在于,在所述頻率調(diào)整單元中還 包括第二 CPU頻率參數(shù)發(fā)送子單元,用于當(dāng)觸發(fā)調(diào)頻的線程與OS實(shí)例的主硬線程不在同一 個(gè)域時(shí),所述觸發(fā)調(diào)頻的線程所屬OS實(shí)例的主硬線程將所述觸發(fā)調(diào)頻的線程的CPU頻率參 數(shù)發(fā)送給所述觸發(fā)調(diào)頻的線程所屬域的主硬線程;第二定時(shí)器掛起子單元,用于同時(shí)掛起當(dāng)前觸發(fā)的定時(shí)器、所述OS實(shí)例的其它線程所 在域的定時(shí)器;第二頻率設(shè)置發(fā)送子單元,用于與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程調(diào)用 CPU驅(qū)動(dòng)程序設(shè)置CPU頻率,并將所述CPU頻率發(fā)送到所述觸發(fā)調(diào)頻的線程所在域;第二定時(shí)器參數(shù)設(shè)置子單元,用于與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程根據(jù) 自身規(guī)則計(jì)算并設(shè)置本地的定時(shí)器參數(shù),所述觸發(fā)調(diào)頻的線程所屬OS實(shí)例的主硬線程計(jì) 算并設(shè)置所述觸發(fā)調(diào)頻的定時(shí)器參數(shù);第二定時(shí)器觸發(fā)子單元,用于將觸發(fā)調(diào)頻的線程所在域與所述OS實(shí)例的其它線程所 在域的定時(shí)器重新觸發(fā)。
14.根據(jù)權(quán)利要求8至11任意一項(xiàng)所述的裝置,其特征在于,在所述頻率調(diào)整單元中還 包括第三CPU頻率參數(shù)發(fā)送子單元,用于當(dāng)觸發(fā)調(diào)頻的線程在所屬域中不占有主硬線程 時(shí),將CPU頻率參數(shù)發(fā)送給所述觸發(fā)調(diào)頻的線程所屬OS實(shí)例的主硬線程;第三定時(shí)器掛起子單元,用于同時(shí)掛起當(dāng)前觸發(fā)的定時(shí)器、觸發(fā)調(diào)頻的線程所屬域中 其它OS實(shí)例的線程的定時(shí)器;第三頻率設(shè)置發(fā)送子單元,用于與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程調(diào)用 CPU驅(qū)動(dòng)程序設(shè)置CPU頻率,并將所述CPU頻率發(fā)送到所述觸發(fā)調(diào)頻的線程所在域中其它 OS實(shí)例的硬線程;第三定時(shí)器參數(shù)設(shè)置子單元,用于與所述觸發(fā)調(diào)頻的線程同在一個(gè)域的主硬線程根據(jù) 新CPU頻率計(jì)算并設(shè)置本地的定時(shí)器參數(shù),所述觸發(fā)調(diào)頻的線程所在域中其它OS實(shí)例的硬 線程根據(jù)自身規(guī)則設(shè)置本地的定時(shí)器參數(shù);第三定時(shí)器觸發(fā)子單元,用于將觸發(fā)調(diào)頻的線程所在域與所述觸發(fā)調(diào)頻的線程所在域 中其它OS實(shí)例的硬線程的定時(shí)器重新觸發(fā)。
全文摘要
一種實(shí)現(xiàn)CPU節(jié)能的方法及裝置,相應(yīng)的方法包括獲取每個(gè)域中所有觸發(fā)調(diào)頻的線程的CPU占有率及所屬的域;在所述觸發(fā)調(diào)頻的線程所屬的域中,根據(jù)所述觸發(fā)調(diào)頻的線程的CPU占有率計(jì)算需要調(diào)整的CPU目標(biāo)頻率;根據(jù)所述CPU目標(biāo)頻率計(jì)算定時(shí)器參數(shù)并設(shè)置所述觸發(fā)調(diào)頻的線程的CPU頻率值。本發(fā)明根據(jù)每個(gè)觸發(fā)調(diào)頻的線程的CPU占有率對(duì)對(duì)每個(gè)域中的線程的CPU頻率值進(jìn)行同步,進(jìn)而在多核系統(tǒng)下同步CPU頻率值,實(shí)現(xiàn)了CPU的節(jié)能。
文檔編號(hào)G06F1/32GK102004543SQ20101057166
公開(kāi)日2011年4月6日 申請(qǐng)日期2010年11月29日 優(yōu)先權(quán)日2010年11月29日
發(fā)明者古忠華, 李力 申請(qǐng)人:華為技術(shù)有限公司