iotop是定位Linux进程级磁盘I/O消耗最直接有效的工具,需root权限、依赖内核taskstats机制,推荐使用sudo iotop -o -P并重点关注IO>与DISK READ/WRITE列。

直接运行 iotop 就能进入实时监控界面,它像 top 一样动态刷新,专用于定位“谁在疯狂读写磁盘”。关键不是启动,而是看懂数据、快速聚焦问题进程。
怎么看懂顶部两行统计
第一行显示系统级磁盘 I/O 压力:
- Total DISK READ/WRITE:已真正落到物理磁盘(或从磁盘读出)的数据速率,反映硬件真实负载
- Actual DISK READ/WRITE:含页缓存的读写量,体现应用层的真实意图
如果 Actual 远大于 Total(比如 Actual WRITE 是 25MB/s,Total 才 0.85MB/s),说明大量脏页堆积在内存中,内核 soon 会触发集中刷盘,磁盘延迟可能骤升——这是 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),适合看长时间运行进程的总消耗


















