Linux怎么查看具体的磁盘IO性能瓶颈

煙雲

煙雲

2026-07-13

151人浏览

原创

判断磁盘i/o瓶颈的核心是await、avgqu-sz与吞吐量是否匹配:await>30ms且avgqu-sz>8(nvme)或>4(ssd)、吞吐远低于理论带宽时,表明存在真实瓶颈;高await低%util指向内核或文件系统层问题,而非磁盘物理能力不足。

linux怎么查看具体的磁盘io性能瓶颈

iostat -x 1 看设备级瓶颈,别只盯 %util

看到 %util 接近 100% 就以为磁盘卡死?错。现代 NVMe 上 %util 长期 100% 可能完全正常;而机械盘上 %util 持续 >80% 才真要警觉。关键得看三者联动:

  • await:平均每次 I/O 请求耗时(毫秒)。SSD >20ms、HDD >50ms 且稳定存在,说明延迟已起——不是“忙”,是“慢”
  • avgqu-sz:平均队列长度。NVMe >8、SATA SSD >4、HDD >2 就表明上层下发太快,设备或调度器跟不上
  • rkB/s + wkB/s:实际吞吐。和理论带宽比(如 NVMe Gen4 x4 ≈ 3GB/s)——如果吞吐远低于上限,但 awaitavgqu-sz 却很高,问题不在磁盘,而在内核或文件系统层

执行 iostat -x 1,重点关注这三列是否“不匹配”。比如 await=42msavgqu-sz=12wkB/s=80MB/s(而该盘理论写入应达 2.5GB/s),这就是典型软件层瓶颈。

iotop -o 找不到高 IO 进程?权限和过滤逻辑常被忽略

iotop -o 启动后一片空白,不是没 IO,而是两个硬性条件没满足:

  • 必须用 sudo iotop -o:非 root 无法读取 /proc/*/io,会静默跳过所有用户进程
  • -o 只显示“此刻正在发起 I/O”的进程——刚写完一页、正休眠的进程不会出现;去掉 -o 能看到全量,但噪音大;更稳妥的是先 sudo iotop -o -d 1,再按 O(Shift+o)按 IO 带宽降序

注意:容器进程在 cgroup v2 下可能被归为统一 IO 组,iotop 显示的是宿主机视角,不代表容器内实际受限后的用量。若怀疑容器,需进容器 ns 或查 /sys/fs/cgroup/io.pressure

PyCharm 2026.2.0.1 Linux版
PyCharm 2026.2.0.1 Linux版

PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。

下载

pidstat -d 1 定位进程真实 IO 延迟,而非仅看字节数

iotop 告诉你谁在猛写,pidstat -d 1 才告诉你它是不是真拖慢了系统:

  • 运行 pidstat -d 1 5,重点看 avgwq-sz(平均写队列长度)和 avgrq-sz(平均请求大小)——小值(如 4KB)+ 高 avgwq-sz 表明是随机写风暴
  • 对比 wait 字段(单位 ms):若某进程 wait 持续 >10ms,说明它的 I/O 请求长期排队,即使总字节数不高,也可能成为延迟源
  • 对数据库或日志服务,检查其配置:是否启用了 fsyncsync_binlog=1journal=ordered,这些会把异步写变同步,直接抬高 await

别只信 IO_RATE 数值——一个每秒写 1MB 但平均等待 30ms 的进程,比每秒写 100MB 但等待 0.2ms 的进程更可能是瓶颈。

别跳过基础配置:调度器、挂载选项和 deleted 文件

很多“IO 瓶颈”根本不是硬件问题,而是可调项没对:

  • 查当前调度器:cat /sys/block/sda/queue/scheduler。SSD/NVMe 推荐 none(即 mq-deadline 或 kyber),传统 HDD 可用 deadlinecfq 在新内核已移除
  • 检查挂载选项:mount | grep sda。关键项包括:noatime(避免每次读都更新时间戳)、barrier=1(影响 journal 性能)、commit=60(ext4 默认 5 秒提交,可调大缓解小写压力)
  • 空间明明够但 IO 卡顿?运行 lsof +L1 查“已删除但仍被打开”的文件——常见于 logrotate 后 nginx/java 进程未 reload 日志句柄,几十 GB 空间被 hold 住却不释放

最易被忽略的点:iostat 的 await 是端到端耗时,包含内核路径、文件系统锁、块层队列、甚至存储网络(如 iSCSI)。单靠工具输出无法区分层级,必须配合 blktracebpftrace 进一步下钻——但那已是另一层问题了。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

2648

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

1624

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

1271

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

2610

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

2372

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

1635

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

1207

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

1397

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

208

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Apifox下载与安装手册
Apifox下载与安装手册

共0课时 | 0人学习

安装 Xdebug 并配置 phpstorm
安装 Xdebug 并配置 phpstorm

共1课时 | 127人学习