是否有可能在SimGrid中产生大量的进程?

时间:2016-11-03 21:19:44

标签: simgrid

我有一个产生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

我如何克服它或不可能?

1 个答案:

答案 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)您的应用程序不会泄漏内存,因为这是您需要最多扩展进程数量的内容。