atop简介
本文要介绍的atop就是一款用于监控Linux系统资源与进程的工具,它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析。atop是一款开源软件,我们可以从这里获得其源码和rpm安装包。
一,atop使用方法在安装atop之后,我们在命令行下敲入”atop"命令即可看到系统当前的运行情况:
PRC | sys 0.09s | user 0.23s | #proc 187 | #tslpi 247 | #tslpu 0 | #zombie 0 | #exit 2 |
CPU | sys 1% | user 2% | irq 0% | idle 397% | wait 0% | curf 800MHz | curscal 22% |
cpu | sys 1% | user 1% | irq 0% | idle 98% | cpu000 w 0% | curf 800MHz | curscal 22% |
cpu | sys 0% | user 0% | irq 0% | idle 100% | cpu003 w 0% | curf 800MHz | curscal 22% |
cpu | sys 0% | user 0% | irq 0% | idle 100% | cpu002 w 0% | curf 800MHz | curscal 22% |
cpu | sys 0% | user 0% | irq 0% | idle 100% | cpu001 w 0% | curf 800MHz | curscal 22% |
CPL | avg1 0.04 | avg5 0.03 | avg15 0.00 | csw 3087 | intr 1631 | | numcpu 4 |
MEM | tot 7.7G | free 2.3G | cache 3.2G | dirty 0.0M | buff 619.0M | slab 563.9M | |
SWP | tot 7.9G | free 7.9G | | | | vmcom 2.7G | vmlim 11.7G |
DSK | sda | busy 0% | read 0 | write 2 | MBr/s 0.00 | MBw/s 0.00 | avio 6.00 ms |
NET | transport | tcpi 226 | tcpo 251 | udpi 14 | udpo 14 | tcpao 0 | tcppo 0 |
NET | network | ipi 243 | ipo 266 | ipfrw 0 | deliv 243 | icmpi 0 | icmpo 0 |
NET | enp1s0 0% | pcki 138 | pcko 138 | si 11 Kbps | so 136 Kbps | erri 0 | erro 0 |
NET | lo ---- | pcki 128 | pcko 128 | si 47 Kbps | so 47 Kbps | erri 0 | erro 0 |
PID RUID EUID THR SYSCPU USRCPU VGROW RGROW RDDSK WRDSK ST EXC S CPUNR CPU CMD 1/2
27916 root root 1 0.03s 0.12s 0K 0K 0K 0K -- - R 0 2% atop
7426 redis redis 2 0.01s 0.02s 0K 0K 0K 0K -- - S 0 0% [celeryd: cele
1486 lightdm lightdm 3 0.01s 0.02s 72K 0K 0K 0K -- - S 0 0% pulseaudio
7425 root root 2 0.00s 0.02s 0K 0K 0K 0K -- - S 0 0% [celery beat]
1070 redis redis 3 0.01s 0.01s 0K 0K 0K 0K -- - S 1 0% redis-server
937 root root 3 0.00s 0.01s 0K 0K 0K 0K -- - S 2 0% polkitd
32037 redis redis 2 0.00s 0.01s 0K 0K 0K 0K -- - S 2 0% [celeryd: cele
1374 lightdm lightdm 5 0.00s 0.01s 0K 0K 0K 0K -- - S 0 0% unity-greeter
1 root root 1 0.00s 0.01s 0K 0K 0K 0K -- - S 1 0% systemd
271 root root 1 0.01s 0.00s 0K 0K 0K 0K -- - S 2 0% systemd-journa
19004 www-data www-data 1 0.01s 0.00s 0K 0K 0K 0K -- - S 2 0% nginx
8 root root 1 0.01s 0.00s 0K 0K 0K 0K -- - I 3 0% rcu_sched
4088 postgres postgres 1 0.00s 0.00s 0K 0K 0K 0K -- - S 3 0% postgres
7403 root root 1 0.00s 0.00s 0K 0K 0K 0K -- - S 0 0% supervisord
1429 lightdm lightdm 3 0.00s 0.00s 0K 0K 0K 0K -- - S 0 0% indicator-appl
21183 root root 3 0.00s 0.00s 0K 0K 0K 0K -- - S 3 0% cups-browsed
777 root root 2 0.00s 0.00s 0K 0K 0K 0K -- - S 0 0% thermald
759 messageb messageb 1 0.00s 0.00s 0K 0K 0K 0K -- - S 1 0% dbus-daemon
27011 test test 1 0.00s 0.00s 0K 0K 0K 0K -- - S 0 0% sshd
776 avahi avahi 1 0.00s 0.00s 0K 0K 0K 0K -- - S 1 0% avahi-daemon
1373 lightdm lightdm 1 0.00s 0.00s 0K 0K 0K 0K -- - S 2 0% dbus-daemon
二,监控字段的含义
ATOP列:该列显示了主机名、信息采样日期和时间点
PRC列:该列显示进程整体运行情况sys、usr字段分别指示进程在内核态和用户态的运行时间
#proc字段指示进程总数
#zombie字段指示僵死进程的数量
#exit字段指示atop采样周期期间退出的进程数量
CPU列:该列显示CPU整体(即多核CPU作为一个整体CPU资源)的使用情况,我们知道CPU可被用于执行进程、处理中断,也可处于空闲状态(空闲状态分两种,一种是活动进程等待磁盘IO导致CPU空闲,另一种是完全空闲)sys、usr字段指示CPU被用于处理进程时,进程在内核态、用户态所占CPU的时间比例
irq字段指示CPU被用于处理中断的时间比例
idle字段指示CPU处在完全空闲状态的时间比例
wait字段指示CPU处在“进程等待磁盘IO导致CPU空闲”状态的时间比例
CPU列各个字段指示值相加结果为N00%,其中N为cpu核数。
cpu列:该列显示某一核cpu的使用情况,各字段含义可参照CPU列,各字段值相加结果为100%
CPL列:该列显示CPU负载情况avg1、avg5和avg15字段:过去1分钟、5分钟和15分钟内运行队列中的平均进程数量
csw字段指示上下文交换次数
intr字段指示中断发生次数
MEM列:该列指示内存的使用情况tot字段指示物理内存总量
free字段指示空闲内存的大小
cache字段指示用于页缓存的内存大小
buff字段指示用于文件缓存的内存大小
slab字段指示系统内核占用的内存大小
SWP列:该列指示交换空间的使用情况tot字段指示交换区总量
free字段指示空闲交换空间大小
PAG列:该列指示虚拟内存分页情况swin、swout字段:换入和换出内存页数
DSK列:该列指示磁盘使用情况,每一个磁盘设备对应一列,如果有sdb设备,那么增多一列DSK信息sda字段:磁盘设备标识
busy字段:磁盘忙时比例
read、write字段:读、写请求数量
NET列:多列NET展示了网络状况,包括传输层(TCP和UDP)、IP层以及各活动的网口信息XXXi 字段指示各层或活动网口收包数目
XXXo 字段指示各层或活动网口发包数目
三,常用参数 (在交互模式下也可以用这些参数)
-n 显示网络信息(需要内核打补丁才能使用)
-m 显示内存相关信息(需要内核打补丁才能使用)
-d 显示磁盘读写相关(需要内核打补丁才能使用)
-g 查看默认的通用输出
-s 显示调度特点:每个进程的以下字段所示:进程的ID,运行状态(R)的线程数、中断状态的睡眠线程S(TLSPI)和不可中断睡眠线程D (TSLPU) 数,调度策略(分时调度策略,实时时间片轮转策略,实时调度策略FIFO),nice值,优先级(PRI),实时优先级(RTPR),当前的处理器,状态,退出代码,进程状态,cpu利用率和进程名。
-v 显示各种进程特性:每个进程的以下字段所示:进程ID(PID),父进程ID(PPID)、用户名(USERNAME)和组(GROUP),开始日期和时间,状态(例如,退出代码,如果该进程已完成),进程状态(ST)(D:不可终止进程、 R:正在运行进程 、 T:暂停进程、S:休眠进程、Z:僵尸进程……),CPU占用率和进程名。
-c 以命令行command-line的形式显示:每个进程有以下字段所示:进程的ID,所选资源占用百分比和命令行参数,
-u 以用户的形式显示:以下字段显示:在上一间隔时间内活动或终止的进程数,上一时间间隔内cpu在系统模式和用户模式的消耗,活动进程对虚拟内存和现有内存的消耗。当安装的cnt补丁后会显示读(RDDSK)写(WRDSK)到磁盘上的数据量,以及所收到(RNET)和发送(SNET)的网络数据包,内核补丁没有安装时这些计数器为零。最后一栏显示CPU百分比和用户名。
-p 以进程名的形式显示信息:和-u类似只是最后显示的是进程名
-M 按照占用物理内存百分比大小进行排列
-D,按照访问磁盘的繁忙程度进行排序
-N 按照接受和发送的网络数据包排序
-A 依据当前系统最繁忙的资源进行排序,可能有ACPU、AMEM、ADSK或者ANET