Linux命令行工具之pidstat命令


原創轉載請注明出處:https://www.cnblogs.com/agilestyle/p/11484624.html

 

pidstat命令就可以幫助我們監測到具體線程的上下文切換

通過pidstat -help命令,可以查看到有以下幾個常用參數可以監測線程的性能:

常用參數:

  • -u:默認參數,顯示各個進程的cpu使用情況;
  • -r:顯示各個進程的內存使用情況;
  • -d:顯示各個進程的I/O使用情況;
  • -w:顯示每個進程的上下文切換情況;
  • -p:指定進程號;
  • -t:顯示進程中線程的統計信息

首先,通過pidstat -w -p pid 命令行,我們可以查看到進程的上下文切換:

cswch/s:每秒主動任務上下文切換數量

nvcswch/s:每秒被動任務上下文切換數量

 

之后,通過pidstat -w -p pid -t 命令行,我們可以查看到具體線程的上下文切換:

Note:

有兩列內容是需要重點關注對象。一個是 cswch ,表示每秒自願上下文切換(voluntary context switches)的次數,另一個則是nvcswch ,表示每秒非自願上下文切換(non voluntary context switches)的次數。

自願上下文切換 cswch

是指進程無法獲取所需資源,導致的上下文切換。比如說, I/O、內存等系統資源不足時,就會發生自願上下文切換。

非自願上下文切換 nvcswch

則是指進程由於時間片已到等原因,被系統強制調度,進而發生的上下文切換。比如說,大量進程都在爭搶 CPU時,就容易發生非自願上下文切換。

 

每秒上下文切換多少次才算正常呢?

這個數值其實取決於系統本身的 CPU 性能。如果系統的上下文切換次數比較穩定,那么從數百到一萬以內,都應該算是正常的。但當上下文切換次數超過一萬次,或者切換次數出現數量級的增長時,就很可能已經出現了性能問題。

需要根據上下文切換的類型,再做具體分析。比方說:

  • 自願上下文切換變多了,說明進程都在等待資源,有可能發生了 I/O 等其他問題;
  • 非自願上下文切換變多了,說明進程都在被強制調度,也就是都在爭搶 CPU,說明 CPU 的確成了瓶頸;
  • 中斷次數變多了,說明 CPU 被中斷處理程序占用,還需要通過查看 /proc/interrupts 文件來分析具體的中斷類型。

 


免責聲明!

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



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