===========================
Starting and Stopping Actors
----------------------------
+----------------------------
- **Creating actors:**
Most actors are started from the deployment XML file, because this
- **Specify the stack size to use**
The stack size can be specified by default on the command line,
- globally by changing the configuration with :cpp:func:`simgrid::s4u::Engine::set_config(std::string)`,
+ globally by changing the configuration with :cpp:func:`simgrid::s4u::Engine::set_config`,
or for a specific actor using :cpp:func:`simgrid::s4u::Actor::set_stacksize` before its start.
.. tabs::
computational kernels that span over several machines, such as a
PDGEM and the other ScaLAPACK routines. Note that this only works
with the "ptask_L07" host model (``--cfg=host/model:ptask_L07``).
+
+ This example demonstrates several kind of parallel tasks: regular
+ ones, communication-only (without computation), computation-only
+ (without communication), synchronization-only (neither
+ communication nor computation). It also shows how to reconfigure a
+ task after its start, to change the amount of hosts it runs onto.
+ This allows to simulate malleable tasks.
.. tabs::
- **Using Pstates on a host:**
This example shows how define a set of pstates in the XML. The current pstate
- of an host can then be accessed and changed from the program.
+ of a host can then be accessed and changed from the program.
.. tabs::
=================
- **Describing the energy profiles in the platform:**
- This platform file contains the energy profile of each links and
- hosts, which is necessary to get energy consumption predictions.
- As usual, you should not trust our example, and you should strive
- to double-check that your instantiation matches your target platform.
+ The first platform file contains the energy profile of each links and
+ hosts for a wired network, which is necessary to get energy consumption
+ predictions. The second platform file is the equivalent for a wireless
+ network. As usual, you should not trust our example, and you should
+ strive to double-check that your instantiation matches your target
+ platform.
.. tabs::
- .. example-tab:: examples/platforms/energy_platform.xml
+ .. group-tab:: XML
+
+ .. showfile:: examples/platforms/energy_platform.xml
+ :language: xml
+
+ .. showfile:: examples/platforms/wifi_energy.xml
+ :language: xml
- **Consumption due to the CPU:**
This example shows how to retrieve the amount of energy consumed
.. example-tab:: examples/c/energy-exec/energy-exec.c
- - **Consumption due to the network:**
+ - **Consumption due to the wired network:**
This example shows how to retrieve and display the energy consumed
- by the network during communications.
+ by the wired network during communications.
.. tabs::
.. example-tab:: examples/s4u/energy-link/s4u-energy-link.cpp
+ - **Consumption due to the wireless network:**
+ This example shows how to retrieve and display the energy consumed
+ by the wireless network during communications.
+
+ .. tabs::
+
+ .. example-tab:: examples/s4u/energy-wifi/s4u-energy-wifi.cpp
+
- **Modeling the shutdown and boot of hosts:**
Simple example of model of model for the energy consumption during
the host boot and shutdown periods.
.. example-tab:: examples/s4u/trace-platform/s4u-trace-platform.cpp
+ - **Setting Categories**
+ This example declares several tracing categories to that are used to
+ classify its tasks. When the program is executed, the tracing mechanism
+ registers the resource utilization of hosts and links according to these
+ categories. Recommended options:
+ ``--cfg=tracing:yes --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes``
+
+ .. tabs::
+
+ .. example-tab:: examples/s4u/trace-categories/s4u-trace-categories.cpp
+
+ - **Master Workers tracing**
+ This is an augmented version of our basic master/worker example using
+ several tracing features. It traces resource usage, sorted out in several
+ categories; Trace marks and user variables are also used. Recommended
+ options: ``--cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes``
+
+ .. tabs::
+
+ .. example-tab:: examples/s4u/trace-masterworkers/s4u-trace-masterworkers.cpp
+
+ - **Process migration tracing**
+ This version is enhanced so that the process migrations can be displayed
+ as arrows in a Gantt-chart visualization. Recommended options to that
+ extend: ``--cfg=tracing:yes --cfg=tracing/actor:yes``
+
+ .. tabs::
+
+ .. example-tab:: examples/s4u/trace-process-migration/s4u-trace-process-migration.cpp
+
+..
+ TODO: These tracing examples should be integrated in the examples to not
+ duplicate the C++ files. A full command line to see the result in the right
+ tool (vite/FrameSoc) should be given along with some screenshots.
+
+Tracing user variables
+----------------------
+
+You can also attach your own variables to any resource described in the platform
+file. The following examples illustrate this feature. They have to be run with
+the following options: ``--cfg=tracing:yes --cfg=tracing/platform:yes``
+
+ - **Attaching variables to Hosts**
+
+ .. tabs::
+
+ .. example-tab:: examples/s4u/trace-host-user-variables/s4u-trace-host-user-variables.cpp
+
+ - **Attaching variables to Links**
+ The tricky part is that you have to know the name of the link you want to
+ enhance with a variable.
+
+ .. tabs::
+
+ .. example-tab:: examples/s4u/trace-link-user-variables/s4u-trace-link-user-variables.cpp
+
+ - **Attaching variables to network Routes**
+ It is often easier to update a given variable for all links of a given
+ network path (identified by its source and destination hosts) instead of
+ knowing the name of each specific link.
+
+ .. tabs::
+
+ .. example-tab:: examples/s4u/trace-route-user-variables/s4u-trace-route-user-variables.cpp
+
========================
Larger SimGrid Examplars
========================
.. showfile:: examples/platforms/wifi.xml
:language: xml
+===============
+Plugin Examples
+===============
+
+It is possible to extend SimGrid without modifying its internals by
+attaching code to the existing signals and by adding extra data to the
+simulation objects through extensions. How to do that is not exactly
+documented yet, and you should look for examples in the src/plugins
+directory.
+
+This section documents how the existing plugins can be used. Remember
+that you are very welcome to modify the plugins to fit your needs. It
+should be much easier than modifying the SimGrid kernel.
+
+ - **Monitoring the host load**
+
+ .. tabs::
+
+ .. example-tab:: examples/s4u/plugin-host-load/s4u-plugin-host-load.cpp
+
+ .. example-tab:: examples/c/plugin-host-load/plugin-host-load.c
+
+ - **Monitoring the link load**
+
+ .. tabs::
+
+ .. example-tab:: examples/s4u/plugin-link-load/s4u-plugin-link-load.cpp
+
=======================
Model-Checking Examples
=======================