在我的 Ubuntu 12.04 中,使用 psensor,我看到了 CPU 使用率更新的百分比數字。我想知道這個百分比是怎麼計算的?具體來說,比率中的分子和分母是多少?
謝謝!
答案1
這處理器使用百分比是用「處理器不空閒的時間量」計算的。我的意思是,這個計算是由一個計數器產生的,該計數器記錄「空閒」運行進程的使用情況。當另一個預處理程序從空閒進程中「搶奪」處理器功率時,空閒處理器消費者暫存器會減少一個因子;由於時間軸是固定且恆定的,(1-「空閒任務中的%時間」)是處理器上運行的所有進程所使用的處理器負載量:
定義 CPU 使用率
出於我們的目的,我將 CPU 使用率 U 定義為不處於空閒任務的時間量,如公式 1 所示。
空閒任務是多任務系統中具有絕對最低優先順序的任務。此任務有時也稱為後台任務或後台循環,如清單 1 所示。換句話說,無限迴圈使 CPU 旋轉,等待需要完成關鍵工作的指示。
清單 1:後台循環的簡單範例
int main( void )
{
SetupInterrupts();
InitializeModules();
EnableInterrupts();
while(1) /* endless loop - spin in the background */
{
CheckCRC();
MonitorStack();
... do other non-time critical logic here.
}
}
這種描述實際上過於簡單化,因為一些「真正的」工作通常是在後台任務中完成的。但是,為在空閒任務期間執行而編碼的邏輯必須沒有硬實時要求,因為無法保證該邏輯何時完成。事實上,您可以在過載系統中使用的一種技術是將一些時序要求不太嚴格的邏輯從硬實時任務移至空閒任務中。