我们使用 iostat -x 并检查 await 列 - 每个设备它显示等待的总时间加上磁盘对请求的实际处理
iostat -yzx 5
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdm 0.00 0.00 0.00 1.60 0.00 4.20 5.25 0.00 0.75 0.00 0.75 0.62 0.10
sda 0.00 0.40 0.00 3.00 0.00 24.70 16.47 0.11 37.60 0.00 37.60 7.13 2.14
sdc 0.00 0.00 0.00 0.80 0.00 6.10 15.25 0.01 12.75 0.00 12.75 12.75 1.02
sdb 0.00 0.00 0.00 0.40 0.00 2.40 12.00 0.01 19.50 0.00 19.50 19.50 0.78
sdd 0.00 0.00 0.00 0.80 0.00 6.60 16.50 0.01 10.75 0.00 10.75 10.75 0.86
sdg 0.00 0.00 0.00 1.00 0.00 8.90 17.80 0.02 15.80 0.00 15.80 15.80 1.58
sdf 0.00 0.20 0.00 1.00 0.00 8.00 16.00 0.01 12.80 0.00 82.80 12.80 1.28
sde 0.00 0.00 0.00 0.80 0.00 7.50 18.75 0.01 11.25 0.00 11.25 11.25 0.90
sdk 0.00 0.00 0.00 0.80 0.00 6.50 16.25 0.01 14.25 0.00 14.25 14.25 1.14
sdi 0.00 0.00 0.00 1.00 0.00 7.20 14.40 0.01 11.60 0.00 11.60 11.60 1.16
sdj 0.00 0.00 0.00 0.80 0.00 5.90 14.75 0.01 13.50 0.00 13.50 13.50 1.08
sdh 0.00 0.00 0.00 0.80 0.00 5.60 14.00 0.01 13.25 0.00 13.25 13.25 1.06
sdl 0.00 0.00 0.00 1.00 0.00 7.20 14.40 0.01 14.20 0.00 14.20 14.20 1.42
sdn 0.00 0.00 0.00 1.60 0.00 4.20 5.25 0.00 0.88 0.00 0.88 0.75 0.12
md1 0.00 0.00 0.00 0.40 0.00 3.20 16.00
sdq 0.00 0.00 0.00 0.60 0.00 5.20 17.33 0.01 12.67 0.00 82.67 12.67 0.76
sdr 0.00 0.00 0.00 0.60 0.00 4.20 14.00 0.01 10.00 0.00 10.00 10.00 0.60
我们从输出中可以看到,某些磁盘上的 await 很高
我的问题是——我们能做些什么呢?
有什么办法可以解决这个问题吗?
答案1
相关磁盘上的服务时间约为 15ms - 对于正在旋转的 Rust 来说,这是一个相当正常的值。由于您只有非常有限的未完成 I/O 数量,并且几乎没有读取,因此您受到随机写入限制。解决该问题的最简单方法是使用 bcache dm-cache 或任何带有合适 SSD 的东西。