如何找到良好的状态 io 统计数据?

如何找到良好的状态 io 统计数据?

我想监控磁盘 I/O 活动,以防出现需要大量 I/O 的情况。Nagios 插件看起来简单,他给出了以下示例

Example: Tps, read and write thresholds:
    ./check_diskstat.sh -d sda -w 200,100000,100000 -c 300,200000,200000

Example: Average queue length threshold:
    ./check_diskstat.sh -d sda -W 50 -C 100

问题

由于不同的主机有不同的空闲 I/O 活动,我如何才能找到合适的起始值?

我想问同样问题的另一种方式是:iostat在每个主机上应该使用哪些参数来查看其“良好状态”磁盘 I/O 是什么?

答案1

底层计数器记录在https://www.kernel.org/doc/Documentation/block/stat.txt

根据从块设备读取或写入块设备的 IOP 和扇区的绝对数量(小写 -w-c选项)设置有意义的阈值需要事先了解该特定块设备的实际功能(例如通过对它们进行基准测试)。

使用队列长度(大写字母 -W-C选项)似乎更通用一些。当您获得一个糟糕的 IO 队列时,无论底层存储有多快,您都会推送超出其支持能力的读取/写入,并且您的应用程序会变慢。

但我不知道记录的 50 和 100 毫秒是否合理或完全任意的值。


对于我的虚拟服务器来说,使用绝对数字相对容易,它们配置为具体限制 我只需要将警告/严重级别分别设置为指定限值的 80% 或 95%。

例如,具有 600 IOPS 和 10 MB/s 的规格:

将分配的扇区disk_read_bytes_sec除以disk_write_bytes_sec512(扇区大小),即可得到虚拟磁盘支持的扇区限制。19531 (10 MB = 10000000 bytes) / 512 = 19531
* 80% = 15624 和 600 * 80% = 480
19531 * 95% = 18749 和 600 * 95% = 570

./check_diskstat.sh -d vda -w 480,15624,15624 -c 570,18749,18749

相关内容