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,则表示当前系统负载已经非常高了。

results matching ""

    No results matching ""