atop —— 历史资源采样与回放(CPU/内存/磁盘/网络全维度)
这个工具是做什么的
atop 是后台常驻采样器:默认每 10 秒把 CPU、内存、磁盘、网络、进程级明细写进二进制日志(/var/log/atop/),事后可以按时间回放任意时刻的整机与进程状态。与 sar 的定位差异:sar 偏"系统级聚合",atop 能回放进程级明细(哪个进程当时在吃 CPU/内存/IO),是"半夜出问题、白天复盘"的最强工具。
可以回答什么问题
| 问题 | 怎么用 |
|---|---|
| 昨天凌晨 3 点系统发生了什么? | atop -r <文件> -b 03:00 跳到那个时刻 |
| 当时哪个进程在吃 CPU/内存? | 回放后按 c/m 切进程视图排序 |
| 有没有 swap 抖动/磁盘 IO 高峰? | 回放顶部的 PSWP/PDSK 行与磁盘列 |
| 某进程当时的详细资源? | atop -r <文件> -p <PID> 过滤进程 |
| 当前实时看? | atop(交互模式) |
数据来源
- 来源文件:CPU/内存/磁盘/网络读取
/proc/stat、/proc/meminfo、/proc/diskstats、/proc/net/dev、/proc/<pid>/stat等(与 top/vmstat 同源),但写入二进制日志文件留存。 - 采集方式:常驻后台按固定间隔(默认 10s,
INTERVAL配置)采样写盘,自动按天轮转并定期清理。 - 由此决定的特性:系统级 + 进程级明细都保留(sar 只保留系统级聚合);日志是二进制的,必须用
atop -r回放;默认只保留若干天(LOGGEN清理策略),部署时要按需调大保留周期。
一、部署与启动
bash
yum install atop / apt install atop
# 启用后台采样(systemd 常驻 + cron 轮转)
systemctl enable --now atop
# 确认在写日志
ls -la /var/log/atop/atop_YYYYMMDDbash
atop # 交互实时视图
atop 1 # 1 秒间隔刷新(临时,不写日志)
atop -r /var/log/atop/atop_20260824 # 回放某天的日志
atop -r <file> -b 03:00 # 回放并跳到 03:00 时刻
atop -r <file> -e 04:00 # 结束时刻
atop -r <file> -p 1234 # 只看 PID 1234
atop -r <file> -P cpu,mem # 只看指定资源二、回放界面与按键
text
ATOP - host1 2026/08/24 03:00:01 --------------- 12d
PRC | sys 0.24s | user 0.12s | #proc 218 | #zombie 0 | #exit 3120 |
CPU | sys 2% | user 8% | irq 0% | idle 90% | wait 0% |
cpu | sys 1% | user 6% | irq 0% | idle 93% | steal 0% |
MEM | tot 15.5G | free 1.0G | cache 10.0G | buff 0.2G | slab 0.6G |
SWP | tot 2.0G | free 2.0G | | | vmcom 2.1G |
DSK | sda busy 2% | read 1234 | write 5678 | avio 0.5 ms |
NET | eth0 pcki 4567 | pcko 3456 | si 3 Mbps | so 2 Mbps || 键 | 功能 |
|---|---|
t / T | 下一个/上一个采样点(时间轴回放) |
c m d n | 按 CPU/内存/磁盘/网络排序进程 |
p | 按 PID 过滤 |
u | 按用户过滤 |
q | 退出 |
g | 系统概览 / 进程视图切换 |
三、与 sar 的取舍
| 维度 | sar | atop |
|---|---|---|
| 采样内容 | 系统级聚合(CPU/内存/IO/网络) | 系统级 + 进程级明细 |
| 回放 | sar -f 文本表格 | atop -r 交互式时间轴 |
| 进程级 | 无 | 有(谁在吃资源) |
| 日志格式 | 文本/二进制 | 二进制 |
| 适合 | 系统资源趋势统计 | 进程级问题回溯 |
一句话总结:sar 回答"系统当时整体如何",atop 回答"当时哪个进程在搞事"——两个都装,白天复盘晚上发生的问题,先
sar -f看趋势、再atop -r -b定位进程。