Linux-CPU效能篇
阿新 • • 發佈:2021-08-11
平均負載
- 單位時間內系統處於可執行狀態和不可中斷狀態的平均程序數,即平均活躍程序數。
- 程序狀態: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
- 合理的平均負載值
- 獲取當前機器的cpu核數
- 平均負載高於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密集型程序
- 模擬I/O壓力
$ stress -i 1 --timeout 600
- 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
- 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