【问题标题】:How much locked memory does io_uring_setup need?io_uring_setup 需要多少锁定内存?
【发布时间】:2021-04-04 07:25:49
【问题描述】:

当使用io_uring_queue_init 时,它调用io_uring_setup。当进程可用的锁定内存量不足时,返回ENOMEM

strace 看起来像:

[pid 37480] io_uring_setup(2048, {flags=0, sq_thread_cpu=0, sq_thread_idle=0}) = -1 ENOMEM (Cannot allocate memory)

每个条目(第一个参数)需要多少锁定内存的公式是什么?如果可能的话,基于 params 结构中的 sq_entries/cq_entries? Kernel code 特别热心的人。请不要从公式中扩展内核页面大小,因为我确实希望这是一个依赖于架构的答案(如果是的话)。

我不想狡猾,只需将 ulimit -l 设置为无限制作为答案。这个outstanding feature request 功能请求在实施时会有所帮助。

【问题讨论】:

    标签: linux io io-uring


    【解决方案1】:

    感谢 Jens Axboe 将以下内容添加到 liburing library calls,其中添加 (>=liburing-2.1) 返回大小(以字节为单位),如果不需要则返回 0,或者 -errno 表示错误。

    ssize_t io_uring_mlock_size(unsigned entries, unsigned flags);
    ssize_t io_uring_mlock_size_params(unsigned entries, struct io_uring_params *p);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多