强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

系统监控工具指南 / 第4章:atop详解

第4章:atop详解

4.1 atop概述

什么是atop

atop(Advanced System & Process Monitor)是一款强大的Linux系统监控工具,最大的特点是支持历史数据回放,能够查看过去任意时间点的系统状态。

为什么选择atop

  1. 历史回放 - 记录系统状态,支持事后分析
  2. 全面监控 - CPU、内存、磁盘、网络、进程全覆盖
  3. 资源消耗统计 - 统计每个进程的资源消耗
  4. 磁盘级别监控 - 精确到磁盘和分区
  5. 网络级别监控 - 精确到网络接口

atop vs 其他工具

特性atoptophtopglances
实时监控
历史回放部分
磁盘监控
网络监控
进程资源统计
轻量级中等中等

4.2 安装与配置

安装方法

# Debian/Ubuntu
sudo apt update
sudo apt install atop

# CentOS/RHEL
sudo yum install epel-release
sudo yum install atop

# Fedora
sudo dnf install atop

# Arch Linux
sudo pacman -S atop

# openSUSE
sudo zypper install atop

服务管理

# 启动atop服务(后台记录)
sudo systemctl start atop

# 设置开机自启
sudo systemctl enable atop

# 查看服务状态
sudo systemctl status atop

# 停止服务
sudo systemctl stop atop

配置文件

# 主配置文件
/etc/default/atop

# 配置示例
cat /etc/default/atop

配置文件内容:

# /etc/default/atop

# 采样间隔(秒)
INTERVAL=60

# 日志保留天数
LOGGENERATIONS=28

# 日志压缩
LOGCOMPRESS="gzip"

# 日志路径
LOGPATH=/var/log/atop

修改配置:

# 编辑配置
sudo nano /etc/default/atop

# 修改采样间隔为30秒
INTERVAL=30

# 修改保留天数为90天
LOGGENERATIONS=90

# 重启服务生效
sudo systemctl restart atop

日志管理

# 日志存储位置
ls -la /var/log/atop/

# 日志文件命名格式
# atop_YYYYMMDD
# 例如:atop_20260510

# 查看日志大小
du -sh /var/log/atop/

# 手动清理旧日志
find /var/log/atop/ -name "atop_*" -mtime +30 -delete

4.3 界面详解

启动atop

# 实时监控模式
sudo atop

# 回放历史模式
sudo atop -r /var/log/atop/atop_20260510

# 指定时间开始
sudo atop -r /var/log/atop/atop_20260510 -b 14:00

头部信息

ATOP - server1      2026/05/10  14:32:15      10 days, 3:21:45      1c
PRC | sys    1.23s  | user   2.34s  | idle  56.43s | wait   0.12s  | #proc 215 |
cpu | sys       5% | user     10% | irq      1% | idle    83% | wait     1% |
CPL | avg1    0.52 | avg5    0.58 | avg15   0.59 |               | csw  12345 |
MEM | tot    16.0G | free    8.0G | cache  4.0G | buff   1.0G | slab   1.0G |
SWP | tot     8.0G | free    8.0M |               |               | vmcom  12G |
DSK |          sda | busy     45% | read   1234  | write  5678  | avio 5.0ms |
NET | transport    | tcpi    1234 | tcpo    5678 | udpi     123 | udpo     456 |
NET | network      | ipi     2345 | ipo     3456 | ipfrw      0 | deliv  2345 |

头部字段详解

PRC行 - 进程统计

字段含义
sys内核空间CPU时间
user用户空间CPU时间
idle空闲CPU时间
waitIO等待时间
#proc进程总数

cpu行 - CPU使用率

字段含义
sys内核空间使用率
user用户空间使用率
irq中断处理
idle空闲率
waitIO等待率

CPL行 - 负载与上下文切换

字段含义
avg11分钟平均负载
avg55分钟平均负载
avg1515分钟平均负载
csw上下文切换次数

MEM行 - 内存使用

字段含义
tot总物理内存
free空闲内存
cache页缓存
buff缓冲区
slab内核slab分配

SWP行 - 交换分区

字段含义
tot交换分区总量
free空闲交换分区
vmcom已承诺虚拟内存
vmlim虚拟内存限制

DSK行 - 磁盘使用

字段含义
busy磁盘忙碌百分比
read读请求数
write写请求数
avio平均IO延迟(毫秒)

NET行 - 网络统计

字段含义
tcpiTCP接收包数
tcpoTCP发送包数
udpiUDP接收包数
udpoUDP发送包数
ipiIP接收包数
ipoIP发送包数

进程列表

PID   SYSCPU  USRCPU  VGROW   RGROW   RDDSK   WRDSK   ST  EXC  S  CMD    1/1
1234   0.12s   0.34s    0K    1234K     0K    4567K   --    -  S  nginx
5678   0.56s   1.23s  123M    65432K   123K    567K   --    -  S  mysqld
字段含义
PID进程ID
SYSCPU系统CPU时间
USRCPU用户CPU时间
VGROW虚拟内存增长
RGROW常驻内存增长
RDDSK读磁盘字节
WRDSK写磁盘字节
ST状态
CMD命令名

4.4 交互命令

视图切换命令

按键功能显示内容
g通用视图默认综合视图
m内存视图内存详细信息
d磁盘视图磁盘IO详情
n网络视图网络接口统计
s调度视图进程调度信息
v进程视图进程详细信息
c命令行视图显示完整命令行
p进程视图显示每个进程

导航命令

按键功能
t下一个采样点
T上一个采样点
b跳转到指定时间
r回到最近数据
下一行
上一行
Page Down下一页
Page Up上一页
Home首页
End末页

排序命令

按键功能
C按CPU排序
M按内存排序
D按磁盘排序
N按网络排序
A自动排序(按资源消耗)

显示选项

按键功能
l显示/隐藏系统行
f显示/隐藏过滤信息
x显示/隐藏列标题
1显示/隐藏CPU每核
h帮助
q退出

过滤命令

按键功能
p按进程过滤
u按用户过滤
j按cgroup过滤
/按命令名过滤

4.5 历史回放功能

基本回放

# 回放今天的数据
sudo atop -r

# 回放指定日期的数据
sudo atop -r /var/log/atop/atop_20260510

# 回放昨天的数据
sudo atop -r /var/log/atop/atop_$(date -d yesterday +%Y%m%d)

指定时间范围

# 从14:00开始回放
sudo atop -r -b 14:00

# 到16:00结束
sudo atop -r -b 14:00 -e 16:00

# 指定日期和时间
sudo atop -r /var/log/atop/atop_20260510 -b 14:00

回放导航

# 进入回放模式后

# 下一个采样点(按t)
# 默认间隔60秒

# 上一个采样点(按T)

# 跳转到指定时间(按b)
# 输入时间格式:HH:MM

# 返回最新数据(按r)

回放示例场景

场景1:分析昨天下午的性能问题

# 1. 进入回放模式
sudo atop -r /var/log/atop/atop_$(date -d yesterday +%Y%m%d)

# 2. 跳转到问题时间段
# 按b → 输入14:00

# 3. 逐步查看
# 按t前进,观察CPU、内存、磁盘变化

# 4. 切换到详细视图
# 按m查看内存
# 按d查看磁盘
# 按n查看网络

场景2:找出资源消耗高峰

# 1. 回放模式
sudo atop -r

# 2. 自动排序
# 按A启用自动排序

# 3. 快速浏览
# 按t快速前进

# 4. 找到高峰点后详细分析
# 按v查看进程详情

4.6 磁盘监控详解

磁盘视图

# 进入atop后按d

磁盘视图输出:

DSK |          sda | busy     45% | read   1234  | write  5678  | avio 5.0ms |
DSK |          sdb | busy     20% | read    567  | write   234  | avio 2.0ms |

磁盘字段详解

字段含义单位正常范围
busy磁盘忙碌时间百分比%<70%
read读请求数次/秒取决于磁盘
write写请求数次/秒取决于磁盘
avio平均IO延迟毫秒<10ms
KiB/r平均读大小KB
KiB/w平均写大小KB
MBr/s读吞吐量MB/秒
MBw/s写吞吐量MB/秒

磁盘性能判断

avio值性能评估可能原因
<5ms优秀SSD或低负载
5-10ms正常普通HDD
10-20ms一般较高负载
20-50ms较差IO瓶颈
>50ms严重瓶颈需要优化

进程磁盘使用

# 在atop中查看进程磁盘使用
# 按d进入磁盘视图
# 查看RDDSK和WRDSK列

进程磁盘统计:

字段含义
RDDSK读取的磁盘字节
WRDSK写入的磁盘字节
DSK磁盘使用率
PID进程ID
CMD命令名

磁盘故障排查

# 1. 查看磁盘忙碌度
atop
# 按d

# 2. 如果busy持续>80%,分析IO来源
# 查看RDDSK/WRDSK列,找IO大户

# 3. 结合iostat详细分析
iostat -x 1

# 4. 使用iotop精确分析
sudo iotop -o

4.7 网络监控详解

网络视图

# 进入atop后按n

网络视图输出:

NET | transport    | tcpi    1234 | tcpo    5678 | udpi     123 | udpo     456 |
NET | network      | ipi     2345 | ipo     3456 | ipfrw      0 | deliv  2345 |
NET | eth0     ----| pcki    3456 | pcko    4568 | si   567Kbps | so 1234Kbps |
NET | eth0     ----| coll       0 | errr       0 | erri       0 | drpr      0 |

网络字段详解

Transport层

字段含义
tcpiTCP输入段
tcpoTCP输出段
udpiUDP输入数据报
udpoUDP输出数据报
tcpaoTCP活跃打开数
tcppoTCP被动打开数

Network层

字段含义
ipiIP输入包
ipoIP输出包
ipfrwIP转发包
deliv传递到上层的包

接口层

字段含义
pcki接收包数
pcko发送包数
si输入速率
so输出速率
coll冲突数
errr接收错误
erri发送错误
drpr丢包数

网络性能判断

指标正常值异常表现可能原因
coll0>0网络冲突
errr0>0网卡或线路问题
erri0>0发送错误
drpr缓冲区溢出

4.8 内存分析详解

内存视图

# 进入atop后按m

内存视图输出:

MEM | tot    16.0G | free    8.0G | cache  4.0G | buff   1.0G | slab   1.0G |
SWP | tot     8.0G | free    8.0M |               |               | vmcom  12G |

内存字段详解

字段含义说明
tot总物理内存系统总内存
free空闲内存完全未使用
cache页缓存文件系统缓存,可回收
buff缓冲区块设备缓冲
slab内核slab内核数据结构缓存
dirty脏页等待写回磁盘
rss常驻内存集实际使用物理内存
vmcom已承诺虚拟内存进程申请的总虚拟内存
vmlim虚拟内存限制最大可用虚拟内存

进程内存分析

# 在atop中查看进程内存
# 查看VGROW和RGROW列
字段含义说明
VGROW虚拟内存增长本次采样期间的增长
RGROW常驻内存增长本次采样的物理内存增长
VSize虚拟内存大小进程总虚拟内存
RSize常驻内存大小进程总物理内存

内存泄漏检测

# 1. 使用atop监控
sudo atop

# 2. 关注RGROW列
# 如果某进程RGROW持续为正数,可能存在内存泄漏

# 3. 结合历史数据
sudo atop -r

# 4. 跳转到问题开始时间
# 按b → 输入时间

# 5. 逐步观察内存变化
# 按t前进

Swap使用分析

# 查看Swap使用
# 如果SWP的free持续减少,说明内存不足

# 常见原因
# 1. 应用内存泄漏
# 2. 应用配置的内存过大
# 3. 系统内存不足

# 解决方案
# 1. 找出内存消耗大户
# 2. 优化应用配置
# 3. 增加物理内存

4.9 高级功能

4.9.1 系统资源汇总

# 启动atop时显示汇总
sudo atop -@

# 汇总显示整个时间段的资源使用
# 包括总CPU时间、总IO量等

4.9.2 过滤显示

# 只显示活跃进程
sudo atop -a

# 只显示特定用户
sudo atop -u username

# 只显示特定进程
sudo atop -p PID

# 只显示特定命令
# 进入atop后按/ → 输入命令名

4.9.3 输出到文件

# 采样10次,间隔5秒,输出到文件
sudo atop 5 10 -o /tmp/atop_output

# 后台运行
sudo atop 60 -o /tmp/atop_output &

# 生成可读报告
sudo atopsar -r /tmp/atop_output

4.9.4 使用atopsar

atopsar 是atop的报告工具,类似SAR。

# 查看今天的CPU统计
sudo atopsar -c

# 查看今天的内存统计
sudo atopsar -m

# 查看今天的磁盘统计
sudo atopsar -d

# 查看今天的网络统计
sudo atopsar -i

# 查看指定日期
sudo atopsar -c -r /var/log/atop/atop_20260510

# 指定时间范围
sudo atopsar -c -b 14:00 -e 16:00

atopsar选项:

选项功能
-cCPU统计
-m内存统计
-d磁盘统计
-i网络接口统计
-I网络统计
-f系统负载
-p进程统计
-r指定文件

4.9.5 生成报告

# 生成文本报告
sudo atop -r -b 14:00 -e 16:00 > report.txt

# 使用atopsar生成报告
sudo atopsar -c -r /var/log/atop/atop_20260510 > cpu_report.txt

# 生成CSV格式
sudo atopsar -c -r /var/log/atop/atop_20260510 -P > cpu_report.csv

4.10 实战场景

场景1:事后故障分析

问题: 昨天下午3点服务器响应缓慢

# 1. 进入回放模式
sudo atop -r /var/log/atop/atop_$(date -d yesterday +%Y%m%d)

# 2. 跳转到下午3点
# 按b → 输入15:00

# 3. 分析CPU
# 观察cpu行,看us、sys、wait

# 4. 分析内存
# 按m,观察MEM和SWP

# 5. 分析磁盘
# 按d,观察busy和avio

# 6. 分析网络
# 按n,观察流量和错误

# 7. 找出资源消耗大户
# 按v查看进程详情
# 按C按CPU排序
# 按M按内存排序

场景2:磁盘IO瓶颈排查

# 1. 查看磁盘使用
sudo atop
# 按d

# 2. 如果busy>80%,找IO大户
# 观察RDDSK和WRDSK列

# 3. 回放历史,找IO高峰
sudo atop -r
# 按t逐步查看

# 4. 结合iostat分析
iostat -x 1

# 5. 使用iotop精确分析
sudo iotop -o

场景3:内存泄漏检测

# 1. 使用atop持续监控
sudo atop -r

# 2. 观察内存使用趋势
# 按m查看内存

# 3. 找出内存持续增长的进程
# 观察RGROW列

# 4. 结合valgrind分析
valgrind --tool=memcheck --leak-check=full ./your_program

场景4:网络流量分析

# 1. 查看网络接口
sudo atop
# 按n

# 2. 观察流量
# si - 输入流量
# so - 输出流量

# 3. 检查错误
# errr - 接收错误
# erri - 发送错误
# drpr - 丢包

# 4. 回放历史流量
sudo atop -r
# 按n查看网络视图

场景5:性能基准测试记录

# 1. 开始记录
sudo atop 10 -o /tmp/benchmark

# 2. 运行测试
./benchmark_test

# 3. 停止记录(Ctrl+C)

# 4. 分析结果
sudo atopsar -c -r /tmp/benchmark
sudo atopsar -d -r /tmp/benchmark
sudo atopsar -i -r /tmp/benchmark

4.11 配置优化

优化采样间隔

# 默认60秒,对于详细分析可能太长

# 编辑配置
sudo nano /etc/default/atop

# 修改为30秒
INTERVAL=30

# 或更短(但会占用更多磁盘)
INTERVAL=10

# 重启服务
sudo systemctl restart atop

调整日志保留

# 编辑配置
sudo nano /etc/default/atop

# 默认28天
LOGGENERATIONS=28

# 根据磁盘空间调整
# 保留90天
LOGGENERATIONS=90

# 或30天
LOGGENERATIONS=30

日志压缩

# 启用压缩(默认可能已启用)
sudo nano /etc/default/atop

LOGCOMPRESS="gzip"

# 重启服务
sudo systemctl restart atop

日志轮转

# atop内置日志轮转,每天一个文件
# 但磁盘满时需要手动清理

# 检查日志大小
du -sh /var/log/atop/

# 手动清理旧日志
find /var/log/atop/ -name "atop_*" -mtime +60 -delete

# 设置定时清理
# /etc/cron.daily/cleanup-atop
#!/bin/bash
find /var/log/atop/ -name "atop_*" -mtime +60 -delete

4.12 性能开销

资源消耗

配置CPU占用磁盘占用说明
INTERVAL=60<0.1%~50MB/月默认,轻量
INTERVAL=30<0.2%~100MB/月较详细
INTERVAL=10<0.5%~300MB/月非常详细

优化建议

# 生产环境推荐
INTERVAL=60
LOGGENERATIONS=30

# 开发/测试环境
INTERVAL=10
LOGGENERATIONS=7

# 磁盘空间紧张
INTERVAL=120
LOGGENERATIONS=14

4.13 常见问题

Q1: atop无法启动

# 检查服务状态
sudo systemctl status atop

# 查看日志
sudo journalctl -u atop

# 检查配置文件
cat /etc/default/atop

# 手动启动测试
sudo atop

Q2: 历史数据为空

# 检查服务是否运行
sudo systemctl status atop

# 检查日志目录
ls -la /var/log/atop/

# 检查日志文件权限
ls -la /var/log/atop/atop_*

Q3: 磁盘空间占用大

# 查看日志大小
du -sh /var/log/atop/

# 减少保留天数
sudo nano /etc/default/atop
LOGGENERATIONS=14

# 清理旧日志
find /var/log/atop/ -name "atop_*" -mtime +14 -delete

# 启用压缩
LOGCOMPRESS="gzip"

Q4: 回放时找不到数据

# 检查文件是否存在
ls -la /var/log/atop/

# 检查日期
# atop文件名格式:atop_YYYYMMDD

# 使用绝对路径
sudo atop -r /var/log/atop/atop_20260510

4.14 与其他工具对比

atop vs SAR

特性atopSAR
实时监控
历史回放交互式命令行
进程监控有限
磁盘详情
网络详情
易用性中等较低

atop vs Glances

特性atopGlances
历史回放有限
Web界面
API支持
告警功能
轻量级中等

4.15 扩展阅读

4.16 快捷命令参考

# 实时监控
sudo atop

# 回放今天数据
sudo atop -r

# 回放指定日期
sudo atop -r /var/log/atop/atop_20260510

# 指定时间
sudo atop -r -b 14:00

# 回放并指定时间范围
sudo atop -r -b 14:00 -e 16:00

# 只显示活跃进程
sudo atop -a

# 只显示特定用户
sudo atop -u mysql

# atopsar报告
sudo atopsar -c         # CPU统计
sudo atopsar -m         # 内存统计
sudo atopsar -d         # 磁盘统计
sudo atopsar -i         # 网络统计

4.17 本章小结

本章详细介绍了atop的使用:

  1. 安装配置: 安装方法、服务管理、配置文件
  2. 界面详解: 头部信息、进程列表、各字段含义
  3. 交互命令: 视图切换、导航、排序、过滤
  4. 历史回放: 核心功能,支持事后故障分析
  5. 磁盘监控: 磁盘视图、性能判断、IO分析
  6. 网络监控: 网络视图、流量统计、错误检测
  7. 内存分析: 内存视图、泄漏检测、Swap分析
  8. 高级功能: atopsar报告、数据导出、过滤
  9. 实战场景: 故障分析、性能排查、基准测试

atop是事后故障分析的利器,强烈建议在生产环境启用并长期运行。


上一章: 第3章:htop详解 下一章: 第5章:btop详解