了解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,它会展示系统运行时间、用户数量及平均负载:
$uptime
07:13:53up8days,19min,1user,loadaverage:1.98,2.15,2.21
平均负载的数字从左到右的含义依次为:
最近 1 分钟的平均负载为 1.98
最近 5 分钟的平均负载为 2.15
最近 15 分钟的平均负载为 2.21
高平均负载意味着系统是过载的:许多进程在等待 cpu 时间。
下一节将介绍平均负载和 cpu 核数的关系。此外,常用的工具 top 和 glances 可以实时显示 linux 系统的运行状态:
top命令
$top
显示运行中的linux进程:
top-12:51:42up2:11,1user,loadaverage: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
piduserprnivirtresshrs%cpu%memtime+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-coremem60.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/stasks253(883thr),1run,252slp,0othsortedautomaticallybycpu_percent,flatview
enp1s0525kb31kb
lo2kb2kbcpu%mem%virtrespidusernistime+ior/siow/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
diski/or/sw/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-nolistentcpvt8
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'modelname'/proc/cpuinfo|wc-l
4
为了进一步理解系统负载,需要做一些假设。假设系统负载如下:
23:16:49up10:49,5user,loadaverage: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 时间。

海克斯康的超高精度测量机迎来全球首展
电机“减肥”增效的奥秘!
特朗普发布的美国首份国防战略《国家安全战略》阐释
SystemVerilog常用可综合IP模块库
realme官微宣布realme X正式亮相,4800万升降全面屏手机
了解Linux的平均负载和性能监控是什么?
小萌智能教育机器人:一款面向未来教育的产品,有屏有轮有品质
中国5G有望最早在2020年正式规模商用
探头的各个类型和用途
卡西威尔智能折叠电动车世界杯版评测 实用性到底怎么样
联网智能机器人未来可能扮演多种角色
2017物联网安全沙龙,8月5日深圳见
重磅!中软国际与乐普健康达成合作,正式启动鸿蒙原生应用开发
一种在片上系统中实现Nand Flash控制器的方法
叫板华为!小米自曝美国CES展发布黑科技手机:白色mix
印度正在成为培养区块链技术人才的重要国家
学会针对永洪API接口的性能测试,工作效率提升百倍
荣耀畅玩6A和荣耀8哪个好?怎么区别对比看了就知道
倍显光源技术定义及其工作原理
FCC电流探头的产品介绍及其测试方法