使用iotop查看磁盘IO

新的问题,谁在写呢?

用 iotop 定位写进程,判断是否正常业务。

1、iotop 是什么

是基于 Python 编写的进程级 IO 监控工具,数据来源于 Linux 内核的 taskstats 接口(/proc//io + delay accounting)。

核心定位: 回答 "哪个进程/线程在读写磁盘,读写多少,卡了多久"。

2、安装

bash 复制代码
yum install -y iotop

3、命令参数详解

bash 复制代码
iotop [OPTIONS]

4、直接执行iotop,来看看输出

截图是上文iostat分析磁盘问题后,执行istop查看进程/线程读写磁盘。
(1)顶部

Total DISK READ/WRITE

  • 名称:已过块设备层的实际流量
  • 统计时机:数据真正落盘/出盘时
  • 包含内容:所有进程 read_bytes/write_bytes 差分之和
  • 数值关系:通常较小
  • 排查意义:反映物理磁盘当前真实压力

Actual DISK READ/WRITE

  • 名称:包含页缓存的读写操作量
  • 统计时机:数据进入/离开页缓存时
  • 包含内容:内核 pgpgin/pgpgout + pswpin/pswpout
  • 数值关系:通常较大(异步写场景下可大 10~100 倍)
  • 排查意义:反映应用层真实的读写意图

核心判断:Actual 远大于 Total → 大量脏页在内存排队,内核 kworker即将爆发刷盘,磁盘延迟即将飙升。
(2)输出列详解

(3)再回过头来看看例子中的输出

分析:

  • Actual (25MB/s) 远大于 Total (0.85MB/s) → 说明大量写还在页缓存/缓冲区里,尚未刷到物理盘
  • 一旦内核触发 writeback 刷脏页,iostat 看到的爆发写洪峰就会到来(对应之前截图里 wMB/s 9.85 的峰值)
  • 纯写负载,几乎零读 → 与 iostat 的 r/s=0 完全吻合

接着进行进程级逐行分析,按 DISK WRITE 从高到低排列进行逐一分析:

不同业务系统,效果不一样,这里就不具体一一说明了。实施过程中可以偷懒,命令输出结果,扔给AI解读、分析,这是AI的强项,我们充分利用起来。面试就不能偷懒了,需要知道怎么看结果,得一一解答,表明是真实做过的,平时注意积累,实战下最好。

5、排查优先级与常见误区

核心:先看 DISK WRITE 抓"谁在生产数据",再看 IO> 抓"谁被数据卡住",最后看 Actual - Total 差值判断"炸弹还有多久爆炸"。

附录:安装iotop

相关推荐
Huangjin007_6 小时前
【Linux 系统篇(十五)】进程 (三) :进程状态深度详解
linux·运维
RisunJan6 小时前
Linux命令-talk(终端实时对话)
linux·运维·服务器
NeilYuen7 小时前
【vemory】高性能KV存储AOF方案设计
linux·c++·redis·缓存
三言老师8 小时前
Rocky Linux 8.6 整机系统备份与迁移方案文档文档用途
linux·运维·服务器·网络
雾时之林8 小时前
Linux----防火墙
linux·运维·网络
消失的旧时光-19439 小时前
7-fix补充篇:机器人为什么需要多级控制仲裁?Cloud、Linux 与 MCU 分别管什么
linux·单片机·机器人·仲裁机制·安全保护机制
睡一觉就好了。9 小时前
线程的理解
linux
我星期八休息9 小时前
网络编程—NAT、代理服务与内网穿透
linux·服务器·网络·网络协议
RisunJan10 小时前
Linux命令-sysctl(运行时修改内核参数)
linux·网络·智能路由器
yunwei3710 小时前
eBPF 教程:使用 fsession 追踪慢速 vfs_read 调用
linux·云原生