Приложения, использующие ядро ​​AIO

Кто-нибудь может указать мне на некоторые (предпочтительно широко используемые) приложения, которые используют ядро ​​AIO (т.е. семейство io_submit()), как любая база данных SQL/no-SQL и т. Д.? Я хочу, чтобы он мог выдавать асинхронное чтение с глубиной очереди более 1 в каждом потоке, чтобы полностью насыщать высокопараллельный твердотельный накопитель, поддерживающий 64> запросов в полете, без заметного ухудшения качества.

Я знаю о InnoDB, но ищу что-то более простое (возможно, магазин KV).

Обновление: я не ищу примеры кодов или синтетических тестов, таких как fio+libaio, Мне интересно найти набор приложений, которые могут насытить устройство в более реалистичной обстановке.

1 ответ

Один простой пример io_submit/io_getevents - это fio, программа, которая очень полезна для тестирования и профилирования блочных устройств. Он имеет несколько разных бэкэндов ввода / вывода для поддержки разных ОС и разных методов доступа. Оболочка Linux AIO находится в репозитории автора на github: https://github.com/axboe/fio/blob/master/engines/libaio.c

Код fio прост, но в нем отсутствует интеграция с eventfd, которая вам, скорее всего, понадобится. (У меня всегда есть.) Для этого более сложный, но простой код в блочном слое QEMU является хорошим примером: https://github.com/qemu/qemu/blob/331ac65963ab74dd84659b748affa0b111486f06/block/linux-aio.c

Вы можете обнаружить, что можете насыщать свой SSD из одного потока! Или, по крайней мере, стоит проверить. Fio может дать вам хорошее представление о том, какую пропускную способность вы можете ожидать, прежде чем писать код. Вы даже можете настроить его, чтобы сделать несколько потоков.

Другие вопросы по тегам