使用内核AIO的应用程序

任何人都可以指向一些(最好是常用的)使用内核AIO(即io_submit()系列)的应用程序,就像任何SQL /无SQL数据库等一样。 我希望它能够在每个线程上发出队列深度超过1的asynchronous读取,以充分饱和一个支持64>空中请求的高度并行SSD,而不会显着降级。

我知道InnoDB,但我正在寻找更简单的东西(可能是KV商店)。

更新:我不在寻找示例代码,或像fio+libaio合成基准。 我有兴趣find一组可以使设备饱和的应用程序。

io_submit / io_getevents的一个简单例子就是fio,这是一个对测试和分析块设备非常有帮助的程序。 它有许多不同的I / O后端来支持不同的操作系统和不同的访问技术。 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可以给你一个关于你能达到什么样的吞吐量的好主意。 你甚至可以配置它做多个线程。