操作系統性能監控-CPU使用率


CPU使用率分為

  1. 用戶態CPU使用率:執行應用程序代碼的時間占總CPU時間的百分比
  2. 系統態CPU使用率:應用執行操作系統調用的時間占總CPU時間的百分比

系統態CPU使用率高意味着共享資源有競爭或者IO設備之間有大量的交互。

目標:理想情況應用達到最高性能和擴展性時,它的系統態CPU使用率為0%,提供應用性能和擴展性一個目標是盡可能降低系統態CPU使用率

 

對於計算密集型應用

  1. 監控用戶態和系統態CPU使用率
  2. 監控每時鍾指令書IPC或每指令時鍾周期CPI(對於計算密集型重要,系統自帶工具無法監控)

 

停滯:CPU等待內存中的數據,操作系統工具仍然報告CPU繁忙,當指令所用的操作數據不在寄存器或者緩存中的就會發生。

目標:減少停滯或者改善CPU高速緩存使用率,從而減少CPU在等待內存數據時浪費的時鍾周期

 

觀察CPU使用率工具

     vmstat:只能查看整體CPU使用情況

image

  1. us: 用戶進程執行時間百分比。 us的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期超50%的使用,那么我們就該考慮優化程序算法或者進行加速
  2. sy: 內核系統進程執行時間百分比。 sy的值高時,說明系統內核消耗的CPU資源多,這並不是良性表現,我們應該檢查原因
  3. wa: IO等待時間百分比。 wa的值高時,說明IO等待比較嚴重,這可能由於磁盤大量作隨機訪問造成,也有可能磁盤出現瓶頸
  4. id: 空閑時間百分比

 

mpstat:處理相關統計信息

     mpstat [ -P { cpu | ALL } ] [ -V ] [ interval [ count ] ]

     查看所有CPU統計信息,每2秒一次

image

  • CPU:CPU 編號
  • %user:在監控的時間間隔內,用戶級進程(運用程序)占用的CPU時間百分比。
  • %nice:在監控的時間間隔內,nice值為負的用戶級進程所占用的CPU時間百分比。
  • %sys:在監控的時間間隔內,系統及進程(內核)占用的CPU使用率。該時間包括了系統處理軟、硬中斷所花的時間。
  • %iowait:在監控的時間間隔內,等待硬盤I/O的時間,CPU的閑置時間百分比。
  • %irq:在監控的時間間隔內,CPU服務硬中斷的所占的時間百分比。
  • %soft:在監控的時間間隔內,CPU服務軟中斷的所占的時間百分比。
  • %idle:在監控的時間間隔內,CPU閑置時間所占用的時間百分比,不包括等待磁盤IO請求的時間。

 

CPU調度程序運行隊列

作用:監控CPU調度程序運行隊列用於分辨系統是否滿負荷。

運行隊列:那些已經准備好運行,正等待可用CPU的輕量級進程。

如果准備運行的輕量級進程數超過系統所能處理的上限,運行隊列就會很長。當系統運行隊列等於虛機處理器個數的時候,用戶不會明顯感覺到性能下降。(虛擬處理器就是系統硬件線程個數.Runtime.availableProcessors()返回值)。運行隊列長度達到虛擬處理4倍或是更多時,系統響應非常遲緩。

指導原則:如果在很長時間,運行隊列的長度一直超過虛擬處理器個數1倍,需要關注,如果很長一段時間,運行隊列長度達到虛擬處理器個數的3-4倍或更高,需要立即引起注意或采取行動。

解決方式

  1. 增加CPU,分擔負載或減少處理器負載,從根本上解決。
  2. 分析系統中運行的應用,改進CPU使用率。解決算法和數據結構效率

線上vmstat 1觀察CPU隊列情況

procs

  • r:在運行隊列中等待的進程數
  • b:在等待IO的進程數

image

mpstat查看CPU個數以及CPU使用情況,系統負載略高

image

CPU相關監控以及介紹告一段落。

參考:

http://www.ha97.com/4512.html

http://linuxcommand.org/man_pages/vmstat8.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM