- LMM stuff moved to its own namespace: simgrid::kernel::lmm.
- Renamed LMM classes (e.g. s_lmm_system_t -> System).
+ SMPI
+ - Switch to the faster dlopen privatization mechanism by default
+ - Documentation improvments
+
Virtual Machines
- Live migration is getting moved to a plugin. Dirty page tracking is
the first part of this plugin. This imply that VM migration is now
privatization mechanisms that you can @ref options_smpi_privatization
"select at runtime". At the time of writing (v3.18), the mmap approach
is considered to be very robust (but a bit slow) while the dlopen
-approach is considered to be fast and experimental.
+approach is considered to be much faster. dlopen is used by default.
With the <b>mmap approach</b>, SMPI duplicates and dynamically switch
the \c .data and \c .bss segments of the ELF process when switching
the MPI ranks. This allows each ranks to have its own copy of the
global variables. No copy actually occures as this mechanism uses \c
mmap for efficiency. This mechanism is considered to be very robust on
-all systems supporting \c mmap (Linux and most BSDs), so smpirun
-activates it by default. Its performance is questionable since each
-context switch between MPI ranks induces several syscalls to change
-the \c mmap that redirects the \c .data and \c .bss segments to the
-copies of the new rank. The code will also be copied several times in
-memory, inducing a slight increase of memory occupation.
+all systems supporting \c mmap (Linux and most BSDs). Its performance
+is questionable since each context switch between MPI ranks induces
+several syscalls to change the \c mmap that redirects the \c .data and
+\c .bss segments to the copies of the new rank. The code will also be
+copied several times in memory, inducing a slight increase of memory
+occupation.
Another limitation is that SMPI only accounts for global variables
defined in the executable. If the processes use external global
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.
+possible with the \c mmap approach. It was tricky to implement, but we
+are not aware of any flaws, so smpirun activates it by default.
In the future, it may be possible to further reduce the memory and
disk consumption. It seems that we could <a
- <b>no</b> (default when not using smpirun): Do not automatically privatize variables.
Pass \c -no-privatize to smpirun to disable this feature.
- - <b>mmap</b> or <b>yes</b> (default when using smpirun):
+ - <b>dlopen</b> or <b>yes</b> (default when using smpirun): Link multiple times against the binary.
+ - <b>mmap</b> (slower, but maybe somewhat more stable):
Runtime automatic switching of the data segments.
- - <b>dlopen</b> (faster but less tested): Link multiple times against the binary.
\warning
This configuration option cannot be set in your platform file. You can only