<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Jacquelin" function="app.masterworker.Master">
- <argument value="5"/> <!-- Amount of tasks to dispatch -->
- <argument value="50000"/> <!-- Computation size of each task -->
- <argument value="10"/> <!-- Communication size of each one -->
- <argument value="7"/> <!-- Amount of workers waiting for orders -->
+ <argument value="5"/> <!-- Amount of tasks to dispatch -->
+ <argument value="50000"/> <!-- Computation size of each task -->
+ <argument value="10"/> <!-- Communication size of each one -->
+ <argument value="7"/> <!-- Amount of workers waiting for orders -->
</process>
<process host="iRMX" function="app.masterworker.Worker"> <argument value="0"/> <!-- Input mailbox --> </process>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
- <process host="node-0.acme.org" function="process.startkilltime.Sleeper" start_time="0" kill_time="5"> <argument value="10"/></process>
- <process host="node-1.acme.org" function="process.startkilltime.Sleeper" start_time="1" kill_time="6"> <argument value="10"/></process>
- <process host="node-2.acme.org" function="process.startkilltime.Sleeper" start_time="2" kill_time="7"> <argument value="4" /></process>
- <process host="node-3.acme.org" function="process.startkilltime.Sleeper" start_time="3" kill_time="8"> <argument value="4" /></process>
- <process host="node-4.acme.org" function="process.startkilltime.Sleeper" start_time="4" kill_time="9"> <argument value="5" /></process>
- <process host="node-5.acme.org" function="process.startkilltime.Sleeper" start_time="5" kill_time="10"> <argument value="5"/></process>
+ <process host="node-0.acme.org" function="process.startkilltime.Sleeper" start_time="0" kill_time="5"> <argument value="10"/></process>
+ <process host="node-1.acme.org" function="process.startkilltime.Sleeper" start_time="1" kill_time="6"> <argument value="10"/></process>
+ <process host="node-2.acme.org" function="process.startkilltime.Sleeper" start_time="2" kill_time="7"> <argument value="4" /></process>
+ <process host="node-3.acme.org" function="process.startkilltime.Sleeper" start_time="3" kill_time="8"> <argument value="4" /></process>
+ <process host="node-4.acme.org" function="process.startkilltime.Sleeper" start_time="4" kill_time="9"> <argument value="5" /></process>
+ <process host="node-5.acme.org" function="process.startkilltime.Sleeper" start_time="5" kill_time="10"> <argument value="5"/></process>
</platform>
<platform version="4">
<!-- The master process (with some arguments) -->
<process host="Tremblay" function="sender">
- <argument value="3"/> <!-- Number of tasks -->
- <argument value="50000000"/> <!-- Computation size of tasks -->
- <argument value="1000000"/> <!-- Communication size of tasks -->
- <argument value="1"/> <!-- Number of receivers -->
- <argument value="1"/> <!-- Sleep_start_time -->
- <argument value="0.1"/> <!-- Time for test -->
+ <argument value="3"/> <!-- Number of tasks -->
+ <argument value="50000000"/> <!-- Computation size of tasks -->
+ <argument value="1000000"/> <!-- Communication size of tasks -->
+ <argument value="1"/> <!-- Number of receivers -->
+ <argument value="1"/> <!-- Sleep_start_time -->
+ <argument value="0.1"/> <!-- Time for test -->
</process>
<!-- The receiver processes -->
<process host="Ruby" function="receiver">
<platform version="4">
<!-- The master process (with some arguments) -->
<process host="Tremblay" function="sender">
- <argument value="3"/> <!-- Number of tasks -->
- <argument value="50000000"/> <!-- Computation size of tasks -->
- <argument value="1000000"/> <!-- Communication size of tasks -->
- <argument value="1"/> <!-- Number of receivers -->
- <argument value="5"/> <!-- Sleep_start_time -->
- <argument value="0"/> <!-- Time for test -->
+ <argument value="3"/> <!-- Number of tasks -->
+ <argument value="50000000"/> <!-- Computation size of tasks -->
+ <argument value="1000000"/> <!-- Communication size of tasks -->
+ <argument value="1"/> <!-- Number of receivers -->
+ <argument value="5"/> <!-- Sleep_start_time -->
+ <argument value="0"/> <!-- Time for test -->
</process>
<!-- The receiver processes -->
<process host="Ruby" function="receiver">
<platform version="4">
<!-- The master process (with some arguments) -->
<process host="Tremblay" function="sender">
- <argument value="3"/> <!-- Number of tasks -->
- <argument value="50000000"/> <!-- Computation size of tasks -->
- <argument value="1000000"/> <!-- Communication size of tasks -->
- <argument value="1"/> <!-- Number of receivers -->
- <argument value="1"/> <!-- Sleep_start_time -->
- <argument value="0"/> <!-- Time for test -->
+ <argument value="3"/> <!-- Number of tasks -->
+ <argument value="50000000"/> <!-- Computation size of tasks -->
+ <argument value="1000000"/> <!-- Communication size of tasks -->
+ <argument value="1"/> <!-- Number of receivers -->
+ <argument value="1"/> <!-- Sleep_start_time -->
+ <argument value="0"/> <!-- Time for test -->
</process>
<!-- The receiver processes -->
<process host="Ruby" function="receiver">
<platform version="4">
<!-- The master process (with some arguments) -->
<process host="Tremblay" function="sender">
- <argument value="3"/> <!-- Number of tasks -->
- <argument value="50000000"/> <!-- Computation size of tasks -->
- <argument value="1000000"/> <!-- Communication size of tasks -->
- <argument value="1"/> <!-- Number of receivers -->
- <argument value="5"/> <!-- Sleep_start_time -->
- <argument value="0.1"/> <!-- Time for test -->
+ <argument value="3"/> <!-- Number of tasks -->
+ <argument value="50000000"/> <!-- Computation size of tasks -->
+ <argument value="1000000"/> <!-- Communication size of tasks -->
+ <argument value="1"/> <!-- Number of receivers -->
+ <argument value="5"/> <!-- Sleep_start_time -->
+ <argument value="0.1"/> <!-- Time for test -->
</process>
<!-- The receiver processes -->
<process host="Ruby" function="receiver">
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Tremblay" function="master">
- <argument value="100"/>
- <argument value="Jupiter"/>
- <argument value="1"/>
+ <argument value="100"/>
+ <argument value="Jupiter"/>
+ <argument value="1"/>
</process>
<process host="Jupiter" function="worker">
<argument value="1"/>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Tremblay" function="master">
- <argument value="10000"/>
- <argument value="Jupiter"/>
- <argument value="1"/>
+ <argument value="10000"/>
+ <argument value="Jupiter"/>
+ <argument value="1"/>
</process>
<process host="Jupiter" function="worker">
<argument value="1"/>
</process>
<process host="Fafard" function="master">
- <argument value="10000"/>
- <argument value="Ginette"/>
- <argument value="2"/>
+ <argument value="10000"/>
+ <argument value="Ginette"/>
+ <argument value="2"/>
</process>
<process host="Ginette" function="worker">
<argument value="2"/>
</process>
<process host="Bourassa" function="master">
- <argument value="10000"/>
- <argument value="Lovelace"/>
- <argument value="3"/>
+ <argument value="10000"/>
+ <argument value="Lovelace"/>
+ <argument value="3"/>
</process>
<process host="Lovelace" function="worker">
<argument value="3"/>
</process>
<process host="Bourassa" function="master" start_time="2.0">
- <argument value="10000"/>
- <argument value="Lovelace"/>
- <argument value="4"/>
+ <argument value="10000"/>
+ <argument value="Lovelace"/>
+ <argument value="4"/>
</process>
<process host="Lovelace" function="worker">
<argument value="4"/>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Tremblay" function="master">
- <argument value="10000"/>
- <argument value="Jupiter"/>
- <argument value="1"/>
+ <argument value="10000"/>
+ <argument value="Jupiter"/>
+ <argument value="1"/>
</process>
<process host="Jupiter" function="worker">
<argument value="1"/>
</process>
<process host="Fafard" function="master">
- <argument value="10000"/>
- <argument value="Ginette"/>
- <argument value="2"/>
+ <argument value="10000"/>
+ <argument value="Ginette"/>
+ <argument value="2"/>
</process>
<process host="Ginette" function="worker">
<argument value="2"/>
</process>
<process host="Bourassa" function="master">
- <argument value="10000"/>
- <argument value="Lovelace"/>
- <argument value="3"/>
+ <argument value="10000"/>
+ <argument value="Lovelace"/>
+ <argument value="3"/>
</process>
<process host="Lovelace" function="worker">
<argument value="3"/>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="S1" function="master">
- <argument value="10000"/>
- <argument value="C1"/>
- <argument value="1"/>
+ <argument value="10000"/>
+ <argument value="C1"/>
+ <argument value="1"/>
</process>
<process host="C1" function="worker">
<argument value="1"/>
</process>
<process host="S1" function="master">
- <argument value="10000"/>
- <argument value="C1"/>
- <argument value="2"/>
+ <argument value="10000"/>
+ <argument value="C1"/>
+ <argument value="2"/>
</process>
<process host="C1" function="worker">
<argument value="2"/>
</process>
<process host="S1" function="master">
- <argument value="10000"/>
- <argument value="C1"/>
- <argument value="3"/>
+ <argument value="10000"/>
+ <argument value="C1"/>
+ <argument value="3"/>
</process>
<process host="C1" function="worker">
<argument value="3"/>
</process>
<process host="C1" function="master">
- <argument value="10000"/>
- <argument value="S1"/>
- <argument value="4"/>
+ <argument value="10000"/>
+ <argument value="S1"/>
+ <argument value="4"/>
</process>
<process host="S1" function="worker">
<argument value="4"/>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="S1" function="master">
- <argument value="10000"/>
- <argument value="C1"/>
- <argument value="0"/>
+ <argument value="10000"/>
+ <argument value="C1"/>
+ <argument value="0"/>
</process>
<process host="S2" function="master">
- <argument value="10000"/>
- <argument value="C2"/>
- <argument value="1"/>
+ <argument value="10000"/>
+ <argument value="C2"/>
+ <argument value="1"/>
</process>
<process host="C1" function="worker">
- <argument value="0"/>
+ <argument value="0"/>
</process>
<process host="C2" function="worker">
- <argument value="1"/>
+ <argument value="1"/>
</process>
</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="node-2.acme.org" function="master">
- <argument value="100"/>
- <argument value="node-6.acme.org"/>
- <argument value="1"/>
+ <argument value="100"/>
+ <argument value="node-6.acme.org"/>
+ <argument value="1"/>
</process>
<process host="node-6.acme.org" function="worker">
<argument value="1"/>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="S1" function="master">
- <argument value="10000"/>
- <argument value="C1"/>
- <argument value="1"/>
+ <argument value="10000"/>
+ <argument value="C1"/>
+ <argument value="1"/>
</process>
<process host="C1" function="worker">
<argument value="1"/>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="node-3.acme.org" function="master">
- <argument value="100"/>
- <argument value="node-16.acme.org"/>
- <argument value="1"/>
+ <argument value="100"/>
+ <argument value="node-16.acme.org"/>
+ <argument value="1"/>
</process>
<process host="node-16.acme.org" function="worker">
<argument value="1"/>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
- <process host="Fafard" function="test"> <argument value="76296000"/> <argument value="1.0"/> </process>
- <process host="Fafard" function="test"> <argument value="76296000"/> <argument value="2.0"/> </process>
+ <process host="Fafard" function="test">
+ <argument value="76296000"/>
+ <argument value="1.0"/>
+ </process>
+ <process host="Fafard" function="test">
+ <argument value="76296000"/>
+ <argument value="2.0"/>
+ </process>
</platform>
<link id="link_tmp" bandwidth="1.25GBps" latency="500us"/>
<ASroute src="my_cluster_1" dst="my_cluster_2" gw_src="my_cluster_1_router" gw_dst="my_cluster_2_router">
- <link_ctn id="link1"/><link_ctn id="link2"/>
+ <link_ctn id="link1"/><link_ctn id="link2"/>
</ASroute>
<ASroute src="my_cluster_1" dst="my_cluster_3" gw_src="my_cluster_1_router" gw_dst="my_cluster_3_router">
- <link_ctn id="link1"/><link_ctn id="link3"/>
+ <link_ctn id="link1"/><link_ctn id="link3"/>
</ASroute>
<ASroute src="my_cluster_2" dst="my_cluster_3" gw_src="my_cluster_2_router" gw_dst="my_cluster_3_router">
- <link_ctn id="link2"/><link_ctn id="link3"/>
+ <link_ctn id="link2"/><link_ctn id="link3"/>
</ASroute>
<bypassASroute src="my_cluster_1" dst="my_cluster_2" gw_src="my_cluster_1_router" gw_dst="my_cluster_2_router">
- <link_ctn id="link_tmp"/>
+ <link_ctn id="link_tmp"/>
</bypassASroute>
</AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
-<config id="General">
- <prop id="network/coordinates" value="yes"/>
-</config>
+ <config id="General">
+ <prop id="network/coordinates" value="yes"/>
+ </config>
-<AS id="AS0" routing="Vivaldi">
- <AS id="AS1_dc1" routing="Full">
- <!--small tier-1 datacenter, according to TIA-942 annex G tiers notation -->
- <!-- 3 clusters, no zone dist area, 1 horiz dist area, no multi-homing, telecom and operation rooms omitted -->
- <!-- clusters -->
- <cluster id="AS1_cb1" prefix="cb1-" suffix=".dc1.acloud.com" radical="1-40" speed="5.2297Gf"
+ <AS id="AS0" routing="Vivaldi">
+ <AS id="AS1_dc1" routing="Full">
+ <!--small tier-1 datacenter, according to TIA-942 annex G tiers notation -->
+ <!-- 3 clusters, no zone dist area, 1 horiz dist area, no multi-homing, telecom and operation rooms omitted -->
+ <!-- clusters -->
+ <cluster id="AS1_cb1" prefix="cb1-" suffix=".dc1.acloud.com" radical="1-40" speed="5.2297Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+ <cluster id="AS1_cb2" prefix="cb2-" suffix=".dc1.acloud.com" radical="1-50" speed="8.8925Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+ <cluster id="AS1_cb3" prefix="cb3-" suffix=".dc1.acloud.com" radical="1-30" speed="13.357Gf"
bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
- <cluster id="AS1_cb2" prefix="cb2-" suffix=".dc1.acloud.com" radical="1-50" speed="8.8925Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
- <cluster id="AS1_cb3" prefix="cb3-" suffix=".dc1.acloud.com" radical="1-30" speed="13.357Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
-
- <link id="link_dc1_cb1" bandwidth="1.25GBps" latency="100us"/>
- <link id="link_dc1_cb2" bandwidth="1.25GBps" latency="100us"/>
- <link id="link_dc1_cb3" bandwidth="1.25GBps" latency="100us"/>
-
- <!-- horiz dist area switch, main dist area switch, entrance room switch, end point for ISP -->
- <AS id="gw_AS1_dc1" routing="Floyd">
- <!-- equipments-->
- <router id="gw_dc1_horizdist"/>
- <router id="gw_dc1_maindist"/>
- <router id="gw_dc1_entranceroom"/>
- <!-- ISP end point, entering the cloud, so it has coordinates -->
- <router id="router_AS1_dc1" coordinates="25.5 9.4 1.4"/>
-
- <link id="dc1_horizdist_maindist" bandwidth="1.25GBps" latency="100us"/>
- <link id="dc1_maindist_entranceroom" bandwidth="1.25GBps" latency="100us"/>
- <link id="dc1_entranceroom_ISP" bandwidth="1.25GBps" latency="100us"/>
-
- <route src="gw_dc1_horizdist" dst="gw_dc1_maindist"><link_ctn id="dc1_horizdist_maindist"/></route>
- <route src="gw_dc1_maindist" dst="gw_dc1_entranceroom"><link_ctn id="dc1_maindist_entranceroom"/></route>
- <route src="gw_dc1_entranceroom" dst="router_AS1_dc1"><link_ctn id="dc1_entranceroom_ISP"/></route>
- </AS>
- <!-- internal routes between clusters -->
- <ASroute src="AS1_cb3" dst="AS1_cb1" gw_src="cb3-AS1_cb3_router.dc1.acloud.com"
- gw_dst="cb1-AS1_cb1_router.dc1.acloud.com">
- <link_ctn id="link_dc1_cb3"/><link_ctn id="link_dc1_cb1"/>
- </ASroute>
- <ASroute src="AS1_cb2" dst="AS1_cb1" gw_src="cb2-AS1_cb2_router.dc1.acloud.com"
- gw_dst="cb1-AS1_cb1_router.dc1.acloud.com">
- <link_ctn id="link_dc1_cb2"/><link_ctn id="link_dc1_cb1"/>
- </ASroute>
- <ASroute src="AS1_cb2" dst="AS1_cb3" gw_src="cb2-AS1_cb2_router.dc1.acloud.com"
- gw_dst="cb3-AS1_cb3_router.dc1.acloud.com">
- <link_ctn id="link_dc1_cb2"/><link_ctn id="link_dc1_cb3"/>
- </ASroute>
- <!-- routes to exit AS -->
- <ASroute src="AS1_cb1" dst="gw_AS1_dc1" gw_src="cb1-AS1_cb1_router.dc1.acloud.com"
- gw_dst="gw_dc1_horizdist">
- <link_ctn id="link_dc1_cb1"/>
- </ASroute>
- <ASroute src="AS1_cb3" dst="gw_AS1_dc1" gw_src="cb3-AS1_cb3_router.dc1.acloud.com"
- gw_dst="gw_dc1_horizdist">
- <link_ctn id="link_dc1_cb3"/>
- </ASroute>
- <ASroute src="AS1_cb2" dst="gw_AS1_dc1" gw_src="cb2-AS1_cb2_router.dc1.acloud.com"
- gw_dst="gw_dc1_horizdist">
- <link_ctn id="link_dc1_cb2"/>
- </ASroute>
- <ASroute dst="AS1_cb1" src="gw_AS1_dc1" gw_dst="cb1-AS1_cb1_router.dc1.acloud.com"
- gw_src="gw_dc1_horizdist">
- <link_ctn id="link_dc1_cb1"/>
- </ASroute>
- <ASroute dst="AS1_cb3" src="gw_AS1_dc1" gw_dst="cb3-AS1_cb3_router.dc1.acloud.com"
- gw_src="gw_dc1_horizdist">
- <link_ctn id="link_dc1_cb3"/>
- </ASroute>
- <ASroute dst="AS1_cb2" src="gw_AS1_dc1" gw_dst="cb2-AS1_cb2_router.dc1.acloud.com"
- gw_src="gw_dc1_horizdist">
- <link_ctn id="link_dc1_cb2"/>
- </ASroute>
- </AS>
+ <link id="link_dc1_cb1" bandwidth="1.25GBps" latency="100us"/>
+ <link id="link_dc1_cb2" bandwidth="1.25GBps" latency="100us"/>
+ <link id="link_dc1_cb3" bandwidth="1.25GBps" latency="100us"/>
- <AS id="AS2_dc2" routing="Full">
- <!--bigger tier-1 datacenter, according to TIA-942 annex G tiers notation, routing : Full -->
- <!-- 6 clusters, no zone dist area, 1 horiz dist area, no multi-homing, telecom and operation rooms omitted -->
- <!-- clusters -->
- <cluster id="AS2_cb1" prefix="cb1-" suffix=".dc2.acloud.com" radical="1-40" speed="5.2297Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
- <cluster id="AS2_cb2" prefix="cb2-" suffix=".dc2.acloud.com" radical="1-50" speed="8.8925Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
- <cluster id="AS2_cb3" prefix="cb3-" suffix=".dc2.acloud.com" radical="1-30" speed="13.357Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
- <cluster id="AS2_cb4" prefix="cb4-" suffix=".dc2.acloud.com" radical="1-40" speed="5.2297Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
- <cluster id="AS2_cb5" prefix="cb5-" suffix=".dc2.acloud.com" radical="1-50" speed="8.8925Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
- <cluster id="AS2_cb6" prefix="cb6-" suffix=".dc2.acloud.com" radical="1-30" speed="13.357Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+ <!-- horiz dist area switch, main dist area switch, entrance room switch, end point for ISP -->
+ <AS id="gw_AS1_dc1" routing="Floyd">
+ <!-- equipments-->
+ <router id="gw_dc1_horizdist"/>
+ <router id="gw_dc1_maindist"/>
+ <router id="gw_dc1_entranceroom"/>
+ <!-- ISP end point, entering the cloud, so it has coordinates -->
+ <router id="router_AS1_dc1" coordinates="25.5 9.4 1.4"/>
- <link id="link_dc2_cb1" bandwidth="1.25GBps" latency="100us"/>
- <link id="link_dc2_cb2" bandwidth="1.25GBps" latency="100us"/>
- <link id="link_dc2_cb3" bandwidth="1.25GBps" latency="100us"/>
- <link id="link_dc2_cb4" bandwidth="1.25GBps" latency="100us"/>
- <link id="link_dc2_cb5" bandwidth="1.25GBps" latency="100us"/>
- <link id="link_dc2_cb6" bandwidth="1.25GBps" latency="100us"/>
+ <link id="dc1_horizdist_maindist" bandwidth="1.25GBps" latency="100us"/>
+ <link id="dc1_maindist_entranceroom" bandwidth="1.25GBps" latency="100us"/>
+ <link id="dc1_entranceroom_ISP" bandwidth="1.25GBps" latency="100us"/>
- <!-- horiz dist area switch, main dist area switch, entrance room switch, end point for ISP -->
- <AS id="gw_AS2_dc2" routing="Floyd">
- <!-- equipments-->
- <router id="gw_dc2_horizdist"/>
- <router id="gw_dc2_maindist"/>
- <router id="gw_dc2_entranceroom"/>
- <!-- ISP end point, entering the cloud, so it has coordinates -->
- <router id="router_AS2_dc2" coordinates="12.8 14.4 6.4"/>
+ <route src="gw_dc1_horizdist" dst="gw_dc1_maindist"><link_ctn id="dc1_horizdist_maindist"/></route>
+ <route src="gw_dc1_maindist" dst="gw_dc1_entranceroom"><link_ctn id="dc1_maindist_entranceroom"/></route>
+ <route src="gw_dc1_entranceroom" dst="router_AS1_dc1"><link_ctn id="dc1_entranceroom_ISP"/></route>
+ </AS>
- <!-- links -->
- <link id="dc2_horizdist_maindist" bandwidth="1.25GBps" latency="100us"/>
- <link id="dc2_maindist_entranceroom" bandwidth="1.25GBps" latency="100us"/>
- <link id="dc2_entranceroom_ISP" bandwidth="1.25GBps" latency="100us"/>
- <!-- links to router relationships -->
- <route src="gw_dc2_horizdist" dst="gw_dc2_maindist"><link_ctn id="dc2_horizdist_maindist"/></route>
- <route src="gw_dc2_maindist" dst="gw_dc2_entranceroom"><link_ctn id="dc2_maindist_entranceroom"/></route>
- <route src="gw_dc2_entranceroom" dst="router_AS2_dc2"><link_ctn id="dc2_entranceroom_ISP"/></route>
+ <!-- internal routes between clusters -->
+ <ASroute src="AS1_cb3" dst="AS1_cb1" gw_src="cb3-AS1_cb3_router.dc1.acloud.com"
+ gw_dst="cb1-AS1_cb1_router.dc1.acloud.com">
+ <link_ctn id="link_dc1_cb3"/><link_ctn id="link_dc1_cb1"/>
+ </ASroute>
+ <ASroute src="AS1_cb2" dst="AS1_cb1" gw_src="cb2-AS1_cb2_router.dc1.acloud.com"
+ gw_dst="cb1-AS1_cb1_router.dc1.acloud.com">
+ <link_ctn id="link_dc1_cb2"/><link_ctn id="link_dc1_cb1"/>
+ </ASroute>
+ <ASroute src="AS1_cb2" dst="AS1_cb3" gw_src="cb2-AS1_cb2_router.dc1.acloud.com"
+ gw_dst="cb3-AS1_cb3_router.dc1.acloud.com">
+ <link_ctn id="link_dc1_cb2"/><link_ctn id="link_dc1_cb3"/>
+ </ASroute>
+ <!-- routes to exit AS -->
+ <ASroute src="AS1_cb1" dst="gw_AS1_dc1" gw_src="cb1-AS1_cb1_router.dc1.acloud.com" gw_dst="gw_dc1_horizdist">
+ <link_ctn id="link_dc1_cb1"/>
+ </ASroute>
+ <ASroute src="AS1_cb3" dst="gw_AS1_dc1" gw_src="cb3-AS1_cb3_router.dc1.acloud.com"
+ gw_dst="gw_dc1_horizdist">
+ <link_ctn id="link_dc1_cb3"/>
+ </ASroute>
+ <ASroute src="AS1_cb2" dst="gw_AS1_dc1" gw_src="cb2-AS1_cb2_router.dc1.acloud.com"
+ gw_dst="gw_dc1_horizdist">
+ <link_ctn id="link_dc1_cb2"/>
+ </ASroute>
+ <ASroute dst="AS1_cb1" src="gw_AS1_dc1" gw_dst="cb1-AS1_cb1_router.dc1.acloud.com"
+ gw_src="gw_dc1_horizdist">
+ <link_ctn id="link_dc1_cb1"/>
+ </ASroute>
+ <ASroute dst="AS1_cb3" src="gw_AS1_dc1" gw_dst="cb3-AS1_cb3_router.dc1.acloud.com"
+ gw_src="gw_dc1_horizdist">
+ <link_ctn id="link_dc1_cb3"/>
+ </ASroute>
+ <ASroute dst="AS1_cb2" src="gw_AS1_dc1" gw_dst="cb2-AS1_cb2_router.dc1.acloud.com"
+ gw_src="gw_dc1_horizdist">
+ <link_ctn id="link_dc1_cb2"/>
+ </ASroute>
</AS>
- <!-- internal routes between clusters -->
- <ASroute src="AS2_cb4" dst="AS2_cb6" gw_src="cb4-AS2_cb4_router.dc2.acloud.com"
- gw_dst="cb6-AS2_cb6_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb4"/><link_ctn id="link_dc2_cb6"/>
- </ASroute>
- <ASroute src="AS2_cb5" dst="AS2_cb6" gw_src="cb5-AS2_cb5_router.dc2.acloud.com"
- gw_dst="cb6-AS2_cb6_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb5"/><link_ctn id="link_dc2_cb6"/>
- </ASroute>
- <ASroute src="AS2_cb5" dst="AS2_cb4" gw_src="cb5-AS2_cb5_router.dc2.acloud.com"
- gw_dst="cb4-AS2_cb4_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb5"/><link_ctn id="link_dc2_cb4"/>
- </ASroute>
- <ASroute src="AS2_cb2" dst="AS2_cb6" gw_src="cb2-AS2_cb2_router.dc2.acloud.com"
- gw_dst="cb6-AS2_cb6_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb2"/> <link_ctn id="link_dc2_cb6"/>
- </ASroute>
- <ASroute src="AS2_cb2" dst="AS2_cb4" gw_src="cb2-AS2_cb2_router.dc2.acloud.com"
- gw_dst="cb4-AS2_cb4_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb2"/><link_ctn id="link_dc2_cb4"/>
- </ASroute>
- <ASroute src="AS2_cb2" dst="AS2_cb5" gw_src="cb2-AS2_cb2_router.dc2.acloud.com"
- gw_dst="cb5-AS2_cb5_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb2"/><link_ctn id="link_dc2_cb5"/>
- </ASroute>
- <ASroute src="AS2_cb3" dst="AS2_cb6" gw_src="cb3-AS2_cb3_router.dc2.acloud.com"
- gw_dst="cb6-AS2_cb6_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb3"/><link_ctn id="link_dc2_cb6"/>
- </ASroute>
- <ASroute src="AS2_cb3" dst="AS2_cb4" gw_src="cb3-AS2_cb3_router.dc2.acloud.com"
- gw_dst="cb4-AS2_cb4_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb3"/><link_ctn id="link_dc2_cb4"/>
- </ASroute>
- <ASroute src="AS2_cb3" dst="AS2_cb5" gw_src="cb3-AS2_cb3_router.dc2.acloud.com"
- gw_dst="cb5-AS2_cb5_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb3"/><link_ctn id="link_dc2_cb5"/>
- </ASroute>
- <ASroute src="AS2_cb3" dst="AS2_cb2" gw_src="cb3-AS2_cb3_router.dc2.acloud.com"
- gw_dst="cb2-AS2_cb2_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb3"/><link_ctn id="link_dc2_cb2"/>
- </ASroute>
- <ASroute src="AS2_cb1" dst="AS2_cb6" gw_src="cb1-AS2_cb1_router.dc2.acloud.com"
- gw_dst="cb6-AS2_cb6_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb1"/><link_ctn id="link_dc2_cb6"/>
- </ASroute>
- <ASroute src="AS2_cb1" dst="AS2_cb4" gw_src="cb1-AS2_cb1_router.dc2.acloud.com"
- gw_dst="cb4-AS2_cb4_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb1"/><link_ctn id="link_dc2_cb4"/>
- </ASroute>
- <ASroute src="AS2_cb1" dst="AS2_cb5" gw_src="cb1-AS2_cb1_router.dc2.acloud.com"
- gw_dst="cb5-AS2_cb5_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb1"/><link_ctn id="link_dc2_cb5"/>
- </ASroute>
- <ASroute src="AS2_cb1" dst="AS2_cb2" gw_src="cb1-AS2_cb1_router.dc2.acloud.com"
- gw_dst="cb2-AS2_cb2_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb1"/><link_ctn id="link_dc2_cb2"/>
- </ASroute>
- <ASroute src="AS2_cb1" dst="AS2_cb3" gw_src="cb1-AS2_cb1_router.dc2.acloud.com"
- gw_dst="cb3-AS2_cb3_router.dc2.acloud.com">
- <link_ctn id="link_dc2_cb1"/><link_ctn id="link_dc2_cb3"/>
- </ASroute>
+ <AS id="AS2_dc2" routing="Full">
+ <!--bigger tier-1 datacenter, according to TIA-942 annex G tiers notation, routing : Full -->
+ <!-- 6 clusters, no zone dist area, 1 horiz dist area, no multi-homing, telecom and operation rooms omitted -->
+ <!-- clusters -->
+ <cluster id="AS2_cb1" prefix="cb1-" suffix=".dc2.acloud.com" radical="1-40" speed="5.2297Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+ <cluster id="AS2_cb2" prefix="cb2-" suffix=".dc2.acloud.com" radical="1-50" speed="8.8925Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+ <cluster id="AS2_cb3" prefix="cb3-" suffix=".dc2.acloud.com" radical="1-30" speed="13.357Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+ <cluster id="AS2_cb4" prefix="cb4-" suffix=".dc2.acloud.com" radical="1-40" speed="5.2297Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+ <cluster id="AS2_cb5" prefix="cb5-" suffix=".dc2.acloud.com" radical="1-50" speed="8.8925Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+ <cluster id="AS2_cb6" prefix="cb6-" suffix=".dc2.acloud.com" radical="1-30" speed="13.357Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
- <!-- routess to exit AS -->
- <ASroute src="AS2_cb6" dst="gw_AS2_dc2" gw_src="cb6-AS2_cb6_router.dc2.acloud.com"
- gw_dst="gw_dc2_horizdist">
- <link_ctn id="link_dc2_cb6"/>
- </ASroute>
- <ASroute src="AS2_cb4" dst="gw_AS2_dc2" gw_src="cb4-AS2_cb4_router.dc2.acloud.com"
- gw_dst="gw_dc2_horizdist">
- <link_ctn id="link_dc2_cb4"/>
- </ASroute>
- <ASroute src="AS2_cb5" dst="gw_AS2_dc2" gw_src="cb5-AS2_cb5_router.dc2.acloud.com"
- gw_dst="gw_dc2_horizdist">
- <link_ctn id="link_dc2_cb5"/>
- </ASroute>
- <ASroute src="AS2_cb2" dst="gw_AS2_dc2" gw_src="cb2-AS2_cb2_router.dc2.acloud.com"
- gw_dst="gw_dc2_horizdist">
- <link_ctn id="link_dc2_cb2"/>
- </ASroute>
- <ASroute src="AS2_cb3" dst="gw_AS2_dc2" gw_src="cb3-AS2_cb3_router.dc2.acloud.com"
- gw_dst="gw_dc2_horizdist">
- <link_ctn id="link_dc2_cb3"/>
- </ASroute>
- <ASroute src="AS2_cb1" dst="gw_AS2_dc2" gw_src="cb1-AS2_cb1_router.dc2.acloud.com"
- gw_dst="gw_dc2_horizdist">
- <link_ctn id="link_dc2_cb1"/>
- </ASroute>
- <ASroute dst="AS2_cb6" src="gw_AS2_dc2" gw_dst="cb6-AS2_cb6_router.dc2.acloud.com"
- gw_src="gw_dc2_horizdist">
- <link_ctn id="link_dc2_cb6"/>
- </ASroute>
- <ASroute dst="AS2_cb4" src="gw_AS2_dc2" gw_dst="cb4-AS2_cb4_router.dc2.acloud.com"
- gw_src="gw_dc2_horizdist">
- <link_ctn id="link_dc2_cb4"/>
- </ASroute>
- <ASroute dst="AS2_cb5" src="gw_AS2_dc2" gw_dst="cb5-AS2_cb5_router.dc2.acloud.com"
- gw_src="gw_dc2_horizdist">
- <link_ctn id="link_dc2_cb5"/>
- </ASroute>
- <ASroute dst="AS2_cb2" src="gw_AS2_dc2" gw_dst="cb2-AS2_cb2_router.dc2.acloud.com"
- gw_src="gw_dc2_horizdist">
- <link_ctn id="link_dc2_cb2"/>
- </ASroute>
- <ASroute dst="AS2_cb3" src="gw_AS2_dc2" gw_dst="cb3-AS2_cb3_router.dc2.acloud.com"
- gw_src="gw_dc2_horizdist">
- <link_ctn id="link_dc2_cb3"/>
- </ASroute>
- <ASroute dst="AS2_cb1" src="gw_AS2_dc2" gw_dst="cb1-AS2_cb1_router.dc2.acloud.com"
- gw_src="gw_dc2_horizdist">
- <link_ctn id="link_dc2_cb1"/>
- </ASroute>
- </AS>
+ <link id="link_dc2_cb1" bandwidth="1.25GBps" latency="100us"/>
+ <link id="link_dc2_cb2" bandwidth="1.25GBps" latency="100us"/>
+ <link id="link_dc2_cb3" bandwidth="1.25GBps" latency="100us"/>
+ <link id="link_dc2_cb4" bandwidth="1.25GBps" latency="100us"/>
+ <link id="link_dc2_cb5" bandwidth="1.25GBps" latency="100us"/>
+ <link id="link_dc2_cb6" bandwidth="1.25GBps" latency="100us"/>
- <AS id="AS3_dc3" routing="Full">
- <!--small tier-1 datacenter, according to TIA-942 annex G tiers notation, routing : FULL -->
- <!-- 4 clusters, no zone dist area, 1 horiz dist area, no multi-homing, telecom and operation rooms omitted -->
- <!-- clusters -->
- <cluster id="AS3_cb1" prefix="cb1-" suffix=".dc3.acloud.com" radical="1-40" speed="5.2297Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
- <cluster id="AS3_cb2" prefix="cb2-" suffix=".dc3.acloud.com" radical="1-50" speed="8.8925Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
- <cluster id="AS3_cb3" prefix="cb3-" suffix=".dc3.acloud.com" radical="1-30" speed="13.357Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
- <cluster id="AS3_cb4" prefix="cb4-" suffix=".dc3.acloud.com" radical="1-30" speed="13.357Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
-
- <link id="link_dc3_cb1" bandwidth="1.25GBps" latency="100us"/>
- <link id="link_dc3_cb2" bandwidth="1.25GBps" latency="100us"/>
- <link id="link_dc3_cb3" bandwidth="1.25GBps" latency="100us"/>
- <link id="link_dc3_cb4" bandwidth="1.25GBps" latency="100us"/>
-
- <!-- horiz dist area switch, main dist area switch, entrance room switch, end point for ISP -->
- <AS id="gw_AS3_dc3" routing="Floyd">
+ <!-- horiz dist area switch, main dist area switch, entrance room switch, end point for ISP -->
+ <AS id="gw_AS2_dc2" routing="Floyd">
<!-- equipments-->
- <router id="gw_dc3_horizdist"/>
- <router id="gw_dc3_maindist"/>
- <router id="gw_dc3_entranceroom"/>
+ <router id="gw_dc2_horizdist"/>
+ <router id="gw_dc2_maindist"/>
+ <router id="gw_dc2_entranceroom"/>
<!-- ISP end point, entering the cloud, so it has coordinates -->
- <router id="router_AS3_dc3" coordinates="6.0 5.7 6.6"/>
+ <router id="router_AS2_dc2" coordinates="12.8 14.4 6.4"/>
<!-- links -->
- <link id="dc3_horizdist_maindist" bandwidth="1.25GBps" latency="100us"/>
- <link id="dc3_maindist_entranceroom" bandwidth="1.25GBps" latency="100us"/>
- <link id="dc3_entranceroom_ISP" bandwidth="1.25GBps" latency="100us"/>
+ <link id="dc2_horizdist_maindist" bandwidth="1.25GBps" latency="100us"/>
+ <link id="dc2_maindist_entranceroom" bandwidth="1.25GBps" latency="100us"/>
+ <link id="dc2_entranceroom_ISP" bandwidth="1.25GBps" latency="100us"/>
<!-- links to router relationships -->
- <route src="gw_dc3_horizdist" dst="gw_dc3_maindist"><link_ctn id="dc3_horizdist_maindist"/></route>
- <route src="gw_dc3_maindist" dst="gw_dc3_entranceroom"><link_ctn id="dc3_maindist_entranceroom"/></route>
- <route src="gw_dc3_entranceroom" dst="router_AS3_dc3"><link_ctn id="dc3_entranceroom_ISP"/></route>
+ <route src="gw_dc2_horizdist" dst="gw_dc2_maindist"><link_ctn id="dc2_horizdist_maindist"/></route>
+ <route src="gw_dc2_maindist" dst="gw_dc2_entranceroom"><link_ctn id="dc2_maindist_entranceroom"/></route>
+ <route src="gw_dc2_entranceroom" dst="router_AS2_dc2"><link_ctn id="dc2_entranceroom_ISP"/></route>
+ </AS>
+
+ <!-- internal routes between clusters -->
+ <ASroute src="AS2_cb4" dst="AS2_cb6" gw_src="cb4-AS2_cb4_router.dc2.acloud.com"
+ gw_dst="cb6-AS2_cb6_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb4"/><link_ctn id="link_dc2_cb6"/>
+ </ASroute>
+ <ASroute src="AS2_cb5" dst="AS2_cb6" gw_src="cb5-AS2_cb5_router.dc2.acloud.com"
+ gw_dst="cb6-AS2_cb6_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb5"/><link_ctn id="link_dc2_cb6"/>
+ </ASroute>
+ <ASroute src="AS2_cb5" dst="AS2_cb4" gw_src="cb5-AS2_cb5_router.dc2.acloud.com"
+ gw_dst="cb4-AS2_cb4_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb5"/><link_ctn id="link_dc2_cb4"/>
+ </ASroute>
+ <ASroute src="AS2_cb2" dst="AS2_cb6" gw_src="cb2-AS2_cb2_router.dc2.acloud.com"
+ gw_dst="cb6-AS2_cb6_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb2"/> <link_ctn id="link_dc2_cb6"/>
+ </ASroute>
+ <ASroute src="AS2_cb2" dst="AS2_cb4" gw_src="cb2-AS2_cb2_router.dc2.acloud.com"
+ gw_dst="cb4-AS2_cb4_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb2"/><link_ctn id="link_dc2_cb4"/>
+ </ASroute>
+ <ASroute src="AS2_cb2" dst="AS2_cb5" gw_src="cb2-AS2_cb2_router.dc2.acloud.com"
+ gw_dst="cb5-AS2_cb5_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb2"/><link_ctn id="link_dc2_cb5"/>
+ </ASroute>
+ <ASroute src="AS2_cb3" dst="AS2_cb6" gw_src="cb3-AS2_cb3_router.dc2.acloud.com"
+ gw_dst="cb6-AS2_cb6_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb3"/><link_ctn id="link_dc2_cb6"/>
+ </ASroute>
+ <ASroute src="AS2_cb3" dst="AS2_cb4" gw_src="cb3-AS2_cb3_router.dc2.acloud.com"
+ gw_dst="cb4-AS2_cb4_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb3"/><link_ctn id="link_dc2_cb4"/>
+ </ASroute>
+ <ASroute src="AS2_cb3" dst="AS2_cb5" gw_src="cb3-AS2_cb3_router.dc2.acloud.com"
+ gw_dst="cb5-AS2_cb5_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb3"/><link_ctn id="link_dc2_cb5"/>
+ </ASroute>
+ <ASroute src="AS2_cb3" dst="AS2_cb2" gw_src="cb3-AS2_cb3_router.dc2.acloud.com"
+ gw_dst="cb2-AS2_cb2_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb3"/><link_ctn id="link_dc2_cb2"/>
+ </ASroute>
+ <ASroute src="AS2_cb1" dst="AS2_cb6" gw_src="cb1-AS2_cb1_router.dc2.acloud.com"
+ gw_dst="cb6-AS2_cb6_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb1"/><link_ctn id="link_dc2_cb6"/>
+ </ASroute>
+ <ASroute src="AS2_cb1" dst="AS2_cb4" gw_src="cb1-AS2_cb1_router.dc2.acloud.com"
+ gw_dst="cb4-AS2_cb4_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb1"/><link_ctn id="link_dc2_cb4"/>
+ </ASroute>
+ <ASroute src="AS2_cb1" dst="AS2_cb5" gw_src="cb1-AS2_cb1_router.dc2.acloud.com"
+ gw_dst="cb5-AS2_cb5_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb1"/><link_ctn id="link_dc2_cb5"/>
+ </ASroute>
+ <ASroute src="AS2_cb1" dst="AS2_cb2" gw_src="cb1-AS2_cb1_router.dc2.acloud.com"
+ gw_dst="cb2-AS2_cb2_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb1"/><link_ctn id="link_dc2_cb2"/>
+ </ASroute>
+ <ASroute src="AS2_cb1" dst="AS2_cb3" gw_src="cb1-AS2_cb1_router.dc2.acloud.com"
+ gw_dst="cb3-AS2_cb3_router.dc2.acloud.com">
+ <link_ctn id="link_dc2_cb1"/><link_ctn id="link_dc2_cb3"/>
+ </ASroute>
+
+ <!-- routess to exit AS -->
+ <ASroute src="AS2_cb6" dst="gw_AS2_dc2" gw_src="cb6-AS2_cb6_router.dc2.acloud.com"
+ gw_dst="gw_dc2_horizdist">
+ <link_ctn id="link_dc2_cb6"/>
+ </ASroute>
+ <ASroute src="AS2_cb4" dst="gw_AS2_dc2" gw_src="cb4-AS2_cb4_router.dc2.acloud.com"
+ gw_dst="gw_dc2_horizdist">
+ <link_ctn id="link_dc2_cb4"/>
+ </ASroute>
+ <ASroute src="AS2_cb5" dst="gw_AS2_dc2" gw_src="cb5-AS2_cb5_router.dc2.acloud.com"
+ gw_dst="gw_dc2_horizdist">
+ <link_ctn id="link_dc2_cb5"/>
+ </ASroute>
+ <ASroute src="AS2_cb2" dst="gw_AS2_dc2" gw_src="cb2-AS2_cb2_router.dc2.acloud.com"
+ gw_dst="gw_dc2_horizdist">
+ <link_ctn id="link_dc2_cb2"/>
+ </ASroute>
+ <ASroute src="AS2_cb3" dst="gw_AS2_dc2" gw_src="cb3-AS2_cb3_router.dc2.acloud.com"
+ gw_dst="gw_dc2_horizdist">
+ <link_ctn id="link_dc2_cb3"/>
+ </ASroute>
+ <ASroute src="AS2_cb1" dst="gw_AS2_dc2" gw_src="cb1-AS2_cb1_router.dc2.acloud.com"
+ gw_dst="gw_dc2_horizdist">
+ <link_ctn id="link_dc2_cb1"/>
+ </ASroute>
+ <ASroute dst="AS2_cb6" src="gw_AS2_dc2" gw_dst="cb6-AS2_cb6_router.dc2.acloud.com"
+ gw_src="gw_dc2_horizdist">
+ <link_ctn id="link_dc2_cb6"/>
+ </ASroute>
+ <ASroute dst="AS2_cb4" src="gw_AS2_dc2" gw_dst="cb4-AS2_cb4_router.dc2.acloud.com"
+ gw_src="gw_dc2_horizdist">
+ <link_ctn id="link_dc2_cb4"/>
+ </ASroute>
+ <ASroute dst="AS2_cb5" src="gw_AS2_dc2" gw_dst="cb5-AS2_cb5_router.dc2.acloud.com"
+ gw_src="gw_dc2_horizdist">
+ <link_ctn id="link_dc2_cb5"/>
+ </ASroute>
+ <ASroute dst="AS2_cb2" src="gw_AS2_dc2" gw_dst="cb2-AS2_cb2_router.dc2.acloud.com"
+ gw_src="gw_dc2_horizdist">
+ <link_ctn id="link_dc2_cb2"/>
+ </ASroute>
+ <ASroute dst="AS2_cb3" src="gw_AS2_dc2" gw_dst="cb3-AS2_cb3_router.dc2.acloud.com"
+ gw_src="gw_dc2_horizdist">
+ <link_ctn id="link_dc2_cb3"/>
+ </ASroute>
+ <ASroute dst="AS2_cb1" src="gw_AS2_dc2" gw_dst="cb1-AS2_cb1_router.dc2.acloud.com"
+ gw_src="gw_dc2_horizdist">
+ <link_ctn id="link_dc2_cb1"/>
+ </ASroute>
</AS>
- <!-- internal routes between clusters -->
- <ASroute src="AS3_cb2" dst="AS3_cb3" gw_src="cb2-AS3_cb2_router.dc3.acloud.com"
- gw_dst="cb3-AS3_cb3_router.dc3.acloud.com">
- <link_ctn id="link_dc3_cb2"/><link_ctn id="link_dc3_cb3"/>
- </ASroute>
- <ASroute src="AS3_cb1" dst="AS3_cb3" gw_src="cb1-AS3_cb1_router.dc3.acloud.com"
- gw_dst="cb3-AS3_cb3_router.dc3.acloud.com">
- <link_ctn id="link_dc3_cb1"/><link_ctn id="link_dc3_cb3"/>
- </ASroute>
- <ASroute src="AS3_cb1" dst="AS3_cb2" gw_src="cb1-AS3_cb1_router.dc3.acloud.com"
- gw_dst="cb2-AS3_cb2_router.dc3.acloud.com">
- <link_ctn id="link_dc3_cb1"/><link_ctn id="link_dc3_cb2"/>
- </ASroute>
- <ASroute src="AS3_cb4" dst="AS3_cb3" gw_src="cb4-AS3_cb4_router.dc3.acloud.com"
- gw_dst="cb3-AS3_cb3_router.dc3.acloud.com">
- <link_ctn id="link_dc3_cb4"/><link_ctn id="link_dc3_cb3"/>
- </ASroute>
- <ASroute src="AS3_cb4" dst="AS3_cb2" gw_src="cb4-AS3_cb4_router.dc3.acloud.com"
- gw_dst="cb2-AS3_cb2_router.dc3.acloud.com">
- <link_ctn id="link_dc3_cb4"/><link_ctn id="link_dc3_cb2"/>
- </ASroute>
- <ASroute src="AS3_cb4" dst="AS3_cb1" gw_src="cb4-AS3_cb4_router.dc3.acloud.com"
- gw_dst="cb1-AS3_cb1_router.dc3.acloud.com">
- <link_ctn id="link_dc3_cb4"/><link_ctn id="link_dc3_cb1"/>
- </ASroute>
+ <AS id="AS3_dc3" routing="Full">
+ <!--small tier-1 datacenter, according to TIA-942 annex G tiers notation, routing : FULL -->
+ <!-- 4 clusters, no zone dist area, 1 horiz dist area, no multi-homing, telecom and operation rooms omitted -->
+ <!-- clusters -->
+ <cluster id="AS3_cb1" prefix="cb1-" suffix=".dc3.acloud.com" radical="1-40" speed="5.2297Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+ <cluster id="AS3_cb2" prefix="cb2-" suffix=".dc3.acloud.com" radical="1-50" speed="8.8925Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+ <cluster id="AS3_cb3" prefix="cb3-" suffix=".dc3.acloud.com" radical="1-30" speed="13.357Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+ <cluster id="AS3_cb4" prefix="cb4-" suffix=".dc3.acloud.com" radical="1-30" speed="13.357Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+
+ <link id="link_dc3_cb1" bandwidth="1.25GBps" latency="100us"/>
+ <link id="link_dc3_cb2" bandwidth="1.25GBps" latency="100us"/>
+ <link id="link_dc3_cb3" bandwidth="1.25GBps" latency="100us"/>
+ <link id="link_dc3_cb4" bandwidth="1.25GBps" latency="100us"/>
+
+ <!-- horiz dist area switch, main dist area switch, entrance room switch, end point for ISP -->
+ <AS id="gw_AS3_dc3" routing="Floyd">
+ <!-- equipments-->
+ <router id="gw_dc3_horizdist"/>
+ <router id="gw_dc3_maindist"/>
+ <router id="gw_dc3_entranceroom"/>
+ <!-- ISP end point, entering the cloud, so it has coordinates -->
+ <router id="router_AS3_dc3" coordinates="6.0 5.7 6.6"/>
- <!-- routes to exit AS -->
- <ASroute src="AS3_cb3" dst="gw_AS3_dc3" gw_src="cb3-AS3_cb3_router.dc3.acloud.com"
- gw_dst="gw_dc3_horizdist">
- <link_ctn id="link_dc3_cb3"/>
- </ASroute>
- <ASroute src="AS3_cb2" dst="gw_AS3_dc3" gw_src="cb2-AS3_cb2_router.dc3.acloud.com"
- gw_dst="gw_dc3_horizdist">
- <link_ctn id="link_dc3_cb2"/>
- </ASroute>
- <ASroute src="AS3_cb1" dst="gw_AS3_dc3" gw_src="cb1-AS3_cb1_router.dc3.acloud.com"
- gw_dst="gw_dc3_horizdist">
- <link_ctn id="link_dc3_cb1"/>
- </ASroute>
- <ASroute src="AS3_cb4" dst="gw_AS3_dc3" gw_src="cb4-AS3_cb4_router.dc3.acloud.com"
- gw_dst="gw_dc3_horizdist">
- <link_ctn id="link_dc3_cb4"/>
- </ASroute>
- <ASroute dst="AS3_cb3" src="gw_AS3_dc3" gw_dst="cb3-AS3_cb3_router.dc3.acloud.com"
- gw_src="gw_dc3_horizdist">
- <link_ctn id="link_dc3_cb3"/>
- </ASroute>
- <ASroute dst="AS3_cb2" src="gw_AS3_dc3" gw_dst="cb2-AS3_cb2_router.dc3.acloud.com"
- gw_src="gw_dc3_horizdist">
- <link_ctn id="link_dc3_cb2"/>
- </ASroute>
- <ASroute dst="AS3_cb1" src="gw_AS3_dc3" gw_dst="cb1-AS3_cb1_router.dc3.acloud.com"
- gw_src="gw_dc3_horizdist">
- <link_ctn id="link_dc3_cb1"/>
- </ASroute>
- <ASroute dst="AS3_cb4" src="gw_AS3_dc3" gw_dst="cb4-AS3_cb4_router.dc3.acloud.com"
- gw_src="gw_dc3_horizdist">
- <link_ctn id="link_dc3_cb4"/>
- </ASroute>
+ <!-- links -->
+ <link id="dc3_horizdist_maindist" bandwidth="1.25GBps" latency="100us"/>
+ <link id="dc3_maindist_entranceroom" bandwidth="1.25GBps" latency="100us"/>
+ <link id="dc3_entranceroom_ISP" bandwidth="1.25GBps" latency="100us"/>
+ <!-- links to router relationships -->
+ <route src="gw_dc3_horizdist" dst="gw_dc3_maindist"><link_ctn id="dc3_horizdist_maindist"/></route>
+ <route src="gw_dc3_maindist" dst="gw_dc3_entranceroom"><link_ctn id="dc3_maindist_entranceroom"/></route>
+ <route src="gw_dc3_entranceroom" dst="router_AS3_dc3"><link_ctn id="dc3_entranceroom_ISP"/></route>
+ </AS>
+
+ <!-- internal routes between clusters -->
+ <ASroute src="AS3_cb2" dst="AS3_cb3" gw_src="cb2-AS3_cb2_router.dc3.acloud.com"
+ gw_dst="cb3-AS3_cb3_router.dc3.acloud.com">
+ <link_ctn id="link_dc3_cb2"/><link_ctn id="link_dc3_cb3"/>
+ </ASroute>
+ <ASroute src="AS3_cb1" dst="AS3_cb3" gw_src="cb1-AS3_cb1_router.dc3.acloud.com"
+ gw_dst="cb3-AS3_cb3_router.dc3.acloud.com">
+ <link_ctn id="link_dc3_cb1"/><link_ctn id="link_dc3_cb3"/>
+ </ASroute>
+ <ASroute src="AS3_cb1" dst="AS3_cb2" gw_src="cb1-AS3_cb1_router.dc3.acloud.com"
+ gw_dst="cb2-AS3_cb2_router.dc3.acloud.com">
+ <link_ctn id="link_dc3_cb1"/><link_ctn id="link_dc3_cb2"/>
+ </ASroute>
+ <ASroute src="AS3_cb4" dst="AS3_cb3" gw_src="cb4-AS3_cb4_router.dc3.acloud.com"
+ gw_dst="cb3-AS3_cb3_router.dc3.acloud.com">
+ <link_ctn id="link_dc3_cb4"/><link_ctn id="link_dc3_cb3"/>
+ </ASroute>
+ <ASroute src="AS3_cb4" dst="AS3_cb2" gw_src="cb4-AS3_cb4_router.dc3.acloud.com"
+ gw_dst="cb2-AS3_cb2_router.dc3.acloud.com">
+ <link_ctn id="link_dc3_cb4"/><link_ctn id="link_dc3_cb2"/>
+ </ASroute>
+ <ASroute src="AS3_cb4" dst="AS3_cb1" gw_src="cb4-AS3_cb4_router.dc3.acloud.com"
+ gw_dst="cb1-AS3_cb1_router.dc3.acloud.com">
+ <link_ctn id="link_dc3_cb4"/><link_ctn id="link_dc3_cb1"/>
+ </ASroute>
+
+ <!-- routes to exit AS -->
+ <ASroute src="AS3_cb3" dst="gw_AS3_dc3" gw_src="cb3-AS3_cb3_router.dc3.acloud.com"
+ gw_dst="gw_dc3_horizdist">
+ <link_ctn id="link_dc3_cb3"/>
+ </ASroute>
+ <ASroute src="AS3_cb2" dst="gw_AS3_dc3" gw_src="cb2-AS3_cb2_router.dc3.acloud.com"
+ gw_dst="gw_dc3_horizdist">
+ <link_ctn id="link_dc3_cb2"/>
+ </ASroute>
+ <ASroute src="AS3_cb1" dst="gw_AS3_dc3" gw_src="cb1-AS3_cb1_router.dc3.acloud.com"
+ gw_dst="gw_dc3_horizdist">
+ <link_ctn id="link_dc3_cb1"/>
+ </ASroute>
+ <ASroute src="AS3_cb4" dst="gw_AS3_dc3" gw_src="cb4-AS3_cb4_router.dc3.acloud.com"
+ gw_dst="gw_dc3_horizdist">
+ <link_ctn id="link_dc3_cb4"/>
+ </ASroute>
+ <ASroute dst="AS3_cb3" src="gw_AS3_dc3" gw_dst="cb3-AS3_cb3_router.dc3.acloud.com"
+ gw_src="gw_dc3_horizdist">
+ <link_ctn id="link_dc3_cb3"/>
+ </ASroute>
+ <ASroute dst="AS3_cb2" src="gw_AS3_dc3" gw_dst="cb2-AS3_cb2_router.dc3.acloud.com"
+ gw_src="gw_dc3_horizdist">
+ <link_ctn id="link_dc3_cb2"/>
+ </ASroute>
+ <ASroute dst="AS3_cb1" src="gw_AS3_dc3" gw_dst="cb1-AS3_cb1_router.dc3.acloud.com"
+ gw_src="gw_dc3_horizdist">
+ <link_ctn id="link_dc3_cb1"/>
+ </ASroute>
+ <ASroute dst="AS3_cb4" src="gw_AS3_dc3" gw_dst="cb4-AS3_cb4_router.dc3.acloud.com"
+ gw_src="gw_dc3_horizdist">
+ <link_ctn id="link_dc3_cb4"/>
+ </ASroute>
+ </AS>
</AS>
-</AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
-<!-- _________
- | |
- | router |
- ____________|__________|_____________ backbone
- | | | | | |
- l0| l1| l2| l97| l96 | | l99
- | | | ........ | | |
- | |
- node-0.acme.org node-99.acme.org
--->
+ <!-- _________
+ | |
+ | router |
+ ____________|__________|_____________ backbone
+ | | | | | |
+ l0| l1| l2| l97| l96 | | l99
+ | | | ........ | | |
+ | |
+ node-0.acme.org node-99.acme.org
+ -->
<cluster id="acme" prefix="node-" suffix=".acme.org" radical="0-99" speed="1Gf" bw="125MBps" lat="50us"
bb_bw="2.25GBps" bb_lat="500us"/>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
- <AS id="AS0" routing="Full">
+ <AS id="AS0" routing="Full">
<cluster id="my_cluster_1" prefix="c-" suffix=".me" radical="0-1" speed="1Gf" bw="125MBps" lat="50us"
router_id="router1"/>
<link id="link1" bandwidth="100kBps" latency="10ms"/>
- <ASroute src="my_cluster_1" dst="AS1" gw_src="router1" gw_dst="host1"><link_ctn id="link1"/></ASroute>
+ <ASroute src="my_cluster_1" dst="AS1" gw_src="router1" gw_dst="host1">
+ <link_ctn id="link1"/>
+ </ASroute>
</AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
-<AS id="AS0" routing="Full">
- <cluster id="bob_cluster" prefix="node-" suffix=".acme.org" radical="0-119" speed="1Gf"
- bw="125MBps" lat="50us" topology="DRAGONFLY" topo_parameters="3,4;4,3;5,1;2" loopback_bw="100MBps" loopback_lat="0" limiter_link="150MBps"/>
-</AS>
+ <AS id="AS0" routing="Full">
+ <cluster id="bob_cluster" prefix="node-" suffix=".acme.org" radical="0-119" speed="1Gf"
+ bw="125MBps" lat="50us" topology="DRAGONFLY" topo_parameters="3,4;4,3;5,1;2"
+ loopback_bw="100MBps" loopback_lat="0" limiter_link="150MBps"/>
+ </AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
-<!-- This is an example for a fat tree cluster.
-This is taken from figure 1/ b/ of the paper "D-Mod-K Routing Providing on-Blocking Traffic for Shift Permutations on
-Real Life Fat Trees" available at webee.technion.ac.il/publication-link/index/id/574
-This defines a two levels fat-tree, with 4 leaf switches connected to 4 nodes each and 2 core switches connected to
-each leaf switch by two cables -->
+ <!-- This is an example for a fat tree cluster.
+ This is taken from figure 1/ b/ of the paper "D-Mod-K Routing Providing on-Blocking Traffic for Shift Permutations on
+ Real Life Fat Trees" available at webee.technion.ac.il/publication-link/index/id/574
+ This defines a two levels fat-tree, with 4 leaf switches connected to 4 nodes each and 2 core switches connected to
+ each leaf switch by two cables -->
-<AS id="AS0" routing="Full">
-<cluster id="bob_cluster" prefix="node-" suffix=".acme.org" radical="0-15" speed="1Gf" bw="125MBps" lat="50us"
- topology="FAT_TREE" topo_parameters="2;4,4;1,2;1,2" loopback_bw="100MBps" loopback_lat="0"/>
-</AS>
+ <AS id="AS0" routing="Full">
+ <cluster id="bob_cluster" prefix="node-" suffix=".acme.org" radical="0-15" speed="1Gf" bw="125MBps" lat="50us"
+ topology="FAT_TREE" topo_parameters="2;4,4;1,2;1,2" loopback_bw="100MBps" loopback_lat="0"/>
+ </AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
-<AS id="AS0" routing="Full">
- <cluster id="bob_cluster" prefix="node-" suffix=".acme.org" radical="0-11" speed="1Gf"
- bw="125MBps" lat="50us" topology="TORUS" topo_parameters="3,2,2" loopback_bw="100MBps" loopback_lat="0"/>
-</AS>
+ <AS id="AS0" routing="Full">
+ <cluster id="bob_cluster" prefix="node-" suffix=".acme.org" radical="0-11" speed="1Gf"
+ bw="125MBps" lat="50us" topology="TORUS" topo_parameters="3,2,2" loopback_bw="100MBps" loopback_lat="0"/>
+ </AS>
</platform>
<link id="link2" bandwidth="125MBps" latency="50us"/>
<link id="link3" bandwidth="125MBps" latency="50us"/>
- <route src="bob" dst="alice"><link_ctn id="link1"/><link_ctn id="link2"/><link_ctn id="link3"/></route>
+ <route src="bob" dst="alice">
+ <link_ctn id="link1"/><link_ctn id="link2"/><link_ctn id="link3"/>
+ </route>
</AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
-<config id="General">
- <prop id="network/coordinates" value="yes"/>
-</config>
-<AS id="AS0" routing="Vivaldi">
- <AS id="dataCenter1" routing="Full">
- <!-- 3 cabinets, no zone dist area, 1 horiz dist area, no multi-homing, telecom and operation rooms omitted -->
- <!-- cabinets -->
- <cluster id="cabinet1" prefix="cb1-" suffix=".dc1.acloud.com" radical="1-40" speed="5.2297Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
- <cluster id="cabinet2" prefix="cb2-" suffix=".dc1.acloud.com" radical="1-50" speed="8.8925Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
- <cluster id="cabinet3" prefix="cb3-" suffix=".dc1.acloud.com" radical="1-30" speed="13.357Gf"
- bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+ <config id="General">
+ <prop id="network/coordinates" value="yes"/>
+ </config>
+ <AS id="AS0" routing="Vivaldi">
+ <AS id="dataCenter1" routing="Full">
+ <!-- 3 cabinets, no zone dist area, 1 horiz dist area, no multi-homing, telecom and operation rooms omitted -->
+ <!-- cabinets -->
+ <cluster id="cabinet1" prefix="cb1-" suffix=".dc1.acloud.com" radical="1-40" speed="5.2297Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+ <cluster id="cabinet2" prefix="cb2-" suffix=".dc1.acloud.com" radical="1-50" speed="8.8925Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
+ <cluster id="cabinet3" prefix="cb3-" suffix=".dc1.acloud.com" radical="1-30" speed="13.357Gf"
+ bw="125MBps" lat="100us" bb_bw="1.25GBps" bb_lat="100us"/>
- <link id="link_dc1_cb1" bandwidth="1.25GBps" latency="100us"/>
- <link id="link_dc1_cb2" bandwidth="1.25GBps" latency="100us"/>
- <link id="link_dc1_cb3" bandwidth="1.25GBps" latency="100us"/>
-
- <!-- horiz dist area switch, main dist area switch, entrance room switch, end point for ISP -->
- <AS id="gw_dataCenter1" routing="Floyd">
- <!-- equipments-->
- <router id="gw_dc1_horizdist"/>
- <router id="gw_dc1_maindist"/>
- <router id="gw_dc1_entranceroom"/>
+ <link id="link_dc1_cb1" bandwidth="1.25GBps" latency="100us"/>
+ <link id="link_dc1_cb2" bandwidth="1.25GBps" latency="100us"/>
+ <link id="link_dc1_cb3" bandwidth="1.25GBps" latency="100us"/>
- <!-- ISP end point, entering the cloud, so it has coordinates -->
- <router id="router_dataCenter1" coordinates="25.5 9.4 1.4"/>
+ <!-- horiz dist area switch, main dist area switch, entrance room switch, end point for ISP -->
+ <AS id="gw_dataCenter1" routing="Floyd">
+ <!-- equipments-->
+ <router id="gw_dc1_horizdist"/>
+ <router id="gw_dc1_maindist"/>
+ <router id="gw_dc1_entranceroom"/>
- <!-- links -->
- <link id="dc1_horizdist_maindist" bandwidth="1.25GBps" latency="100us"/>
- <link id="dc1_maindist_entranceroom" bandwidth="1.25GBps" latency="100us"/>
- <link id="dc1_entranceroom_ISP" bandwidth="1.25GBps" latency="100us"/>
+ <!-- ISP end point, entering the cloud, so it has coordinates -->
+ <router id="router_dataCenter1" coordinates="25.5 9.4 1.4"/>
- <!-- links to router relationships -->
- <route src="gw_dc1_horizdist" dst="gw_dc1_maindist"><link_ctn id="dc1_horizdist_maindist"/></route>
- <route src="gw_dc1_maindist" dst="gw_dc1_entranceroom"><link_ctn id="dc1_maindist_entranceroom"/></route>
- <route src="gw_dc1_entranceroom" dst="router_dataCenter1"><link_ctn id="dc1_entranceroom_ISP"/></route>
- </AS>
+ <!-- links -->
+ <link id="dc1_horizdist_maindist" bandwidth="1.25GBps" latency="100us"/>
+ <link id="dc1_maindist_entranceroom" bandwidth="1.25GBps" latency="100us"/>
+ <link id="dc1_entranceroom_ISP" bandwidth="1.25GBps" latency="100us"/>
+
+ <!-- links to router relationships -->
+ <route src="gw_dc1_horizdist" dst="gw_dc1_maindist"><link_ctn id="dc1_horizdist_maindist"/></route>
+ <route src="gw_dc1_maindist" dst="gw_dc1_entranceroom"><link_ctn id="dc1_maindist_entranceroom"/></route>
+ <route src="gw_dc1_entranceroom" dst="router_dataCenter1"><link_ctn id="dc1_entranceroom_ISP"/></route>
+ </AS>
- <!-- internal routes between cabinets -->
- <ASroute src="cabinet2" dst="cabinet3" gw_src="cb2-cabinet2_router.dc1.acloud.com"
- gw_dst="cb3-cabinet3_router.dc1.acloud.com">
- <link_ctn id="link_dc1_cb2"/><link_ctn id="link_dc1_cb3"/>
- </ASroute>
- <ASroute src="cabinet1" dst="cabinet3" gw_src="cb1-cabinet1_router.dc1.acloud.com"
- gw_dst="cb3-cabinet3_router.dc1.acloud.com">
- <link_ctn id="link_dc1_cb1"/><link_ctn id="link_dc1_cb3"/>
- </ASroute>
- <ASroute src="cabinet1" dst="cabinet2" gw_src="cb1-cabinet1_router.dc1.acloud.com"
- gw_dst="cb2-cabinet2_router.dc1.acloud.com">
- <link_ctn id="link_dc1_cb1"/><link_ctn id="link_dc1_cb2"/>
- </ASroute>
- </AS>
+ <!-- internal routes between cabinets -->
+ <ASroute src="cabinet2" dst="cabinet3" gw_src="cb2-cabinet2_router.dc1.acloud.com"
+ gw_dst="cb3-cabinet3_router.dc1.acloud.com">
+ <link_ctn id="link_dc1_cb2"/><link_ctn id="link_dc1_cb3"/>
+ </ASroute>
+ <ASroute src="cabinet1" dst="cabinet3" gw_src="cb1-cabinet1_router.dc1.acloud.com"
+ gw_dst="cb3-cabinet3_router.dc1.acloud.com">
+ <link_ctn id="link_dc1_cb1"/><link_ctn id="link_dc1_cb3"/>
+ </ASroute>
+ <ASroute src="cabinet1" dst="cabinet2" gw_src="cb1-cabinet1_router.dc1.acloud.com"
+ gw_dst="cb2-cabinet2_router.dc1.acloud.com">
+ <link_ctn id="link_dc1_cb1"/><link_ctn id="link_dc1_cb2"/>
+ </ASroute>
+ </AS>
</AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
-<AS id="AS0" routing="Full">
- <host id="S1" speed="1Gf"/>
- <host id="C1" speed="1Gf"/>
- <host id="S2" speed="1Gf"/>
- <host id="C2" speed="1Gf"/>
- <router id="R1"/>
- <router id="R2"/>
+ <AS id="AS0" routing="Full">
+ <host id="S1" speed="1Gf"/>
+ <host id="C1" speed="1Gf"/>
+ <host id="S2" speed="1Gf"/>
+ <host id="C2" speed="1Gf"/>
+ <router id="R1"/>
+ <router id="R2"/>
- <link id="1" bandwidth="100MBps" latency="10ms"/>
- <link id="2" bandwidth="100MBps" latency="10ms"/>
- <link id="3" bandwidth="100MBps" latency="10ms"/>
- <link id="4" bandwidth="100MBps" latency="10ms"/>
- <link id="5" bandwidth="100MBps" latency="10ms"/>
+ <link id="1" bandwidth="100MBps" latency="10ms"/>
+ <link id="2" bandwidth="100MBps" latency="10ms"/>
+ <link id="3" bandwidth="100MBps" latency="10ms"/>
+ <link id="4" bandwidth="100MBps" latency="10ms"/>
+ <link id="5" bandwidth="100MBps" latency="10ms"/>
- <route src="S1" dst="C1"><link_ctn id="1"/><link_ctn id="2"/><link_ctn id="3"/></route>
- <route src="S2" dst="C2"><link_ctn id="4"/><link_ctn id="2"/><link_ctn id="5"/></route>
- <route src="S1" dst="C2"><link_ctn id="1"/><link_ctn id="2"/><link_ctn id="5"/></route>
- <route src="S2" dst="C1"><link_ctn id="4"/><link_ctn id="2"/><link_ctn id="3"/></route>
- <route src="S1" dst="R1"><link_ctn id="1"/></route>
- <route src="R1" dst="R2"><link_ctn id="2"/></route>
- <route src="R2" dst="C1"><link_ctn id="3"/></route>
- <route src="S2" dst="R1"><link_ctn id="4"/></route>
- <route src="R2" dst="C2"><link_ctn id="5"/></route>
-</AS>
+ <route src="S1" dst="C1"><link_ctn id="1"/><link_ctn id="2"/><link_ctn id="3"/></route>
+ <route src="S2" dst="C2"><link_ctn id="4"/><link_ctn id="2"/><link_ctn id="5"/></route>
+ <route src="S1" dst="C2"><link_ctn id="1"/><link_ctn id="2"/><link_ctn id="5"/></route>
+ <route src="S2" dst="C1"><link_ctn id="4"/><link_ctn id="2"/><link_ctn id="3"/></route>
+ <route src="S1" dst="R1"><link_ctn id="1"/></route>
+ <route src="R1" dst="R2"><link_ctn id="2"/></route>
+ <route src="R2" dst="C1"><link_ctn id="3"/></route>
+ <route src="S2" dst="R1"><link_ctn id="4"/></route>
+ <route src="R2" dst="C2"><link_ctn id="5"/></route>
+ </AS>
</platform>
<link id="3" bandwidth="498MBps" latency="150us" sharing_policy="FATPIPE"/>
<link id="4" bandwidth="498MBps" latency="150us" sharing_policy="FATPIPE"/>
- <route src="Tremblay" dst="Ruby"><link_ctn id="1"/></route>
- <route src="Tremblay" dst="Perl"><link_ctn id="2"/></route>
- <route src="Tremblay" dst="Java"><link_ctn id="3"/></route>
- <route src="Ruby" dst="Perl"><link_ctn id="4"/></route>
+ <route src="Tremblay" dst="Ruby">
+ <link_ctn id="1"/>
+ </route>
+ <route src="Tremblay" dst="Perl">
+ <link_ctn id="2"/>
+ </route>
+ <route src="Tremblay" dst="Java">
+ <link_ctn id="3"/>
+ </route>
+ <route src="Ruby" dst="Perl"><
+ link_ctn id="4"/>
+ </route>
</AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
- <config><prop id="path" value="../examples/platforms/"/></config>
+ <config>
+ <prop id="path" value="../examples/platforms/"/>
+ </config>
<AS id="AS0" routing="Full">
<storage_type id="SATA-II_HDD" size="500GB" model="linear_no_lat"
<link id="link5" bandwidth="125MBps" latency="50us"/>
<link id="link6" bandwidth="125MBps" latency="50us"/>
- <route src="alice" dst="bob"><link_ctn id="link1"/></route>
- <route src="alice" dst="carl"><link_ctn id="link2"/></route>
- <route src="alice" dst="dave"><link_ctn id="link3"/></route>
- <route src="bob" dst="carl"><link_ctn id="link4"/></route>
- <route src="bob" dst="dave"><link_ctn id="link5"/></route>
- <route src="carl" dst="dave"><link_ctn id="link6"/></route>
+ <route src="alice" dst="bob">
+ <link_ctn id="link1"/>
+ </route>
+ <route src="alice" dst="carl">
+ <link_ctn id="link2"/>
+ </route>
+ <route src="alice" dst="dave">
+ <link_ctn id="link3"/>
+ </route>
+ <route src="bob" dst="carl">
+ <link_ctn id="link4"/>
+ </route>
+ <route src="bob" dst="dave">
+ <link_ctn id="link5"/>
+ </route>
+ <route src="carl" dst="dave">
+ <link_ctn id="link6"/>
+ </route>
</AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
- <config><prop id="path" value="../examples/platforms/"/></config>
+ <config>
+ <prop id="path" value="../examples/platforms/"/>
+ </config>
<AS id="AS0" routing="Full">
<storage_type id="single_HDD" size="500GiB" model="linear_no_lat"
content="content/storage_content.txt" content_type="txt_unix">
- <model_prop id="Bwrite" value="30MBps" />
- <model_prop id="Bread" value="100MBps" />
- <model_prop id="Bconnection" value="120MBps" />
+ <model_prop id="Bwrite" value="30MBps" />
+ <model_prop id="Bread" value="100MBps" />
+ <model_prop id="Bconnection" value="120MBps" />
</storage_type>
<storage_type id="single_SSD" size="500GiB" model="linear_no_lat"
content="content/storage_content.txt" content_type="txt_unix">
- <model_prop id="Bwrite" value="60MBps" />
- <model_prop id="Bread" value="200MBps" />
- <model_prop id="Bconnection" value="220MBps" />
+ <model_prop id="Bwrite" value="60MBps" />
+ <model_prop id="Bread" value="200MBps" />
+ <model_prop id="Bconnection" value="220MBps" />
</storage_type>
<storage id="Disk1" typeId="single_HDD" attach="bob" />
<mount storageId="Disk3" name="/home"/>
</host>
<host id="denise" speed="1Gf">
- <mount storageId="Disk2" name="c:"/>
- <mount storageId="Disk4" name="/home"/>
+ <mount storageId="Disk2" name="c:"/>
+ <mount storageId="Disk4" name="/home"/>
</host>
<link id="link1" bandwidth="125MBps" latency="150us" />
- <route src="bob" dst="alice"><link_ctn id="link1" /></route>
+ <route src="bob" dst="alice">
+ <link_ctn id="link1" />
+ </route>
</AS>
</platform>
<link id="link1" bandwidth="125MBps" latency="100us" />
- <route src="PM0" dst="PM1"><link_ctn id="link1"/></route>
- <route src="PM0" dst="PM2"><link_ctn id="link1"/></route>
- <route src="PM1" dst="PM2"><link_ctn id="link1"/></route>
+ <route src="PM0" dst="PM1">
+ <link_ctn id="link1"/>
+ </route>
+ <route src="PM0" dst="PM2">
+ <link_ctn id="link1"/>
+ </route>
+ <route src="PM1" dst="PM2">
+ <link_ctn id="link1"/>
+ </route>
</AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
-<trace id="A" periodicity="1.0">
-0.0 1.0
-11.0 0.5
-20.0 0.9
-</trace>
-<trace id="A_failure" periodicity="10.0">
-1.0 -1.0
-2.0 1.0
-</trace>
-<trace id="B" periodicity="10.0">
-0.0 1.0
-10.0 0.8
-20.0 0.4
-</trace>
+ <trace id="A" periodicity="1.0">
+ 0.0 1.0
+ 11.0 0.5
+ 20.0 0.9
+ </trace>
+ <trace id="A_failure" periodicity="10.0">
+ 1.0 -1.0
+ 2.0 1.0
+ </trace>
+ <trace id="B" periodicity="10.0">
+ 0.0 1.0
+ 10.0 0.8
+ 20.0 0.4
+ </trace>
-<AS id="AS0" routing="Full">
- <host id="Cpu A" speed="10f"/>
- <host id="Cpu B" speed="10f"/>
- <link id="LinkA" bandwidth="10MBps" latency="200ms"/>
- <route src="Cpu A" dst="Cpu B"><link_ctn id="LinkA"/></route>
-</AS>
+ <AS id="AS0" routing="Full">
+ <host id="Cpu A" speed="10f"/>
+ <host id="Cpu B" speed="10f"/>
+ <link id="LinkA" bandwidth="10MBps" latency="200ms"/>
+ <route src="Cpu A" dst="Cpu B"><link_ctn id="LinkA"/></route>
+ </AS>
-<trace_connect kind="SPEED" trace="A" element="Cpu A"/>
-<trace_connect kind="HOST_AVAIL" trace="A_failure" element="Cpu A"/>
-<trace_connect kind="SPEED" trace="B" element="Cpu B"/>
+ <trace_connect kind="SPEED" trace="A" element="Cpu A"/>
+ <trace_connect kind="HOST_AVAIL" trace="A_failure" element="Cpu A"/>
+ <trace_connect kind="SPEED" trace="B" element="Cpu B"/>
</platform>
ADD_TESH_FACTORIES(s4u-basic "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/examples/s4u/basic --cd ${CMAKE_HOME_DIRECTORY}/examples/s4u/basic s4u_basic.tesh)
ADD_TESH_FACTORIES(s4u-io "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/examples/s4u/io --cd ${CMAKE_HOME_DIRECTORY}/examples/s4u/io s4u_io.tesh)
-ADD_TESH_FACTORIES(s4u-mutex "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/examples/s4u/mutex --cd ${CMAKE_HOME_DIRECTORY}/examples/s4u/mutex s4u_mutex.tesh)
+ADD_TESH_FACTORIES(s4u-mutex "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/examples/s4u/mutex --cd ${CMAKE_HOME_DIRECTORY}/examples/s4u/mutex s4u_mutex.tesh)
+
+foreach(x actions-comm)
+ add_executable (s4u_${x} ${x}/s4u_${x}.cpp)
+ target_link_libraries(s4u_${x} simgrid)
+ set_target_properties(s4u_${x} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${x})
+ set(examples_src ${examples_src} ${CMAKE_CURRENT_SOURCE_DIR}/${x}/s4u_${x}.cpp)
+ set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/${x}/s4u_${x}.tesh)
+endforeach()
+
+
+foreach(x actions-comm)
+ ADD_TESH_FACTORIES(s4u-${x} "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_CURRENT_BINARY_DIR}/${x} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_HOME_DIRECTORY}/examples/s4u/${x} s4u_${x}.tesh)
+endforeach()
--- /dev/null
+/* Copyright (c) 2009-2016. The SimGrid Team. All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include "simgrid/msg.h"
+#include "simgrid/simix.h" /* semaphores for the barrier */
+#include <xbt/replay.h>
+#include "simgrid/s4u.h"
+
+XBT_LOG_NEW_DEFAULT_CATEGORY(actions, "Messages specific for this msg example");
+int communicator_size = 0;
+
+static void action_Isend(const char *const *action);
+
+typedef struct {
+ int last_Irecv_sender_id;
+ int bcast_counter;
+ xbt_dynar_t isends; /* of msg_comm_t */
+ /* Used to implement irecv+wait */
+ xbt_dynar_t irecvs; /* of msg_comm_t */
+ xbt_dynar_t tasks; /* of msg_task_t */
+} s_process_globals_t, *process_globals_t;
+
+/* Helper function */
+static double parse_double(const char *string)
+{
+ double value;
+ char *endptr;
+
+ value = strtod(string, &endptr);
+ if (*endptr != '\0')
+ THROWF(unknown_error, 0, "%s is not a double", string);
+ return value;
+}
+
+#define ACT_DEBUG(...) \
+ if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose)) { \
+ char *NAME = xbt_str_join_array(action, " "); \
+ XBT_DEBUG(__VA_ARGS__); \
+ xbt_free(NAME); \
+ } else ((void)0)
+
+static void log_action(const char *const *action, double date)
+{
+ if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose)) {
+ char *name = xbt_str_join_array(action, " ");
+ XBT_VERB("%s %f", name, date);
+ xbt_free(name);
+ }
+}
+
+static void asynchronous_cleanup(void)
+{
+ process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
+
+ /* Destroy any isend which correspond to completed communications */
+ int found;
+ msg_comm_t comm;
+ while ((found = MSG_comm_testany(globals->isends)) != -1) {
+ xbt_dynar_remove_at(globals->isends, found, &comm);
+ MSG_comm_destroy(comm);
+ }
+}
+
+/* My actions */
+static void action_send(const char *const *action)
+{
+ char to[250];
+ const char *size_str = action[3];
+ double size = parse_double(size_str);
+ double clock = MSG_get_clock();
+
+ snprintf(to,249, "%s_%s", MSG_process_get_name(MSG_process_self()), action[2]);
+
+ ACT_DEBUG("Entering Send: %s (size: %g)", NAME, size);
+ if (size < 65536) {
+ action_Isend(action);
+ } else {
+ MSG_task_send(MSG_task_create(to, 0, size, NULL), to);
+ }
+
+ log_action(action, MSG_get_clock() - clock);
+ asynchronous_cleanup();
+}
+
+static void action_Isend(const char *const *action)
+{
+ char to[250];
+ const char *size = action[3];
+ double clock = MSG_get_clock();
+ process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
+
+ snprintf(to,249, "%s_%s", MSG_process_get_name(MSG_process_self()), action[2]);
+ msg_comm_t comm = MSG_task_isend(MSG_task_create(to, 0, parse_double(size), NULL), to);
+ xbt_dynar_push(globals->isends, &comm);
+
+ XBT_DEBUG("Isend on %s", MSG_process_get_name(MSG_process_self()));
+ log_action(action, MSG_get_clock() - clock);
+ asynchronous_cleanup();
+}
+
+static void action_recv(const char *const *action)
+{
+ char mailbox_name[250];
+ msg_task_t task = NULL;
+ double clock = MSG_get_clock();
+
+ snprintf(mailbox_name,249, "%s_%s", action[2], MSG_process_get_name(MSG_process_self()));
+
+ ACT_DEBUG("Receiving: %s", NAME);
+ msg_error_t res = MSG_task_receive(&task, mailbox_name);
+ log_action(action, MSG_get_clock() - clock);
+
+ if (res == MSG_OK) {
+ MSG_task_destroy(task);
+ }
+ asynchronous_cleanup();
+}
+
+static void action_Irecv(const char *const *action)
+{
+ char mailbox[250];
+ double clock = MSG_get_clock();
+ process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
+
+ XBT_DEBUG("Irecv on %s", MSG_process_get_name(MSG_process_self()));
+
+ snprintf(mailbox,249, "%s_%s", action[2], MSG_process_get_name(MSG_process_self()));
+ msg_task_t t = NULL;
+ xbt_dynar_push(globals->tasks, &t);
+ msg_comm_t c = MSG_task_irecv((msg_task**)xbt_dynar_get_ptr(globals->tasks, xbt_dynar_length(globals->tasks) - 1), mailbox);
+ xbt_dynar_push(globals->irecvs, &c);
+
+ log_action(action, MSG_get_clock() - clock);
+ asynchronous_cleanup();
+}
+
+static void action_wait(const char *const *action)
+{
+ msg_task_t task = NULL;
+ msg_comm_t comm;
+ double clock = MSG_get_clock();
+ process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
+
+ xbt_assert(xbt_dynar_length(globals->irecvs), "action wait not preceded by any irecv: %s",
+ xbt_str_join_array(action, " "));
+
+ ACT_DEBUG("Entering %s", NAME);
+ comm = xbt_dynar_pop_as(globals->irecvs, msg_comm_t);
+ MSG_comm_wait(comm, -1);
+ task = xbt_dynar_pop_as(globals->tasks, msg_task_t);
+ MSG_comm_destroy(comm);
+ MSG_task_destroy(task);
+
+ log_action(action, MSG_get_clock() - clock);
+}
+
+/* FIXME: that's a poor man's implementation: we should take the message exchanges into account */
+static void action_barrier(const char *const *action)
+{
+ // static smx_mutex_t mutex = NULL;
+ // static smx_cond_t cond = NULL;
+ static simgrid::s4u::Mutex *mutex = NULL;
+ static simgrid::s4u::ConditionVariable *cond = NULL;
+ static int processes_arrived_sofar = 0;
+ if (mutex == NULL) { // first arriving on the barrier
+ mutex = new simgrid::s4u::Mutex();
+ cond = new simgrid::s4u::ConditionVariable();
+ processes_arrived_sofar = 0;
+ }
+ ACT_DEBUG("Entering barrier: %s (%d already there)", NAME, processes_arrived_sofar);
+ mutex->lock();
+ if (++processes_arrived_sofar == communicator_size) {
+ cond->notify_all();
+ mutex->unlock();
+ } else {
+ cond->wait(mutex);
+ mutex->unlock();
+ }
+
+ ACT_DEBUG("Exiting barrier: %s", NAME);
+
+ processes_arrived_sofar--;
+ if (processes_arrived_sofar<=0) {
+ delete cond;
+ delete mutex;
+ mutex = NULL;
+ }
+}
+
+static void action_bcast(const char *const *action)
+{
+ char mailbox[80];
+ double comm_size = parse_double(action[2]);
+ msg_task_t task = NULL;
+ double clock = MSG_get_clock();
+
+ process_globals_t counters = (process_globals_t) MSG_process_get_data(MSG_process_self());
+
+ xbt_assert(communicator_size, "Size of Communicator is not defined, can't use collective operations");
+
+ const char * process_name = MSG_process_get_name(MSG_process_self());
+
+ char *bcast_identifier = bprintf("bcast_%d", counters->bcast_counter++);
+
+ if (!strcmp(process_name, "p0")) {
+ XBT_DEBUG("%s: %s is the Root", bcast_identifier, process_name);
+
+ msg_comm_t *comms = xbt_new0(msg_comm_t, communicator_size - 1);
+
+ for (int i = 1; i < communicator_size; i++) {
+ snprintf(mailbox,79, "%s_p0_p%d", bcast_identifier, i);
+ comms[i - 1] = MSG_task_isend(MSG_task_create(mailbox, 0, comm_size, NULL), mailbox);
+ }
+ MSG_comm_waitall(comms, communicator_size - 1, -1);
+ for (int i = 1; i < communicator_size; i++)
+ MSG_comm_destroy(comms[i - 1]);
+ xbt_free(comms);
+
+ XBT_DEBUG("%s: all messages sent by %s have been received", bcast_identifier, process_name);
+ } else {
+ snprintf(mailbox,79, "%s_p0_%s", bcast_identifier, process_name);
+ MSG_task_receive(&task, mailbox);
+ MSG_task_destroy(task);
+ XBT_DEBUG("%s: %s has received", bcast_identifier, process_name);
+ }
+
+ log_action(action, MSG_get_clock() - clock);
+ xbt_free(bcast_identifier);
+}
+
+static void action_comm_size(const char *const *action)
+{
+ const char *size = action[2];
+ double clock = MSG_get_clock();
+
+ communicator_size = parse_double(size);
+ log_action(action, MSG_get_clock() - clock);
+}
+
+static void action_compute(const char *const *action)
+{
+ const char *amount = action[2];
+ msg_task_t task = MSG_task_create("task", parse_double(amount), 0, NULL);
+ double clock = MSG_get_clock();
+
+ ACT_DEBUG("Entering %s", NAME);
+ MSG_task_execute(task);
+ MSG_task_destroy(task);
+ log_action(action, MSG_get_clock() - clock);
+}
+
+static void action_init(const char *const *action)
+{
+ XBT_DEBUG("Initialize the counters");
+ process_globals_t globals = (process_globals_t) calloc(1, sizeof(s_process_globals_t));
+ globals->isends = xbt_dynar_new(sizeof(msg_comm_t), NULL);
+ globals->irecvs = xbt_dynar_new(sizeof(msg_comm_t), NULL);
+ globals->tasks = xbt_dynar_new(sizeof(msg_task_t), NULL);
+ MSG_process_set_data(MSG_process_self(), globals);
+}
+
+static void action_finalize(const char *const *action)
+{
+ process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
+ if (globals) {
+ asynchronous_cleanup();
+ xbt_dynar_free_container(&(globals->isends));
+ xbt_dynar_free_container(&(globals->irecvs));
+ xbt_dynar_free_container(&(globals->tasks));
+ xbt_free(globals);
+ }
+}
+
+int main(int argc, char *argv[])
+{
+ msg_error_t res = MSG_OK;
+
+ /* Check the given arguments */
+ MSG_init(&argc, argv);
+ /* Explicit initialization of the action module is required now*/
+ MSG_action_init();
+
+ xbt_assert(argc > 2,
+ "Usage: %s platform_file deployment_file [action_files]\n"
+ "\t# if all actions are in the same file\n"
+ "\tExample: %s msg_platform.xml msg_deployment.xml actions\n"
+ "\t# if actions are in separate files, specified in deployment\n"
+ "\tExample: %s msg_platform.xml msg_deployment.xml ",
+ argv[0],argv[0],argv[0]);
+
+ MSG_create_environment(argv[1]);
+ MSG_launch_application(argv[2]);
+
+ /* Action registration */
+ xbt_replay_action_register("init", action_init);
+ xbt_replay_action_register("finalize", action_finalize);
+ xbt_replay_action_register("comm_size", action_comm_size);
+ xbt_replay_action_register("send", action_send);
+ xbt_replay_action_register("Isend", action_Isend);
+ xbt_replay_action_register("recv", action_recv);
+ xbt_replay_action_register("Irecv", action_Irecv);
+ xbt_replay_action_register("wait", action_wait);
+ xbt_replay_action_register("barrier", action_barrier);
+ xbt_replay_action_register("bcast", action_bcast);
+ xbt_replay_action_register("compute", action_compute);
+
+ /* Actually do the simulation using MSG_action_trace_run */
+ res = MSG_action_trace_run(argv[3]); // it's ok to pass a NULL argument here
+
+ XBT_INFO("Simulation time %g", MSG_get_clock());
+
+ MSG_action_exit(); /* Explicit finalization of the action module */
+
+ return res != MSG_OK;
+}
--- /dev/null
+! output sort 19
+$ ${bindir:=.}/s4u_actions-comm --log=actions.thres=verbose ${srcdir:=.}/small_platform_fatpipe.xml s4u_actions-comm_split_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 20.703314] (1:p0@Tremblay) p0 recv p1 20.703314
+> [ 20.703314] (2:p1@Ruby) p1 send p0 1e10 20.703314
+> [ 30.897513] (0:maestro@) Simulation time 30.8975
+> [ 30.897513] (1:p0@Tremblay) p0 compute 1e9 10.194200
+> [ 30.897513] (2:p1@Ruby) p1 compute 1e9 10.194200
+
+! output sort 19
+$ ${bindir:=.}/s4u_actions-comm --log=actions.thres=verbose ${srcdir:=.}/small_platform_fatpipe.xml s4u_actions-comm_d.xml s4u_actions-comm.txt "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 0.000000] (1:p0@Tremblay) p0 comm_size 3 0.000000
+> [ 1.037020] (1:p0@Tremblay) p0 bcast 5e8 1.037020
+> [ 1.037020] (2:p1@Ruby) p1 bcast 5e8 1.037020
+> [ 1.037020] (3:p2@Perl) p2 bcast 5e8 1.037020
+> [ 1.082894] (1:p0@Tremblay) p0 compute 4.5E6 0.045874
+> [ 1.123670] (1:p0@Tremblay) p0 compute 4E6 0.040777
+> [ 1.149156] (1:p0@Tremblay) p0 compute 2.5E6 0.025485
+> [ 1.149156] (2:p1@Ruby) p1 Irecv p0 0.000000
+> [ 1.149156] (3:p2@Perl) p2 Irecv p1 0.000000
+> [ 3.221244] (1:p0@Tremblay) p0 send p1 1e9 2.072088
+> [ 6.246256] (3:p2@Perl) p2 compute 5e8 5.097100
+> [ 11.343355] (2:p1@Ruby) p1 compute 1e9 10.194200
+> [ 11.343355] (2:p1@Ruby) p1 wait 0.000000
+> [ 11.343355] (2:p1@Ruby) p1 Isend p2 1e9 0.000000
+> [ 13.415443] (0:maestro@) Simulation time 13.4154
+> [ 13.415443] (1:p0@Tremblay) p0 compute 1e9 10.194200
+> [ 13.415443] (3:p2@Perl) p2 wait 7.169187
--- /dev/null
+# sample action file
+p0 init
+p1 init
+p2 init
+
+p0 comm_size 3
+p0 bcast 5e8
+p1 bcast 5e8
+p2 bcast 5e8
+
+p0 compute 4.5E6
+p0 compute 4E6
+p0 compute 2.5E6
+
+p0 barrier
+p1 barrier
+p2 barrier
+
+p0 send p1 1e9
+p0 compute 1e9
+
+p1 Irecv p0
+p1 compute 1e9
+p1 wait
+p1 Isend p2 1e9
+
+p2 Irecv p1
+p2 compute 5e8
+p2 wait
+
+p0 barrier
+p1 barrier
+p2 barrier
+
+p0 finalize
+p1 finalize
+p2 finalize
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
+<platform version="4">
+ <process host="Tremblay" function="p0"/>
+ <process host="Ruby" function="p1"/>
+ <process host="Perl" function="p2"/>
+</platform>
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
+<platform version="4">
+<!-- Example file of how to use trace replay, with actions split in separate files, one per process.
+ Launch it like this:
+ ./actions-comm ../../platforms/platform.xml actions-comm_split_d.xml -->
+
+ <process host="Tremblay" function="p0"> <argument value="s4u_actions-comm_split_p0.txt"/> </process>
+ <process host="Ruby" function="p1"> <argument value="s4u_actions-comm_split_p1.txt"/> </process>
+</platform>
--- /dev/null
+# sample action file (with only the actions for p0, to be launched by deployment file)
+p0 init
+p0 recv p1
+p0 compute 1e9
+p0 finalize
+
--- /dev/null
+# sample action file (with only the actions for p1, to be launched by deployment file)
+p1 init
+p1 send p0 1e10
+p1 compute 1e9
+p1 finalize
#include "s4u/host.hpp"
#include "s4u/mutex.hpp"
+#include "s4u/conditionVariable.hpp"
#include "s4u/Activity.hpp"
#include "s4u/comm.hpp"
--- /dev/null
+/* Copyright (c) 2006-2016. The SimGrid Team. All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#ifndef SIMGRID_S4U_COND_VARIABLE_HPP
+#define SIMGRID_S4U_COND_VARIABLE_HPP
+
+#include <utility> // std::swap
+
+#include <simgrid/simix.h>
+#include <simgrid/s4u/mutex.hpp>
+
+namespace simgrid {
+namespace s4u {
+
+class Mutex;
+
+XBT_PUBLIC_CLASS ConditionVariable {
+
+public:
+ ConditionVariable();
+
+ ConditionVariable(ConditionVariable* cond) : cond_(SIMIX_cond_ref(cond->cond_)) {}
+ ~ConditionVariable();
+
+ // Copy+move (with the copy-and-swap idiom):
+ ConditionVariable(ConditionVariable const& cond) : cond_(SIMIX_cond_ref(cond.cond_)) {}
+ friend void swap(ConditionVariable& first, ConditionVariable& second)
+ {
+ using std::swap;
+ swap(first.cond_, second.cond_);
+ }
+ ConditionVariable& operator=(ConditionVariable cond)
+ {
+ swap(*this, cond);
+ return *this;
+ }
+ ConditionVariable(ConditionVariable&& cond) : cond_(nullptr)
+ {
+ swap(*this, cond);
+ }
+
+ bool valid() const
+ {
+ return cond_ != nullptr;
+ }
+
+ /**
+ * Wait functions
+ */
+ void wait(Mutex *mutex);
+ void wait_for(Mutex *mutex, double time);
+
+ /**
+ * Notify functions
+ */
+ void notify();
+ void notify_all();
+
+private:
+ smx_cond_t cond_;
+
+};
+}} // namespace simgrid::s4u
+
+#endif /* SIMGRID_S4U_COND_VARIABLE_HPP */
#include <boost/intrusive_ptr.hpp>
#include <xbt/base.h>
#include "simgrid/simix.h"
+#include <simgrid/s4u/conditionVariable.hpp>
namespace simgrid {
namespace s4u {
+class ConditionVariable;
XBT_PUBLIC_CLASS Mutex {
-
+friend ConditionVariable;
public:
Mutex() :
mutex_(simcall_mutex_init()) {}
XBT_PUBLIC(smx_cond_t) simcall_cond_init(void);
XBT_PUBLIC(void) SIMIX_cond_unref(smx_cond_t cond);
+XBT_PUBLIC(smx_cond_t) SIMIX_cond_ref(smx_cond_t cond);
XBT_PUBLIC(void) simcall_cond_signal(smx_cond_t cond);
XBT_PUBLIC(void) simcall_cond_wait(smx_cond_t cond, smx_mutex_t mutex);
XBT_PUBLIC(void) simcall_cond_wait_timeout(smx_cond_t cond,
--- /dev/null
+#include "simgrid/s4u/conditionVariable.hpp"
+#include "simgrid/simix.h"
+
+using namespace simgrid;
+
+s4u::ConditionVariable::ConditionVariable() : cond_(simcall_cond_init()){
+
+}
+
+s4u::ConditionVariable::~ConditionVariable() {
+ SIMIX_cond_unref(cond_);
+}
+
+/**
+ * Wait functions
+ */
+void s4u::ConditionVariable::wait(s4u::Mutex *mutex) {
+ simcall_cond_wait(cond_, mutex->mutex_);
+}
+
+void s4u::ConditionVariable::wait_for(s4u::Mutex *mutex, double timeout) {
+ simcall_cond_wait_timeout(cond_, mutex->mutex_, timeout);
+}
+
+/**
+ * Notify functions
+ */
+void s4u::ConditionVariable::notify() {
+ simcall_cond_signal(cond_);
+}
+
+void s4u::ConditionVariable::notify_all() {
+ simcall_cond_broadcast(cond_);
+}
+
+
XBT_OUT();
}
-/**
- * \brief Destroys a condition.
- *
- * Destroys and frees the condition's memory.
- * \param cond A condition
- */
+smx_cond_t SIMIX_cond_ref(smx_cond_t cond)
+{
+ if (cond != nullptr)
+ intrusive_ptr_add_ref(cond);
+ return cond;
+}
+
void SIMIX_cond_unref(smx_cond_t cond)
{
XBT_IN("(%p)",cond);
xbt_swag_t sleeping; /* list of sleeping process */
} s_smx_sem_t;
+
+
XBT_PRIVATE void SIMIX_post_synchro(smx_synchro_t synchro);
XBT_PRIVATE void SIMIX_synchro_stop_waiting(smx_process_t process, smx_simcall_t simcall);
XBT_PRIVATE void SIMIX_synchro_destroy(smx_synchro_t synchro);
XBT_PRIVATE smx_cond_t SIMIX_cond_init(void);
XBT_PRIVATE void SIMIX_cond_broadcast(smx_cond_t cond);
XBT_PRIVATE void SIMIX_cond_signal(smx_cond_t cond);
+XBT_PRIVATE void intrusive_ptr_add_ref(s_smx_cond_t *cond);
+XBT_PRIVATE void intrusive_ptr_release(s_smx_cond_t *cond);
XBT_PRIVATE XBT_PRIVATE smx_sem_t SIMIX_sem_init(unsigned int value);
XBT_PRIVATE void SIMIX_sem_release(smx_sem_t sem);
XBT_PRIVATE int SIMIX_sem_would_block(smx_sem_t sem);
XBT_PRIVATE int SIMIX_sem_get_capacity(smx_sem_t sem);
-
-XBT_PRIVATE void intrusive_ptr_release(s_smx_cond_t *cond);
-XBT_PRIVATE void intrusive_ptr_add_ref(s_smx_cond_t *cond);
#endif
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Cpu B" function="test_trace" start_time="0">
- <argument value="40"/>
- <argument value="1.0"/>
+ <argument value="40"/>
+ <argument value="1.0"/>
</process>
</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Cpu B" function="test_trace" start_time="0">
- <argument value="220"/>
- <argument value="1.0"/>
+ <argument value="220"/>
+ <argument value="1.0"/>
</process>
</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Cpu B" function="test_trace" start_time="10">
- <argument value="40"/>
- <argument value="1.0"/>
+ <argument value="40"/>
+ <argument value="1.0"/>
</process>
</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Cpu B" function="test_trace" start_time="10">
- <argument value="260"/>
- <argument value="1.0"/>
+ <argument value="260"/>
+ <argument value="1.0"/>
</process>
</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Cpu B" function="test_trace" start_time="20">
- <argument value="40"/>
- <argument value="1.0"/>
+ <argument value="40"/>
+ <argument value="1.0"/>
</process>
</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Cpu B" function="test_trace" start_time="20">
- <argument value="140"/>
- <argument value="1.0"/>
+ <argument value="140"/>
+ <argument value="1.0"/>
</process>
</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Cpu B" function="test_trace" start_time="40">
- <argument value="40"/>
- <argument value="1.0"/>
+ <argument value="40"/>
+ <argument value="1.0"/>
</process>
</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Cpu B" function="test_trace" start_time="40">
- <argument value="260"/>
- <argument value="1.0"/>
+ <argument value="260"/>
+ <argument value="1.0"/>
</process>
</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Cpu B" function="test_trace">
- <argument value="170"/>
- <argument value="1.0"/>
+ <argument value="170"/>
+ <argument value="1.0"/>
</process>
<process host="Cpu B" function="test_trace">
- <argument value="170"/>
- <argument value="1.0"/>
+ <argument value="170"/>
+ <argument value="1.0"/>
</process>
<process host="Cpu B" function="test_trace" start_time="30">
- <argument value="100"/>
- <argument value="1.0"/>
+ <argument value="100"/>
+ <argument value="1.0"/>
</process>
</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Cpu B" function="test_trace" start_time="10">
- <argument value="25"/>
- <argument value="1.0"/>
+ <argument value="25"/>
+ <argument value="1.0"/>
</process>
<process host="Cpu B" function="test_trace" start_time="10">
- <argument value="75"/>
- <argument value="3.0"/>
+ <argument value="75"/>
+ <argument value="3.0"/>
</process>
<process host="Cpu B" function="test_trace" start_time="20">
- <argument value="120"/>
- <argument value="4.0"/>
+ <argument value="120"/>
+ <argument value="4.0"/>
</process>
</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Cpu B" function="test_trace" start_time="10">
- <argument value="150"/>
- <argument value="1.5"/>
+ <argument value="150"/>
+ <argument value="1.5"/>
</process>
<process host="Cpu B" function="test_trace" start_time="20">
- <argument value="70"/>
- <argument value="1.5"/>
+ <argument value="70"/>
+ <argument value="1.5"/>
</process>
</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<process host="Cpu B" function="test_trace" start_time="10">
- <argument value="50"/>
- <argument value="2.5"/>
+ <argument value="50"/>
+ <argument value="2.5"/>
</process>
<process host="Cpu B" function="test_trace" start_time="10">
- <argument value="70"/>
- <argument value="1.5"/>
+ <argument value="70"/>
+ <argument value="1.5"/>
</process>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
- <AS id="AS0" routing="Dijkstra">
- <host id="NODO01" speed="10Mf"/>
- <host id="NODO02" speed="10Mf"/>
+ <AS id="AS0" routing="Dijkstra">
+ <host id="NODO01" speed="10Mf"/>
+ <host id="NODO02" speed="10Mf"/>
- <router id="ROUTER"/>
+ <router id="ROUTER"/>
- <link id="1" bandwidth="1MBps" latency="1ms"/>
- <link id="2" bandwidth="1MBps" latency="1ms"/>
- <link id="10" bandwidth="1MBps" latency="1ms"/>
- <link id="11" bandwidth="1MBps" latency="1ms"/>
- <link id="12" bandwidth="1MBps" latency="1ms"/>
+ <link id="1" bandwidth="1MBps" latency="1ms"/>
+ <link id="2" bandwidth="1MBps" latency="1ms"/>
+ <link id="10" bandwidth="1MBps" latency="1ms"/>
+ <link id="11" bandwidth="1MBps" latency="1ms"/>
+ <link id="12" bandwidth="1MBps" latency="1ms"/>
- <route src="NODO01" dst="ROUTER" symmetrical="NO"><link_ctn id="1"/></route>
- <route src="NODO02" dst="ROUTER" symmetrical="NO"><link_ctn id="2"/></route>
+ <route src="NODO01" dst="ROUTER" symmetrical="NO">
+ <link_ctn id="1"/>
+ </route>
+ <route src="NODO02" dst="ROUTER" symmetrical="NO">
+ <link_ctn id="2"/>
+ </route>
- <route src="ROUTER" dst="NODO01" symmetrical="NO"><link_ctn id="1"/></route>
- <route src="ROUTER" dst="NODO02" symmetrical="NO"><link_ctn id="2"/></route>
+ <route src="ROUTER" dst="NODO01" symmetrical="NO">
+ <link_ctn id="1"/>
+ </route>
+ <route src="ROUTER" dst="NODO02" symmetrical="NO">
+ <link_ctn id="2"/>
+ </route>
- <route src="NODO01" dst="NODO02" symmetrical="NO">
- <link_ctn id="10"/><link_ctn id="11"/><link_ctn id="12"/>
- </route>
- </AS>
+ <route src="NODO01" dst="NODO02" symmetrical="NO">
+ <link_ctn id="10"/><link_ctn id="11"/><link_ctn id="12"/>
+ </route>
+ </AS>
</platform>
-<!-- THIS FILE IS INVALID.
- It declares a storage attached to a nonexistant host (plouf). See bogus_disk_attachment.tesh -->
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
+ <!-- THIS FILE IS INVALID.
+ It declares a storage attached to a nonexistant host (plouf). See bogus_disk_attachment.tesh -->
<AS id="AS0" routing="Full">
<storage_type id="single_HDD" model="SSD" size="4kB">
<model_prop id="Bwrite" value="30MBps" />
<platform version="4">
<AS id="World" routing="Full">
<AS id="us" routing="Full">
- <cluster id="cluster" suffix=".cluster.us" prefix="node-" radical="1-4" speed="1Gf" bw="938MBps" lat="270us"/>
+ <cluster id="cluster" suffix=".cluster.us" prefix="node-" radical="1-4" speed="1Gf" bw="938MBps" lat="270us"/>
</AS>
<AS id="fr" routing="Full">
- <cluster id="grappe" suffix=".grappe.fr" prefix="noeud-" radical="1-4" speed="1Gf" bw="938MBps" lat="270us"/>
+ <cluster id="grappe" suffix=".grappe.fr" prefix="noeud-" radical="1-4" speed="1Gf" bw="938MBps" lat="270us"/>
</AS>
<link id="backbone" bandwidth="1.25GBps" latency="500us"/>
<ASroute src="us" gw_src="node-cluster_router.cluster.us" dst="fr" gw_dst="neud-grappe_router.grappe.fr">
- <link_ctn id="backbone"/>
+ <link_ctn id="backbone"/>
</ASroute>
</AS>
</platform>
<platform version="4">
<AS id="World" routing="Full">
<AS id="us" routing="Full">
- <cluster id="cluster" suffix=".cluster.us" prefix="node-" radical="1-4" speed="1Gf" bw="938MBps" lat="270us"/>
+ <cluster id="cluster" suffix=".cluster.us" prefix="node-" radical="1-4" speed="1Gf" bw="938MBps" lat="270us"/>
</AS>
<AS id="fr" routing="Full">
- <cluster id="grappe" suffix=".grappe.fr" prefix="noeud-" radical="1-4" speed="1Gf" bw="938MBps" lat="270us"/>
+ <cluster id="grappe" suffix=".grappe.fr" prefix="noeud-" radical="1-4" speed="1Gf" bw="938MBps" lat="270us"/>
</AS>
<link id="backbone" bandwidth="1.25GBps" latency="500us"/>
<ASroute src="us" gw_src="nod-cluster_router.cluster.us" dst="fr" gw_dst="noeud-grappe_router.grappe.fr">
- <link_ctn id="backbone"/>
+ <link_ctn id="backbone"/>
</ASroute>
</AS>
</platform>
-<!-- THIS FILE IS INVALID.
- It declares a route alice->bob and another bob->alice, both being different.
- It is used to check that this (bogus) file is detected as is (see two_hosts_asymetric.tesh) -->
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
+ <!-- THIS FILE IS INVALID.
+ It declares a route alice->bob and another bob->alice, both being different.
+ It is used to check that this (bogus) file is detected as is (see two_hosts_asymetric.tesh) -->
<AS id="AS0" routing="Full">
<host id="bob" speed="1Gf"/>
<host id="alice" speed="500Mf"/>
- <link id="link1" bandwidth="125MBps" latency="50us"/>
- <link id="link2" bandwidth="125MBps" latency="50us"/>
+ <link id="link1" bandwidth="125MBps" latency="50us"/>
+ <link id="link2" bandwidth="125MBps" latency="50us"/>
- <route src="bob" dst="alice"><link_ctn id="link1"/></route>
- <route src="alice" dst="bob"><link_ctn id="link2"/></route>
+ <route src="bob" dst="alice">
+ <link_ctn id="link1"/>
+ </route>
+ <route src="alice" dst="bob">
+ <link_ctn id="link2"/>
+ </route>
</AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
-<AS id="AS0" routing="Full">
- <host id="bob" speed="500Mf"/>
+ <AS id="AS0" routing="Full">
+ <host id="bob" speed="500Mf"/>
- <link id="link1" bandwidth="125MBps" latency="50us"/>
- <link id="link2" bandwidth="125MBps" latency="50us" sharing_policy="FATPIPE"/>
- <link id="link3" bandwidth="80MBps" latency="100us" bandwidth_file="link.bw" latency_file="link.lat"/>
- <link id="link4" bandwidth="80MBps" latency="100us" state_file="link.fail"/>
-</AS>
+ <link id="link1" bandwidth="125MBps" latency="50us"/>
+ <link id="link2" bandwidth="125MBps" latency="50us" sharing_policy="FATPIPE"/>
+ <link id="link3" bandwidth="80MBps" latency="100us" bandwidth_file="link.bw" latency_file="link.lat"/>
+ <link id="link4" bandwidth="80MBps" latency="100us" state_file="link.fail"/>
+ </AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
-<AS id="AS0" routing="Full">
- <cluster id="bob_cluster" prefix="bob" suffix=".hamburger.edu" radical="0,2-4,6" speed="1Gf" bw="125MBps" lat="50us"
- bb_bw="2.25GBps" bb_lat="500us"/>
-</AS>
+ <AS id="AS0" routing="Full">
+ <cluster id="bob_cluster" prefix="bob" suffix=".hamburger.edu" radical="0,2-4,6" speed="1Gf" bw="125MBps" lat="50us"
+ bb_bw="2.25GBps" bb_lat="500us"/>
+ </AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
-<AS id="AS0" routing="Full">
- <cluster id="bob_cluster" prefix="bob" suffix=".hamburger.edu" radical="0,2-4,6" speed="1Gf" bw="125MBps" lat="50us"
- bb_bw="2.25GBps" bb_lat="500us" sharing_policy="FULLDUPLEX"/>
-</AS>
+ <AS id="AS0" routing="Full">
+ <cluster id="bob_cluster" prefix="bob" suffix=".hamburger.edu" radical="0,2-4,6" speed="1Gf" bw="125MBps" lat="50us"
+ bb_bw="2.25GBps" bb_lat="500us" sharing_policy="FULLDUPLEX"/>
+ </AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
-<AS id="AS0" routing="Full">
- <cluster id="bob_cluster" prefix="bob" suffix=".hamburger.edu" radical="0,2-4,6" speed="1Gf" core="6"
- bw="125MBps" lat="50us"/>
-</AS>
+ <AS id="AS0" routing="Full">
+ <cluster id="bob_cluster" prefix="bob" suffix=".hamburger.edu" radical="0,2-4,6" speed="1Gf" core="6" bw="125MBps" lat="50us"/>
+ </AS>
</platform>
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
-<AS id="AS0" routing="Full">
- <cluster id="bob_cluster" prefix="bob" suffix=".hamburger.edu" radical="0,2-4,6" speed="1Gf" bw="125MBps" lat="50us"
- bb_bw="2.25GBps" bb_lat="500us" router_id="bob_cluster_router"/>
-</AS>
+ <AS id="AS0" routing="Full">
+ <cluster id="bob_cluster" prefix="bob" suffix=".hamburger.edu" radical="0,2-4,6" speed="1Gf" bw="125MBps" lat="50us"
+ bb_bw="2.25GBps" bb_lat="500us" router_id="bob_cluster_router"/>
+ </AS>
</platform>
<link id="link0" bandwidth="2Bps" latency="2.777777777777777777777777778h" sharing_policy="SHARED"/>
- <route src="cpu0" dst="cpu1"><link_ctn id="link0"/></route>
+ <route src="cpu0" dst="cpu1">
+ <link_ctn id="link0"/>
+ </route>
</AS>
</platform>
<link id="link0" bandwidth="1Bps" latency="500ms" sharing_policy="FATPIPE"/>
- <route src="cpu0" dst="cpu1"><link_ctn id="link0"/></route>
+ <route src="cpu0" dst="cpu1">
+ <link_ctn id="link0"/>
+ </route>
</AS>
</platform>
<link id="link0" bandwidth="1Bps" latency="500ms" sharing_policy="SHARED"/>
- <route src="cpu0" dst="cpu1"><link_ctn id="link0"/></route>
+ <route src="cpu0" dst="cpu1">
+ <link_ctn id="link0"/>
+ </route>
</AS>
</platform>
<link id="link0" bandwidth="1Bps" latency="500ms" sharing_policy="SHARED" />
- <route src="cpu0" dst="cpu1"><link_ctn id="link0" /></route>
+ <route src="cpu0" dst="cpu1">
+ <link_ctn id="link0" />
+ </route>
</AS>
</platform>
<link id="link0" bandwidth="1Bps" latency="500ms" sharing_policy="SHARED"/>
<link id="link1" bandwidth="1Bps" latency="500ms" sharing_policy="SHARED"/>
- <route src="cpu0" dst="cpu1"><link_ctn id="link0"/><link_ctn id="switch"/><link_ctn id="link1"/></route>
- </AS>
- </platform>
+ <route src="cpu0" dst="cpu1">
+ <link_ctn id="link0"/>
+ <link_ctn id="switch"/>
+ <link_ctn id="link1"/>
+ </route>
+ </AS>
+</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<AS id="main" routing="Full">
- <include file="clusterA.xml"></include>
- <include file="clusterB.xml"></include>
+ <include file="clusterA.xml"/>
+ <include file="clusterB.xml"/>
</AS>
</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<config id="General">
- <prop id="maxmin/precision" value="0.000010"></prop>
- <prop id="cpu/optim" value="TI"></prop>
- <prop id="host/model" value="compound"></prop>
- <prop id="network/model" value="Vegas"></prop>
- <prop id="path" value="~/"></prop>
+ <prop id="maxmin/precision" value="0.000010"/>
+ <prop id="cpu/optim" value="TI"/>
+ <prop id="host/model" value="compound"/>
+ <prop id="network/model" value="Vegas"/>
+ <prop id="path" value="~/"/>
</config>
<AS id="AS0" routing="Full">
- <host id="bob" speed="500Mf"/>
+ <host id="bob" speed="500Mf"/>
</AS>
</platform>
<platform version="4">
<AS id="AS" routing="Full">
<AS id="AS0" routing="Full">
- <host id="host01" speed="1Gf"/>
- <host id="host02" speed="500Mf"/>
- <router id="router1"/>
+ <host id="host01" speed="1Gf"/>
+ <host id="host02" speed="500Mf"/>
+ <router id="router1"/>
</AS>
<AS id="AS1" routing="Floyd">
- <host id="host03" speed="1Gf"/>
- <host id="host04" speed="500Mf"/>
- <router id="router2"/>
+ <host id="host03" speed="1Gf"/>
+ <host id="host04" speed="500Mf"/>
+ <router id="router2"/>
</AS>
<AS id="AS2" routing="Dijkstra">
- <host id="host05" speed="1Gf"/>
- <host id="host06" speed="500Mf"/>
- <router id="router3"/>
+ <host id="host05" speed="1Gf"/>
+ <host id="host06" speed="500Mf"/>
+ <router id="router3"/>
+ </AS>
+ <AS id="AS3" routing="DijkstraCache">
+ <host id="host07" speed="1Gf"/>
+ <host id="host08" speed="500Mf"/>
+ <router id="router4"/>
+ </AS>
+ <AS id="AS4" routing="None">
+ <host id="host09" speed="1Gf"/>
+ <host id="host10" speed="500Mf"/>
+ <router id="router5"/>
</AS>
- <AS id="AS3" routing="DijkstraCache">
- <host id="host07" speed="1Gf"/>
- <host id="host08" speed="500Mf"/>
- <router id="router4"/>
- </AS>
- <AS id="AS4" routing="None">
- <host id="host09" speed="1Gf"/>
- <host id="host10" speed="500Mf"/>
- <router id="router5"/>
- </AS>
</AS>
</platform>
<link id="link2" bandwidth="125MBps" latency="50us"/>
<link id="link3" bandwidth="125MBps" latency="50us"/>
- <route src="bob" dst="alice" symmetrical="NO"><link_ctn id="link1"/></route>
- <route src="alice" dst="bob" symmetrical="NO"><link_ctn id="link2"/><link_ctn id="link3"/></route>
- <route src="bob" dst="trudy"><link_ctn id="link2"/></route>
- <route src="trudy" dst="alice"><link_ctn id="link3"/></route>
+ <route src="bob" dst="alice" symmetrical="NO">
+ <link_ctn id="link1"/>
+ </route>
+ <route src="alice" dst="bob" symmetrical="NO">
+ <link_ctn id="link2"/>
+ <link_ctn id="link3"/>
+ </route>
+ <route src="bob" dst="trudy">
+ <link_ctn id="link2"/>
+ </route>
+ <route src="trudy" dst="alice">
+ <link_ctn id="link3"/>
+ </route>
</AS>
</platform>
<cluster id="alice_cluster" prefix="alice" suffix=".crepe.fr" radical="0-1" speed="1Gf" bw="125MBps" lat="50us"
bb_bw="2.25GBps" bb_lat="500us"/>
- <link id="backbone" bandwidth="1.25GBps" latency="500us"/>
+ <link id="backbone" bandwidth="1.25GBps" latency="500us"/>
- <ASroute src="bob_cluster" dst="alice_cluster" gw_src="bobbob_cluster_router.hamburger.edu"
- gw_dst="alicealice_cluster_router.crepe.fr">
- <link_ctn id="backbone"/>
- </ASroute>
+ <ASroute src="bob_cluster" dst="alice_cluster" gw_src="bobbob_cluster_router.hamburger.edu"
+ gw_dst="alicealice_cluster_router.crepe.fr">
+ <link_ctn id="backbone"/>
+ </ASroute>
</AS>
</platform>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
<AS id="AS0" routing="Full">
- <cluster id="bob_cluster" prefix="bob" suffix=".hamburger.edu" radical="0-4" speed="1Gf" bw="125MBps" lat="50us"
- bb_bw="2.25GBps" bb_lat="500us" router_id="bob_cluster_router"/>
- <cluster id="alice_cluster" prefix="alice" suffix=".crepe.fr" radical="0-4" speed="1Gf" bw="125MBps" lat="50us"
- bb_bw="2.25GBps" bb_lat="500us" router_id="alice_cluster_router"/>
+ <cluster id="bob_cluster" prefix="bob" suffix=".hamburger.edu" radical="0-4" speed="1Gf" bw="125MBps" lat="50us"
+ bb_bw="2.25GBps" bb_lat="500us" router_id="bob_cluster_router"/>
+ <cluster id="alice_cluster" prefix="alice" suffix=".crepe.fr" radical="0-4" speed="1Gf" bw="125MBps" lat="50us"
+ bb_bw="2.25GBps" bb_lat="500us" router_id="alice_cluster_router"/>
- <link id="backbone" bandwidth="1.25GBps" latency="500us"/>
+ <link id="backbone" bandwidth="1.25GBps" latency="500us"/>
- <ASroute src="bob_cluster" dst="alice_cluster" gw_src="bob_cluster_router" gw_dst="alice_cluster_router">
- <link_ctn id="backbone"/>
- </ASroute>
- <ASroute src="alice_cluster" dst="bob_cluster" gw_src="alice_cluster_router" gw_dst="bob_cluster_router">
- <link_ctn id="backbone"/>
- </ASroute>
+ <ASroute src="bob_cluster" dst="alice_cluster" gw_src="bob_cluster_router" gw_dst="alice_cluster_router">
+ <link_ctn id="backbone"/>
+ </ASroute>
+ <ASroute src="alice_cluster" dst="bob_cluster" gw_src="alice_cluster_router" gw_dst="bob_cluster_router">
+ <link_ctn id="backbone"/>
+ </ASroute>
</AS>
</platform>
<link id="link_alice" bandwidth="125MBps" latency="50us"/>
<link id="switch" bandwidth="125MBps" latency="50us" sharing_policy="FATPIPE"/>
- <route src="bob" dst="alice"><link_ctn id="link_bob"/><link_ctn id="switch"/><link_ctn id="link_alice"/></route>
+ <route src="bob" dst="alice">
+ <link_ctn id="link_bob"/>
+ <link_ctn id="switch"/>
+ <link_ctn id="link_alice"/>
+ </route>
</AS>
</platform>
<link id="link1" bandwidth="125MBps" latency="50us"/>
- <route src="bob" dst="alice"><link_ctn id="link1"/></route>
+ <route src="bob" dst="alice">
+ <link_ctn id="link1"/>
+ </route>
</AS>
</platform>
<link id="link1" bandwidth="125MBps" latency="50us" sharing_policy="FULLDUPLEX"/>
- <route src="alice" dst="bob" symmetrical="NO"><link_ctn id="link1" direction="UP"/></route>
- <route src="bob" dst="alice" symmetrical="NO"><link_ctn id="link1" direction="DOWN"/></route>
+ <route src="alice" dst="bob" symmetrical="NO">
+ <link_ctn id="link1" direction="UP"/>
+ </route>
+ <route src="bob" dst="alice" symmetrical="NO">
+ <link_ctn id="link1" direction="DOWN"/>
+ </route>
</AS>
</platform>
src/s4u/s4u_host.cpp
src/s4u/s4u_mailbox.cpp
src/s4u/s4u_mutex.cpp
+ src/s4u/s4u_conditionVariable.cpp
src/s4u/s4u_storage.cpp
)
include/simgrid/s4u/host.hpp
include/simgrid/s4u/mailbox.hpp
include/simgrid/s4u/mutex.hpp
+ include/simgrid/s4u/conditionVariable.hpp
include/simgrid/s4u/storage.hpp
include/simgrid/s4u.h
include/simgrid/plugins/energy.h