代码之家  ›  专栏  ›  技术社区  ›  Drakosha

/proc/sys/fs/aio-nr从不高于1024(Linux上的aio)

  •  1
  • Drakosha  · 技术社区  · 15 年前

    我正在尝试在Linux上使用异步IO。据我所知,有三种选择:

    • 内核调用(IO提交和朋友)
    • librt-在用户空间中使用线程
    • librtkaio-不使用线程的内核调用包装器

    我使用的是最后一个选项,我看到在我的单元测试中,在多线程中运行大量异步IO请求,/proc/sys/fs/a io-nr永远不会高于1024。我想知道这样的限制在哪里。

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

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

    1 回复  |  直到 15 年前
        1
  •  1
  •   Drakosha    15 年前

    有一个名为“IO_设置”的系统调用。在librtkaio中,此调用作为参数接收1024。正如我所描述的,这会导致持续的1024,并且如果并行的IOS超过1024,会影响性能。 注意,1024是硬编码的。

    只有在阻塞模式下调用lio_listio,您才能提高这个1024巴。