From 0be045259319ad500785dced1ba4b7dc2e0fdfe9 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Fri, 9 Nov 2012 19:18:41 +0100 Subject: [PATCH] be more explicit about why sysctl is needed and why it is good for you --- doc/install.doc | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/doc/install.doc b/doc/install.doc index d9d24fb101..03f17b2ed7 100644 --- a/doc/install.doc +++ b/doc/install.doc @@ -183,9 +183,23 @@ you want to increase it to run more processes. $ $PATH_TO_COROUTINE_JVM/java -Dcoro.stacksPerThread=$STACKS_NUMBER -cp .:../simgrid.jar basic/BasicTest platform.xml basic/basicDeployment.xml \endverbatim -If you feel limited in the amount of processes you can run, give a try -to this command: +If you reach the point where the creation of new simulated processes +fail with the message "Can't create coroutine object", you may need to +increase the relevant system limit with the following command. \verbatim sysctl -w vm.max_map_count = 131072 \endverbatim + +The full story is that each coroutine requires two memory maps, and +that Linux puts a limit on the total amount of memory maps that each +process can manage (by default, this limit is often at 65535). Since +the JVM needs a few dozen of such maps on its own (three maps per +dynamic library -- check /proc/the_pid/maps if you don't believe it), +this is enough to create over 30,000 simulated processes. But to go +futher, that limit must be modified. + +If you want to make this change permanent on your machine, edit your +/etc/sysctl.conf file. Otherwise, you have to redo it by calling +sysctl after each reboot. + */ -- 2.20.1