我有一个产生50000个进程的主进程
int master(int argc, char* argv[])
{
for (int i = 0; i < 10000; i++){
string name = tostring(i);
MSG_process_create(name.c_str(), some_code, NULL, MSG_host_self());
}
return 0;
}
但是当我运行此代码时出现错误:
[0.000000] /home/ubuntu/Downloads/simgrid/src/simix/smx_context.cpp:187: [xbt/CRITICAL] Failed to protect stack: Cannot allocate memory
我如何克服它或不可能?
答案 0 :(得分:2)
来自http://simgrid.gforge.inria.fr/simgrid/3.13.90/doc/options.html#options_virt:
如果您想要推动代码的可伸缩性限制,您可能希望这样做 减少contexts / stack-size项。其默认值为8192(以KiB为单位), 而我们的Chord仿真适用于小至16 KiB的堆栈 示例的
此外,您希望确保(使用valgrind)您的应用程序不会泄漏内存,因为这是您需要最多扩展进程数量的内容。