C語言控制cpu使用率

2021-06-05 19:50:07 字數 1442 閱讀 8890

今天看到一本講演算法的好書,《叫程式設計之美》。看了一節,裡面講的是控制cpu

的占有率,

cpu的占有率是由程序的忙和空閒來決定的,即  

rate=(busy_time)/(busy_time+idle_time);

怎麼來控制她呢? busy可以用迴圈(這個迴圈用空迴圈,以便好控制),idle可以用sleep

比如先讓任務管理器的cpu使用率始終保持在50%左右,那麼在乙個主迴圈中,

讓空迴圈和sleep執行同樣的一小段時間。sleep的時間好搞,空迴圈的怎麼辦呢?可以用cpu的主頻估算出執行乙個空迴圈所需要的時間,然後去設定空迴圈所要執行的次數,

比如:while(true)

//for 迴圈執行x次,使它的時間和sleep的時間相等

for(int i=0;isleep(time);}

這種要估算cpu的執行速度,不太方便,準確性也不高。

《程式設計之美》裡面介紹一種好的方法。在執行的時候設定空迴圈的執行時間

int start_time=click();

while((click()-start_time)這樣就能使空迴圈執行runtime 毫秒

有了這個只要設定一下迴圈和sleep的比例就可以隨意控制任務管理器中的cpu的使用率了,

下面用任務管理器畫個弦函式影象

cpp**

#include 

#include 

#include 

#include 

using

namespace std;   

intmain()   

intj=0;   

intst_time;   

while(true)   

system("pause");   

return 0;   

}   

#include #include #include #include using namespace std;

int main()

{ const float pi=3.1416;

int count=180; //時間陣列的個數

int idle[count];

int busy[count];

float delta=2*pi/count;

float alpha=0;

/*給迴圈和sleep各生成一列時間陣列

busy按照正弦規律變化,busy和對應的sleep的和不變

*/for(int i=0;i

不過還是沒有那麼完美。有時突然蹦起來,可能是機器的原因,這是在pentium二 400m 主頻,130m記憶體下測試的。書上還說在雙核上的效果是一樣的,不過這個機器就無能為力了!

控制CPU使用率

我使用的是ubuntu 14.04版本,用的是自帶的系統監視器來觀察cpu使用率的變化。1.首先來說說怎麼控制cpu使用率,當程式執行乙個死迴圈的時候,使用率就會變成100 而當程式進入idle的時候,使用率就會很低 在別的程式不啟動的情況下 那麼控制cpu使用率就是調整它idle和busy的時間比...

cpu使用率統計

cat proc stat得到 user nice system idle iowait irq softirq stealstolen guest 的9元組 再採兩個夠短的時間點,做差計算即可 cat proc pid stat讀取到 pid 6873 程序號utime 1587 該任務在使用者態...

檢視CPU使用率

rem 如果wmi服務 服務名為winmgmt 壞掉了,需要到system32 webm目錄下執行如下注釋的命令 remfor i in dll do regsvr32 s i remregsvr32 s scrcons.exe remrem regsvr32 s wbemtest.exe remr...