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

相关推荐
David猪大卫2 小时前
【Linux修炼】环境变量、进程地址空间
linux·c语言·经验分享·笔记·学习·ubuntu·centos
叼烟扛炮3 小时前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
Ruiery4 小时前
Linux 6.6内核内存管理深度解析(十五):CMA 连续内存分配器
linux·运维·服务器
测试界的小码农4 小时前
【Linux 命令实战(01):认识 Linux 终端,从零掌握第一个命令】
linux·运维·服务器
布裘5 小时前
【银河麒麟】重启后时区丢失?排查发现 localtime 被业务程序替换成硬链接
linux·运维·网络
GeW8 小时前
高端化转型进入“补底层”阶段:Linux与数据库的再定位
linux
silent8 小时前
龙芯3B6000M运行Yolov8+FastApi
linux·loongarch·loongnix·龙芯
西西弗Sisyphus9 小时前
理解 Linux 动态库加载:LD_LIBRARY_PATH
linux
AR-26710-9 小时前
Linux Day31——实操启停服务改端口重启
linux·运维
叼烟扛炮10 小时前
Linux 学习笔记(五十八):IO 多路复用封神——epoll 底层原理揭秘
linux·运维·服务器·网络·笔记·学习·php