iotop 是什么
iotop 按进程显示实时磁盘读写速率与 IO 占比,直接回答「磁盘为什么这么忙、到底是谁在读写」。它依赖内核的 IO 记账功能,运行时需要 root 或对应能力。用 -o 只看有实际 IO 的进程,能立刻滤掉噪声;-P 只显示进程而不展开线程;-a 显示累计值而不是瞬时速率;批处理模式 -b 配合 -n 适合把采样记录到文件。要注意页缓存的干扰:命中缓存时磁盘压力不大,iotop 显示值低并不代表应用没有做 IO。
基本信息
| 适用平台 | Linux(需安装 iotop,内核需启用任务 IO 记账) |
|---|---|
| 命令语法 | iotop [选项] |
| 常用选项 | -o 只显示有 IO 的进程 -P 只显示进程 -a 显示累计值 -b 批处理模式 -n 采样次数 -d 刷新间隔 -p 指定 PID |
| 权限说明 | 需要 root 或 CAP_SYS_ADMIN 能力 |
| 交叉验证工具 | iostat 看设备层吞吐、pidstat -d 看进程 IO、vmstat 看整体状况 |
典型使用场景
- 定位正在吃磁盘的进程,快速判断是否与备份或日志写入有关
- 评估备份任务对在线业务的影响,决定是否限速或错峰
- 排查某个进程持续小幅写入造成设备长期繁忙
- 记录一段时间内的 IO 分布,作为优化依据
- 与 iostat 交叉验证,区分应用 IO 高还是设备本身慢
常用示例
常用示例
sudo iotop # 默认视图
sudo iotop -o # 只显示有 IO 的进程
sudo iotop -oPa # 累计模式并只看进程级
sudo iotop -b -n 3 -o # 批处理采样三轮,便于记录
sudo iotop -p 1234 # 只看指定进程
sudo iostat -xz 1 3 # 设备层指标交叉验证iotop 列读法
| 列 | 含义 | 怎么看 |
|---|---|---|
| DISK READ 与 DISK WRITE | 实时读写速率 | 与 iostat 的设备吞吐交叉对照 |
| SWAPIN | 换入占比 | 数值偏高说明内存压力大 |
| IO | 该进程的 IO 等待占比 | 接近 100 说明进程受磁盘限制 |
| PRIO 与 USER | IO 优先级与执行用户 | 判断是否与 ionice 设置有关 |
| TID 与 COMMAND | 线程号与命令名 | 使用 -P 时只显示进程级 |
普通用户运行 iotop 会报权限错误,需要 root 或授予 CAP_SYS_ADMIN 能力,这不是工具本身损坏。
页缓存命中率高时磁盘压力小,iotop 显示的读写值偏低并不意味着应用没有做 IO,只是请求被缓存吸收了。