SimGrid  3.9.90
Versatile Simulation of Distributed Systems
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Main MSG simulation Functions

Describes how to setup and control your simulation. More...

Macros

#define MSG_init(argc, argv)
 Initialize the MSG internal data. More...
 

Functions

void MSG_launch_application (const char *file)
 An application deployer. More...
 
void MSG_function_register (const char *name, xbt_main_func_t code)
 Registers the main function of a process in a global table. More...
 
void MSG_function_register_default (xbt_main_func_t code)
 Registers a function as the default main function of processes. More...
 
xbt_main_func_t MSG_get_registered_function (const char *name)
 Retrieves a registered main function. More...
 
void MSG_create_environment (const char *file)
 A platform constructor. More...
 
void MSG_init_nocheck (int *argc, char **argv)
 Initialize MSG with less verifications You should use the MSG_init() function instead. Failing to do so may turn into PEBKAC some day. You've been warned.
 
msg_error_t MSG_main (void)
 Launch the MSG simulation.
 
void MSG_config (const char *key, const char *value)
 set a configuration variable More...
 
int MSG_process_killall (int reset_PIDs)
 Kill all running process. More...
 
double MSG_get_clock (void)
 A clock (in second).
 
enum  msg_error_t {
  MSG_OK = 0, MSG_TIMEOUT = 1, MSG_TRANSFER_FAILURE = 2, MSG_HOST_FAILURE = 4,
  MSG_TASK_CANCELED = 8
}
 Return code of most MSG functions. More...
 

Detailed Description

Describes how to setup and control your simulation.

The basic workflow is the following (check the MSG examples for details).

  1. Initialize the library with MSG_init
  2. Create a platform (usually by parsing a file with MSG_create_environment)
  3. Register the functions that your processes are supposed to run with MSG_function_register (and maybe MSG_function_register_default)
  4. Launch your processes from a deployment file with MSG_launch_application
  5. Run the simulation with MSG_main

Macro Definition Documentation

#define MSG_init (   argc,
  argv 
)

Initialize the MSG internal data.

It also check that the link-time and compile-time versions of SimGrid do match, so you should use this version instead of the MSG_init_nocheck function that does the same initializations, but without this check.

We allow to link against compiled versions that differ in the patch level.

Enumeration Type Documentation

Return code of most MSG functions.

Enumerator
MSG_OK 

Everything is right. Keep on going this way !

MSG_TIMEOUT 

nothing good happened before the timer you provided elapsed

MSG_TRANSFER_FAILURE 

There has been a problem during you task transfer. Either the network is down or the remote host has been shutdown.

MSG_HOST_FAILURE 

System shutdown. The host on which you are running has just been rebooted. Free your datastructures and return now !

MSG_TASK_CANCELED 

Canceled task. This task has been canceled by somebody!

Function Documentation

void MSG_launch_application ( const char *  file)

An application deployer.

Creates the process described in file.

Parameters
filea filename of a xml description of the application. This file follows this DTD :
<!-- Small DTD for SURF based tools. -->
<!ELEMENT platform ((config|random)*,(include|cluster|cabinet|peer|AS|trace|trace_connect)*,(process)*)>
<!ATTLIST platform version CDATA "0.0">
<!ELEMENT include (include|cluster|cabinet|peer|AS|trace|trace_connect)*>
<!ATTLIST include file CDATA #REQUIRED>
<!ELEMENT trace (#PCDATA)>
<!ATTLIST trace id CDATA #REQUIRED>
<!ATTLIST trace file CDATA "">
<!ATTLIST trace periodicity CDATA #REQUIRED>
<!ELEMENT random EMPTY>
<!ATTLIST random id CDATA #REQUIRED>
<!ATTLIST random min CDATA #REQUIRED>
<!ATTLIST random max CDATA #REQUIRED>
<!ATTLIST random mean CDATA #REQUIRED>
<!ATTLIST random std_deviation CDATA #REQUIRED>
<!ATTLIST random seed CDATA "2147483647">
<!ATTLIST random radical CDATA "">
<!ATTLIST random generator (DRAND48|RAND|RNGSTREAM|NONE) "DRAND48">
<!ELEMENT trace_connect EMPTY>
<!ATTLIST trace_connect kind (HOST_AVAIL|POWER|LINK_AVAIL|BANDWIDTH|LATENCY) "HOST_AVAIL">
<!ATTLIST trace_connect trace CDATA #REQUIRED>
<!ATTLIST trace_connect element CDATA #REQUIRED>
<!ELEMENT AS ((prop*),(((AS|include|storage_type|storage|link|backbone|cabinet|cluster|peer|trace|trace_connect)*,(ASroute|trace|trace_connect|bypassASroute)*,(trace|trace_connect)*)|((include|storage_type|storage|host|gpu|cabinet|router|link|backbone|trace|trace_connect|host_link)*,(route|trace|trace_connect|bypassRoute)*)))>
<!ATTLIST AS id CDATA #REQUIRED>
<!ATTLIST AS routing (Full|Floyd|Dijkstra|DijkstraCache|None|Vivaldi|Cluster) "None">
<!ELEMENT storage_type (prop*)>
<!ATTLIST storage_type id CDATA #REQUIRED>
<!ATTLIST storage_type model CDATA #REQUIRED>
<!ATTLIST storage_type size CDATA #REQUIRED>
<!ATTLIST storage_type content CDATA "">
<!ATTLIST storage_type content_type CDATA "txt_unix">
<!ELEMENT storage (prop*)>
<!ATTLIST storage id CDATA #REQUIRED>
<!ATTLIST storage typeId CDATA #REQUIRED>
<!ATTLIST storage content CDATA "">
<!ATTLIST storage content_type CDATA "txt_unix">
<!ELEMENT mount EMPTY>
<!ATTLIST mount storageId CDATA #REQUIRED>
<!ATTLIST mount name CDATA #REQUIRED>
<!ELEMENT mstorage EMPTY>
<!ATTLIST mstorage typeId CDATA #REQUIRED>
<!ATTLIST mstorage name CDATA #REQUIRED>
<!ELEMENT host (prop|mount|mstorage)*>
<!ATTLIST host id CDATA #REQUIRED>
<!ATTLIST host power CDATA #REQUIRED>
<!ATTLIST host core CDATA "1">
<!ATTLIST host availability CDATA "1.0">
<!ATTLIST host availability_file CDATA "">
<!ATTLIST host state (ON|OFF) "ON">
<!ATTLIST host state_file CDATA "">
<!ATTLIST host coordinates CDATA "">
<!ATTLIST host pstate CDATA "0.0">
<!ELEMENT gpu EMPTY>
<!ATTLIST gpu name CDATA #REQUIRED>
<!ELEMENT host_link EMPTY>
<!ATTLIST host_link id CDATA #REQUIRED>
<!ATTLIST host_link up CDATA #REQUIRED>
<!ATTLIST host_link down CDATA #REQUIRED>
<!ELEMENT cluster (prop*)>
<!ATTLIST cluster id CDATA #REQUIRED>
<!ATTLIST cluster prefix CDATA #REQUIRED>
<!ATTLIST cluster suffix CDATA #REQUIRED>
<!ATTLIST cluster radical CDATA #REQUIRED>
<!ATTLIST cluster power CDATA #REQUIRED>
<!ATTLIST cluster core CDATA "1">
<!ATTLIST cluster bw CDATA #REQUIRED>
<!ATTLIST cluster lat CDATA #REQUIRED>
<!ATTLIST cluster sharing_policy (SHARED|FULLDUPLEX|FATPIPE) "FULLDUPLEX">
<!ATTLIST cluster bb_bw CDATA "">
<!ATTLIST cluster bb_lat CDATA "">
<!ATTLIST cluster bb_sharing_policy (SHARED|FATPIPE) "SHARED">
<!ATTLIST cluster availability_file CDATA "">
<!ATTLIST cluster state_file CDATA "">
<!ATTLIST cluster router_id CDATA "">
<!ATTLIST cluster limiter_link CDATA "">
<!ATTLIST cluster loopback_bw CDATA "">
<!ATTLIST cluster loopback_lat CDATA "">
<!ELEMENT cabinet EMPTY>
<!ATTLIST cabinet id CDATA #REQUIRED>
<!ATTLIST cabinet prefix CDATA #REQUIRED>
<!ATTLIST cabinet suffix CDATA #REQUIRED>
<!ATTLIST cabinet radical CDATA #REQUIRED>
<!ATTLIST cabinet power CDATA #REQUIRED>
<!ATTLIST cabinet bw CDATA #REQUIRED>
<!ATTLIST cabinet lat CDATA #REQUIRED>
<!ELEMENT peer EMPTY>
<!ATTLIST peer id CDATA #REQUIRED>
<!ATTLIST peer power CDATA #REQUIRED>
<!ATTLIST peer bw_in CDATA #REQUIRED>
<!ATTLIST peer bw_out CDATA #REQUIRED>
<!ATTLIST peer lat CDATA #REQUIRED>
<!ATTLIST peer coordinates CDATA "">
<!ATTLIST peer availability_file CDATA "">
<!ATTLIST peer state_file CDATA "">
<!ELEMENT router EMPTY>
<!ATTLIST router id CDATA #REQUIRED>
<!ATTLIST router coordinates CDATA "">
<!ELEMENT backbone EMPTY>
<!ATTLIST backbone id CDATA #REQUIRED>
<!ATTLIST backbone bandwidth CDATA #REQUIRED>
<!ATTLIST backbone latency CDATA #REQUIRED>
<!ELEMENT link (prop*)>
<!ATTLIST link id CDATA #REQUIRED>
<!ATTLIST link bandwidth CDATA #REQUIRED>
<!ATTLIST link bandwidth_file CDATA "">
<!ATTLIST link latency CDATA "0.0">
<!ATTLIST link latency_file CDATA "">
<!ATTLIST link state (ON|OFF) "ON">
<!ATTLIST link state_file CDATA "">
<!ATTLIST link sharing_policy (SHARED|FATPIPE|FULLDUPLEX) "SHARED">
<!ELEMENT route (link_ctn*)>
<!ATTLIST route src CDATA #REQUIRED>
<!ATTLIST route dst CDATA #REQUIRED>
<!ATTLIST route symmetrical (YES|NO) "YES">
<!ELEMENT ASroute (link_ctn*)>
<!ATTLIST ASroute src CDATA #REQUIRED>
<!ATTLIST ASroute dst CDATA #REQUIRED>
<!ATTLIST ASroute gw_src CDATA #REQUIRED>
<!ATTLIST ASroute gw_dst CDATA #REQUIRED>
<!ATTLIST ASroute symmetrical (YES|NO) "YES">
<!ELEMENT link_ctn EMPTY>
<!ATTLIST link_ctn id CDATA #REQUIRED>
<!ATTLIST link_ctn direction (UP|DOWN|NONE) "NONE">
<!ELEMENT bypassRoute (link_ctn*)>
<!ATTLIST bypassRoute src CDATA #REQUIRED>
<!ATTLIST bypassRoute dst CDATA #REQUIRED>
<!ELEMENT bypassASroute (link_ctn*)>
<!ATTLIST bypassASroute src CDATA #REQUIRED>
<!ATTLIST bypassASroute dst CDATA #REQUIRED>
<!ATTLIST bypassASroute gw_src CDATA #REQUIRED>
<!ATTLIST bypassASroute gw_dst CDATA #REQUIRED>
<!ELEMENT process ((argument|prop)*)>
<!ATTLIST process host CDATA #REQUIRED>
<!ATTLIST process function CDATA #REQUIRED>
<!ATTLIST process start_time CDATA "-1.0">
<!ATTLIST process kill_time CDATA "-1.0">
<!ATTLIST process on_failure (DIE|RESTART) "DIE">
<!ELEMENT argument EMPTY>
<!ATTLIST argument value CDATA #REQUIRED>
<!ELEMENT config (prop*)>
<!ATTLIST config id CDATA "">
<!ELEMENT prop EMPTY>
<!ATTLIST prop id CDATA #REQUIRED> <!-- <!ATTLIST prop key CDATA #REQUIRED> -->
<!ATTLIST prop value CDATA #REQUIRED>

Here is a small example of such a platform

<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
<platform version="3">
<!-- The master process (with some arguments) -->
<process host="Tremblay" function="master">
<argument value="20"/> <!-- Number of tasks -->
<argument value="50000000"/> <!-- Computation size of tasks -->
<argument value="1000000"/> <!-- Communication size of tasks -->
<argument value="Jupiter"/> <!-- First slave -->
<argument value="Fafard"/> <!-- Second slave -->
<argument value="Ginette"/> <!-- Third slave -->
<argument value="Bourassa"/> <!-- Last slave -->
<argument value="Tremblay"/> <!-- Me! I can work too! -->
</process>
<!-- The slave process (with no argument) -->
<process host="Tremblay" function="slave" on_failure="RESTART"/>
<process host="Jupiter" function="slave" on_failure="RESTART"/>
<process host="Fafard" function="slave" on_failure="RESTART"/>
<process host="Ginette" function="slave" on_failure="RESTART"/>
<process host="Bourassa" function="slave" on_failure="RESTART"/>
</platform>

Have a look in the directory examples/msg/ to have a bigger example.

void MSG_function_register ( const char *  name,
xbt_main_func_t  code 
)

Registers the main function of a process in a global table.

Registers a code function in a global table. This table is then used by MSG_launch_application.

Parameters
namethe reference name of the function.
codethe function (must have the same prototype than the main function of any C program: int ..(int argc, char *argv[]))
void MSG_function_register_default ( xbt_main_func_t  code)

Registers a function as the default main function of processes.

Registers a code function as being the default value. This function will get used by MSG_launch_application() when there is no registered function of the requested name in.

Parameters
codethe function (must have the same prototype than the main function of any C program: int ..(int argc, char *argv[]))
xbt_main_func_t MSG_get_registered_function ( const char *  name)

Retrieves a registered main function.

Registers a code function in a global table. This table is then used by MSG_launch_application.

Parameters
namethe reference name of the function.
void MSG_create_environment ( const char *  file)

A platform constructor.

Creates a new platform, including hosts, links and the routing_table.

Parameters
filea filename of a xml description of a platform. This file follows this DTD :
<!-- Small DTD for SURF based tools. -->
<!ELEMENT platform ((config|random)*,(include|cluster|cabinet|peer|AS|trace|trace_connect)*,(process)*)>
<!ATTLIST platform version CDATA "0.0">
<!ELEMENT include (include|cluster|cabinet|peer|AS|trace|trace_connect)*>
<!ATTLIST include file CDATA #REQUIRED>
<!ELEMENT trace (#PCDATA)>
<!ATTLIST trace id CDATA #REQUIRED>
<!ATTLIST trace file CDATA "">
<!ATTLIST trace periodicity CDATA #REQUIRED>
<!ELEMENT random EMPTY>
<!ATTLIST random id CDATA #REQUIRED>
<!ATTLIST random min CDATA #REQUIRED>
<!ATTLIST random max CDATA #REQUIRED>
<!ATTLIST random mean CDATA #REQUIRED>
<!ATTLIST random std_deviation CDATA #REQUIRED>
<!ATTLIST random seed CDATA "2147483647">
<!ATTLIST random radical CDATA "">
<!ATTLIST random generator (DRAND48|RAND|RNGSTREAM|NONE) "DRAND48">
<!ELEMENT trace_connect EMPTY>
<!ATTLIST trace_connect kind (HOST_AVAIL|POWER|LINK_AVAIL|BANDWIDTH|LATENCY) "HOST_AVAIL">
<!ATTLIST trace_connect trace CDATA #REQUIRED>
<!ATTLIST trace_connect element CDATA #REQUIRED>
<!ELEMENT AS ((prop*),(((AS|include|storage_type|storage|link|backbone|cabinet|cluster|peer|trace|trace_connect)*,(ASroute|trace|trace_connect|bypassASroute)*,(trace|trace_connect)*)|((include|storage_type|storage|host|gpu|cabinet|router|link|backbone|trace|trace_connect|host_link)*,(route|trace|trace_connect|bypassRoute)*)))>
<!ATTLIST AS id CDATA #REQUIRED>
<!ATTLIST AS routing (Full|Floyd|Dijkstra|DijkstraCache|None|Vivaldi|Cluster) "None">
<!ELEMENT storage_type (prop*)>
<!ATTLIST storage_type id CDATA #REQUIRED>
<!ATTLIST storage_type model CDATA #REQUIRED>
<!ATTLIST storage_type size CDATA #REQUIRED>
<!ATTLIST storage_type content CDATA "">
<!ATTLIST storage_type content_type CDATA "txt_unix">
<!ELEMENT storage (prop*)>
<!ATTLIST storage id CDATA #REQUIRED>
<!ATTLIST storage typeId CDATA #REQUIRED>
<!ATTLIST storage content CDATA "">
<!ATTLIST storage content_type CDATA "txt_unix">
<!ELEMENT mount EMPTY>
<!ATTLIST mount storageId CDATA #REQUIRED>
<!ATTLIST mount name CDATA #REQUIRED>
<!ELEMENT mstorage EMPTY>
<!ATTLIST mstorage typeId CDATA #REQUIRED>
<!ATTLIST mstorage name CDATA #REQUIRED>
<!ELEMENT host (prop|mount|mstorage)*>
<!ATTLIST host id CDATA #REQUIRED>
<!ATTLIST host power CDATA #REQUIRED>
<!ATTLIST host core CDATA "1">
<!ATTLIST host availability CDATA "1.0">
<!ATTLIST host availability_file CDATA "">
<!ATTLIST host state (ON|OFF) "ON">
<!ATTLIST host state_file CDATA "">
<!ATTLIST host coordinates CDATA "">
<!ATTLIST host pstate CDATA "0.0">
<!ELEMENT gpu EMPTY>
<!ATTLIST gpu name CDATA #REQUIRED>
<!ELEMENT host_link EMPTY>
<!ATTLIST host_link id CDATA #REQUIRED>
<!ATTLIST host_link up CDATA #REQUIRED>
<!ATTLIST host_link down CDATA #REQUIRED>
<!ELEMENT cluster (prop*)>
<!ATTLIST cluster id CDATA #REQUIRED>
<!ATTLIST cluster prefix CDATA #REQUIRED>
<!ATTLIST cluster suffix CDATA #REQUIRED>
<!ATTLIST cluster radical CDATA #REQUIRED>
<!ATTLIST cluster power CDATA #REQUIRED>
<!ATTLIST cluster core CDATA "1">
<!ATTLIST cluster bw CDATA #REQUIRED>
<!ATTLIST cluster lat CDATA #REQUIRED>
<!ATTLIST cluster sharing_policy (SHARED|FULLDUPLEX|FATPIPE) "FULLDUPLEX">
<!ATTLIST cluster bb_bw CDATA "">
<!ATTLIST cluster bb_lat CDATA "">
<!ATTLIST cluster bb_sharing_policy (SHARED|FATPIPE) "SHARED">
<!ATTLIST cluster availability_file CDATA "">
<!ATTLIST cluster state_file CDATA "">
<!ATTLIST cluster router_id CDATA "">
<!ATTLIST cluster limiter_link CDATA "">
<!ATTLIST cluster loopback_bw CDATA "">
<!ATTLIST cluster loopback_lat CDATA "">
<!ELEMENT cabinet EMPTY>
<!ATTLIST cabinet id CDATA #REQUIRED>
<!ATTLIST cabinet prefix CDATA #REQUIRED>
<!ATTLIST cabinet suffix CDATA #REQUIRED>
<!ATTLIST cabinet radical CDATA #REQUIRED>
<!ATTLIST cabinet power CDATA #REQUIRED>
<!ATTLIST cabinet bw CDATA #REQUIRED>
<!ATTLIST cabinet lat CDATA #REQUIRED>
<!ELEMENT peer EMPTY>
<!ATTLIST peer id CDATA #REQUIRED>
<!ATTLIST peer power CDATA #REQUIRED>
<!ATTLIST peer bw_in CDATA #REQUIRED>
<!ATTLIST peer bw_out CDATA #REQUIRED>
<!ATTLIST peer lat CDATA #REQUIRED>
<!ATTLIST peer coordinates CDATA "">
<!ATTLIST peer availability_file CDATA "">
<!ATTLIST peer state_file CDATA "">
<!ELEMENT router EMPTY>
<!ATTLIST router id CDATA #REQUIRED>
<!ATTLIST router coordinates CDATA "">
<!ELEMENT backbone EMPTY>
<!ATTLIST backbone id CDATA #REQUIRED>
<!ATTLIST backbone bandwidth CDATA #REQUIRED>
<!ATTLIST backbone latency CDATA #REQUIRED>
<!ELEMENT link (prop*)>
<!ATTLIST link id CDATA #REQUIRED>
<!ATTLIST link bandwidth CDATA #REQUIRED>
<!ATTLIST link bandwidth_file CDATA "">
<!ATTLIST link latency CDATA "0.0">
<!ATTLIST link latency_file CDATA "">
<!ATTLIST link state (ON|OFF) "ON">
<!ATTLIST link state_file CDATA "">
<!ATTLIST link sharing_policy (SHARED|FATPIPE|FULLDUPLEX) "SHARED">
<!ELEMENT route (link_ctn*)>
<!ATTLIST route src CDATA #REQUIRED>
<!ATTLIST route dst CDATA #REQUIRED>
<!ATTLIST route symmetrical (YES|NO) "YES">
<!ELEMENT ASroute (link_ctn*)>
<!ATTLIST ASroute src CDATA #REQUIRED>
<!ATTLIST ASroute dst CDATA #REQUIRED>
<!ATTLIST ASroute gw_src CDATA #REQUIRED>
<!ATTLIST ASroute gw_dst CDATA #REQUIRED>
<!ATTLIST ASroute symmetrical (YES|NO) "YES">
<!ELEMENT link_ctn EMPTY>
<!ATTLIST link_ctn id CDATA #REQUIRED>
<!ATTLIST link_ctn direction (UP|DOWN|NONE) "NONE">
<!ELEMENT bypassRoute (link_ctn*)>
<!ATTLIST bypassRoute src CDATA #REQUIRED>
<!ATTLIST bypassRoute dst CDATA #REQUIRED>
<!ELEMENT bypassASroute (link_ctn*)>
<!ATTLIST bypassASroute src CDATA #REQUIRED>
<!ATTLIST bypassASroute dst CDATA #REQUIRED>
<!ATTLIST bypassASroute gw_src CDATA #REQUIRED>
<!ATTLIST bypassASroute gw_dst CDATA #REQUIRED>
<!ELEMENT process ((argument|prop)*)>
<!ATTLIST process host CDATA #REQUIRED>
<!ATTLIST process function CDATA #REQUIRED>
<!ATTLIST process start_time CDATA "-1.0">
<!ATTLIST process kill_time CDATA "-1.0">
<!ATTLIST process on_failure (DIE|RESTART) "DIE">
<!ELEMENT argument EMPTY>
<!ATTLIST argument value CDATA #REQUIRED>
<!ELEMENT config (prop*)>
<!ATTLIST config id CDATA "">
<!ELEMENT prop EMPTY>
<!ATTLIST prop id CDATA #REQUIRED> <!-- <!ATTLIST prop key CDATA #REQUIRED> -->
<!ATTLIST prop value CDATA #REQUIRED>

Here is a small example of such a platform

<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
<platform version="3">
<AS id="AS0" routing="Full">
<!-- ljlkj -->
<host id="Tremblay" power="98.095Mf"/>
<host id="Jupiter" power="76.296Mf"/>
<host id="Fafard" power="76.296Mf"/>
<host id="Ginette" power="48.492Mf"/>
<host id="Bourassa" power="48.492Mf"/>
<link id="6" bandwidth="41.279125MBps" latency="59.904us"/>
<link id="11" bandwidth="252.75kBps" latency="5.70455ms"/>
<link id="3" bandwidth="34.285625MBps" latency="514.433us"/>
<link id="7" bandwidth="11.618875MBps" latency="189.98us"/>
<link id="9" bandwidth="7.20975MBps" latency="1.461517ms"/>
<link id="12" bandwidth="1.792625MBps" latency="7.877863ms"/>
<link id="2" bandwidth="118.6825MBps" latency="136.931us"/>
<link id="8" bandwidth="8.158MBps" latency="270.544us"/>
<link id="1" bandwidth="34.285625MBps" latency="514.433us"/>
<link id="4" bandwidth="10.099625MBps" latency="479.78us"/>
<link id="0" bandwidth="41.279125MBps" latency="59.904us"/>
<link id="10" bandwidth="4.67975MBps" latency="848.712us"/>
<link id="5" bandwidth="27.94625MBps" latency="278.066us"/>
<link id="loopback" bandwidth="498MBps" latency="15us" sharing_policy="FATPIPE"/>
<route src="Tremblay" dst="Tremblay"><link_ctn id="loopback"/></route>
<route src="Jupiter" dst="Jupiter"><link_ctn id="loopback"/></route>
<route src="Fafard" dst="Fafard"><link_ctn id="loopback"/></route>
<route src="Ginette" dst="Ginette"><link_ctn id="loopback"/></route>
<route src="Bourassa" dst="Bourassa"><link_ctn id="loopback"/></route>
<route src="Tremblay" dst="Jupiter">
<link_ctn id="9"/>
</route>
<route src="Tremblay" dst="Fafard">
<link_ctn id="4"/><link_ctn id="3"/><link_ctn id="2"/><link_ctn id="0"/><link_ctn id="1"/><link_ctn id="8"/>
</route>
<route src="Tremblay" dst="Ginette">
<link_ctn id="4"/><link_ctn id="3"/><link_ctn id="5"/>
</route>
<route src="Tremblay" dst="Bourassa">
<link_ctn id="4"/><link_ctn id="3"/><link_ctn id="2"/><link_ctn id="0"/><link_ctn id="1"/><link_ctn id="6"/><link_ctn id="7"/>
</route>
<route src="Jupiter" dst="Fafard">
<link_ctn id="9"/><link_ctn id="4"/><link_ctn id="3"/><link_ctn id="2"/><link_ctn id="0"/><link_ctn id="1"/><link_ctn id="8"/>
</route>
<route src="Jupiter" dst="Ginette">
<link_ctn id="9"/><link_ctn id="4"/><link_ctn id="3"/><link_ctn id="5"/>
</route>
<route src="Jupiter" dst="Bourassa">
<link_ctn id="9"/><link_ctn id="4"/><link_ctn id="3"/><link_ctn id="2"/><link_ctn id="0"/><link_ctn id="1"/><link_ctn id="6"/><link_ctn id="7"/>
</route>
<route src="Fafard" dst="Ginette">
<link_ctn id="8"/><link_ctn id="1"/><link_ctn id="0"/><link_ctn id="2"/><link_ctn id="5"/>
</route>
<route src="Fafard" dst="Bourassa">
<link_ctn id="8"/><link_ctn id="6"/><link_ctn id="7"/>
</route>
<route src="Ginette" dst="Bourassa">
<link_ctn id="5"/><link_ctn id="2"/><link_ctn id="0"/><link_ctn id="1"/><link_ctn id="6"/><link_ctn id="7"/>
</route>
</AS>
</platform>

Have a look in the directory examples/msg/ to have a big example.

void MSG_config ( const char *  key,
const char *  value 
)

set a configuration variable

Do –help on any simgrid binary to see the list of currently existing configuration variables, and see Section Simgrid options and configurations.

Example: MSG_config("workstation/model","ptask_L07");

int MSG_process_killall ( int  reset_PIDs)

Kill all running process.

Parameters
reset_PIDsshould we reset the PID numbers. A negative number means no reset and a positive number will be used to set the PID of the next newly created process.