top命令详解

  top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。

 

1 命令格式

  命令格式: top [-d number] | top [-bnp]

  [options]选项 :

  -d:number代表秒数,表示top命令显示的页面更新一次的间隔,默认是3秒。

       -b:以批次的方式执行top

  -n:与-b配合使用,表示需要进行几次top命令的输出结果

       -p:指定特定的pid进程号进行观察

  -i:使top不显示任何闲置或者僵死的进程

  -c:显示整个命令行而不只是显示命令名

  例如:

top        # 每隔3秒显示所有进程的资源占用情况
top -d 1   # 每隔1秒显示所有进程的资源占用情况
top -c     # 每隔3秒显示进程的资源占用情况,并显示进行的命令行参数
top -p 8080 -p 8081    # 每隔3秒显示pid是8080和pid是8081这两个进程的资源占用情况
top -d 2 -c -p 8080    # 每隔2秒显示pid是8080的进程资源使用情况,并显示该进程启动的命令行参数

 

  在 top 命令显示的页面还可以输入以下按键执行相应的功能(注意大小写区分的):

  ?:显示在top当中可以输入的命令

  P:以CPU的使用资源排序显示

  M:以内存的使用资源排序显示

  N:以pid排序显示

  T:由进程使用的时间累计排序显示

  k:给某一个pid一个信号。可以用来杀死进程

  r:给某个pid重新定制一个nice值(即优先级)

  q:退出top(用ctrl+c也可以退出top)。

2 输出参数含义

  执行 top 命令之后的会展示如下内容(CentOS 7):

 

2.1 top前5行的统计信息

第1行 top

top - 18:03:36 up 65 days,  4:07,  1 user,  load average: 0.18, 0.10, 0.10

  top:当前时间

  up:系统运行时间,最小单位:分

  users:当前登录用户数

  load average:系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

  第1行主要内容就是看 load average,load average 飙升可能有很多情况,一般来说如果数字不超过当前CPU的核数,就不会大问题。

 

第2行 Tasks

Tasks: 316 total, 1 running, 315 sleeping, 0 stopped, 0 zombie

  第2行显示的进程数。

  total:进程总数

  running:正在运行的进程数

  sleeping:休眠的进程数

  stopped:停止的进程数

  zombie:僵尸进程数

 

第3行 CPU

%Cpu(s): 3.8 us, 2.9 sy, 0.0 ni, 93.1 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st

  第3行展示的CPU的情况

  us:用户空间占CPU的百分比(像shell程序、各种语言的编译器、各种应用、web服务器和各种桌面应用都算是运行在用户地址空间的进程,这些程序如果不是处于idle状态,那么绝大多数的CPU时间都是运行在用户态)

  sy: 内核空间占CPU的百分比(所有进程要使用的系统资源都是由Linux内核处理的,对于操作系统的设计来说,消耗在内核态的时间应该是越少越好,在实践中有一类典型的情况会使sy变大,那就是大量的IO操作,因此在调查IO相关的问题时需要着重关注它

  ni:用户进程空间改变过优先级(ni是nice的缩写,可以通过nice值调整进程用户态的优先级,这里显示的ni表示调整过nice值的进程消耗掉的CPU时间,如果系统中没有进程被调整过nice值,那么ni就显示为0

  id: 空闲CPU占用率

  wa: 等待输入输出的CPU时间百分比(和CPU的处理速度相比,磁盘IO操作是非常慢的,有很多这样的操作,比如,CPU在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU只能处于空闲状态。Linux系统在计算系统平均负载时会把CPU等待IO操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过wa来判断系统的性能瓶颈是不是过多的IO操作造成的

  hi: 硬中断占用百分比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息,当CPU收到中断消息后需要进行适当的处理(消耗CPU时间)。)

  si:软中断占用百分比(软中断是由程序发出的中断,最终也会执行相应的处理程序,消耗CPU时间)

  st:steal time

 

第4行 Mem

KiB Mem : 16265788 total, 1166452 free, 13783640 used, 1315696 buff/cache

  total:物理内存总量

  free:空闲内存量

  used:使用的内存量

  buffer/cache:用作内核缓存的内存量

 

第5行 Swap

KiB Swap: 0 total, 0 free, 0 used. 2126272 avail Mem

  total:交换区内存总量

  free:空闲交换区总量

  used:使用的交换区总量

  buffer/cache:缓冲的交换区总量

  第四第五行分别是内存信息和swap信息,所有程序的运行都是在内存中进行的,所以内存的性能对与服务器来说非常重要。不过当内存的free变少的时候,其实我们并不需要太紧张。真正需要看的是Swap中的used信息。Swap分区是由硬盘提供的交换区,当物理内存不够用的时候,操作系统才会把暂时不用的数据放到Swap中。所以当这个数值变高的时候,说明内存是真的不够用了。

 

2.2 进程信息

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND   
27202 root      20   0   12.4g   1.4g  78700 S   5.7  9.4   7221:51 exe 
27183 root      20   0 1524744 639664  39952 S   1.1  4.1   1378:24 rancher

  PID:进程ID

  USER:进程所有者的用户名

  PR:优先级

  NI:nice值,负值表示高优先级,正值表示低优先级

  VIRT:进程使用的虚拟内存总量,单位kb,VIRT = SWAP + RES

  RES:进程使用的、未被换出的物理内存大小,单位kb,RES = CODE + DATA

  SHR:共享内存大小,单位kb

  S:进程状态:D=不可中断的睡眠状态、  R=运行、 S=睡眠、  T=跟踪/停止、 Z=僵尸进程

  %CUP:上次更新到现在的CPU时间占用百分比

  %MEM:进程使用的物理内存百分比

  TIME+:进程使用的CPU时间总计,单位1/100秒

  COMMAND:命令名/命令行

 

 

posted @ 2022-10-11 18:11  闲人鹤  阅读(607)  评论(0编辑  收藏  举报