下载链接
解压编译安装
tar zxvf atop-2.9.0.tar.gz
cd atop-2.9.0
make
make install
编译依赖 zlib-devel和ncurses-devel,可以提前使用yum安装下
配置
2.9.0版本配置文件不再是/etc/sysconfig/atop,而是空文件/etc/default/atop,只需配置以下几项即可
LOGINTERVAL=15 # 监控周期,单位为秒,默认600s采集一次数据,建议修改为15s。
LOGGENERATIONS=7 # 日志保留时间,单位为天。默认保留时间28天,建议修改为7天,避免大量占用磁盘空间。
LOGPATH=/var/log/atop/ # 日志保存路径。默认路径为/var/log/atop/
我的配置文件如下
[root@localhost atop-2.9.0]# cat /etc/default/atop
LOGINTERVAL=15
LOGGENERATIONS=7
启动服务
systemctl enable --now atopacct
systemctl enable --now atop
systemctl enable --now atop-rotate.timer
后续改配置,重启atop可以用service atop restart
使用说明
打开文件
atop -r /var/log/atop/atop_20230815
可操作以下指令
红色字体为常用指令
显示正在活动的数字:
g - 通用信息(默认)
m - 显示内存信息
d - 磁盘详细信息
n - 网络详情
s - 调度和线程组信息
v - 显示进程详细信息(ppid,用户/组,日期/时间,状态,exitcode)
c - 每个进程的完整命令行
o - 使用自己的输出行定义
按以下顺序对进程列表排序:
C - cpu活动
M - 内存消耗
D - 磁盘活动
N - 网络活动
A - 最活跃的系统资源(自动模式)
累计数字:
u - 每个用户的总资源消耗
p - 每个程序的总资源消耗(即相同的进程名称)
选择:
U - 专注于特定用户名(正则表达式)
P - 专注于特定的进程名称(正则表达式)
屏幕处理:
ctrl+L - 重绘屏幕
ctrl+F - 显示进程列表中的下一页(转发)
ctrl+B - 显示进程列表中的上一页(向后)
演示文稿(这些键显示在标题行中):
a - 显示所有进程(默认:活动进程)(切换)
f - 固定标题行的静态范围(切换)
1 - 显示平均每秒i.s.o.总值(切换) 原始文件查看:
t - 显示下一个采集数据
T - 显示上一个采集数据
b - 输入时间点,回车跳转
r - 回退到原始文件的开头)
其他命令:
i - 更改间隔计时器(0 =仅手动触发器)
t - 手动触发强制下一个样本
z - 暂停按钮以冻结当前样本(切换)
l - 每个CPU,磁盘和接口资源的限制行
k - 杀死进程(即发送信号)
V - 版本信息
? - 帮助信息
h - 帮助信息
q - 退出这个程序
字段说明
ATOP 行:主机名、采样日期和时间点。
PRC 行:整个系统的性能情况。
sys 过去采样周期期间所有的进程在内核态运行的时间总和
usr 过去采样周期期间所有的进程在用户态的运行时间总和
#proc 进程总数
#tslpu 过去采样周期期间uninterruptible sleep状态的线程数(该进程不接收系统信号,不可被系统信号中断,包括kill -9 (SIGKILL 信号)。当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程或者中断打断的,这个时候的进程就处于不可中断状态。)
#zombie 过去采样周期期间的僵尸进程数
#exit 过去采样周期期间退出的进程数量
CPU 行:CPU使用情况。
sys、user 处理进程时处于内核态、用户态的所占CPU的时间比例
irq:CPU 被用于处理中断的时间比例。
idle:CPU 处在完全空闲状态的时间比例。
wait:CPU 处在“进程等待磁盘 IO 导致 CPU 空闲”状态的时间比例。
CPL 行:CPU 负载情况。
avg1、avg5 和 avg15:过去1分钟、5分钟和15分钟内运行队列中的平均进程数量。
csw:指示上下文交换次数。
intr:指示中断发生次数。
MEM 行:内存的使用情况。
tot:物理内存总量。
free: 空闲内存总量
cache :文件缓存用量
buff:块设备缓存用量
slab:系统内核占用的内存大小
dirty: 需要写回磁盘的脏页用量,这部分内存使用已包含在cache中
SWP 行:交换空间的使用情况。
tot:交换区总量。
free:空闲交换空间大小。
PAG 行:虚拟内存分页情况
swin 及 swout:换入和换出内存页数。
DSK 行:磁盘使用情况,每一个磁盘设备对应一列。如果有 sdb 设备,那么增加一行 DSK 信息。
vda: 该列为磁盘设备名,每个设备拥有一行
busy: 设备处理IO请求的时间占比
read: 监控周期内读请求数
write: 监控周期内写请求数
MBr/s: 每秒读取的数据量
MBw/s: 每秒写入的数据量
avio: 单次读写请求需要的毫秒数
NET 行:多列 NET 展示了网络状况,包括传输层(TCP 和 UDP)、IP 层以及各活动的网口信息。
XXXi:各层或活动网口收包数目。
XXXo:各层或活动网口发包数目。
进程列表说明
PID: 进程ID
SYSCPU: 在内核态下使用CPU时间
USERCPU: 在用户态下使用CPU时间
VGROW: 过去一个监控周期内进程的虚拟内存空间增长,包括malloc()分配内存、使用共享内存以及free()释放内存造成的空间变化
RGROW: 过去一个监控周期内进程常驻内存空间(resident memory)增长, 即进程内存空间中驻留在物理内存中未被逐出到SWAP分区的部分。
RUID, EUID, SUID: 启动进程的UID
RUID: 登录时的用户ID
EUID: Effective Uid。通常EUID=RUID, setuid 或 sudo 等指令能以另一个用户身份执行命令,这个被“代理”的用户即为 Effective User。
EXC: 进程退出时的返回码
THR: 进程中的线程数
S: 进程状态,与ps命令的进程描述符相同
导出文件
atop -r [file] [-b hh:mm] [-e hh:mm] [-flags] > atop.log
generic flags:
-a show or log all processes (i.s.o. active processes only)
-R calculate proportional set size (PSS) per process
-P generate parseable output for specified label(s)
-L alternate line length (default 80) in case of non-screen output
-f show fixed number of lines with system statistics
-F suppress sorting of system resources
-G suppress exited processes in output
-l show limited number of lines for certain resources
-y show individual threads
-1 show average-per-second i.s.o. total values-x no colors in case of high occupation
-g show general process-info (default)
-m show memory-related process-info
-d show disk-related process-info
-n show network-related process-info
-s show scheduling-related process-info
-v show various process-info (ppid, user/group, date/time)
-c show command line per process
-o show own defined process-info
-u show cumulated process-info per user
-p show cumulated process-info per program (i.e. same name)-C sort processes in order of cpu-consumption (default)
-M sort processes in order of memory-consumption
-D sort processes in order of disk-activity
-N sort processes in order of network-activity
-A sort processes in order of most active resource (auto mode)specific flags for raw logfiles:
-w write raw data to file (compressed)
-r read raw data from file (compressed)
special file: y[y...] for yesterday (repeated)
-S finish atop automatically before midnight (i.s.o. #samples)
-b begin showing data from specified time
-e finish showing data after specified time