實時監測CPU和記憶體使用率

2022-04-28 22:45:16 字數 1578 閱讀 8740

專案背景:在評估軟體資源使用率的時候,需要統計cpu和記憶體最大使用率,因此需要監測軟體執行工程中的cpu和記憶體使用率的變化,並記錄最大值

1.記憶體統計會比較簡單,只需要查詢電腦中最大記憶體,以及實時記憶體使用情況

1 #include 2 #include 3 #include 4 #include5

double filetimetodouble(filetime*pfiletime)69

10double

m_foldcpuidletime;

11double

m_foldcpukerneltime;

12double

m_foldcpuusertime;

1314

1516

bool initialize()

1727

return

flag;28}

2930

intgetcpuuserate()

3144

return

ncpuuserate;45}

46int

getmemoryusepercentage()

4762

6364

intmain()

6573

else

7484

85if (memoryuserate >maxmemoryusepercentage)

8689

90 std::cout << "

當前cpu使用率:

"<< cpuuserate <<91"

最大cpu使用率:

"當前記憶體:

"<< memoryuserate <<92"

最大記憶體:

"<< maxmemoryusepercentage <<:endl>

9394}95

}96return0;

97 }

view code

2.cpu使用率更複雜

超執行緒是intel最早提出一項技術,最早出現在2023年的pentium4上。單個採用超執行緒的cpu對於作業系統來說就像有兩個邏輯cpu,為此p4處理器需要多加入乙個logical cpu pointer(邏輯處理單元)。

雖然採用超執行緒技術能同時執行兩個執行緒,但它並不像兩個真正的cpu那樣,每個cpu都具有獨立的資源。當兩個執行緒都同時需要某乙個資源時,其中乙個要暫時停止,並讓出資源,直到這些資源閒置後才能繼續。因此超執行緒的效能並不等於兩顆cpu的效能。

最開始cpu只有乙個核(core),為了提高效能,引入了雙核cpu,四核cpu等,雙核cpu能同時執行兩個執行緒。和超執行緒不同的是,雙核cpu是實打實的有兩個central processing units在乙個cpu chip。

上圖顯示主機板上有1個插槽(socket),這個插槽插著乙個cpu,這個cpu有4個核(core),每個核都使用超執行緒技術,所以這台機器總共有8個邏輯核。

某程序cpu使用率 = 該程序cpu時間 / 總cpu時間。

參考:

linux 在 cpu 記憶體 使用率

cpu ps aux head 1 ps aux sort k3nr head 3 記憶體 ps aux head 1 ps aux sort k4nr head 3 說明 ps aux中 a指代all 所有的程序,u指代userid 執行該程序的使用者id,x指代顯示所有程式,不以終端機來區分 p...

PHP獲取CPU 記憶體使用率

類 class systeminfowindows return path 獲得cpu使用率vbs檔案生成函式 return string 返回vbs檔案路徑 private function getcupusagevbspath 獲得總記憶體及可用物理記憶體json vbs檔案生成函式 retur...

控制CPU使用率

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