sudo iotop启动后,顶部显示Total/Actual磁盘读写速率,Actual远大于Total预示脏页堆积与I/O风暴;默认按IO%排序,按o键过滤活跃进程,可快速定位高IO等待或读写大户。

直接用 sudo iotop 就能启动实时监控界面,它像 top 一样每秒刷新一次,专盯“哪个进程正在读写磁盘”。关键不是启动,而是快速看懂数据、聚焦真实问题进程。
怎么看顶部统计行
第一行显示系统级 I/O 压力:
- Total DISK READ/WRITE:真正落到物理磁盘(或从磁盘读出)的数据速率,反映硬件真实负载
- Actual DISK READ/WRITE:含页缓存的读写量,体现应用层的真实意图
如果 Actual 远大于 Total(比如 Actual WRITE 是 25MB/s,Total 才 0.85MB/s),说明大量脏页堆积在内存中,内核即将集中刷盘——这是 I/O 风暴前的重要信号。
怎么快速锁定高 IO 进程
默认按 IO% 列降序排列,数值越大表示该进程等待 I/O 的时间占比越高。常用交互操作:
- 按 o 键只显示当前有磁盘读写行为的进程(隐藏空闲项)
- 按 → 或 ← 键切换排序列,比如切到 DISK WRITE 查找写入大户
- 按 p 键切换为按进程(PID)聚合显示,避免同进程多线程分散干扰判断
怎么用于排查和记录
交互式适合现场诊断,批量模式适合日志留存或脚本集成:
- iotop -o -b -n 10:只输出 10 次有 IO 的进程快照,适合抓取瞬时峰值
- iotop -b -d 2 -n 5 >> io.log:每 2 秒采样一次,共 5 次,追加写入日志文件
- iotop -u www-data:专注查看 web 用户下的所有进程,缩小排查范围
- iotop -p 1234,5678:只监控指定 PID,适合对某个服务做定向观察
注意几个实用细节
输出中各列含义需心中有数:
- TID 是线程 ID,多数情况等同于 PID;按 p 可切换成纯进程视图
- PRIO 表示 I/O 调度优先级(由 ionice 设置),值越低优先级越高
- SWAPIN 高说明进程频繁换入,可能内存紧张;IO% 高说明卡在磁盘等待上
- 按 a 键可切换为累积 I/O 量(单位 KB),适合看长时间运行进程的总消耗











