我正在运行一个使用 mmap 分配 8mb 堆栈的程序。在测试我可以分配多少个堆栈时(目标是 100,000 个),我发现虚拟内存大小按预期快速增加,并且保留大小保持较小(小于 1GB)。然后程序出现段错误Cannot allocate new fiber stack: Cannot allocate memory (Errno)。使用gdb挽救段错误然后查看 htop,我发现这种情况发生在大约 256GB 的虚拟内存上。
我尝试过prlimit --as=unlimited --rss=unlimited --memlock=unlimited --data=unlimited在运行程序时使用,但似乎没有什么区别。
有没有办法提高这个限制?增加这个限制是否明智?水晶有没有更好的分配堆栈的方法?