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%认为是严重过载