作为调试 IO 生成器的一部分,我在 x64 硬件上运行的 RH 6.4 下遇到了一组奇怪的结果(在多个系统上验证):
-- 应用程序使用 linux 异步 IO(即非 posix)访问原始磁盘分区(/dev/sdb1,O_DIRECT),并以 root 身份运行
-- 应用程序报告 100 io/s,以及 60% 的写入。
-- 应用程序的 strace 报告每秒调用 io_submit() 和 io_getevents() 100 次,反射(reflect)每秒 100 次 AIO 操作
-- 'dstat --aio' 显示每秒 100 次操作
-- iostat 报告 40 次读取/秒,如预期的那样,但 120 次写入/秒,是预期的两倍
-- 较早的实现,使用同步 IO,不显示“双倍”写入
此行为是已知错误吗?
最佳答案
经过一些进一步的测试,这种行为似乎仅限于(默认)CFQ 调度程序。转向 NOP 调度程序使 IOSTAT 与其他测量工具保持一致。
关于linux IOSTAT 重复计算 AIO 写操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16990349/