top命令输出的解释

记录一下top命令输出的解释

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,有如下状态:

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

详解top应该怎么看

Linux top 命令 - 菜鸟教程