记录一下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,空闲状态,一般不会消耗资源。 |