X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ecd5f7562caf1d443bf22788fa5f4fac408776ec..354e319e7ea5e2206df51a2e8f8b20caaff01240:/doc/doxygen/options.doc diff --git a/doc/doxygen/options.doc b/doc/doxygen/options.doc index 17acadde2d..dff9c9c7ed 100644 --- a/doc/doxygen/options.doc +++ b/doc/doxygen/options.doc @@ -1,5 +1,16 @@ /*! \page options Configure SimGrid +\htmlonly +
+\endhtmlonly +\htmlinclude graphical-toc.svg +\htmlonly +
+ +\endhtmlonly + A number of options can be given at runtime to change the default SimGrid behavior. For a complete list of all configuration options accepted by the SimGrid version used in your simulator, simply pass @@ -119,6 +130,8 @@ int main(int argc, char *argv[]) { - \c path: \ref options_generic_path - \c plugin: \ref options_generic_plugin +- \c simix/breakpoint: \ref options_generic_breakpoint + - \c storage/max_file_descriptors: \ref option_model_storage_maxfd - \c surf/precision: \ref options_model_precision @@ -189,8 +202,8 @@ described in Accuracy Study and Improvement of Network Simulation in the SimGrid Framework. - \b LV08 (default one): Realistic network analytic model - (slow-start modeled by multiplying latency by 10.4, bandwidth by - .92; bottleneck sharing uses a payload of S=8775 for evaluating RTT) + (slow-start modeled by multiplying latency by 13.01, bandwidth by + .97; bottleneck sharing uses a payload of S=20537 for evaluating RTT) - \anchor options_model_select_network_constant \b Constant: Simplistic network model where all communication take a constant time (one second). This model provides the lowest realism, but is (marginally) faster. @@ -654,7 +667,7 @@ the slowest to the most efficient: - \b ucontext: fast factory using System V contexts (Linux and FreeBSD only) - \b boost: This uses the [context implementation](http://www.boost.org/doc/libs/1_59_0/libs/context/doc/html/index.html) of the boost library for a performance that is comparable to our - raw implementation.\nInstall the relevant library (e.g. with the + raw implementation.\n Install the relevant library (e.g. with the libboost-contexts-dev package on Debian/Ubuntu) and recompile SimGrid. Note that our implementation is not compatible with recent implementations of the library, and it will be hard to fix this since @@ -998,49 +1011,21 @@ of counters, the "default" set. \subsection options_smpi_privatization smpi/privatization: Automatic privatization of global variables -MPI executables are usually meant to be executed in separated processes, but SMPI is -executed in only one process. Global variables from executables will be placed -in the same memory zone and shared between processes, causing intricate bugs. -Several options are possible to avoid this, as described in the main -SMPI publication. -SimGrid provides two ways of automatically privatizing the globals, -and this option allows to choose between them. - - - no (default): Do not automatically privatize variables. - - mmap or yes: Runtime automatic switching of the data segments.\n - SMPI stores a copy of each global data segment for each process, - and at each context switch replaces the actual data with its copy - from the right process. No copy actually occures as this mechanism - uses mmap for efficiency. As such, it is for now limited to - systems supporting this functionnality (all Linux and most BSD).\n - Another limitation is that SMPI only accounts for global variables - defined in the executable. If the processes use external global - variables from dynamic libraries, they won't be switched - correctly. The easiest way to solve this is to statically link - against the library with these globals (but you should never - statically link against the simgrid library itself). - - dlopen: Link multiple times against the binary.\n - SMPI loads several copy of the same binary in memory, resulting in - the natural duplication global variables. Since the dynamic linker - refuses to link the same file several times, the binary is copied - in a temporary file before being dl-loaded (it is erased right - after loading).\n - Note that this feature is somewhat experimental at time of writing - (v3.16) but seems to work.\n - This approach greatly speeds up the context switching, down to - about 40 CPU cycles with our raw contextes, instead of requesting - several syscalls with the \c mmap approach. Another advantage is - that it permits to run the SMPI contexts in parallel, which is - obviously not possible with the \c mmap approach.\n - Further work may be possible to alleviate the memory and disk - overconsumption. It seems that we could - punch holes - in the files before dl-loading them to remove the code and - constants, and mmap these area onto a unique copy. This require - to understand the ELF layout of the file, but would - reduce the disk- and memory- usage to the bare minimum. In - addition, this would reduce the pressure on the CPU caches (in - particular on instruction one). +MPI executables are usually meant to be executed in separated +processes, but SMPI is executed in only one process. Global variables +from executables will be placed in the same memory zone and shared +between processes, causing intricate bugs. Several options are +possible to avoid this, as described in the main +SMPI publication and in +the @ref SMPI_what_globals "SMPI documentation". SimGrid provides two +ways of automatically privatizing the globals, and this option allows +to choose between them. + + - no (default when not using smpirun): Do not automatically privatize variables. + Pass \c -no-privatize to smpirun to disable this feature. + - dlopen or yes (default when using smpirun): Link multiple times against the binary. + - mmap (slower, but maybe somewhat more stable): + Runtime automatic switching of the data segments. \warning This configuration option cannot be set in your platform file. You can only @@ -1281,6 +1266,23 @@ item several times, as in \verbatim --cfg=path:toto --cfg=path:tutu \endverbatim +\subsection options_generic_breakpoint Set a breakpoint + +\verbatim +--cfg=simix/breakpoint:3.1416 +\endverbatim + +This configuration option sets a breakpoint: when the simulated clock reaches +the given time, a SIGTRAP is raised. This can be used to stop the execution and +get a backtrace with a debugger. + +It is also possible to set the breakpoint from inside the debugger, by writing +in global variable simgrid::simix::breakpoint. For example, with gdb: + +\verbatim +set variable simgrid::simix::breakpoint = 3.1416 +\endverbatim + \subsection options_generic_exit Behavior on Ctrl-C By default, when Ctrl-C is pressed, the status of all existing