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

相关推荐
fengyehongWorld38 分钟前
Linux update-alternatives命令
linux
雨的旋律20991 小时前
ubuntu2604
linux·运维·服务器
三言老师1 小时前
mkdir创建多级目录,目录创建基础实操
linux·运维·服务器
imc.112 小时前
linux EXT文件系统
linux·运维·服务器
三言老师3 小时前
mv移动文件、重命名文件实战案例
linux·服务器·网络·centos
AOwhisky4 小时前
云原生 DevOps 工具链从入门到实战(第二期)——Jenkins安装与基础配置——CICD核心引擎
linux·运维·ci/cd·云原生·jenkins·devops
一叶之秋14125 小时前
Linux网络初识
linux·服务器·网络
盐焗鹌鹑蛋5 小时前
【Linux】基础开发工具yum和vim
linux·运维·vim
AOwhisky5 小时前
Linux(CentOS)系统管理入门笔记(第十四期)——计划任务与进程调度管理:atcron 与 nicechrt
linux·运维·笔记·centos·云计算·进程调度·计划任务
小莫分享5 小时前
sshw:用交互搜索和 Web 配置高效管理 SSH Server
linux·运维·golang·开源·ssh