Linux 存储延迟突增的定位方法-linux运维

当存储延迟突增但 %util 很低(比如

看 iostat -x 1 的 %util 和 await 是否背离

当存储延迟突增但 %util 很低(比如 await(平均每次 I/O 耗时)和 r_await/w_await:如果它们飙升到几十甚至上百毫秒,但 svctm(实际服务时间)仍很低(

常见诱因包括:

  • 上层应用突发大量随机小 I/O,触发内核 elevator 队列积压
  • 使用了 cfq 或 bfq 调度器且权重配置不当,导致某进程饿死或抢占过度
  • 块设备启用了 rotational=0 但底层其实是慢速 SATA SSD,调度器误判为 NVMe 导致激进合并

查 /sys/block/*/queue/scheduler 和 iosched 参数是否匹配硬件类型

SSD 和 NVMe 应该用 none(即 mq-deadline 或直接绕过调度器),而传统 HDD 才适合 cfq 或 bfq。运行 cat /sys/block/nvme0n1/queue/scheduler,若输出是 [bfq] mq-deadline none,但设备是 NVMe,括号里不该是 bfq —— 这会引入不必要的排序与延迟。

临时切换(以 nvme0n1 为例):

echo none > /sys/block/nvme0n1/queue/scheduler

注意:none 在较新内核中等价于禁用多队列调度,对 NVMe 更友好;但若用的是老内核(mq-deadline。永久生效需改 /etc/default/grub 中的 GRUB_CMDLINE_LINUX,加 scsi_mod.use_blk_mq=1 nvme_core.default_ps_max_latency_us=0 等参数。

用 blktrace 抓原始 I/O 时间线,定位卡点在哪一层

iostat 只给平均值,掩盖毛刺;blktrace 能记录每个 I/O 从提交(Q)、排队(G)、派发(D)、完成(C)的精确时间戳。运行:

blktrace -d /dev/nvme0n1 -o - | blkparse -i -

重点关注两段差值:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » Linux 存储延迟突增的定位方法-linux运维
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3999519+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3999519+
  • 本周更新: 0+
  • 最后更新: 2026-03-16