使用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?对于内核代码特别热衷。请不要从公式中扩展内核页面大小,因为我确实希望这是一个依赖于架构的答案(如果是的话)。
我不想要一个狡猾的只是将 ulimit -l 设置为无限制作为答案。有这个出色的功能请求功能请求在实施时会有所帮助。