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

理解平均負載

概念

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

  • 可運行狀態: 正在使用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     #十分鐘測試

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

[root@www ~]# watch -d uptime

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

[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     #十分鐘測試

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

[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...

相關文章
相關標籤/搜索