平均負載及CPU上下文切換

結論
每秒上下文切換次數的大小,取決於CPU性能,一般來說,切換穩定,數值從百到萬以內,都算正常:

cswch/s 切換多,說明進程在等待資源,可能發生了I/O等其他問題
nvcswch/sq 切換多,說明進程被強制調度,也就是爭搶CPU,說明CPU有瓶頸
中斷次數多了,說明CPU被中斷程序佔用,具體可以分析 /proc/interrupts文

vmstat 用來查看虛擬內存,也可以查看一些CPU總體的上下文切換情況

有用參數

  • cs: context switch 每秒鐘上下文切換次數
  • in:interrupt 每秒鐘系統中斷次數
  • r:running or runnable 就緒隊列的長度(運行中,等待運行的進程數)
  • b:blocked 處於不可中斷的進程數(進程正在等待硬件設備的I/O)

使用pidstat -w查看每個進程的詳細情況:

-----------------------------------------------------------------------------------------------------以下來自:https://blog.csdn.net/Ayhan_huang/article/details/86288298

 

 

 

平均負載是指單位時間內,系統處於 可運行狀態 和 不可中斷狀態 的平均進程數。簡單理解,就是平均活躍進程數。

可運行狀態:進程正在或等待使用CPU
不可中斷狀態:進程正在等待硬件設備的I/O,是系統對進程和硬件設備的一種保護機制。
最理想的情況是,每個CPU上剛好運行着1個進程,也就是平均負載等於CPU的個數。假如平均負載是2,那麼意味着:

單核CPU上,有一半的進程競爭不到CPU
雙核CPU上,所有的CPU剛好被完全佔用
4核CPU上,意味着CPU有50%的空閒(idle)
注意,這裏的核指邏輯核數,比如超線程的雙核CPU,相當於4核。

因此,當平均負載比CPU個數還大時,就出現了系統過載。

在生產環境中,一般推薦平均負載不要高於CPU數量的70%

區別CPU使用率
CPU使用率是單位時間內CPU繁忙情況的統計。而平均負載包括正在使用CPU、等待CPU、等待IO的進程。具體來說:

CPU密集型進程,CPU使用率高,平均負載高
I/O密集型進程,平均負載高,CPU使用率低
大量等待CPU的進程,平均負載高,CPU使用率也會比較高
案例分析
準備工具
linux系統,並安裝以下兩款工具:yum install stress sysstat

stress: linux系統壓力測試工具
sysstat:包含了常用的linux性能工具,這裏用到它提供的兩個命令:
mpstat: 多核CPU性能分析工具
pidstat: 進程性能分析工具,可實時查看cpu, 內存,I/O以及上下文切換等指標
場景一:CPU密集型進程
以root身份登錄中斷,在終端1執行如下命令:

終端2執行uptime查看平均負載的變化情況

終端3查看CPU使用率變化:

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章