这是我的 HDD avgqu-sz 图表来自不同的应用机器: 应用将数据缓存在内存中,每 n 分钟将数据刷新到文件系统 + 每 m 分钟将数据从文件系统(重新)加载到内存中。这就是峰值的原因。这些峰值期间的块设备利用率为 80-95%。
问:我需要担心我的磁盘性能吗?如何解释这个图表 - 正常还是不正常?我需要优化某些东西吗?
- 是的,我的峰值相当高~1k,但队列大小是~1 => 一天的平均值是~16 - 我不知道我是否能对这个平均值感到满意
- 是的,我知道 metric avgqu-sz 是什么意思
- 是的,我已经针对高 IOps 优化了我的文件系统(noatime、nodirtime)
答案1
是的,我知道 metric avggu-sz 是什么意思 这意味着你知道数据一般是这样的
app --> bio layer --> I/O Scheduler --> Driver --> Disks
nr_requests queue_depth
这只是一个总体概述,并未涵盖所有内容。只要 nr_requests 保持在queue_Depth,I/O 就会快速通过。当这些请求超过队列深度并且 I/O 开始保留在调度层时,问题就开始出现。
查看您的图表,我强烈建议 1:检查具有高峰的磁盘 2:尝试更改 nr_requests 和queue_depth 的值以查看它是否有帮助 3:更改测试环境中的调度程序(因为此处的数据不包含合并请求(读/写)..所以我无法评论)
/sys/block/<your disk drive sda,sdb...>/queue/nr_requests (io scheduler)
/sys/block/<your disk drive sda,sdb...>/device/queue_depth (driver)
答案2
除非您运行的阵列包含数百个作为单个设备公开的磁盘,否则平均队列大小超过 1,000 个请求就会带来麻烦。
但是从您的图表来看,我认为您的大多数峰值都是测量或图形伪影 - 您的数据看起来像是以 5 分钟为间隔收集的,但峰值的宽度基本为零 - 非常不寻常。您应该查看由近实时收集sar
或显示的原始数据iostat
以排除这种情况。如果您仍然看到每个主轴的队列大小超过 30 个请求,请在此处检查数据。