top 是 Linux/Unix 系统中一个非常强大且常用的实时系统监控工具,它能动态显示系统中运行的进程以及整体资源使用情况。理解 top 的每一部分信息,有助于快速诊断系统性能问题。
以下是 top 命令输出的主要部分及其含义详解(以典型输出为例):
一、第一部分:系统概览信息(头部几行)
top - 10:25:30 up 5 days, 3:12, 2 users, load average: 1.20, 0.85, 0.60
Tasks: 185 total, 2 running, 183 sleeping, 0 stopped, 0 zombie
%Cpu(s): 60.3 us, 3.0 sy, 0.0 ni, 34.3 id, 0.0 wa, 0.0 hi, 2.4 si, 0.0 st
MiB Mem : 8000.0 total, 1200.0 free, 4500.0 used, 2300.0 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 3200.0 avail Mem
- 第一行:系统运行状态
top - 10:25:30 up 5 days, 3:12, 2 users, load average: 1.20, 0.85, 0.60
10:25:30:当前系统时间
up 5 days, 3:12:系统已连续运行 5 天 3 小时 12 分钟
2 users:当前有 2 个用户登录
load average: 1.20, 0.85, 0.60:系统在过去 1分钟、5分钟、15分钟的平均负载
负载值 ≈ 正在运行或等待 CPU 的进程数
若负载接近或超过 CPU 核心数,说明系统较忙
- 第二行:任务(进程)统计
Tasks: 185 total, 2 running, 183 sleeping, 0 stopped, 0 zombie
total:总共 185 个进程
running:2 个正在运行(或可运行)
sleeping:183 个在等待事件(如 I/O、定时器)
stopped:暂停的进程数(如被信号暂停)
zombie:僵尸进程(已结束但未被父进程回收),应为 0,否则可能有程序 bug
- 第三行:CPU 使用情况(详细见上一回答)
%Cpu(s): 60.3 us, 3.0 sy, 0.0 ni, 34.3 id, 0.0 wa, 0.0 hi, 2.4 si, 0.0 st
各字段含义如下:
us(user):60.3%
表示 CPU 花在用户态进程上的时间百分比。
例如运行应用程序、脚本、服务等非内核代码。
数值高说明用户程序正在大量使用 CPU。
sy(system):3.0%
表示 CPU 花在内核态(系统)进程上的时间百分比。
即操作系统内核执行系统调用、进程调度、内存管理等操作所消耗的 CPU。
高 sy 可能意味着系统调用频繁,如大量 I/O 或进程切换。
ni(nice):0.0%
表示 CPU 花在调整过优先级(nice > 0)的用户进程上的时间。
nice 是 Linux 中调整进程优先级的方式,值越高优先级越低。
如果这个值高,说明有低优先级任务在运行。
id(idle):34.3%
表示 CPU 空闲时间的百分比,即 CPU 无事可做。
理想情况下,这个值越高,系统越不繁忙。但结合其他指标判断更准确。
wa(iowait):0.0%
表示 CPU 等待 I/O 操作完成的时间百分比。
当磁盘或网络 I/O 慢时,CPU 可能空闲等待,此时 wa 会升高。
高 wa 通常意味着 I/O 成为瓶颈。
hi(hardware interrupts):0.0%
表示 CPU 处理硬件中断所花费的时间。
例如来自网卡、键盘、定时器等设备的中断信号。
通常较低,过高可能表示硬件频繁触发中断。
si(software interrupts):2.4%
表示 CPU 处理软件中断所花费的时间。
软件中断通常由内核触发,用于处理延迟任务(如网络包处理、定时器等)。
高 si 常见于高网络吞吐或大量软中断场景。
st(steal):0.0%
表示在虚拟化环境中,被hypervisor(虚拟机管理器)偷走的 CPU 时间。
即虚拟机本应使用 CPU,但宿主机将其分配给其他虚拟机的时间。
高 st 表示宿主机资源紧张,影响虚拟机性能。
综合分析你的情况:
60.3% 用户态(us):较高,说明有大量用户程序在运行(如应用服务、计算密集型任务)。
3.0% 内核态(sy):正常偏低,系统调用不多。
34.3% 空闲(id):CPU 仍有约 1/3 的空闲能力。
2.4% 软中断(si):略高,可能与网络处理有关,需结合具体情况看。
其他项均为 0,说明没有 I/O 等待、无硬件中断压力、无虚拟化资源争抢。
✅ 结论:当前 CPU 主要用于用户程序,系统整体负载尚可,未见明显瓶颈。
- 第四行:物理内存使用(MiB Mem)
MiB Mem : 8000.0 total, 1200.0 free, 4500.0 used, 2300.0 buff/cache
total:总物理内存 8GB
free:完全未使用的内存(1.2GB)
used:已被使用的内存(4.5GB)
buff/cache:用于缓冲区(buffer)和页面缓存(cache)的内存(2.3GB)
Linux 会利用空闲内存做缓存,提升性能,这部分在需要时可释放
所以 used 并不等于“真正被占用”,实际可用内存看最后一行
💡 注意:free + used = total,但 buff/cache 是 used 的一部分,系统认为它是“可回收”的。
- 第五行:交换分区(Swap)和可用内存
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 3200.0 avail Mem
Swap:虚拟内存(磁盘上的交换空间)
total:2GB
used:0,说明当前没有使用交换分区,很好
avail Mem:可用内存 ≈ 3.2GB
这是系统估计的当前可立即分配给新进程的内存,比 free 更准确
包含可回收的 buff/cache
二、第二部分:进程列表(主体部分)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 user1 20 0 150.2m 20.1m 8.2m S 55.0 0.2 1:23.45 myapp
5678 root 20 0 40.5m 10.0m 5.1m R 5.0 0.1 0:12.01 top
1 root 20 0 20.1m 2.1m 1.5m S 0.0 0.0 0:02.10 systemd
列名 含义
PID 进程 ID,唯一标识一个进程
USER 运行该进程的用户
PR 进程的优先级(Priority),值越小优先级越高
NI Nice 值,用户可调整的优先级偏移(-20 ~ 19),影响 PR
VIRT 虚拟内存大小(KB/MB/GB),进程能看到的所有内存(包括共享、交换、未分配)
RES 常驻内存大小(实际使用的物理内存),最重要
SHR 共享内存大小(如共享库)
S 进程状态:<br>• R = Running(运行中)<br>• S = Sleeping(可中断睡眠)<br>• D = Uninterruptible sleep(不可中断,常因 I/O)<br>• Z = Zombie(僵尸)<br>• T = Stopped
%CPU 该进程占用的 CPU 时间百分比(基于采样周期)
%MEM 该进程占用的物理内存百分比
TIME+ 进程自启动以来累计使用的 CPU 时间(百分之一秒为单位)
COMMAND 启动该进程的命令名或命令行
三、常用操作键(在 top 界面中按)
键 功能
q 退出 top
h 显示帮助
k 杀死进程(输入 PID)
r 重新设置进程的 nice 值
P 按 CPU 使用率排序
M 按内存使用率排序
T 按运行时间排序
1 显示每个 CPU 核心的使用情况
u 只显示某个用户的进程
f 添加/删除显示的列
四、总结:如何快速判断系统状态?
看 load average:是否远高于 CPU 核心数?
看 %CPU:us 高?sy 高?wa 高?(I/O 瓶颈)
看内存:used 高但 avail Mem 高?正常;Swap used 高?内存不足!
看进程列表:哪个进程占用了大量 CPU 或内存?
1173

被折叠的 条评论
为什么被折叠?



