Linux IOSTAT двойной счет операций записи AIO?
В рамках отладки генератора ввода-вывода я столкнулся с нечетным набором результатов в RH 6.4, работающих на оборудовании x64 (проверено на нескольких системах):
- Приложение использует linux async IO (то есть не-posix) для доступа к разделам необработанного диска (/dev/sdb1, O_DIRECT) и запускается от имени пользователя root
- Приложение сообщает 100 IO / S, и 60% пишет.
- страсть приложения сообщает 100 вызовов в секунду в io_submit() и io_getevents(), отражая 100 операций AIO в секунду
- "dstat --aio" показывает 100 операций в секунду
- iostat сообщает 40 операций чтения в секунду, как и ожидалось, но 120 операций записи в секунду, что вдвое больше, чем ожидалось
- Более ранняя реализация, использующая синхронный ввод-вывод, не показывает "удвоенные" записи
Является ли это поведение известной ошибкой?
1 ответ
После некоторого дальнейшего тестирования кажется, что это поведение ограничено планировщиком (по умолчанию) CFQ. Переход к планировщику NOP привел IOSTAT в соответствие с другими инструментами измерения.