当 avgrq-sz 很小时,磁盘 %util 不断达到 100%

当 avgrq-sz 很小时,磁盘 %util 不断达到 100%

在我的内核为 4.9.86 的系统上,我注意到我的磁盘(HDD 转速为 5400 rpm)有奇怪的行为,%工具在相当长的一段时间内(持续 5 分钟左右)持续达到 100%,我确实看到了平均RQ发生这种情况时大小为 8K。平均曲率等待也很高,导致很多进程进入D状态(包括jdb2线程)。我也注意到了KB脏这次变高(在本例中为 658 MB,否则通常为几 KB),我是否达到磁盘饱和状态?

SAR Memory Usage:======================================
Linux 4.9.86     01/07/19        _x86_64_        (32 CPU)
11:29:20    kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
11:29:21     80270488  52009236     39.32    354368  17373312  15789156      7.92  10257860  15388656    658488
Average:     80270488  52009236     39.32    354368  17373312  15789156      7.92  10257860  15388656    658488

SAR IO Usage:======================================
Linux 4.9.86     01/07/19        _x86_64_        (32 CPU)

11:29:22          tps      rtps      wtps   bread/s   bwrtn/s
11:29:23       351.00      0.00    351.00      0.00   2808.00
Average:       351.00      0.00    351.00      0.00   2808.00

SAR Device IO activity:======================================
Linux 4.9.86      01/07/19        _x86_64_        (32 CPU)

11:29:23          DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
11:29:24        loop5      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:29:24          sda    285.00      0.00   2280.00      8.00    143.51    510.94      3.51    100.00
11:29:24        vault      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:          DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util

Average:        loop5      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:          sda    285.00      0.00   2280.00      8.00    143.51    510.94      3.51    100.00
Average:        vault      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

SAR Queue and Load avg:======================================
Linux 4.9.86      01/07/19        _x86_64_        (32 CPU)

11:29:25      runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
11:29:26            0      1043      3.39      2.30      2.15         2
Average:            0      1043      3.39      2.30      2.15         2

文件系统ext3ext4驱动程序一样安装,data=ordered,barrier=0并启用日志记录设置。

突袭配置:

  型号:SAS2008 固件版本:9.00.00.00 RAID 级别:RAID1  

答案1

如果进程要发送大量非顺序(随机)小写入,这看起来就像您期望看到的那样。您的平均请求大小相对较小(8,这可能意味着 8×512 字节扇区 = 4K,因此是正常写入的最小值)。拥有更多的脏缓冲区也是一致的,这意味着写入已被传递到内核并且内核正在将它们写入磁盘。对于磁盘来说,285 tps 的性能相当不错。

您需要调查哪些程序正在写入磁盘并查看它们是否表现出异常行为。或者,如果可以将程序配置为更好地扩展写入(例如,如果它是数据库,则脏页写回速度通常是可配置的)。

ext3 并不真正推荐用于任何用途。 ext4 是一个保守的替代选择(但对于 ext4 barrier=0,你显然不关心这一点); XFS 是另一个不错的选择(而且仍然非常可靠)。但我怀疑这真的会有帮助。不过,SSD 肯定会给远的更高的 IOPS。

相关内容