2016-11-03 154 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)你的應用程序不會泄漏內存,因爲這是你最需要在進程數量上擴展的東西。

相關問題