air wish Blog

top 命令输出的解释

解释 top 命令的输出信息

Tech
Published on

Linux 中的 top 命令显示系统上正在运行的进程。各个发行版的 top 可能会有出入,请参照对应系统的–help 和 man。

输出

top - 22:13:14 up 9 days,  5:25,  3 users,  load average: 0.05, 0.04, 0.00
Tasks: 112 total,   1 running, 111 sleeping,   0 stopped,   0 zombie
%CPU(s):  0.5 us,  0.2 sy,  0.0 ni, 99.2 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1975.7 total,     98.3 free,    369.2 used,   1508.3 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   1425.9 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   1308 root      20   0  982132  70404  23668 S   1.3   3.5  78:16.94 YDService
   1434 root      20   0  559356  16756   3896 S   0.7   0.8  52:47.13 barad_agent
   7426 root      20   0 1274276  32056  19292 S   0.3   1.6  13:23.34 containerd
2048323 ittuann   20   0   10480   4008   3440 R   0.3   0.2   0:00.02 top               	   1 root      20   0  167536  12796   7964 S   0.0   0.6   0:22.51 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.27 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri

系统运行时间和平均负载

top - 15:16:52 up 103 days, 2:09, 1 user, load average: 0.06, 0.09, 0.11

top 命令的顶部第一行的显示与 uptime 命令相似的输出。可以使用 l 键切换 uptime 的显示。

这些字段意思是:

当前时间 - 系统已运行的时间 - 当前登录用户的数量 - 相应最近5、10和15分钟内的平均负载。

关于平均负载 load average,我们可以粗略地计算为 load average/CPUs=usage percent

例如上面给出的 0.06,这台机器的核心数量可以通过 lscpu 查看,是 2 核,则利用率为0.06 / 2 * 100% = 0.1875%,说明无进程在等待。

如果达到了 3.00,则此时利用率为3.00 / 2 * 100% = 150%,则有 150% - 100% * 2 = 1个进程在等待。

任务

Tasks: 112 total,   1 running, 111 sleeping,   0 stopped,   0 zombie

这一行说明了进程数量和进程类型。

CPU 状态

%CPU(s):  0.5 us,  0.2 sy,  0.0 ni, 99.2 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st

显示了不同模式下的百分比,分别为:

us-user, sy-system, ni-niced 优先级, wa-wait, hi-hardware_interrupt, si-software_interrupt,, st-steal 常见于虚拟机,指被虚拟CPU偷走的时间

内存使用

MiB Mem :   1975.7 total,     98.3 free,    369.2 used,   1508.3 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   1425.9 avail Mem

内存使用率,类似于 free。第一行为物理内存,第二行为 swap。

具体信息

意义
PID进程 ID,唯一标识符。
USER进程所有者的实际用户名。
PR进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。
NI进程的 nice 值(优先级)。越小的值意味着越高的优先级。
VIRT进程使用的虚拟内存。
RES驻留内存大小。驻留内存是任务使用的非交换物理内存大小。
SHR进程使用的共享内存。
S这个是进程的状态。它有 D/R/S/T/Z/I
%CPU自从上一次更新时到现在任务所使用的 CPU 时间百分比。
%MEM进程使用的可用物理内存百分比。
TIME+任务启动后到现在所使用的全部 CPU 时间,精确到百分之一秒。
COMMAND运行进程所使用的命令。

关于 S,有如下状态:

类型意义
DDisk Sleep,不可中断睡眠,一般为进程正在与硬件交互。
RRunning,运行中。
SInterruptible Sleep,可中断睡眠,表示进程因为等待某个事件而被系统挂起。当进程等待的事件发生时,它会被唤醒并进入 R。
TTraced/Stopped,调试器会触发Traced,发送SIGSTOP信号会触发Stopped。
ZZombie,僵尸进程,父进程结束但未回收资源。
IIdle,空闲状态,一般不会消耗资源。

详解 top 应该怎么看

Linux top 命令 - 菜鸟教程