1.释义
top
可以显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
2.系统帮助
Usage: top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols] 参数: -b:批处理 -c:显示完整的命令 -I:忽略失效过程 -s:保密模式 -S:累积模式 -i:<时间> 设置间隔时间 -u:<用户名> 指定用户名 -p:<进程号> 指定进程 -d:<时间> 多长时间刷新一次,单位“秒” -n:<次数> 循环显示的次数 按键: h 查看帮助 l 显示或隐藏top行信息 t 以不同的方式显示CPU使用率或隐藏或显示Tasks行、%Cpu(s)行 m 以不同的方式显示内存使用率或隐藏或显示KiB Mem行、KiB Swap行 z 以彩色信息展示 n 设置显示进程的数量 s 设置刷新时间 b 高亮显示处于R(运行)状态的进程 1 显示所有核心CPU负载 N 按PID进程号从大到小排序 M 按内存使用百分比从大到小排序 P 按CPU使用百分比从大到小排序 R 对排序进行反转 f 自定义显示字段 k kill掉指定PID进程号 w 保存top环境设置~/.toprc q 退出top
3.图示
4.图解
top - 00:54:34 up 67 days, 16:49, 1 user, load average: 0.00, 0.01, 0.05
top - 00:54:34
:当前系统时间,零晨54分34秒
up 67 days, 16:49
:运行时间,67天16小时49分钟
1 user
:当前在线用户,1用户
load average: 0.00, 0.01, 0.05
:当前平均负载情况:1分钟,5分钟,15分钟
平均负载表示的平均活跃进程数,包括正在running的进程数,准备running(就绪态)的进程数,和处于不可中断睡眠状态的进程数。如果平均负载数刚好等于CPU核数,那证明每个核都能得到很好的利用,如果平均负载数大于核数证明系统处于过载的状态,通常认为是超过核数的70%认为是严重过载,需要关注。还需结合1分钟平均负载,5分钟平均负载,15分钟平均负载看负载的趋势,如果1分钟负载比较高,5分钟和15分钟的平均负载都比较低,则说明是瞬间升高,需要观察。如果三个值都很高则需要关注下是否某个进程在疯狂消耗CPU或者有频繁的IO操作,也有可能是系统运行的进程太多,频繁的进程切换导致。
Tasks: 318 total, 1 running, 317 sleeping, 0 stopped, 0 zombie
Tasks: 318 total
:当前进程数共计318个
1 running
:当前正在运行的1个
317 sleeping
:当前休眠317个
0 stopped
:当前停止0个
0 zombie
:当前僵尸0个
子进程结束时父进程没有调用wait()/waitpid()等待子进程结束,那么就会产生僵尸进程。原因是子进程结束时并没有真正退出,而是留下一个僵尸进程的数据结构在系统进程表中,等待父进程清理,如果父进程已经退出则会由init进程接替父进程进行处理(收尸)。由此可见,如果父进程不作为并且又不退出,就会有大量的僵尸进程,每个僵尸进程会占用进程表的一个位置(slot),如果僵尸进程太多会导致系统无法创建新的进程,因为进程表的容量是有限的。所以当zombie这个指标太大时需要引起我们的注意。下面的进程详细信息中的S列就代表进程的运行状态,Z表示该进程是僵尸进程。
1.找到僵尸进程的父进程pid(pstress可以显示进程父子关系),kill -9 pid,父进程退出后init自动会清理僵尸进程。(需要注意的是kill -9并不能杀死僵尸进程)
2.重启系统。
%Cpu(s): 0.6 us, 0.9 sy, 0.0 ni, 98.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu(s)
:总的Cpu使用,按“1”可显示每核使用情况
0.6 us
:user 表示用户态的CPU时间比例
0.9 sy
:system 表示内核态的CPU时间比例
0.0 ni
:nice 表示运行低优先级进程的CPU时间比例
98.5 id
:idle 表示空闲CPU时间比例
0.0 wa
:iowait 表示处于I/O等待的CPU时间比例
0.0 hi
:hard interrupt 表示处理硬中断的CPU时间比例
0.0 si
:soft interrupt 表示处理软中断的CPU时间比例
0.0 st
:steal 表示当前系统运行在虚拟机中的时候,被其他虚拟机占用的CPU时间比例
整体的CPU使用率=1-id。当us很高时,证明CPU时间主要消耗在用户代码,需要优化用户代码。sy很高时,说明CPU时间都消耗在内核,要么是频繁的系统调用,要么是频繁的CPU切换(进程切换/线程切换)。wa很高时,说明有进程在进程频繁的IO操作,有可能是磁盘IO,也有可能是网络IO。si很高时,说明CPU时间消耗在处理软中断,网络收发包会触发系统软中断,所以大量的网络小包会导致软中断的频繁触发,典型的SYN Floor会导致si很高。
KiB Mem : 1880024 total, 519252 free, 1142608 used, 218164 buff/cache
KiB Mem
:物理内存(kb)
1880024 total
:总的物理内存
519252 free
:剩余内存
1142608 used
:使用内存
218164 buff/cache
:用于读写磁盘缓存的内存/用于读写文件缓存的内存
KiB Swap: 511996 total, 262704 free, 249292 used. 488484 avail Mem
KiB Swap
:交换分区内存(kb)
511996 total
:总的虚拟内存
262704 free
:剩余虚拟内存
249292 used
:使用虚拟内存
488484 avail Mem
:可用内存
Swap原理是把一块磁盘空间或者一个本地文件当成内存来使用,如果三个值都为0表示系统关闭了swap功能,命令:swapoff -a
(关闭),swapon -a
(开启)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID
:进程号
USER
:进程启动的用户
PR
:进程调度优先级
NI
:进程nice值(优先级),越小的值代表越高的优先级
VIRT
:进程使用的虚拟内存
RES
:进程使用的物理内存(不包括共享内存)
SHR
:进程使用的共享内存
S
:进程状态。D
(不可中断的睡眠状态)、R
(运行)、S
(睡眠)、T
(跟踪/停止)、Z
(僵尸进程)、<
(高优先级)、N
(低优先级)、s
(父进程)、+
(前台进程)
%CPU
:进程使用的CPU占比
%MEM
:进程使用的内存占比
TIME+
:进程启动后到现在所用的全部CPU时间
COMMAND
:进程的启动命令(默认只显示二进制,top -c
能够显示命令行和启动参数)
5.示例
5.1.每5秒刷新一次
[root@itbkz ~]#top -d 5
5.2.指定进程号查看
[root@itbkz ~]#top -p 6552 top - 23:57:23 up 56 min, 2 users, load average: 0.00, 0.01, 0.04 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1880024 total, 1482800 free, 128372 used, 268852 buff/cache KiB Swap: 511996 total, 511996 free, 0 used. 1498168 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6552 root 20 0 230408 5212 3296 S 0.0 0.3 0:00.32 httpd
5.3.指定间隔和进程号查看
[root@itbkz ~]#top -d 10 -p 6552 top - 23:58:59 up 57 min, 2 users, load average: 0.00, 0.01, 0.04 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1880024 total, 1482732 free, 128596 used, 268696 buff/cache KiB Swap: 511996 total, 511996 free, 0 used. 1498100 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6552 root 20 0 230408 5212 3296 S 0.0 0.3 0:00.33 httpd
5.4.指定多个进程号查看
[root@itbkz s]#top -p 6553,6244 top - 14:59:44 up 15:58, 1 user, load average: 0.00, 0.06, 0.11 Tasks: 2 total, 0 running, 2 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1880024 total, 1362440 free, 125936 used, 391648 buff/cache KiB Swap: 511996 total, 511996 free, 0 used. 1497660 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6553 apache 20 0 230408 3028 1112 S 0.0 0.2 0:00.00 httpd 6244 zabbix 20 0 81828 1272 464 S 0.0 0.1 0:00.00 zabbix_agentd
5.5.指定用户查看
[root@itbkz s]#top -u apache top - 15:00:13 up 15:58, 1 user, load average: 0.00, 0.05, 0.10 Tasks: 264 total, 1 running, 263 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.7 us, 0.7 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1880024 total, 1362592 free, 125964 used, 391468 buff/cache KiB Swap: 511996 total, 511996 free, 0 used. 1497812 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6553 apache 20 0 230408 3028 1112 S 0.0 0.2 0:00.00 httpd 6554 apache 20 0 230408 3028 1112 S 0.0 0.2 0:00.00 httpd 6555 apache 20 0 230408 3028 1112 S 0.0 0.2 0:00.00 httpd 6556 apache 20 0 230408 3028 1112 S 0.0 0.2 0:00.00 httpd 6557 apache 20 0 230408 3028 1112 S 0.0 0.2 0:00.00 httpd