當前位置:
首頁 > 知識 > 理解 Linux 的平均負載和性能監控

理解 Linux 的平均負載和性能監控

理解 Linux 的平均負載和性能監控


Linux 中,平均負載一般指在內核運行隊列中被標記為運行或不可打斷狀態的進程的平均數。 -- Aaron Kili

本文導航

  • -如何監測 Linux 系統平均負載 …… 10%

  • -Top命令 …… 17%

  • -Glances 工具 …… 41%

  • -理解系統平均負載和 CPU 核心數的關係 …… 68%

  • -多處理器 Vs 多核處理器 …… 69%

編譯自: https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/

作者: Aaron Kili

譯者: kylecao

在本文中,我們將解釋 Linux 系統中最關鍵的管理任務之一——關於系統 / CPU 的負載load和平均負載Load average的性能監控。

首先來看所有的類 UNIX 系統中兩個重要的表述:

  • 系統負載 / CPU 負載 – 衡量 Linux 系統的 CPU 過載或利用率低的指標,即處於運算狀態或等待狀態的 CPU 核心數。

  • 平均負載 – 通過固定的時間周期如 1、5、15 分鐘計算出的平均的系統負載。

Linux 中,平均負載一般指在內核運行隊列中被標記為運行或不可打斷狀態的進程的平均數。

注意:

  • 幾乎沒有 Linux 或類 Unix 系統不為用戶展示平均負載的值。

  • 完全空閑的 Linux 系統平均負載為 0,不包括空閑進程。

  • 絕大多數類 Unix 系統只統計運行和等待狀態的進程。但是在 Linux 中,平均負載也包括處於不可打斷的睡眠狀態的進程——它們是在等待其它系統資源如磁碟 I/O 等的進程。

如何監測 Linux 系統平均負載

有諸多方式監測系統平均負載,如 uptime,它會展示系統運行時間、用戶數量及平均負載:


$ 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 核數的關係。此外,常用的工具 top[1] 和 glances[2] 可以實時顯示 Linux 系統的運行狀態:


Top命令

$ top

顯示運行中的Linux進程:


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系統監測工具:

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 命令[3]查看:


$ cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

想要圖形樣式監測平均負載,請戳:ttyload – 終端中顏色編碼圖形顯示 Linux 平均負載[4]。

在桌面計算機中,可以使用圖形用戶介面工具查看系統平均負載。


理解系統平均負載和 CPU 核心數的關係

考慮了 CPU 核心數的影響,才能解釋系統負載。


多處理器 Vs 多核處理器

  • 多處理器 – 一個計算機系統中集成兩個或多個物理 CPU

  • 多核處理器 – 單個物理 CPU 有兩個或多個單獨的核並行工作(也叫處理單元)。雙核意味著有兩個處理單元,4 核有 4 個處理單元,以此類推。

此外,Intel 引入了超線程技術用來提高並行計算能力。

通過超線程技術,在操作系統中,單個物理 CPU 表現的和兩個邏輯 CPU 一樣。(實際在硬體上只有一個 CPU)。

注意,單個 CPU 核同一時間只能執行一個任務,於是產生了多 CPU/處理器、多核 CPU,以及多線程技術。

多 CPU 時,多個程序可以同時執行。如今的 Intel CPU 使用了多核心和超線程技術。

可以使用 nproc 或 lscpu 命令[5]查看系統中的處理器單元數量。


$ nproc

4

# 或者

lscpu

也可以使用 grep 命令[6]:


$ 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 有 60% 處於空閑狀態;在最近的 5 分鐘沒有進程等待 CPU 時間。

  • CPU 平均過載了 235%;最近的 15 分鐘平均有 2.35 個進程在等待 CPU 時間。

在雙核系統中意味著:

  • 有一個 CPU 處於完全空閑狀態,另一個 CPU 被使用;最近的 1 分鐘沒有進程等待 CPU 時間。

  • CPU 平均 160% 處於空閑狀態;最近的 5 分鐘沒有進程等待 CPU 時間。

  • CPU 平均過載了 135%;最近的 15 分鐘有 1.35 個進程等待 CPU 時間。

也許你還會喜歡:

  1. 20 個監控系統性能的命令行工具(一)[7]

  2. 13 個 Linux 性能監控工具(二)[8]

  3. Perf:一個 Linux 上的性能監控分析工具[9]

  4. 使用 Nmon 監控 Linux 的系統性能[10]

總而言之,如果你是系統管理員,你應該關注高的平均負載。平均負載高於 CPU 核心數意味著需要增加 CPU,反之則意味著 CPU 未被充分利用。



作者簡介:

Aaron Kili 是 Linux 和自由軟體的熱心者,熱衷於分享知識,現在是 TecMint 網站的內容創作者,不久之後將成為 Linux 系統管理員,web 開發者。



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

作者:Aaron Kili[11] 譯者:kylecao 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

  • [1]: top - https://www.tecmint.com/12-top-command-examples-in-linux/

  • [2]: glances - https://linux.cn/article-6882-1.html

  • [3]: cat 命令 - https://www.tecmint.com/13-basic-cat-command-examples-in-linux/

  • [4]: ttyload – 終端中顏色編碼圖形顯示 Linux 平均負載 - https://linux.cn/article-8553-1.html

  • [5]: nproc 或 lscpu 命令 - https://www.tecmint.com/check-linux-cpu-information/

  • [6]: grep 命令 - https://www.tecmint.com/12-practical-examples-of-linux-grep-command/

  • [7]: 20 個監控系統性能的命令行工具(一) - https://www.tecmint.com/command-line-tools-to-monitor-linux-performance/

  • [8]: 13 個 Linux 性能監控工具(二) - https://www.tecmint.com/linux-performance-monitoring-tools/

  • [9]: Perf:一個 Linux 上的性能監控分析工具 - https://www.tecmint.com/perf-performance-monitoring-and-analysis-tool-for-linux/

  • [10]: 使用 Nmon 監控 Linux 的系統性能 - https://linux.cn/article-6886-1.html

  • [11]: Aaron Kili - https://www.tecmint.com/author/aaronkili/

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux技術 的精彩文章:

60 TB 數據:Facebook 是如何大規模使用 Apache Spark 的
什麼是開源?
Linux 大爆炸:一個內核,無數發行版
關於開源項目如何選擇溝通渠道的思考
開發一個 Linux 調試器(一):準備環境

TAG:Linux技術 |

您可能感興趣

nginx 負載均衡
負載均衡-Ribbon 的負載均衡策略
Feign實現和負載均衡
Linux下Nginx+多Tomcat負載均衡實現詳解
負載均衡session共享的三種處理方法
ApsaraClouder雲計算專項技能認證超大流量網站的負載均衡考試
網站集群架構實戰(LVS負載均衡Nginx代理緩存Nginx動靜分離等)
搭建高可用負載均衡器:haproxy+keepalived
Keepalived+Nginx實現負載均衡高可用
nginx負載均衡與調度演算法
fabio負載均衡入門
Small Methods:高性能鈉離子電池負極材料-硼氮共摻雜石墨烯負載的納米級CoS2和CoSe2
Nginx反向代理和負載均衡部署指南
Django(Ngnix)項目部署 負載均衡
LVS/DR+keepalived負載均衡實現
Ansible自動部署nginx+keepalived高可用負載均衡
Portworx與HPE合作為容器工作負載提速
在 Linux 上用 DNS 實現簡單的負載均衡
Spring Cloud客戶端負載均衡Ribbon筆記
Facebook開源Katran負載均衡器並公開Provisioning Tool