2016-11-03 46 views
1

我有主的过程,会生成50000个工艺是否有可能在SimGrid中产生大量的进程?

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 

我怎样才能克服它或它是不可能的?

回答

2

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

如果你想要把你的代码的可扩展性限制,您可能希望 减少环境/堆栈大小项目。其默认值为8192(KiB), ,而我们的Chord模拟可用于小至16 KiB的堆栈,对于 示例。

此外,你想确保(用valgrind)你的应用程序不会泄漏内存,因为这是你最需要在进程数量上扩展的东西。

相关问题