Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Doc example: model-based ones + add many TODO
[simgrid.git] / examples / msg / README.doc
index 0eaa34f..61f9559 100644 (file)
@@ -1,4 +1,5 @@
-This file follows the Doxygen syntax to be included in the documentation.
+This file follows the Doxygen syntax to be included in the
+documentation, but it should remain readable directly.
 
 /** 
  @defgroup MSG_examples MSG examples
@@ -9,9 +10,10 @@ This file follows the Doxygen syntax to be included in the documentation.
   - @ref msg_ex_async
   - @ref msg_ex_process
   - @ref msg_ex_tracing
-  - @ref msg_ex_tracing_user_variables
+    - @ref msg_ex_tracing_user_variables
   - @ref msg_ex_models
-  - @ref msg_ex_io
+    - @ref msg_ex_ns3
+    - @ref msg_ex_io
   - @ref msg_ex_actions
   - @ref msg_ex_full_apps
   - @ref msg_ex_misc
@@ -63,13 +65,155 @@ shipped in the archive:
    until one activity of the set completes, no matter which terminates
    first.
 
+@section msg_ex_process Acting on Processes
+
+  - <b>Suspend and Resume processes</b>.
+    @ref examples/msg/process-suspend/process-suspend.c \n
+    Processes can be suspended and resumed during their executions
+    thanks to the @ref MSG_process_suspend and @ref MSG_process_resume functions.
+
+  - <b>Kill processes</b>.
+    @ref examples/msg/process-kill/process-kill.c \n
+    Processes can forcefully stop other processes with the @ref MSG_process_kill function.
+     
+  - <b>Migrating processes</b>.
+    @ref examples/msg/process-migration/process-migration.c \n
+    Processes can move or be moved from a host to another with the @ref MSG_process_migrate function.
+    
+  - <b>Controling the process life cycle from the XML</b>.
+    @ref examples/msg/process-startkilltime/process-startkilltime.c \n
+    You can specify a start time and a kill time in the deployment
+    file. See all *_d.xml files in this directory.
+
+TODO: add an example using @ref MSG_process_create()
+
+@section msg_ex_tracing Tracing and visualization features
+
+Tracing can be activated by various configuration options which
+are illustrated in these example. See also the 
+@ref tracing_tracing_options "full list of options related to tracing".
+
+  - <b>Basic example</b>. @ref examples/msg/trace-simple/trace-simple.c \n
+    In this very simple program, each process creates, executes,
+    and destroy a task. Recommanded options:
+    @verbatim --cfg=tracing:yes --cfg=tracing/uncategorized:yes @endverbatim
+
+  - <b>Platform tracing</b>.
+    @ref examples/msg/trace-platform/trace-platform.c \n
+    This program is a toy example just loading the platform, so that
+    you can play with the platform visualization. Recommanded options:
+    @verbatim --cfg=tracing:yes --cfg=tracing/categorized:yes
+    @endverbatim
+
+  - <b>Setting Categories</b>.
+    @ref examples/msg/trace-categories/trace-categories.c \n
+    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. Recommanded options:
+    @verbatim --cfg=tracing:yes --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:viva_cat.plist --cfg=viva/uncategorized:viva_uncat.plist
+    @endverbatim
+    
+  - <b>Master Workers tracing</b>.
+    @ref examples/msg/trace-masterworker/trace-masterworker.c \n
+    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. Recommanded options:
+    @verbatim --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:viva_cat.plist --cfg=viva/uncategorized:viva_uncat.plist
+    @endverbatim
+    
+  - <b>Process migration tracing</b>.
+    @ref examples/msg/trace-process-migration/trace-process-migration.c \n
+    This version is enhanced so that the process migrations can be
+    displayed as arrows in a Gantt-chart visualization. Recommanded
+    options to that extend:
+    @verbatim -cfg=tracing:yes --cfg=tracing/msg/process:yes
+    @endverbatim     
+
+TODO: These tracing examples should be integrated in the examples to
+not dupplicate the C files. A full command line to see the result in
+the right tool (viva/vite/FrameSoc) should be given along with some
+screenshots.
+
+@subsection msg_ex_tracing_user_variables Tracing user variables
+
+You can also attach your own variables to a any resource described in
+the platform file. The following examples illustrate this feature.
+They have to be run with the following options:
+@verbatim --cfg=tracing:yes --cfg=tracing/platform:yes
+@endverbatim
+  - <b>Attaching variables to Hosts</b>.
+    @ref examples/msg/trace-user-variables/trace-user-variables.c 
+  
+  - <b>Attaching variables to Links</b>.
+    @ref examples/msg/trace-link-user-variables/trace-link-user-variables.c \n
+    The tricky part is that you have to know the name of the link you
+    want to enhance with a variable.
+    
+  - <b>Attaching variables to network Routes</b>
+    @ref examples/msg/trace-link-srcdst-user-variables/trace-link-srcdst-user-variables.c \n
+    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.
+
+TODO: rename trace-user-variables to trace-host-user-variables
+
+TODO: rename trace-link-srcdst-user-variables to trace-route-user-variables
+
+@section msg_ex_models Models-related examples
+
+@subsection msg_ex_ns3 NS3 as a SimGrid Network Model
+
+This example demonstrates how to use the bindings to the Network
+Simulator, as explained in @ref pls. The most
+interesting is probably not the C files since they are unchanged from
+the other simulations, but the associated files, such as the platform
+file to see how to declare a platform to be used with the PLS bindings
+of SimGrid and the tesh file to see how to actually start a simulation
+in these settings.
+  
+  - @ref examples/msg/network-ns3/network-ns3.c. Simple ping-pong using
+    ns-3 instead of the SimGrid network models.
+
+TODO: merge the C files
+
+TODO: show the XML files instead if it's what is interesting. On a "XML example files" page that does not exist yet.
+
+@subsection msg_ex_io Simulating disks and files
+
+The examples of this section demonstrate how to interact with the
+simulated storages.
+
+  - <b>Basic example</b>.
+    @ref examples/msg/io-storage/io-storage.c \n
+    All main storage and file functions are demoed.
+    
+  - <b>File Management</b>. @ref examples/msg/io-file/io-file.c \n
+    This example illustrates the use of operations on file
+    (@ref MSG_file_open, @ref MSG_file_read, @ref MSG_file_write,
+    or @ref MSG_file_close).
+    
+  - <b>Remote I/O</b>. @ref examples/msg/io-remote/io-remote.c \n
+    I/O operations can also be done in a remote, i.e. when the
+    accessed disk is not mounted on the caller's host.
+
+  - @ref examples/msg/actions-comm/actions-comm.c \n
+  - @ref examples/msg/actions-storage/actions-storage.c \n
+  - @ref examples/msg/app-pmm/app-pmm.c \n
+  - @ref examples/msg/dht-chord \n
+  - @ref examples/msg/task-priority/task-priority.c \n
+  - @ref examples/msg/properties/properties.c \n
+
 */
 
 As a human, you can stop reading at this point. The rest is garbage:
 
 Every example must be listed in the following, but it's not possible
-to move this content upper as each example directive seems to eat the
-next doxygen commands. 
+to move this content upper as each @example directive seems to eat the
+next doxygen commands (and the content is placed at the top of the
+example file). 
 
 
 /**
@@ -81,18 +225,38 @@ next doxygen commands.
 @example examples/msg/async-wait/async-wait.c
 @example examples/msg/async-waitall/async-waitall.c
 @example examples/msg/async-waitall/async-waitany.c
+
+@example examples/msg/process-suspend/process-suspend.c
+@example examples/msg/process-kill/process-kill.c
+@example examples/msg/process-migration/process-migration.c
+@example examples/msg/process-startkilltime/process-startkilltime.c
+
+@example examples/msg/trace-simple/trace-simple.c
+@example examples/msg/trace-platform/trace-platform.c
+@example examples/msg/trace-categories/trace-categories.c
+@example examples/msg/trace-masterworker/trace-masterworker.c
+@example examples/msg/trace-process-migration/trace-process-migration.c
+@example examples/msg/trace-user-variables/trace-user-variables.c
+@example examples/msg/trace-link-user-variables/trace-link-user-variables.c
+@example examples/msg/trace-link-srcdst-user-variables/trace-link-srcdst-user-variables.c
+
+@example examples/msg/network-ns3/network-ns3.c
+
+@example examples/msg/io-storage/io-storage.c
+@example examples/msg/io-file/io-file.c
+@example examples/msg/io-remote/io-remote.c
+@example examples/msg/actions-comm/actions-comm.c
+@example examples/msg/actions-storage/actions-storage.c
+@example examples/msg/app-pmm/app-pmm.c
+@example examples/msg/dht-chord
+@example examples/msg/task-priority/task-priority.c
+@example examples/msg/properties/properties.c
+                        
 */
 
 Basic examples and features
 ===========================
 
- * migration/migration.c Demonstrates how to use the
-   MSG_process_migrate() function to let processes change the host
-   they run on after their start.
-
- * suspend/suspend.c: Demonstrates how to suspend and resume processes
-   using MSG_process_suspend() and MSG_process_resume().
-
  * properties/msg_prop.c Attaching arbitrary information to host,
    processes and such, and retrieving them with
    MSG_host_get_properties(), MSG_host_get_property_value(),
@@ -111,43 +275,6 @@ Basic examples and features
    MSG_task_set_priority() to change the computation priority of a
    given task.
 
-Tracing and visualization features
-==================================
- * tracing/simple.c very simple program that creates, executes and
-   destroy a task
- * tracing/ms.c TODO
- * tracing/categories.c example with the declaration of multiple
-   categories
- * tracing/procmig.c example to trace process migration using the mask
-   TRACE_PROCESS
- * tracing/trace_platform.c: Demonstrates how to trace the platform
- * tracing/user_variables.c: Demonstrates how to trace user-provided
-   variables
-
-Models-related examples
-=======================
-
-Packet level simulators
------------------------
-These examples demonstrate how to use the bindings to classical
-Packet-Level Simulators (PLS), as explained in the relevant part of
-the web documentation. The most interesting is probably not the C
-files since they are unchanged from the other simulations, but the
-associated files, such as the platform files to see how to declare a
-platform to be used with the PLS bindings of SimGrid and the tesh
-files to see how to actually start a simulation in these settings.
-   
- * ns3: Simple ping-pong using ns3 instead of the SimGrid models
- * gtnets Simple ping-pong using GTNeTs instead of the SimGrid models
-
-Other resource kinds
---------------------
-This section contains some sparse examples of how to use the other
-kind of resources, such as disk. These resources are quite
-experimental for now, but here we go anyway. 
-
- * io/file.c Example with the disk resource
-
 Trace driven simulations
 ========================