1. 程式人生 > 其它 >Linux-CPU效能篇

Linux-CPU效能篇

平均負載

  • 單位時間內系統處於可執行狀態和不可中斷狀態的平均程序數,即平均活躍程序數。
  • 程序狀態:Running(R)
  • 不可中斷狀態:Uninterruptible Sleep(D)
[root@cnsz-ansible-110 ~]# w
 09:53:36 up 58 days, 18:49,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      31Jan21 52days  0.05s  0.05s -bash
root     pts/0    10.240.20.5      09:51    0.00s  0.06s  0.01s w
  • 合理的平均負載值
  1. 獲取當前機器的cpu核數
  2. 平均負載高於CPU數量70%,需考慮負載過高的情況
[root@cnsz-ansible-110 ~]# grep 'model name' /proc/cpuinfo 
model name	: Intel(R) Xeon(R) Gold 5117 CPU @ 2.00GHz
model name	: Intel(R) Xeon(R) Gold 5117 CPU @ 2.00GHz
model name	: Intel(R) Xeon(R) Gold 5117 CPU @ 2.00GHz
model name	: Intel(R) Xeon(R) Gold 5117 CPU @ 2.00GHz
[root@cnsz-ansible-110 ~]# grep 'model name' /proc/cpuinfo | wc -l
4

平均負載案例分析

  • Ubuntu20.4 4C8G,安裝stress sysstat
  • stress: Linux系統壓力測試工具
  • sysstat: Linux效能工具
apt update; apt install stress sysstat -y
  • 當前系統負載
root@CNSZ-K8S-NFS-SERVER:~# uptime
 02:22:47 up 26 days, 16:25,  2 users,  load average: 0.04, 0.05, 0.01
root@CNSZ-K8S-NFS-SERVER:~# 
  • CPU密集程序
# 消耗一個cpu,執行10min
$ stress --cpu 1 --timeout 600

1. 終端二,檢視平均負載變化情況
$ watch -d uptime 

最終結果
root@CNSZ-K8S-NFS-SERVER:~# uptime
 02:31:11 up 26 days, 16:33,  3 users,  load average: 1.04, 0.71, 0.34

2. 終端三,執行mpstat檢視cpu使用情況
# -P ALL 表示監控所有cpu,每5秒輸出一組
root@CNSZ-K8S-NFS-SERVER:~# mpstat -P ALL 5
Linux 5.4.0-42-generic (CNSZ-K8S-NFS-SERVER) 	03/25/2021 	_x86_64_	(4 CPU)

02:27:38 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
02:27:43 AM  all   24.99    0.00    0.10    0.00    0.00    0.05    0.00    0.00    0.00   74.86
02:27:43 AM    0    0.00    0.00    0.20    0.00    0.00    0.20    0.00    0.00    0.00   99.60
02:27:43 AM    1    0.00    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00   99.80
02:27:43 AM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:27:43 AM    3  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

02:27:43 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
02:27:48 AM  all   25.07    0.00    0.05    0.00    0.00    0.05    0.00    0.00    0.00   74.83
02:27:48 AM    0    0.20    0.00    0.20    0.00    0.00    0.20    0.00    0.00    0.00   99.40
02:27:48 AM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:27:48 AM    2    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.80
02:27:48 AM    3  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

3. 查詢導致cpu100%的程序
# 間隔5秒輸出一組資料
root@CNSZ-K8S-NFS-SERVER:~# pidstat -u 5 1
Linux 5.4.0-42-generic (CNSZ-K8S-NFS-SERVER) 	03/25/2021 	_x86_64_	(4 CPU)

02:32:28 AM   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
02:32:33 AM     0   1985666   99.80    0.00    0.00    0.00   99.80     3  stress
02:32:33 AM     0   1986009    0.00    0.20    0.00    0.00    0.20     0  pidstat

Average:      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
Average:        0   1985666   99.80    0.00    0.00    0.00   99.80     -  stress
Average:        0   1986009    0.00    0.20    0.00    0.00    0.20     -  pidstat
  • 結論

  • 1分鐘負載會慢慢增加到1.00

  • 終端三正好有一個cpu使用率100%,但iowait為0,說明平均負載升高由於CPU使用率增加導致

  • I/O密集型程序

  1. 模擬I/O壓力
$ stress -i 1 --timeout 600
  1. uptime平均負載變化情況
root@CNSZ-K8S-NFS-SERVER:~# uptime 
 02:38:27 up 26 days, 16:40,  3 users,  load average: 0.94, 0.86, 0.57
  1. CPU使用率變化情況
root@CNSZ-K8S-NFS-SERVER:~# mpstat -P ALL 5 1
Linux 5.4.0-42-generic (CNSZ-K8S-NFS-SERVER) 	03/25/2021 	_x86_64_	(4 CPU)

02:39:29 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
02:39:34 AM  all    0.45    0.00   24.59    0.00    0.00    0.25    0.00    0.00    0.00   74.71
02:39:34 AM    0    1.00    0.00   68.94    0.00    0.00    0.00    0.00    0.00    0.00   30.06
02:39:34 AM    1    0.79    0.00   29.31    0.00    0.00    0.79    0.00    0.00    0.00   69.11
02:39:34 AM    2    0.00    0.00    0.00    0.00    0.00    0.20    0.00    0.00    0.00   99.80
02:39:34 AM    3    0.00    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00   99.80