使用 top 跟踪进程
100%

进程利用率 · 第 1 课

使用 top 跟踪进程

学习如何使用 top 解读系统负载、CPU、内存和各进程的活动情况。

top 会反复更新系统活动和运行进程的视图。它适合用来形成性能问题的假设,但单个繁忙样本本身并不能证明问题原因。应比较多次更新,并结合日志和工作负载特有的指标进行分析。

阅读系统摘要

典型显示以几行摘要开头,后面是进程表:

top - 18:06:26 up 6 days, 4:07, 2 users, load average: 0.92, 0.62, 0.59
Tasks: 389 total, 1 running, 387 sleeping, 0 stopped, 1 zombie
%Cpu(s): 1.8 us, 0.4 sy, 0.0 ni, 97.6 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 32099.0 total, 5276.3 free, 7031.2 used, 19791.5 buff/cache
MiB Swap: 32700.0 total, 32661.0 free, 39.0 used

第一行包含当前时间、系统运行时长、已登录用户数,以及 1、5、15 分钟的平均负载。任务行统计各进程状态的数量。平均负载不是直接的 CPU 百分比;在 Linux 中,它反映可运行任务和不可中断睡眠任务的数量,因此需要结合 CPU 数量、I/O 活动和延迟来解读。

top 中的三个平均负载值分别表示什么?

解读 CPU 时间

常见的 CPU 字段包括:

  • us:执行用户空间代码的时间。
  • sy:执行内核代码的时间。
  • ni:调整过 Nice 值的任务在用户空间执行的时间。
  • id:空闲时间。
  • wa:存在尚未完成的 I/O 请求时 CPU 的空闲时间。
  • hisi:处理硬件中断和软件中断的时间。
  • st:虚拟机管理程序为其他来宾系统占用的虚拟 CPU 时间。

较高的 wa 值可以支持“I/O 等待”这一假设,但它既不能指出具体设备,也无法证明存储是唯一瓶颈。下结论前,应检查设备延迟和应用程序行为。

CPU 的 wa 字段报告什么?

阅读进程表

常见的重要列包括:

  • PIDUSERCOMMAND:标识与所有权。
  • S:进程状态,例如运行(R)、睡眠(S)、不可中断睡眠(D)、停止(T)或僵尸(Z)。
  • %CPU%MEM:采样得到的 CPU 活动和物理内存占比。
  • TIME+:累计 CPU 时间。
  • VIRT:与任务关联的虚拟地址空间总量。
  • RES:当前归属于任务、常驻且未换出的物理内存。
  • SHR:可能与其他进程共享的常驻内存。

VIRT 并不是实际消耗的物理 RAM。它可能包括映射文件、共享库、预留的地址空间和已换出的内存页。即使是 RES 也要谨慎解读,因为共享内存页会使归属统计变得复杂。

哪个字段更接近进程当前常驻的物理内存?

聚焦与排序

可以直接监控已知 PID:

$ top -p 1234,5678

在常见的 procps-ng 实现中,进入 top 后按 P 可按 CPU 排序,按 M 可按内存排序,按 1 可切换每 CPU 摘要行,按 q 可退出。不同实现的按键和字段可能不同,因此应按 h 查看本地交互式帮助。

执行操作前,应记录 PID、命令、时间戳和多个样本。某个进程短暂排在首位可能是正常现象,贸然终止它可能造成数据丢失或服务中断。

哪个命令只显示 PID 1234?

课程已完成

你已完成 使用 top 跟踪进程

现在,你可以使用 top 建立并检验系统性能假设。

  • 将平均负载理解为不同时间窗口内的负载,而不是 CPU 百分比。

  • 在多个样本之间比较 CPU 时间类别。

  • 区分虚拟地址空间与常驻内存。

  • 聚焦已知 PID,并在执行操作前验证证据。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 进程利用率