1. 程式人生 > >如何理解平均負載

如何理解平均負載

如何理解平均負載
https://time.geekbang.org/column/article/69618
https://www.linuxblogs.cn/articles/linux-loadavg.html

一、平均負載
平均負載是指單位時間內,系統處於可執行狀態或不可中斷狀態的平均程序數,也就是平均活躍程序數。
可執行狀態的程序:所謂可執行狀態的程序,是指正在使用CPU或者正在等待CPU的程序,也就是我們常用ps命令看到的處於R狀態(Running或Runnable)的程序。
不可中斷狀態程序:是指正處於核心關鍵流程中的程序,並且這些程序是不能被打斷的,比如最常見的等待硬體裝置的IO響應,也就是我們常用ps命令看到的處於D狀態(Uninterruptible Sleep,也稱為 Disk Sleep)的程序。

二、平均負載為多少時合理

2.1 檢視cpu個數
[[email protected] ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel® Xeon® Platinum 8163 CPU @ 2.50GHz
Stepping: 4
CPU MHz: 2500.002
BogoMIPS: 5000.00
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 33792K
NUMA node0 CPU(s): 0

[[email protected] ~]# cat /proc/cpuinfo | grep processor |wc -l
1

2.2 檢視cpu負載(top或uptime)
[[email protected] ~]# uptime
14:38:18 up 15 days, 23:42, 4 users, load average: 0.12, 0.17, 0.15

2.3 分析
如果 1 分鐘、5 分鐘、15 分鐘的三個值基本相同,或者相差不大,那說明系統負載很平穩。
如果 1 分鐘的值遠小於 15 分鐘的值,就說明系統最近 1 分鐘的負載在減少,而過去 15 分鐘內卻有很大的負載。
如果 1 分鐘的值遠大於 15 分鐘的值,就說明最近 1 分鐘的負載在增加,這種增加有可能只是臨時性的,也有可能還會持續增加下去,所以需要持續觀察。一旦1分鐘的平均負載超過了CPU的個數,就意味著系統正在發生過載的問題,這時就得分析並優化了。

三、平均負載與CPU使用率的關係
平均負載是指單位時間內處於可執行狀態和不可中斷狀態的程序數。所以它不僅包括了正在使用CPU的程序,還包括等待CPU和等待IO的程序。
CPU使用率,是單位時間內CPU繁忙情況的統計,跟平均負載並不一定完全對應。

CPU密集型程序,使用大量CPU會導致平均負載升高,此時這兩者是一致的。
IO密集型程序,等待IO也會導致平均負載升高,但CPU使用率不一定很高。
大量等待CPU的程序排程也會導致平均負載升高,此時的CPU使用率也會比較高

四、總結
stress 是一個 Linux 系統壓力測試工具,我們用作異常程序模擬平均負載升高的場景。
sysstat 包含了常用的 Linux 效能工具,包括:iostat、pidstat、mpstat、sar 等,用來監控和分析系統的效能。
mpstat 是一個常用的多核CPU效能分析工具,用來實時檢視每個 CPU 的效能指標,以及所有 CPU 的平均指標。
pidstat 是一個常用的程序效能分析工具,用來實時檢視程序的CPU、記憶體、IO 以及上下文切換等效能指標。