專利名稱:一種cpu占用率的計算方法及裝置的制作方法
一種CPU占用率的計算方法及裝置
技術(shù)領(lǐng) 域本發(fā)明涉及通訊與計算機技術(shù)領(lǐng)域,尤其涉及一種CPU占用率的計算方法及裝置。
背景技術(shù):
CPU占用率是計算機硬件中必須關(guān)注的一個重要指標(biāo)。目前主要有兩種算法可以 實現(xiàn)CPU使用率的獲取,分別是CPU燃燒的方法以及在Tick中斷中對RTOS中的任務(wù)進行 采樣方法。CPU燃燒的方法首先要建立測量時間內(nèi)滿負載的CPU衡量標(biāo)準(zhǔn),這個衡量標(biāo)準(zhǔn)一 般是一個計數(shù)值。通常的做法是在規(guī)定的測量時間內(nèi),禁止外部中斷和任務(wù)切換,讓CPU 進行一種耗時運算,然后使這個計數(shù)值累加,最后這個計數(shù)值就是測量時間內(nèi)滿負載的CPU 衡量標(biāo)準(zhǔn)。CPU燃燒的名稱來源于這種耗時運算,耗時運算一般選取浮點運算,但在image 大小有限制的情況下,可以選取整數(shù)運算。標(biāo)準(zhǔn)建立完畢后,再建立一個CPU利用率的任 務(wù),只要保證它的優(yōu)先級是系統(tǒng)中最低的就可以了。這個任務(wù)的主要工作是在規(guī)定的測量 時間內(nèi),進行耗時運算和計數(shù)值累加,并且每個測量時間結(jié)束后又重新開始。由于系統(tǒng)中存 在其它任務(wù),所以在某個測量時間內(nèi),這個計數(shù)值不會超過滿負荷的CPU衡量標(biāo)準(zhǔn),所以在 某個測量時間內(nèi)CPU空閑率=計數(shù)值/滿負荷的CPU衡量標(biāo)準(zhǔn);CPU負荷=100% -CPU空 閑率。在Tick中斷中對RTOS中的任務(wù)進行采樣方法是系統(tǒng)進入運行后,每次Tick中 斷發(fā)生時采樣一下當(dāng)前正在執(zhí)行的任務(wù),如果CPU處于HALT態(tài),則累加haltTimes ;然后周 期性地計算CPU占用率,一般每秒鐘計算一次,并清除haltTimes (ticklntFrequance表 示 Tick 中斷的發(fā)生頻率);RealTime CPU Load = haltTimes/ticklntFrequance。則某個 任務(wù)對CPU占用率=一個周期內(nèi)該任務(wù)被采樣到的次數(shù)/tickIntFrequance*100%。其中 RTOS為實時操作系統(tǒng)。上述兩種方法的缺點在于,CPU使用率燃燒算法實現(xiàn)簡單但是不能得到各個任務(wù) 的CPU使用率,在Tick中斷中對RTOS中任務(wù)采樣算法基本可以得到各個任務(wù)的CPU使用 率但是誤差太大。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是,提供一種CPU占用率的計算方法及裝置,能夠精 確得到各個任務(wù)的CPU使用率。為了解決上述問題,本發(fā)明提供了一種CPU占用率的計算方法,包括選取一任 務(wù);指定一采樣周期Tc ;獲得所述任務(wù)在所述采樣周期內(nèi)累計占用CPU的時間長度Tt ;采 樣周期結(jié)束時,計算所述任務(wù)的CPU占用率為一個周期內(nèi)所述任務(wù)累計占用CPU的時間長 度Tt除以所述周期的總時間Tc。作為可選的技術(shù)方案,所述獲得時間長度Tt的步驟進一步包括任務(wù)切換入時,獲取當(dāng)前的切入時間Tb ;任務(wù)切換出時,獲取當(dāng)前的切出時間Te ;計算本任務(wù)占用CPU的 時間長度Ta = Te-Tb ;將所述采樣周期內(nèi)每次所述任務(wù)占用CPU的時間長度Ta累加,得到 本任務(wù)累計占用CPU時間Tt。 作為可選的技術(shù)方案,所述獲取切入時間Tb以及切出時間Te的步驟,均采用微秒 計時器獲得時間。本發(fā)明進一步提供了一種CPU占用率的計算裝置,包括任務(wù)選定單元,用于選取 一任務(wù);周期制定單元,用于指定一采樣周期Tc ;時間統(tǒng)計單元,用于獲得所述任務(wù)在所述 采樣周期內(nèi)累計占用CPU的時間長度Tt ;占用率計算單元,用于計算所述任務(wù)的CPU占用 率為一個周期內(nèi)所述任務(wù)累計占用CPU的時間長度Tt除以所述周期的總時間Tc。作為可選的技術(shù)方案,所述時間統(tǒng)計單元進一步包括切入時間獲取模塊,用于 在任務(wù)切換入時,獲取當(dāng)前的切入時間Tb ;切出時間獲取模塊,用于在任務(wù)切換出時,獲取 當(dāng)前的切出時間Te ;CPU占用時間計算模塊,用于計算本任務(wù)占用CPU的時間長度Ta = Te-Tb ;時間累加模塊,將所述采樣周期內(nèi)每次所述任務(wù)占用CPU的時間長度Ta累加,得到 本任務(wù)累計占用CPU時間Tt。作為可選的技術(shù)方案,所述切入時間獲取模塊以及切出時間獲取模塊,均調(diào)用微 秒計時器獲得時間。本發(fā)明的優(yōu)點在于,針對每一個任務(wù)實施統(tǒng)計,因此可以準(zhǔn)確得到各個任務(wù)的CPU 占用率,且上述方法不受硬件的影響,獨立工作。
附圖1所示是本發(fā)明所述方法的具體實施方式
的實施步驟示意圖。附圖2所示是本發(fā)明所述裝置的具體實施方式
的系統(tǒng)架構(gòu)示意圖。
具體實施例方式接下來結(jié)合附圖對本發(fā)明所述的一種CPU占用率的計算方法及裝置的具體實施 方式做出詳細說明。首先結(jié)合附圖給出本發(fā)明所述方法的具體實施方式
。附圖1所示是本實施方式的 實施步驟示意圖,包括步驟S100,選取一任務(wù);步驟Sl 10,指定一采樣周期Tc ;步驟S121, 任務(wù)切換入時,獲取當(dāng)前的切入時間Tb ;步驟S122,任務(wù)切換出時,獲取當(dāng)前的切出時間 Te ;步驟S123,計算本任務(wù)占用CPU的時間長度Ta = Te-Tb ;步驟S124,將所述采樣周期內(nèi) 每次所述任務(wù)占用CPU的時間長度Ta累加,得到本任務(wù)累計占用CPU時間Tt ;步驟S130, 采樣周期結(jié)束時,計算所述任務(wù)的CPU占用率為一個周期內(nèi)所述任務(wù)累計占用CPU的時間 長度Tt除以所述周期的總時間Tc。步驟S100,選取一任務(wù)。此任務(wù)可以是計算機中任意一個占用CPU進行處理的任務(wù)。步驟S110,指定一采樣周期Tc。Tc可以是時間的任意值,例如1秒、10秒或者一 分鐘等。步驟S121,任務(wù)切換入時,獲取當(dāng)前的切入時間Tb。所謂任務(wù)切換入,是指任務(wù)切 換至CPU進行數(shù)據(jù)處理的時間點,本方法記錄此時的切入時間Tb,即CPU開始處理此任務(wù)的時間。步驟S122,任務(wù)切換出時,獲取當(dāng)前的切出時間Te。所謂任務(wù)切換出,是指CPU將 任務(wù)處理完畢的時間點,本方法記錄此時的切出時間Tb,即CPU將此任務(wù)處理完畢的時間。步驟S123,計算本任務(wù)占用CPU的時間長度Ta = Te-Tb0顯然,上述兩個時間節(jié) 點的差值即為本任務(wù)占用CPU進行數(shù)據(jù)處理的時間。步驟S1M,將所述采樣周期內(nèi)每次所述任務(wù)占用CPU的時間長度Ta累加,得到本 任務(wù)累計占用CPU時間Tt。此步驟可以采用在計算機中定義一數(shù)值Tt,每次任務(wù)處理完畢 后,都將處理的時間長度Ta累加至數(shù)值Tt,即執(zhí)行運算Tt = Tt+Ta。顯然,在開始進行統(tǒng) 計時,Tt的初始值為0。步驟S130,采樣周期結(jié)束時,計算所述任務(wù)的CPU占用率為一個周期內(nèi)所述任務(wù) 累計占用CPU的時間長度Tt除以所述周期的總時間Tc。任務(wù)的CPU占用率故名思惟應(yīng)當(dāng) 是此任務(wù)在單位時間內(nèi)占用CPU的量,將Tt除以Tc即可以得到此結(jié)果。為了精確計算出各個任務(wù)的執(zhí)行時間,可以采用微秒計時器獲得切入時間Tb以 及切出時間Te,從而精確計算出各個任務(wù)的各自執(zhí)行時間。微秒計時器是指計時精確度小 于1微秒的計時器。如果想統(tǒng)計多個任務(wù)的CPU占用率,也只需要對每個任務(wù)分別實施上述方法,并 將所獲得的占用率結(jié)果加和,即可以得到多個任務(wù)的總的CPU占用率。以上具體實施方式
所述技術(shù)方案的優(yōu)點在于,針對每一個任務(wù)實施統(tǒng)計,因此可 以準(zhǔn)確得到各個任務(wù)的CPU占用率,且上述方法不受硬件的影響,獨立工作。接下來結(jié)合附圖給出本發(fā)明所述裝置的具體實施方式
。附圖2所示是本裝置的架 構(gòu)示意圖,包括任務(wù)選定單元200,用于選取一任務(wù);周期制定單元210,用于指定一采樣周期Tc ;時間統(tǒng)計單元220,用于獲得所述任務(wù)在所述采樣周期內(nèi)累計占用CPU的時間長 度Tt ;占用率計算單元230,用于計算所述任務(wù)的CPU占用率為一個周期內(nèi)所述任務(wù)累 計占用CPU的時間長度Tt除以所述周期的總時間Tc。其中時間統(tǒng)計單元220進一步包括切入時間獲取模塊221,用于在任務(wù)切換入 時,獲取當(dāng)前的切入時間Tb ;切出時間獲取模塊222,用于在任務(wù)切換出時,獲取當(dāng)前的切 出時間Te ;CPU占用時間計算模塊223,用于計算本任務(wù)占用CPU的時間長度Ta = Te-Tb ; 時間累加模塊224,將所述采樣周期內(nèi)每次所述任務(wù)占用CPU的時間長度Ta累加,得到本任 務(wù)累計占用CPU時間Tt。切入時間獲取模塊221以及切出時間獲取模塊222均調(diào)用微秒計時器獲得時間。以上各個組件的相互關(guān)系以及工作原理請參考前一關(guān)于方法的具體實施方式
,此 處從略。以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人 員,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為 本發(fā)明的保護范圍。
權(quán)利要求
1.一種CPU占用率的計算方法,其特征在于,包括 選取一任務(wù);指定一采樣周期Tc ;獲得所述任務(wù)在所述采樣周期內(nèi)累計占用CPU的時間長度Tt ; 采樣周期結(jié)束時,計算所述任務(wù)的CPU占用率為一個周期內(nèi)所述任務(wù)累計占用CPU的 時間長度Tt除以所述周期的總時間Tc。
2.根據(jù)權(quán)利要求1所述的CPU占用率的計算方法,其特征在于,所述獲得時間長度Tt 的步驟進一步包括任務(wù)切換入時,獲取當(dāng)前的切入時間Tb ; 任務(wù)切換出時,獲取當(dāng)前的切出時間Te ; 計算本任務(wù)占用CPU的時間長度Ta = Te-Tb ;將所述采樣周期內(nèi)每次所述任務(wù)占用CPU的時間長度Ta累加,得到本任務(wù)累計占用 CPU時間Tt。
3.根據(jù)權(quán)利要求2所述的CPU占用率的計算方法,其特征在于,所述獲取切入時間Tb 以及切出時間Te的步驟,均采用微秒計時器獲得時間。
4.一種CPU占用率的計算裝置,其特征在于,包括 任務(wù)選定單元,用于選取一任務(wù);周期制定單元,用于指定一采樣周期Tc ;時間統(tǒng)計單元,用于獲得所述任務(wù)在所述采樣周期內(nèi)累計占用CPU的時間長度Tt ; 占用率計算單元,用于計算所述任務(wù)的CPU占用率為一個周期內(nèi)所述任務(wù)累計占用 CPU的時間長度Tt除以所述周期的總時間Tc。
5.根據(jù)權(quán)利要求4所述的CPU占用率的計算裝置,其特征在于,所述時間統(tǒng)計單元進一 步包括切入時間獲取模塊,用于在任務(wù)切換入時,獲取當(dāng)前的切入時間Tb ; 切出時間獲取模塊,用于在任務(wù)切換出時,獲取當(dāng)前的切出時間Te ; CPU占用時間計算模塊,用于計算本任務(wù)占用CPU的時間長度Ta = Te-Tb ; 時間累加模塊,用于將所述采樣周期內(nèi)每次所述任務(wù)占用CPU的時間長度Ta累加,得 到本任務(wù)累計占用CPU時間Tt。
6.根據(jù)權(quán)利要求5所述的CPU占用率的計算裝置,其特征在于,所述切入時間獲取模塊 以及切出時間獲取模塊,均調(diào)用微秒計時器獲得時間。
全文摘要
一種CPU占用率的計算方法,包括選取一任務(wù);指定一采樣周期Tc;獲得所述任務(wù)在所述采樣周期內(nèi)累計占用CPU的時間長度Tt;采樣周期結(jié)束時,計算所述任務(wù)的CPU占用率為一個周期內(nèi)所述任務(wù)累計占用CPU的時間長度Tt除以所述周期的總時間Tc。本發(fā)明的優(yōu)點在于,針對每一個任務(wù)實施統(tǒng)計,因此可以準(zhǔn)確得到各個任務(wù)的CPU占用率,且上述方法不受硬件的影響,獨立工作。
文檔編號G06F11/34GK102110043SQ201010614108
公開日2011年6月29日 申請日期2010年12月30日 優(yōu)先權(quán)日2010年12月30日
發(fā)明者李曉斌 申請人:上海頂竹通訊技術(shù)有限公司