/ proc / sys / fs / aio-nr永远不会高于1024(Linux上的AIO)

时间:2009-11-25 19:54:09

标签: linux performance asynchronous filesystems storage

我正在尝试在linux上使用async io。据我所知,有3种选择:

  • 内核调用(io_submit和朋友)
  • libRT - 在用户空间中使用线程
  • libRTKAIO - 不使用线程的内核调用的包装器

我正在使用最后一个选项,我看,在我的单元测试中,在多个线程中运行了很多异步io请求,/ proc / sys / fs / aio-nr永远不会高于1024.我不知道在哪里提出这样的限制。

我将/ proc / sys / fs / aio-max-nr设置为16M,所以这不是问题。

相关问题(也是我的)aio_write on linux with rtkaio is sometimes long

1 个答案:

答案 0 :(得分:1)

有一个名为“io_setup”的系统调用。在librtkaio中,此调用接收1024作为参数。这导致我所描述的常数1024,并且如果并行超过1024个ios会损害性能。 请注意,1024是硬编码的。

只有在阻止模式下调用lio_listio才能提高1024 bar。