使用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

相关推荐
Ruiery16 分钟前
Linux 6.6内核 PCIe 深度解析(九):复位机制 — 从 FLR 到 Secondary Bus Reset 的降级链
linux·运维·服务器
学烹饪的小胡桃30 分钟前
WGCLOUD支持哪些告警方式
linux·运维·服务器·网络·安全
墨有6661 小时前
#Linux系统命令行操作指南
linux
做运维的阿瑞1 小时前
Linux ELF 文件
linux·运维·服务器
Escalating_xu1 小时前
【Makefile 进阶】从自动发现源文件、模式规则到目录分离与多模块递归构建
linux·开发语言
星辰徐哥1 小时前
鸿蒙PC平台 Gnote 笔记应用适配实战:从 Linux 到 鸿蒙PC 的 Electron 迁移
linux·笔记·electron·harmonyos·gnote
一直C1 小时前
Linux应用软件编程|嵌入式轻量级数据库SQLite3完整学习笔记(命令行+C语言API)
linux·sqlite
神威难绷泪1 小时前
TCP并发服务器:多进程 多线程 IO多路复用(select poll epoll)
linux·ipc·tcp并发服务器
kruptos2 小时前
嵌入式 Linux 驱动开发:第一个内核模块怎么写?
linux·运维·驱动开发·嵌入式硬件
wangqiaowq2 小时前
langfuse linux下的安装部署
linux·运维·服务器