Linux性能優化-day02 | 基礎篇:平均負載

1.uptime命令
[root@test ~]# uptime
 15:35:33 up 108 days, 18:16,  1 user,  load average: 0.01, 0.04, 0.05

各列代表的含義
15:35:33 //當前時間
up 108 days, 18:16 //系統運行時間
1 user //正在登錄用戶數
load average: 0.01, 0.04, 0.05 //依次過去1分鐘,5分鐘,15分鐘的平均負載

2.平均負載

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

所謂可運行狀態的進程,是正在使用CPU或者正在等待使用CPU的進程,也就我們使用ps命令看到的處於R狀態(Running或者Runnable)的進程。

所謂不可中斷狀態的進程,是正處在內核態關鍵流程中的進程,並且這些流程是不可打斷的。比如最常見的是等待硬件設備的I/O響應,也就是使用ps命令看到的D狀態(Uninterruptible Sleep,也稱爲Disk Sleep)的進程。

3.平均負載多少時合理

1.平均負載最理想的情況是等於cpu核數

2.查看系統cpu核數

grep 'model name' /proc/cpuinfo | wc -l

3.使用平均負載的3個值,分析系統負載趨勢

  • 如果1分鐘,5分鐘,15分鐘的值基本一樣或者相差不大,說明系統很穩定
  • 1分鐘遠小於15分鐘的值,說明系統負載減少,之前負載很大
  • 1分鐘遠大於15分鐘的值,說明系統負載增加,着重觀察,如果等於或者超過cpu個數,分析過載原因
4.平均負載和CPU使用率區別

平均負載是單位時間內的可運行狀態和不可中斷狀態的進程數。包含正在使用的CPU的進程和等待CPU,等待IO的進程。

CPU使用率是單位時間內繁忙CPU的統計情況。跟平均負載並不一定完全對應。比如

  • CPU密集型進程,使用大量CPU會導致平均負載升高,此時兩者一致
  • IO密集型進程,等待IO會導致平均負載升高,但是CPU使用率不一定很高
  • 大量等待CPU調度的進程也會導致平均負載升高,此時的CPU使用率也會很高
5.性能工具

安裝:
(1)centos:yum install -y stress sysstat
(2)ubuntu:apt install stress sysstat
介紹:
stress是一個系統壓力測試工具,用作異常進程模擬平均負載升高的場景。
sysstat包含常用的Linux性能工具,用來監測和分析系統的性能。主要使用倆個命令

  • mpstats是一個常用的多核CPU性能分析工具,用來實時查詢每個CPU的性能指標以及所有CPU的平均指標
  • pidstat是一個常用的進程性能分析工具,用來實時查詢進程的CPU,內存,I/O以及上下文切換等性能指標。
6.實戰

每個場景開4個終端,使用root用戶登錄到同一臺Linux機器,使用uptime命令看一下測試前的平均負載

$ uptime
 ... load average: 0.00, 0.17, 0.78

場景一:CPU密集型
第一個終端運行stress命令,模擬一個CPU使用率100%的場景

$ stress --cpu 1 --timeout 600

第二個終端運行uptime命令,查看平均負載變化情況

#-d 參數表示高亮顯示變化的區域
 $ watch -d uptime
 ...,  load average: 1.00, 0.75, 0.39

第三個終端使用mpstat命令,查看CPU使用率的變化情況

 #-P ALL 表示監控所有CPU,後面數字5表示間隔5秒後輸出一組數據 
 mpstat -P ALL 5
Linux 3.10.0-957.21.3.el7.x86_64  	04/21/2020 	_x86_64_	(1 CPU)

06:32:20 PM  CPU    %usr   %nice    %sys     %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
06:32:25 PM  all    99.60    0.00    0.40     0.00   0.00    0.00    0.00     0.00       0.00     0.00
06:32:25 PM    0    99.60    0.00    0.40     0.00   0.00    0.00    0.00     0.00       0.00       0.00

分析:從第二個終端看,1分鐘的平均負載滿滿增加到1,第三個終端看cpu使用率接近100%,iowait確實0%,說明平均負載的升高正式由於CPU使用率100%。到底是哪個進程導致的CPU使用率爲100%,
第四個使用pidstat命令查看

#間隔5秒後輸出一組數據
pidstat -u 5 1
Linux 3.10.0-957.21.3.el7.x86_64  	04/21/2020 	_x86_64_	(1 CPU)

06:47:18 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
06:47:23 PM     0      6195    0.00    0.20    0.00    0.20     0  watch
06:47:23 PM     0     10406   99.20    0.00    0.00   99.20     0  stress

可以明顯的看到strees的CPU使用率接近100%。

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