在Linux系统中,系统负载是衡量系统繁忙程度的重要指标,它反映了单位时间内等待运行(包括正在运行)的进程数量,我们使用1分钟、5分钟、15分钟的平均负载值来评估系统状态,这三个值分别对应系统在过去1分钟、5分钟、15分钟的负载情况,理解如何查看和分析系统负载,对于排查系统性能瓶颈、优化资源配置至关重要,本文将详细介绍Linux中查看系统负载的多种工具及其使用方法,帮助读者全面掌握系统负载监控技巧。

系统负载的核心概念
系统负载(Load Average)是Linux内核通过/proc/loadavg文件记录的指标,其计算方式基于“可运行队列”(Run Queue)中的进程数量,可运行队列指的是那些已经准备好使用CPU、正在等待CPU分配时间片的进程,需要注意的是,这里的“进程”不仅包括正在运行的进程,还包括处于可运行状态但尚未获得CPU资源的进程。
负载值的解读需要结合CPU核心数:单核CPU下,负载值1.0表示系统满负荷运行(1个进程占用CPU,0个等待);负载值2.0表示有2个进程在竞争1个CPU,平均每个进程等待50%的时间,对于多核CPU(如4核),负载值4.0表示系统满负荷,超过4.0则意味着进程需要等待CPU资源。
常用系统负载查看工具
Linux提供了多种命令行工具来查看系统负载,从简单的静态信息到动态实时监控,工具的复杂度和功能各不相同,以下是常用工具的详细用法和解读。
uptime:快速查看负载平均值
uptime是最基础的负载查看命令,直接显示系统运行时间和1分钟、5分钟、15分钟的负载平均值。
基本用法:
uptime
示例输出:
18:30:25 up 10 days, 3:45, 2 users, load average: 1.25, 0.98, 0.75
参数解读:
18:30:25:当前系统时间;up 10 days, 3:45:系统已运行10天3小时45分钟;2 users:当前登录用户数;load average: 1.25, 0.98, 0.75:1分钟、5分钟、15分钟的平均负载值。
适用场景:快速概览系统负载状态,无需额外安装(Linux系统内置)。
top:动态监控进程与系统资源
top是常用的动态监控工具,不仅能显示负载平均值,还能实时展示各进程的CPU、内存占用情况,并支持交互式操作。
基本用法:
top
关键信息解读:
- 第一行前半部分与
uptime输出一致,显示系统运行时间和负载平均值; - 第一行后半部分:
Tasks: 123 total, 2 running, 121 sleeping, 0 stopped, 0 zombie,分别表示总进程数、运行中、睡眠中、停止、僵尸进程数; %Cpu(s):CPU使用率,包括us(用户进程)、sy(系统调用)、id(空闲)、wa(I/O等待)、hi(硬件中断)、si(软件中断)等;KiB Mem:内存使用情况,包括total(总量)、free(空闲)、used(已用)、buff/cache(缓存);- 进程列表:默认按CPU占用率降序排列,显示进程PID、用户、CPU%、内存%、运行时间等信息。
交互操作:
- 按
P:按CPU使用率排序; - 按
M:按内存使用率排序; - 按
k:终止指定进程(需输入PID); - 按
q:退出top。
适用场景:实时监控进程资源占用,定位高负载进程。
htop:增强版动态监控工具
htop是top的升级版,提供彩色显示、鼠标操作、进程树视图等功能,交互体验更友好。
基本用法:
htop # 需安装:sudo apt install htop (Ubuntu/Debian) 或 sudo yum install htop (CentOS/RHEL)
特点:

- 彩色区分不同状态进程(绿色:运行中;红色:高CPU占用;黄色:睡眠);
- 支持进程树视图(按
t查看父子进程关系); - 可直接通过鼠标点击排序或终止进程;
- 底部显示实时负载、CPU、内存、磁盘I/O等摘要信息。
适用场景:需要更直观的进程监控和交互操作时。
glances:全系统资源监控工具
glances是一款跨平台的系统监控工具,整合了CPU、内存、磁盘、网络、进程等多种信息,支持多种输出模式(如文本、Web界面)。
基本用法:
glances # 需安装:sudo pip install glances
关键功能:
- 顶部显示实时负载(
LOAD)、CPU使用率(CPU)、内存(MEM)、磁盘I/O(DISK)、网络(NET)等核心指标; - 中部为进程列表,默认按CPU占用排序,支持颜色标记异常进程;
- 底部显示系统摘要(如进程数、文件描述符数、运行时间等)。
参数选项:
-b:显示网卡模式(网络流量详情);-t:传感器模式(显示CPU温度、风扇转速等,需硬件支持);-w:Web模式(启动Web服务器,通过浏览器访问)。
适用场景:需要综合监控多种系统资源,或长期记录性能数据时。
vmstat:虚拟内存与进程统计
vmstat(Virtual Memory Statistics)是查看虚拟内存、进程、CPU等状态的工具,适合分析系统负载的底层细节。
基本用法:
vmstat 1 # 每秒刷新一次,输出1行;若不加数字,仅输出一次统计
示例输出:
procs -----------memory---------- ---swap-- ---io--- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 8.12G 1.23G 3.45G 0 0 45 120 1000 1500 15 5 78 2 0
关键列解读:
r:运行队列中的进程数(核心指标,若持续大于CPU核心数,说明CPU瓶颈);b:等待I/O的进程数;us:用户进程CPU使用率;sy:系统调用CPU使用率;id:CPU空闲率;wa:I/O等待时间占比(若持续较高,说明磁盘瓶颈)。
适用场景:分析CPU负载与I/O等待的关系,判断瓶颈类型。
mpstat:多核CPU负载统计
mpstat是sysstat工具包的一部分,用于查看每个CPU核心的负载分布,适合多核系统分析。
基本用法:
mpstat -P ALL 1 # 每秒刷新一次,显示所有核心的CPU统计
示例输出:
Linux 5.4.0-91-generic (ubuntu) 10月15日 _x86_64_ (2 CPU)
18:30:26 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
18:30:27 all 15.3 0.0 5.7 0.2 0.0 0.3 0.0 0.0 0.0 78.5
18:30:27 0 18.1 0.0 6.2 0.3 0.0 0.4 0.0 0.0 0.0 75.0
18:30:27 1 12.5 0.0 5.2 0.1 0.0 0.2 0.0 0.0 0.0 82.0
参数解读:
CPU:all表示所有核心,0、1表示单个核心;%usr:用户进程CPU占用率;%sys:系统调用CPU占用率;%iowait:I/O等待时间占比。
适用场景:定位哪个CPU核心负载过高,判断是否负载不均衡。

sar:系统活动历史数据统计
sar(System Activity Reporter)是sysstat工具包的一部分,可记录历史系统数据,适合分析负载趋势。
基本用法:
sar -q 1 5 # 每秒记录一次,共5次,显示负载信息
示例输出:
Linux 5.4.0-91-generic (ubuntu) 10月15日 _x86_64_ (2 CPU)
18:30:26 LINUX RESTART ( 2 CPU)
18:30:27 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
18:30:28 2 120 1.25 0.98 0.75 0
18:30:29 1 118 1.20 0.96 0.74 0
参数解读:
runq-sz:运行队列大小(与vmstat的r列含义一致);ldavg-1/5/15:1分钟、5分钟、15分钟负载平均值。
查看历史数据:
sar -q -f /var/log/sysstat/sa10 # 查看10号的历史负载记录
适用场景:分析历史负载趋势,排查周期性性能问题。
dstat:多功能资源统计工具
dstat是一款强大的系统资源统计工具,可同时监控CPU、内存、磁盘、网络等多种资源,并支持自定义输出格式。
基本用法:
dstat -tclm --top-cpu # 显示时间、负载、CPU、内存,以及CPU占用top的进程
示例输出:
--total-cpu-usage-- -load-avg- ---memory-usage--- --top-cpu---
usr sys idl wa hi si st| 1m 5m 15m| used buff cach| % pid
15 5 78 2 0 0 0|1.25 0.98 0.75|7.2G 1.2G 3.4G|45 1234
参数解读:
--top-cpu:显示CPU占用率最高的进程及其PID;-t:显示时间戳;-c:CPU使用率;-l:负载平均值;-m:内存使用情况。
适用场景:快速定位资源瓶颈,同时监控多种指标。
工具对比总结
下表总结了上述工具的主要功能、常用参数及适用场景,方便读者快速选择合适的工具:
| 工具名称 | 主要功能 | 常用参数 | 适用场景 |
|---|---|---|---|
uptime |
快速查看负载平均值 | -v(显示版本) |
快速概览系统负载状态 |
top |
动态监控进程和系统资源 | -d(刷新间隔)、-p(指定进程) |
实时查看进程资源占用 |
htop |
top的增强版,彩色交互界面 | -u(指定用户)、-s(排序) |
直观的进程监控与交互操作 |
glances |
全系统资源监控 | -b(网卡模式)、-t(传感器模式) |
综合监控多种资源,长期记录 |
vmstat |
虚拟内存与进程统计 | -s(详细统计)、-n(不重复表头) |
分析CPU与I/O瓶颈 |
mpstat |
多核CPU负载统计 | -P(指定核心)、-u(CPU使用率) |
查看各核心负载分布 |
sar |
系统活动历史数据统计 | -q(负载)、-f(指定文件) |
分析历史负载趋势 |
dstat |
多功能资源统计 | -l(负载)、--top-cpu(CPU top) |
同时监控多种资源,快速定位瓶颈 |
相关问答FAQs
问题1:系统负载过高时,如何快速定位问题根源?
解答:
系统负载过高时,可按以下步骤排查:
- 使用
top或htop:查看高CPU/内存占用的进程,记录PID和进程名,若某个进程CPU占用持续超过80%,可能是该进程导致负载高; - 检查运行队列:通过
vmstat的r列,若r值持续大于CPU核心数,说明CPU瓶颈;若b列高,说明I/O瓶颈; - 分析I/O状态:使用
iostat -x查看磁盘使用率(%util),若超过80%,说明磁盘繁忙; - 检查网络连接:通过
netstat -an | grep ESTABLISHED | wc -l查看活跃连接数,若过高(如数十万),可能是网络攻击或应用连接泄漏; - 查看系统日志:检查
/var/log/messages或/var/log/syslog,定位是否有错误信息(如OOM Killer杀死进程、驱动报错等)。
问题2:负载值超过CPU核心数一定意味着系统性能有问题吗?
解答:
不一定,负载值超过CPU核心数需结合CPU使用率、I/O等待等指标综合判断:
- CPU使用率接近100%:若负载值大于核心数且CPU使用率(
us+sy)接近100%,说明CPU确实存在瓶颈,需要优化进程或增加CPU核心; - CPU使用率较低但负载高:若CPU使用率低(如
id列高),但负载值高,可能是进程在等待I/O(wa列高)或内存不足(频繁换页),此时需优化磁盘I/O(如升级磁盘、调整文件系统)或增加内存; - 多核CPU下的合理负载:例如4核CPU,负载值4.0表示满负荷,4.5表示轻微拥堵,但若I/O等待率低(
wa<5%),且关键进程响应正常,系统仍可接受。
负载值仅是参考指标,需结合CPU、内存、I/O等综合分析,避免片面解读。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/37288.html