top命令
top是Linux常用的性能分析工具,能够实时显示各个进程使用资源的情况
[root@vms002 rh134]# top
top - 12:00:29 up 1 day, 1:11, 4 users, load average: 0.00, 0.01, 0.11
Tasks: 504 total, 1 running, 503 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.3 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 4033636 total, 2105296 free, 682480 used, 1245860 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 3062188 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
58709 root 20 0 130412 2220 1276 R 0.7 0.1 0:00.06 top
852 root 20 0 269016 4388 3536 S 0.3 0.1 1:38.79 vmtoolsd
1996 jerry 20 0 1066404 24132 15144 S 0.3 0.6 0:03.18 gnome-settings-
1 root 20 0 60716 8164 2720 S 0.0 0.2 0:11.44 systemd
第一行 top
12:00:29 #当前时间
up 1 day, 1:11, #已运行时间
4 users, #当前连接用户
load average: 0.00, 0.01, 0.11 #平均负载 1分钟 5分钟 15分钟
第二行 Tasks
504 total, #当前运行的总进程数
1 running, #正在运行的进程数
503 sleeping, #挂起的进程数
0 stopped, #停止的进程数
0 zombie #僵尸进程数
第三行 %Cpu(s)
# User Time CPU执行用户进程所占用的时间占比
# 通常情况下希望us占比越高越好
0.2 us,
# System Time CPU在内核态所花费的时间占比
# sy占比高,通常意味着系统在某些方面设计的不合理
# 比如频繁的系统调用导致的用户态与内核态的频繁切换
0.3 sy,
# Nice Time 系统调整进程优先级所花费的时间占比
0.0 ni,
# Idle Time 系统处于空闲期,等待进程运行所占用的时间占比
# 当然,我们希望id的占比越低越好
99.5 id,
# Waiting time CPU等待(等待I/O输入输出)的时间占比
# 系统不应该花费大量的时间进行等待,否则便表示可能有某个地方设计不合理
0.0 wa,
# Hard Irq Time 系统处理硬件中断所占用的时间占比
0.0 hi,
# Soft Irq Time 系统处理软件中断所占用的时间占比
0.0 si,
# Steal Time 是在硬件虚拟化开始流行后新增的一列
# 表示被强制等待虚拟CPU所占用的时间占比
# 如果st占比高,表示当前虚拟机与该宿主上的其他虚拟机间的CPU争用较为频繁
0.0 st
# 这里的CPU时间百分比是平均值,按1即可展开全部CPU的详细信息
第四行 KiB Mem
4033636 total, #物理内存总量
2105296 free, #空闲物理内存
682480 used, #已使用的物理内存
1245860 buff/cache #缓冲/缓存 内存
第五行 KiB Swap
第五行
4194300 total, #交换区总量
4194300 free, #空闲的交换区
0 used. #已使用的交换区
3062188 avail Mem
进程信息
PID #进程ID
USER #进程的所有者
PR #实时优先级(共140个级别)
NI #优先级
VIRT #进程使用的虚拟内存
RES #进程使用的真实内存
SHR #共享内存
S #进程状态
%CPU #进程的CPU占用率
%MEM #进程的内存占用率
TIME+ #进程占用的总CPU时间片段
COMMAND #进程名称
交互命令
h|? #帮助
H #切换进程/线程来查看CPU消耗情况
M #按内存的使用排序
P #按CPU的使用排序
N #以PID的大小排序
R #对排序进行反转
r #修改进程优先级
k #杀死进程
s #多长时间更新一次信息,秒为单位
f #自定义显示字段
1 #显示所有CPU的负载
< #向前
> #向后
z #彩色
i #忽略闲置和僵死进程
W #保存top环境设置~/.toprc
q #退出
启动参数
# -b以批处理模式操作
# -d <秒数>屏幕刷新间隔时间
# -c显示完整的治命令
# -p<进程ID>查看指定进程
top -b
top -d 3
什么是load
# 特定时间间隔内运行队列中的平均线程数,如果一个线程满足以下条件,该线程就会处于运行队列中
# 1.没有处于I/O等待状态。
# 2.没有主动进入等待状态,也就是没有调用wait操作。
# 3.没有被终止。
# 每个CPU的核都维护了一个运行队列,系统的load主要由运行队列来决定。
# 假设一个CPU有8个核,运行的应用程序占了16个线程,并且这16个线程都处于运行状态。
# 那么在平均分配的情况下,每个CPU的运行队列中就有2个线程在运行。
# 假设这种情况维持了1分钟,那么这一分钟内的系统load值就为2。
# load值越大,意味着CPU越繁忙。
# 一般来说,只要load不超过3,可以认为系统的负载是正常的。
# 如果load超过5,则表示当前系统负载已经非常高了。