知方号

知方号

SSD磁盘util接近 100%代表磁盘慢吗<台式机磁盘100%>

问题现象

集群中查看到ssd磁盘(做cache盘)io util使用率接近100%,需要判读是否达到了磁盘瓶颈。

问题调查

参考 iostat 的文档, 和 别人的blog 都有提到, iostat 的utils 并不能反映新的支持并发的设备,比如ssd, raid等:

%util Percentage of elapsed time during which I/O requests were issued to the device (bandwidth utilization for the device). Device saturation occurs when this value is close to 100% for devices serving requests serially. But for devices serving requests in parallel, such as RAID arrays and modern SSDs, this number does not reflect their performance limits.

另外,可以参开 https://brooker.co.za/blog/2014/07/04/iostat-pct.html 文章《Two traps in iostat: %util and svctm》

在x86 上也试了一下, 通过读cache盘:

fio -name test -rw randread -filename /dev/sdr -runtime 60 -time_based=1 -direct=1 -ioengine libaio -numjobs=1 -iodepth=1 -eta-newline=1read: IOPS=7872, BW=30.8MiB/s (32.2MB/s)(236MiB/7671msec)Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsdr 0.00 9.00 7524.00 394.00 29.59 2.37 8.27 0.42 0.18 0.13 1.14 0.12 95.00Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsdr 0.00 0.00 8305.00 82.00 32.66 0.96 8.21 0.01 0.12 0.11 0.26 0.12 99.80Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsdr 0.00 0.00 8379.00 62.00 32.80 0.60 8.10 0.02 0.11 0.11 0.10 0.12 99.10Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsdr 0.00 8.00 7720.00 195.00 30.53 1.67 8.33 0.15 0.14 0.12 0.86 0.12 98.10Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsdr 0.00 4.00 8021.00 87.00 31.33 0.72 8.10 0.02 0.12 0.12 0.17 0.12 99.20Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsdr 0.00 5.00 7502.00 374.00 29.31 1.89 8.11 0.31 0.16 0.13 0.92 0.12 96.00

可以看到iops 在7000 左右, utils 已经100%了;但是如果增加iodepth:

fio -name test -rw randread -filename /dev/sdr -runtime 60 -time_based=1 -direct=1 -ioengine libaio -numjobs=1 -iodepth=128 -eta-newline=1read: IOPS=129k, BW=505MiB/s (530MB/s)(18.1GiB/36746msec)Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsdr 0.00 22.00 125637.00 667.00 491.68 13.65 8.19 10.29 0.35 0.34 1.90 0.01 100.00Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsdr 0.00 9.00 131418.00 136.00 513.60 1.39 8.02 1.59 0.24 0.24 0.52 0.01 100.00Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsdr 0.00 0.00 131817.00 43.00 514.91 0.34 8.00 0.23 0.21 0.21 0.19 0.01 100.00Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsdr 0.00 1.00 132226.00 81.00 517.15 1.23 8.02 0.67 0.23 0.23 0.63 0.01 100.00Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsdr 0.00 0.00 130618.00 37.00 510.23 0.32 8.00 0.12 0.21 0.21 0.65 0.01 100.00

可以看到iops 12w , utils 也是100%。

也测试了下nvme 设备, 对应4k-1-1 , read 只有1w, 如果是 4k-1-128 read有 25w, 但他们的utils 都是100%。

问题原因%util, it means "Percentage of CPU time during which I/O requests were issued to the device".

util参数代表的意思是“向设备发出I/O请求期间的CPU时间百分比”,这个值对于串行的设备(比如HDD机械磁盘)来说可以反映一个设备的繁忙程度,如果长时间运行大于90%,可能是慢盘。对于并行设备(比如SSD,固态磁盘),如果某时间段1个IO占用CPU时间会是100%,那么同时间段100个IO占用CPU时间可能也是100%,所以不能认为该设备达到了瓶颈。

要判断某个磁盘设备还需要分析其他参数比如await值、avgqu-sz等。

问题总结

io util% 参考值只针对 HDD 比较准确, 因为HDD 没有并发,不能反应SSD(并发设备)的能力。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。

上一篇 没有了

下一篇没有了