了解Linux的負載平均值並監控Linux的性能

在本文中,我們將解釋一個關鍵的Linux系統管理任務 – 性能監控,包括系統/CPU負載和負載平均值。

在我們繼續之前,讓我們了解所有類Unix系統中的這兩個重要術語:

  • 系統負載/CPU負載 – 是Linux系統中CPU過度或未充分利用的衡量標準;正在由CPU執行或處於等待狀態的進程數量。
  • 負載平均值 – 是在給定的1、5和15分鐘時間段內計算的平均系統負載。

在Linux中,負載平均值在技術上被認為是運行平均值,其中包括處於運行或不可中斷狀態的進程在其(核心)執行隊列中的數量。

請注意:

  • 所有,如果不是大多數由Linux或其他類Unix系統驅動的系統可能會在某個地方為用戶顯示負載平均值。
  • A downright idle Linux system may have a load average of zero, excluding the idle process.
  • 幾乎所有類Unix系統僅計算運行或等待狀態的進程。但在Linux中不是這種情況,它包括處於不可中斷睡眠狀態的進程;那些正在等待其他系統資源如磁盤I/O等。

如何監控Linux系統負載平均值

監控系統負載平均值的方法有很多,包括顯示系統運行時間以及用戶數和負載平均值:

$ uptime

07:13:53 up 8 days, 19 min,  1 user,  load average: 1.98, 2.15, 2.21

這些數字從左到右讀取,上面的輸出表示:

  • 過去1分鐘的平均負載是1.98
  • 過去5分鐘的平均負載為2.15
  • 過去15分鐘的平均負載為2.21

高負載平均值意味著系統過載;許多進程正在等待 CPU 時間。

我們將在下一部分中探討這一問題,並與 CPU 核心數量進行關聯。此外,我們還可以使用其他眾所周知的工具,如topglances,它們顯示運行中 Linux 系統的實時狀態,還有許多其他工具:

Top 命令

$ top
Display Running Linux Processes
top - 12:51:42 up  2:11,  1 user,  load average: 1.22, 1.12, 1.26
Tasks: 243 total,   1 running, 242 sleeping,   0 stopped,   0 zombie
%Cpu(s): 17.4 us,  2.9 sy,  0.3 ni, 74.8 id,  4.6 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8069036 total,   388060 free,  4381184 used,  3299792 buff/cache
KiB Swap:  3906556 total,  3901876 free,     4680 used.  2807464 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                        
 6265 tecmint   20   0 1244348 170680  83616 S  13.3  2.1   6:47.72 Headset                                                                                                                                        
 2301 tecmint    9 -11  640332  13344   9932 S   6.7  0.2   2:18.96 pulseaudio                                                                                                                                     
 2459 tecmint   20   0 1707692 315628  62992 S   6.7  3.9   6:55.45 cinnamon                                                                                                                                       
 2957 tecmint   20   0 2644644 1.035g 137968 S   6.7 13.5  50:11.13 firefox                                                                                                                                        
 3208 tecmint   20   0  507060  52136  33152 S   6.7  0.6   0:04.34 gnome-terminal-                                                                                                                                
 3272 tecmint   20   0 1521380 391324 178348 S   6.7  4.8   6:21.01 chrome                                                                                                                                         
 6220 tecmint   20   0 1595392 106964  76836 S   6.7  1.3   3:31.94 Headset                                                                                                                                        
    1 root      20   0  120056   6204   3964 S   0.0  0.1   0:01.83 systemd                                                                                                                                        
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                                                                                                                                       
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.10 ksoftirqd/0                                                                                                                                    
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H   
....

Glances 工具

$ glances
Glances – Linux System Monitoring Tool
TecMint (LinuxMint 18 64bit / Linux 4.4.0-21-generic)                                                                                                                                               Uptime: 2:16:06

CPU      16.4%  nice:     0.1%                                        LOAD    4-core                                        MEM     60.5%  active:    4.90G                                        SWAP      0.1%
user:    10.2%  irq:      0.0%                                        1 min:    1.20                                        total:  7.70G  inactive:  2.07G                                        total:   3.73G
system:   3.4%  iowait:   2.7%                                        5 min:    1.16                                        used:   4.66G  buffers:    242M                                        used:    4.57M
idle:    83.6%  steal:    0.0%                                        15 min:   1.24                                        free:   3.04G  cached:    2.58G                                        free:    3.72G

NETWORK     Rx/s   Tx/s   TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view
enp1s0     525Kb   31Kb
lo           2Kb    2Kb     CPU%  MEM%  VIRT   RES   PID USER        NI S    TIME+ IOR/s IOW/s Command 
wlp2s0        0b     0b     14.6  13.3 2.53G 1.03G  2957 tecmint      0 S 51:49.10     0   40K /usr/lib/firefox/firefox 
                             7.4   2.2 1.16G  176M  6265 tecmint      0 S  7:08.18     0     0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan
DISK I/O     R/s    W/s      4.9   3.9 1.63G  310M  2459 tecmint      0 R  7:12.18     0     0 cinnamon --replace
ram0           0      0      4.2   0.2  625M 13.0M  2301 tecmint    -11 S  2:29.72     0     0 /usr/bin/pulseaudio --start --log-target=syslog
ram1           0      0      4.2   1.3 1.52G  105M  6220 tecmint      0 S  3:42.64     0     0 /usr/lib/Headset/Headset 
ram10          0      0      2.9   0.8  409M 66.7M  6240 tecmint      0 S  2:40.44     0     0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2
ram11          0      0      2.9   1.8  531M  142M  1690 root         0 S  6:03.79     0     0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8
ram12          0      0      2.6   0.3 79.3M 23.8M  9651 tecmint      0 R  0:00.71     0     0 /usr/bin/python3 /usr/bin/glances
ram13          0      0      1.6   4.8 1.45G  382M  3272 tecmint      0 S  6:25.30     0    4K /opt/google/chrome/chrome 
...

這些工具顯示的負載平均值是通過讀取/proc/loadavg文件獲取的,您可以使用如下的cat 命令查看:

$ cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

要以圖形格式監控負載平均值,請查看:ttyload – 在終端中顯示 Linux 負載平均值的彩色圖形

在桌面機器上,有一些圖形用戶界面工具可用於查看系統負載平均值。

理解系統平均負載與 CPU 數量的關係

我們無法談論系統負載或系統性能,而不提及CPU核心數對性能的影響。

多處理器與多核心

  • 多處理器 – 這是兩個或兩個以上的物理CPU集成到單個計算機系統中。
  • 多核心處理器 – 是一個單個物理CPU,擁有至少兩個或兩個以上獨立的核心(或我們也可以稱之為處理單元),這些核心可以並行工作。這意味著雙核有兩個處理單元,四核有四個處理單元,依此類推。

此外,還有一種處理器技術是由英特爾首次推出,用於改進並行計算,稱為超執行緒技術。

在超執行緒技術下,一個物理CPU核心對操作系統顯示為兩個邏輯CPU核心(但實際上只有一個物理硬件組件)。

請注意,單個CPU核心一次只能執行一個任務,因此多CPU/處理器、多核心CPU和超執行緒等技術應運而生。

有多個CPU時,可以同時執行多個程序。當前的英特爾CPU使用多核心和超執行緒技術的組合。

要找到系統上可用的處理單元數量,我們可以使用如下的 nproc或lscpu指令

$ nproc
4

OR
lscpu

使用grep命令查找處理單元的另一種方法如下。

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

4

現在,為了進一步了解系統負載,我們將做出一些假設。假設我們的負載平均值如下:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
在單核系統上,這意味著:
  • CPU平均完全利用(100%);在過去的1分鐘內,有1個進程在CPU上運行(1.00)。
  • CPU平均閒置60%;在過去的5分鐘內,沒有進程在等待CPU時間(0.40)。
  • CPU平均超載235%;在過去的15分鐘內,有2.35個進程在等待CPU時間(3.35)。
在雙核系統上,這意味著:
  • 一個CPU平均100%閒置,一個CPU正在使用;在過去的1分鐘內,沒有進程在等待CPU時間(1.00)。
  • CPU平均閒置160%;在過去的5分鐘內,沒有進程在等待CPU時間(0.40)。
  • CPU平均超載135%;在過去的15分鐘內,有1.35個進程在等待CPU時間(3.35)。

你可能也喜歡:

  1. 20個監控Linux性能的命令行工具–第1部分
  2. 13個Linux性能監控工具–第2部分
  3. Perf- 一個針對 Linux 的性能監控和分析工具
  4. Nmon: 分析和監控 Linux 系統性能

總之,如果你是系統管理員,高負載平均值確實值得憂慮。當負載高時,超過 CPU 核心數,這表示對 CPU 的需求很高;而低於 CPU 核心數的低負載平均值則表明 CPU 利用率不足。

Source:
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/