《理解 Linux 的平均负载和性能监控》要点:
本文介绍了理解 Linux 的平均负载和性能监控,希望对您有用。如果有疑问,可以联系我们。
在本文中,我们将解释 Linux 系统中最症结的管理任务之一——关于系统 / CPU 的负载(load)和平均负载(Load average)的性能监控.
首先来看所有的类 UNIX 系统中两个紧张的表述:
系统负载 / CPU 负载 – 衡量 Linux 系统的 CPU 过载或利用率低的指标,即处于运算状态或等待状态的 CPU 核心数.
平均负载 – 通过固定的时间周期如 1、5、15 分钟计算出的平均的系统负载.
Linux 中,平均负载一般指在内核运行队列中被标志为运行或不可打断状态的进程的平均数.
注意:
几乎没有 Linux 或类 Unix 系统不为用户展示平均负载的值.
完全空闲的 Linux 系统平均负载为 0,不包含空闲进程.
绝大多数类 Unix 系统只统计运行和等待状态的进程.但是在 Linux 中,平均负载也包含处于不可打断的睡眠状态的进程——它们是在等待其它系统资源如磁盘 I/O 等的进程.
如何监测 Linux 系统平均负载
有诸多方式监测系统平均负载,如 uptime,它会展示系统运行光阴、用户数量及平均负载:
平均负载的数字从左到右的寄义依次为:
最近 1 分钟的平均负载为 1.98
最近 5 分钟的平均负载为 2.15
最近 15 分钟的平均负载为 2.21
高平均负载意味着系统是过载的:许多进程在期待 CPU 时间.
下一节将介绍平均负载和 CPU 核数的关系.此外,常用的对象 top 和 glances 可以实时显示 Linux 系统的运行状态:
Top命令
$top
显示运行中的Linux过程:
top-12:51:42up2:11,1user,load average:1.22,1.12,1.26
Tasks:243total,1running,242sleeping,0stopped,0zombie
%Cpu(s):17.4us,2.9sy,0.3ni,74.8id,4.6wa,0.0hi,0.0si,0.0st
KiBMem:8069036total,388060free,4381184used,3299792buff/cache
KiBSwap:3906556total,3901876free,4680used.2807464availMem
PID USER PR NI VIRT RES SHR S%CPU%MEM TIME+COMMAND
6265tecmint200124434817068083616S13.32.16:47.72Headset
2301tecmint9-11640332133449932S6.70.22:18.96pulseaudio
2459tecmint200170769231562862992S6.73.96:55.45cinnamon
2957tecmint20026446441.035g137968S6.713.550:11.13firefox
3208tecmint2005070605213633152S6.70.60:04.34gnome-terminal-
3272tecmint2001521380391324178348S6.74.86:21.01chrome
6220tecmint200159539210696476836S6.71.33:31.94Headset
1root20012005662043964S0.00.10:01.83systemd
2root200000S0.00.00:00.00kthreadd
3root200000S0.00.00:00.10ksoftirqd/0
5root0-20000S0.00.00:00.00kworker/0:0H
....
Glances 对象
$ glances
Glances – Linux系统监测对象:
TecMint(LinuxMint1864bit/Linux4.4.0-21-generic)Uptime:2:16:06
CPU16.4%nice:0.1%LOAD4-core MEM60.5%active:4.90GSWAP0.1%
user:10.2%irq:0.0%1min:1.20total:7.70Ginactive:2.07Gtotal:3.73G
system:3.4%iowait:2.7%5min:1.16used:4.66Gbuffers:242Mused:4.57M
idle:83.6%steal:0.0%15min:1.24free:3.04Gcached:2.58Gfree:3.72G
NETWORKRx/sTx/s TASKS253(883thr),1run,252slp,0oth sorted automatically by cpu_percent,flat view
enp1s0525Kb31Kb
lo2Kb2KbCPU%MEM%VIRT RES PID USER NI S TIME+IOR/s IOW/sCommand
wlp2s00b0b14.613.32.53G1.03G2957tecmint0S51:49.10040K/usr/lib/firefox/firefox
7.42.21.16G176M6265tecmint0S7:08.1800/usr/lib/Headset/Headset--type=renderer--no-sandbox--primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF--lan
DISK I/O R/s W/s4.93.91.63G310M2459tecmint0R7:12.1800cinnamon--replace
ram0004.20.2625M13.0M2301tecmint-11S2:29.7200/usr/bin/pulseaudio--start--log-target=syslog
ram1004.21.31.52G105M6220tecmint0S3:42.6400/usr/lib/Headset/Headset
ram10002.90.8409M66.7M6240tecmint0S2:40.4400/usr/lib/Headset/Headset--type=gpu-process--no-sandbox--supports-dual-gpus=false--gpu-driver-bug-workarounds=7,2
ram11002.91.8531M142M1690root0S6:03.7900/usr/lib/xorg/Xorg:0-audit0-auth/var/lib/mdm/:0.Xauth-nolisten tcp vt8
ram12002.60.379.3M23.8M9651tecmint0R0:00.7100/usr/bin/python3/usr/bin/glances
ram13001.64.81.45G382M3272tecmint0S6:25.3004K/opt/google/chrome/chrome
...
这些对象中的平均负载是从 /proc/loadavg 文件中读取的,也可以直接使用 cat 命令查看:
$cat/proc/loadavg
2.481.691.425/88910570
想要图形样式监测均匀负载,请戳:ttyload – 终端中颜色编码图形显示 Linux 均匀负载.
在桌面计算机中,可以使用图形用户接口对象查看系统平均负载.
理解系统平均负载和 CPU 核心数的关系
考虑了 CPU 核心数的影响,能力解释系统负载.
多处理器 Vs 多核处理器
多处理器 – 一个计算机系统中集成两个或多个物理 CPU
多核处理器 – 单个物理 CPU 有两个或多个单独的核并行工作(也叫处理单元).双核意味着有两个处理单元,4 核有 4 个处理单元,以此类推.
此外,Intel 引入了超线程技术用来提高并行计算才能.
通过超线程技术,在操作系统中,单个物理 CPU 表示的和两个逻辑 CPU 一样.(实际在硬件上只有一个 CPU).
注意,单个 CPU 核同一时间只能执行一个任务,于是发生了多 CPU/处理器、多核 CPU,以及多线程技术.
多 CPU 时,多个法式可以同时执行.如今的 Intel CPU 使用了多核心和超线程技术.
可以使用 nproc 或 lscpu 命令查看系统中的处置器单元数量.
$ nproc
4
#或者
lscpu
也可以使用 grep 敕令:
$grep'model name'/proc/cpuinfo|wc-l
4
为了进一步理解系统负载,必要做一些假设.假设系统负载如下:
23:16:49up10:49,5user,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 时间.
总而言之,如果你是系统管理员,你应该关注高的平均负载.平均负载高于 CPU 核心数意味着必要增加 CPU,反之则意味着 CPU 未被充分利用.
作者简介:
Aaron Kili 是 Linux 和自由软件的热心者,热衷于分享知识,现在是 TecMint 网站的内容创作者,不久之后将成为 Linux 系统治理员,web 开发者.