我有一个主进程,产生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
我怎么能克服它或者它是不可能的?
From http://simgrid.gforge.inria.fr/simgrid/3.13.90/doc/options.html#options_virt:
如果您想推动代码的可伸缩性限制,您可能想要减少上下文/堆栈大小项。其默认值为8192(以KiB为单位),而我们的Chord模拟可以使用小到16 KiB的堆栈例子。
此外,您还需要确保(使用valgrind)应用程序不会泄漏内存,因为这是您最需要扩展进程数量的地方。