Linux性能優化實戰讀書筆記(一)

理解平均負載

概念

平均負載指的是單位時間內(1,5,15分鐘)系統處於可運行狀態不可中斷狀態的平均進程數,也就是平均活躍進程數

  • 可運行狀態: 正在使用CPU或者等待CPU的進程,也就是通過ps aux看到的狀態爲R的進程
  • 不可中斷狀態: 正處於內核關鍵流程中的進程,並且這些流程是不可被打斷的,比如IO響應。也就是通過ps aux看到的狀態爲D的進程。
不可中斷狀態實際上是系統對進程和硬件設備的一種保護機制

既然平均的是活躍進程數,那麼最理想的就是每個CPU上正好運行着一個進程,每個進程CPU都得到了充分的利用。

平均負載多少爲合理

  • 首先要知道你的系統是多少核的CPU
[root@www ~]# grep 'model name' /proc/cpuinfo | wc -l
4
  • 其次根據平均負載(每個核心爲1作爲最高標準去判斷)的三個趨勢時間去判斷變化率,從而總結出對應的負載情況:一般超過70%的話就算是比較高了

平均負載和CPU使用率

  • CPU使用率:單位時間內CPU繁忙成都的統計,跟平均負載不是一一對應的
CPU密集型進程,使用大量的CPU會導致平均負載和CPU使用率
IO密集型進程,等待IO也會導致平均負載升高,但是CPU使用率不一定很高
大量等待CPU的進程調度也會導致平均負載升高,此時的CPU使用率也會比較高

平均負載案例分析

  • 準備環境
OS:linux
軟件需求:stress sysstat
測試命令:stress 壓力測試
              mpstat   cpu性能分析工具
              pidstat    進程性能分析工具

需要打開三個終端:作爲壓測命令端,負載觀察端,進程觀察端

  • 場景一:CPU密集型進程

終端一:查看當前平均負載&執行壓測命令

[root@www ~]# uptime 
 15:08:02 up 84 days, 23:20, 1 user, load average: 0.00, 0.01, 0.05
[root@www ~]# stress --cpu 1 --timeout 600     #十分鐘測試

終端二:觀察平均負載變化情況

[root@www ~]# watch -d uptime

終端三:mpstat查看CPU使用率變化情況和佔用cpu的進程

[root@www ~]# mpstat -P ALL 5  #抓取CPU的變化率 (5秒輸出一組數據)
[root@www ~]# pidstat -u 5 1     #抓取佔用CPU的進程(5秒輸出一組數據)
  • 場景二:IO密集型進程

終端一:查看當前平均負載&執行壓測命令

[root@www ~]# uptime 
 15:08:02 up 84 days, 23:20, 1 user, load average: 0.00, 0.01, 0.05
[root@www ~]# stress --cpu 1 --timeout 600     #十分鐘測試

終端二:觀察平均負載變化情況

[root@www ~]# watch -d uptime

終端三:mpstat查看CPU使用率變化情況和佔用cpu的進程

[root@www ~]# mpstat -P ALL 5  #抓取CPU的變化率 (5秒輸出一組數據)
[root@www ~]# pidstat -u 5 1     #抓取佔用CPU的進程(5秒輸出一組數據)
  • 場景三:大量進程場景

終端一:查看當前平均負載&執行壓測命令

[root@www ~]# uptime 
 15:08:02 up 84 days, 23:20, 1 user, load average: 0.00, 0.01, 0.05
[root@www ~]# stress -c 8 --timeout 600     #八個進程模擬,十分鐘測試

終端二:觀察平均負載變化情況

[root@www ~]# watch -d uptime

終端三:mpstat查看CPU使用率變化情況和佔用cpu的進程

[root@www ~]# mpstat -P ALL 5  #抓取CPU的變化率 (5秒輸出一組數據)
[root@www ~]# pidstat -u 5 1     #抓取佔用CPU的進程(5秒輸出一組數據)

小結歸納

平均負載是一個快速查看系統整體性能的手段,反映了整體的負載情況。但只看平均負載本身我們並不能直接發現到底是哪裏出了瓶頸,在理解平均負載的時候我們也要注意:

  • 平均負載高可能是CPU密集型進程導致的
  • 平均負載高不一定代表CPU使用率高,還有可能是IO更加繁忙了
  • 當發現負載較高的時候可以使用mpstatpidstat等工具來輔助分析

來源整理自

https://time.geekbang.org/col...

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