是否有可能在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

我怎么能克服它或者它是不可能的?

From http://simgrid.gforge.inria.fr/simgrid/3.13.90/doc/options.html#options_virt:

如果您想推动代码的可伸缩性限制,您可能想要减少上下文/堆栈大小项。其默认值为8192(以KiB为单位),而我们的Chord模拟可以使用小到16 KiB的堆栈例子。

此外,您还需要确保(使用valgrind)应用程序不会泄漏内存,因为这是您最需要扩展进程数量的地方。

相关内容

  • 没有找到相关文章

最新更新