【问题标题】:/proc/sys/fs/aio-nr is never higher than 1024 (AIO on linux)/proc/sys/fs/aio-nr 永远不会高于 1024(Linux 上的 AIO)
【发布时间】:2010-12-20 10:47:27
【问题描述】:

我正在尝试在 linux 上使用异步 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

【问题讨论】:

    标签: linux performance asynchronous filesystems storage


    【解决方案1】:

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

    只有在阻塞模式下调用 lio_listio 才能让你提高这 1024 条。

    【讨论】:

      猜你喜欢
      • 2017-06-21
      • 2011-10-02
      • 2012-02-04
      • 2012-01-20
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      相关资源
      最近更新 更多