首页/系统/Linux 运维命令速查/iotop 谁在吃磁盘 IO
性能与监控48 条

iotop 谁在吃磁盘 IO

iotop 按进程显示实时读写速率与 IO 占比:定位「磁盘 100% 是谁干的」的直给工具,-o 只看活跃进程。

Linux 运维命令速查系统更新于 2026-10-13

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 与 USERIO 优先级与执行用户判断是否与 ionice 设置有关
TID 与 COMMAND线程号与命令名使用 -P 时只显示进程级
普通用户运行 iotop 会报权限错误,需要 root 或授予 CAP_SYS_ADMIN 能力,这不是工具本身损坏。
页缓存命中率高时磁盘压力小,iotop 显示的读写值偏低并不意味着应用没有做 IO,只是请求被缓存吸收了。

易错点

  • 用普通用户运行报权限错误,误以为工具不可用
  • 只看 iotop 不看 iostat,无法区分是应用请求多还是设备响应慢
  • 容器内看到宿主进程的 IO,归因到错误的对象
  • 内核未启用任务 IO 记账时输出为空或全为 0,需要换到支持的内核上运行

数据来源与参考

  • man 8 iotop
  • 内核文档 iostats

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌