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

相关推荐
大哥您好7 小时前
QEMU 11.1.2 多架构编译指南(x86_64 / aarch64 / riscv64)
linux·服务器
道满科技8 小时前
Function Calling 参数总出错?只修参数就行
linux·windows·python
Android系统攻城狮8 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_prepare_read调用流程与实战(七十四)
linux·运维·服务器·gstreamer音视频·音视频进阶
我科绝伦(Huanhuan Zhou)9 小时前
Linux 通用压力测试脚本合集:磁盘 + 网络
linux·网络·压力测试
Soneswy11 小时前
Linux系统篇--重定向与文件操作命令
linux
有毒的教程11 小时前
Linux底层存储路由配
linux·运维·网络
Linux系统运维工程师_郭主任12 小时前
运维人还在被拒offer?现在能考的,只有 RHCE 10.0。
linux
自养Agent12 小时前
MCP Server Boundary Audit Report
linux·服务器·人工智能·windows·大模型·llm
Coisinier13 小时前
docker命令管理镜像及容器
linux·运维·nginx·docker·容器·操作系统
A心有千千结14 小时前
通过 SSH 反向代理让服务器借用本机网络访问 GitHub 的最佳实践
linux·服务器·网络·git·ssh·github