id
CPU 处于 idle 状态的百分比。一般情况下, us + ni + id 应该接近 100%。
wa
CPU 等待磁盘 IO 操作的时间。和 CPU 的处理速度相比,磁盘 IO 操作是非常慢的。有很多这样的操作,比如:CPU 在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU 只能处于空闲状态。Linux 系统在计算系统平均负载时会把 CPU 等待 IO 操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过 wa 来判断系统的性能瓶颈是不是过多的 IO 操作造成的。
hi & si
这两个值表示系统处理中断消耗的时间。中断分为硬中断和软中断,hi 表示处理硬中断消耗的时间,si 表示处理软中断消耗的时间。硬中断是硬盘、网卡等硬件设备发送给 CPU 的中断消息,当 CPU 收到中断消息后需要进行适当的处理(消耗 CPU 时间)。软中断是由程序发出的中断,最终也会执行相应的处理程序(消耗 CPU 时间)。
st
只有 Linux 在作为虚拟机运行时 st 才是有意义的。它表示虚机等待 CPU 资源的时间(虚机分到的是虚拟 CPU,当需要真实的 CPU 时,可能真实的 CPU 正在运行其它虚机的任务,所以需要等待)。
小写字母 t 可以控制是否显示任务信息汇总和 CPU 信息。没错,它能控制是否显示两行信息。
内存信息
内存信息包含两行内容,内存和交换空间:

top 命令中这部分的输出和 free 命令的输出基本相同,笔者在《linux free 命令》一文已经详细介绍过,这里不再赘述。
控制显示单位
top 命令默认以 K 为单位显示内存大小,这让人十分抓狂。好在我们可以通过大写字母 E 来切换内存信息区域的显示单位(注意,E 不能控制任务区域中的内存单位),下图以 GB 显示内存大小:

小写字母 m 可以控制是否显示内存信息。
任务详情
内存信息下面是一个空行(其实是与用户交互的区域),空行的下面就是任务详情区域:

默认情况下这里会显示 12 列数据,都是我们比较关心的进行相关的信息,下面我们一个一个的介绍。
PID 表示进程 ID。
USER 表示进程所有者的有效用户名称。简单说就是以哪个用户权限启动的进程。比如上图中有两个进程是用户 nick 启动的,还有一个是用户 prometheus 启动的,其它都是 root 用户启动的。
PR 表示进程执行的优先级,PR 的值是以 Linux 内核的视角看到的进程执行的优先级。
NI 从用户视角看到的进程执行优先级。注意上图中 NI 值为 -20 的两个进程,它们的 PR 值都是 0。








