Linux

Linux18.2_top命令详解

2019-05-29  本文已影响7人  Y大宽

关于ps命令的用法,见Linux_18下查看进程的启动和运行时间。虽然ps在收集系统上的进程信息很有用,但也有不足之处:它只能显示某个特定时间点的饿信息,如果想观察频繁换进换出的内存的运行趋势,ps就有点力不从心了。
top命令和ps相似,可以实时显示进程信息。

top - 18:56:37 up 23:03,  1 user,  load average: 296.20, 296.00, 302.87
Tasks: 764 total,   1 running, 590 sleeping,   0 stopped,   0 zombie
%Cpu(s): 14.1 us,  1.5 sy,  0.0 ni,  0.0 id, 83.2 wa,  0.0 hi,  1.1 si,  0.0 st
KiB Mem : 65885076 total,   402748 free, 65326388 used,   155940 buff/cache
KiB Swap:  2097148 total,      340 free,  2096808 used.    13324 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                 
 27687 pc        20   0 3240472 215596      0 S   3.3  0.3   7:14.96 java                                                                                    
 30658 pc        20   0 3173908 222532      0 S   3.3  0.3   8:13.48 java                                                                                    
 31401 pc        20   0 3240472 213156      0 S   3.3  0.3   7:34.65 java                                                                                    
 32428 pc        20   0 3307036 214048      0 S   3.3  0.3   9:56.77 java                                                                                    
 24691 pc        20   0 3373600 211868      0 S   2.8  0.3  10:11.30 java                                                                                    
 25199 pc        20   0 3373600 211508      0 S   2.8  0.3   5:15.19 java                                                                                    
 27693 pc        20   0 3240472 215908      0 S   2.8  0.3   7:06.08 java                                                                                    
 28596 pc        20   0 3173908 222992      0 S   2.8  0.3   8:51.75 java                                                                                    
 28842 pc        20   0 3307036 221788      0 S   2.8  0.3   7:00.92 java                                                                                    
 29396 pc        20   0 3307036 220716      0 S   2.8  0.3  10:03.62 java                                                                                    
 29761 pc        20   0 3307036 215060      0 S   2.8  0.3   5:42.24 java                                                                                    
 29773 pc        20   0 3307036 213004      0 S   2.8  0.3   4:55.32 java                                                                                    
 30576 pc        20   0 3173908 224252      0 S   2.8  0.3   7:07.25 java                                                                                    
 30824 pc        20   0 3173908 224200      0 S   2.8  0.3   8:20.90 java                                                                                    
 30933 pc        20   0 3240472 214660      0 S   2.8  0.3   6:35.04 java                                                                                    
 31062 pc        20   0 3307036 214744      0 S   2.8  0.3   8:29.36 java                                                                                    
 31120 pc        20   0 3307036 223212      0 S   2.8  0.3   9:35.15 java  

解释如下:

第一部分 显示系统概况

第一行 系统的负载程度

依次为:当前时间,系统的运行时间,登录的用户数,系统的平均负载,具体到本例

18:56:37:当前系统时间
up 23:03:系统已经运行的时间
1 user:当前有1个用户登录系统
load average: 296.20, 296.00, 302.87:最近1,5,15min的平均负载情况

其中平均负载有3个值:最近1分钟的,最近5分钟的,最近15分钟的平均负载。值越大说明系统的负载越高。因为进程可能会有短期的突发性活动,一分钟高负载也正常,但如果近15分钟都很高,可能系统有问题。

如何定义高负载?

  • 究竟什么程度才是高负载?这个值取决于系统的硬件配置以及系统上通常运行的程序。对于某个系统来说是高负载而对另外一个系统可能正常。
  • 通常,负载值超过2,就说明系统比较繁忙了

第二行 进程概要信息

top输出中,将进程叫任务(task),依次为:
总任务数,运行,休眠,停止,僵化(的任务)

Tasks: 763 total, 1 running, 590 sleeping, 0 stopped, 0 zombie
总共763个任务,1个正在运行,590个在休眠,0个停止,0个僵尸
僵化是进程完成了,但父进程没有响应。

第三行 CPU概要

依次为
**用户,系统,运行,空闲,等待

%Cpu(s): 14.1 us, 1.5 sy, 0.0 ni, 0.0 id, 83.2 wa, 0.0 hi, 1.1 si, 0.0 st
14.1 us:用户空间占用CPU的百分比。
1.5 sy:内核空间占用CPU的百分比。
0.0 ni:改变过优先级的进程占用CPU的百分比
0.0 id:空闲CPU百分比
83.2 wa:IO等待占用CPU的百分比
0.0 hi: 硬中断(Hardware IRQ)占用CPU的百分比
1.1 si:软中断(Software Interrupts)占用CPU的百分比

第四行 内存状态

总共有多少内存,空闲多少,当前用了多少,缓存的内存量

65885076 total :物理内存总量(64GB)
406368 free:空闲的内存(40M)
65322228 used使用中的内存
156480 buff/cache缓存的内存

第五行 swap交换分区信息,和第四行解释一致

备注:

  • 第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
  • 如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:18537836k +169884k +3612636k = 22GB左右。
  • 对于内存监控,在top里要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

第二部分

显示当前运行中的进程的详细列表,有些列和ps命名的输出类似分别解释如下

PID — 进程id
USER — 进程所有者的名字
PR — 进程优先级
NI — nice值(进程的谦让度)。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)

上一篇下一篇

猜你喜欢

热点阅读