
top 是 Linux 下最常用、最直观的实时系统监控工具,能快速定位 CPU 和内存相关的性能瓶颈。它不需要安装,开箱即用,关键在于看懂字段含义、掌握筛选和排序技巧。
重点关注的几列指标
启动 top 后,默认显示的进程列表中,以下几列对性能分析最关键:
- %CPU:进程占用的 CPU 百分比(单核归一化,100% 表示占满一个逻辑 CPU)
- %MEM:进程使用的物理内存占总内存的百分比
- RES(Resident Memory):进程实际驻留在物理内存中的大小(单位 KB),比 %MEM 更反映真实内存压力
- VIRT:进程虚拟内存总量(含已交换、未分配、共享库等),仅作参考,不直接代表内存压力
- TIME+:进程自启动以来使用的 CPU 时间(精确到百分之一秒),有助于识别“老而慢”的长时运行任务
快速定位高 CPU 占用进程
默认按 CPU 使用率降序排列,但可手动强化:
- 运行 top 后按 Shift + P(大写 P),确保按 %CPU 排序
- 观察顶部 summary 区域的 %Cpu(s) 行:若 us(用户态)持续 >70%,说明应用层计算密集;若 sy(内核态)高,可能频繁系统调用或锁竞争;若 wa(I/O wait)高,说明磁盘或网络等待严重
- 结合 pidstat -u 1 或 perf top 进一步下钻函数级热点(如 Java 应用可配合 jstack 分析线程栈)
识别内存泄漏或内存大户
内存问题常表现为系统变慢、频繁 swap、OOM killer 触发:
- 按 Shift + M 切换为按 RES 降序排列,重点关注 RES 持续增长且不释放的进程
- 查看 summary 区域的 MiB Mem 和 MiB Swap:若可用内存(free)极低、cached 较高但 buff/cache 无法有效回收,或 swap used 持续上升,说明内存紧张
- 对疑似进程,用 pmap -x <PID> 查看其内存段分布;用 cat /proc/<PID>/status | grep -E "VmRSS|VmSize" 获取更准确的 RSS 值
实用操作技巧提升分析效率
避免被干扰信息淹没,聚焦关键线索:
- 按 1 显示所有 CPU 核心的使用率(多核系统下判断是否负载不均)
- 按 H 切换线程视图(显示 LWP),排查单进程内多线程争抢 CPU 的情况
- 按 u 后输入用户名,只看某用户下的进程(如只关注 www-data 或 app 用户)
- 按 k 可向指定 PID 发送信号(如 kill -9),慎用,建议先 kill -15 尝试优雅退出
- 按 q 退出;按 ? 查看全部交互命令
top 不是万能诊断器,但它是最高效的“第一眼”工具。结合 uptime、vmstat、iostat、free 等命令交叉验证,才能准确定位是 CPU 密集、内存不足、IO 瓶颈还是上下文切换过高。理解每个字段背后的机制,比记住快捷键更重要。











