top
命令用于查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。通过 top
命令可以有效的发现系统的缺陷出在哪里。是内存不够、CPU处理能力不够、IO读写过高…. 同时可以实时显示 process 的动态。
使用权限:所有使用者。
top 显示信息详解
[root@localhost wbxbuilds]# top
top - 01:52:19 up 32 days, 15:18, 1 user, load average: 0.03, 0.06, 0.10
Tasks: 206 total, 1 running, 205 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.6 us, 0.3 sy, 0.0 ni, 97.5 id, 1.6 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8010512 total, 1043328 free, 3339404 used, 3627780 buff/cache
KiB Swap: 3145724 total, 3142272 free, 3452 used. 4226060 avail Mem
# top 命令第一行
top - 01:52:19 up 32 days, 15:18, 1 user, load average: 0.03, 0.06, 0.10
-
01:52:19
表示系统当前时间。 -
up 32 days
表示系统最后一次启动后总的运行时间。 -
1 user
表示当前系统中只有一个登录用户。 -
load average: 0.03, 0.06, 0.10
表示系统的平均负载,最后的三个数字分别表示最后一分钟的系统平均负载,最后五分钟的系统平均负载,最后十五分钟的系统平均负载。
注意:load average 数据是每隔 5 秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑 CPU 的数量,结果高于 5 的时候就表明系统在超负荷运转了。
# top 命令第二行
Tasks: 206 total, 1 running, 205 sleeping, 0 stopped, 0 zombie
-
Tasks: 206 total
表示当前系统的进程总数。 -
1 running
表示当前系统中有 1 个正在运行的进程。 -
205 sleeping
表示当前系统中有 205 个休眠的进程。 -
0 stopped
表示停止状态的进程数为 0。 -
0 zombie
表示处于僵死状态的进程数为 0。
# top 命令第三行, cpu 状态
%Cpu(s): 0.6 us, 0.3 sy, 0.0 ni, 97.5 id, 1.6 wa, 0.0 hi, 0.0 si, 0.0 st
依次对应如下:
-
us
进程在用户地址空间中消耗 CPU 时间的百分比。 -
sy
进程在内核地址空间中消耗 CPU 时间的百分比。 -
ni
这里显示的 ni 表示调整过 nice 值的进程消耗掉的 CPU 时间。 -
id
CPU 处于 idle 状态的百分比。一般情况下, us + ni + id 应该接近 100%。 -
wa
CPU 等待磁盘 IO 操作的时间。 -
hi
表示处理硬中断消耗的时间。- 硬中断是硬盘、网卡等硬件设备发送给 CPU 的中断消息,当 CPU 收到中断消息后需要进行适当的处理(消耗 CPU 时间)。
-
si
表示处理软中断消耗的时间。- 软中断是由程序发出的中断,最终也会执行相应的处理程序(消耗 CPU 时间)。
-
st:
只有 Linux 在作为虚拟机运行时 st 才是有意义的。它表示虚机等待 CPU 资源的时间(虚机分到的是虚拟 CPU,当需要真实的 CPU 时,可能真实的 CPU 正在运行其它虚机的任务,所以需要等待)。
# top 命令第四行,内存状态
KiB Mem : 8010512 total, 1043328 free, 3339404 used, 3627780 buff/cache
# top 命令第五行,内存交换分区
KiB Swap: 3145724 total, 3142272 free, 3452 used. 4226060 avail Mem
上述类似 Linux free
指令展示的内存信息。
任务详情
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19021 rabbitmq 20 0 3389628 105812 4320 S 4.0 1.3 826:20.61 beam.smp
1124 root 20 0 582176 31204 14476 S 0.3 0.4 4:17.64 containerd
4954 root 20 0 5760308 965756 14436 S 0.3 12.1 21:14.08 java
22793 root 20 0 196836 45592 32860 S 0.3 0.6 56:26.12 consul
29271 root 20 0 157764 2344 1580 R 0.3 0.0 0:01.36 top
1 root 20 0 191020 4016 2572 S 0.0 0.1 0:49.52 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.89 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:01.00 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:02.14 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 7:12.66 rcu_sched
10 root rt 0 0 0 0 S 0.0 0.0 0:09.27 watchdog/0
11 root rt 0 0 0 0 S 0.0 0.0 0:07.77 watchdog/1
默认情况下这里会显示 12 列数据:
-
PID
表示进程 ID。 -
USER
表示进程所有者的有效用户名称。简单说就是以哪个用户权限启动的进程。比如上图中有两个进程是用户 nick 启动的,还有一个是用户 prometheus 启动的,其它都是 root 用户启动的。 -
PR
表示进程执行的优先级,PR 的值是以 Linux 内核的视角看到的进程执行的优先级。 -
NI
从用户视角看到的进程执行优先级。注意上图中 NI 值为 -20 的两个进程,它们的 PR 值都是 0。 -
VIRT
表示进程使用的虚拟内存大小。 -
RES
表示进程使用的物理内存大小。 -
SHR
表示进程使用的共享内存的大小。 -
S
表示进程当前的状态。S 值有下面几种:-
D
不可中断的睡眠状态(uninterruptible sleep) -
I
idle 状态 -
R
进程在 running 队列中,正在运行或准备运行(running) -
S
睡眠状态(sleeping) -
T
停止状态(stopped by job control signal) -
t
跟踪状态(stopped by debugger during trace) -
Z
僵尸状态(zombie)
-
-
%CPU
表示进程使用 CPU 的百分比。 -
%MEM
表示进程使用内存的百分比。 -
TIME+
表示进程累计使用的 CPU 时间。 -
COMMAND
表示运行进程对应的程序。
网友评论