top输出详解

1 命令详情

top是Linux操作系统中常用的性能分析工具,能够实时(默认是3s刷新一次)的显示系统的资源使用情况。

top - 14:44:48 up 819 days, 16:42,  3 users,  load average: 0.04, 0.07, 0.11
Tasks: 129 total,   1 running, 128 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.0 us,  1.7 sy,  0.0 ni, 96.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   966280 total,   121464 free,   179532 used,   665284 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   621304 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                       
 31616 root      10 -10  170776  51292   5744 S  2.3  5.3   9875:26 AliYunDun                                                                                                     
 91206 root      20   0  269580  22288   3012 S  0.7  2.3   3768:52 ilogtail                                                                                                      
 29224 root      20   0  931240  13536   3192 S  0.3  1.4 473:05.22 staragentd                                                                                                    
 31307 root      39  19 1231064  10448   3720 S  0.3  1.1 292:58.49 argusagent                                                                                                    
 62981 root      20   0  161988   2276   1588 R  0.3  0.2   0:00.01 top                                                                                                           
     1 root      20   0   49652   3032   1632 S  0.0  0.3 241:05.52 systemd                                                                                                       
     2 root      20   0       0      0      0 S  0.0  0.0   0:06.86 kthreadd                                                                                                      
     3 root      20   0       0      0      0 S  0.0  0.0   1:47.88 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:00.00 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   0:00.00 rcuob/0                                                                                                       
    10 root      20   0       0      0      0 S  0.0  0.0 237:59.20 rcu_sched                                                                                                     
    11 root      20   0       0      0      0 S  0.0  0.0 299:05.41 rcuos/0                                                                                                       
    12 root      rt   0       0      0      0 S  0.0  0.0   2:16.94 watchdog/0                                                                                                    
    13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 khelper                                                                                                       
    14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs           

2 输出详解

第一行:类似uptime的输出结果,表示当前时间,已开机运行时间,当前登录用户数,1,5,15分钟的平均负载
第二行:运行总进程数,和状态信息,如果有僵尸进程需找到其父进程,并杀死,不可直接kill -9
第三行:CPU总体使用情况,

  • us,:表示用户态的CPU时间比例
  • sy,:表示内核态的CPU时间比例
  • ni,:表示运行低优先级进程的CPU时间比例
  • id,:表示空闲的CPU时间比例
  • wa,:表示处于IO等待的CPU时间比例
  • hi,:表示处理硬中断的CPU时间比例
  • si,:表示处理软中断的CPU时间比例
  • st,:表示当前系统运行在虚拟机中,被其他虚拟机占用的CPU时间比例

第四五行:跟内存相关总内存,可用内存,已用内存和buffer,cache
第六行:进程的抬头

  • PID:进程的ID
  • USER:进程所有者
  • PR:进程的优先级别,越小越优先被执行
  • NI:nice值。负值表示高优先级,正值表示低优先级
  • VIRT:进程占用的虚拟内存
  • RES:进程占用的物理内存
  • SHR:进程使用的共享内存
  • S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
  • %CPU:进程占用CPU的使用率,所有核数占用之和,可能大于100%
  • %MEM:进程使用的物理内存和总内存的百分比
  • TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值
  • COMMAND:进程启动命令名称

3 使用技巧

  • top -p pid:只监控指定pid进程
  • top -u user:只监控指定用户进程

进入后命令:

  • z:显示颜色
  • x:高亮模式,z模式下使用,显示更明显
  • P(大写):按CPU占用高低顺序列出程序()
  • M(大写):按内存占用高低顺序列出程序()
  • d:自定义刷新时间,默认的刷新时间是3s
  • h:查看帮助()
  • c:显示进程命令的全路径与参数()
  • f:可以指定top显示的内容,如ppid、swap等都可以选择显示
  • k:输入k之后可以kill掉指定的进程()
  • H:显示线程,默认只显示进程
  • W[大写]:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法

4 总结

整体的CPU使用率为:1-idle

  • 当us很高时,证明CPU时间主要消耗在用户代码
  • sy很高时,说明CPU时间都消耗在内核,要么是频繁的系统调用,要么是频繁的CPU切换(进程切换/线程切换)
  • wa很高时,说明有进程在进程频繁的IO操作,有可能是磁盘IO,也有可能是网络IO
  • si很高时,说明CPU时间消耗在处理软中断,网络收发包会触发系统软中断,所以大量的网络小包会导致软中断的频繁触发,典型的SYN Floor会导致si很高
  • 平均负载数刚好等于CPU核数,那证明每个核都能得到很好的利用,
  • 如果平均负载数大于核数证明系统处于过载的状态,通常认为是超过核数的70%认为是严重过载

猜你喜欢

转载自blog.csdn.net/ygq13572549874/article/details/130886504
今日推荐