endforeach()
foreach (file actions-comm actions-storage app-bittorrent app-chainsend app-masterworker app-pingpong async-wait
- async-waitall async-waitany dht-chord dht-kademlia dht-pastry io-remote platform-properties maestro-set
+ async-waitall async-waitany dht-chord dht-kademlia io-remote platform-properties maestro-set
task-priority)
set(xml_files ${xml_files} ${CMAKE_CURRENT_SOURCE_DIR}/${file}/${file}_d.xml)
endforeach()
foreach(x actions-comm actions-storage app-bittorrent app-chainsend app-masterworker app-pingpong app-token-ring
async-wait async-waitall async-waitany cloud-capping cloud-masterworker cloud-migration cloud-simple
- cloud-two-tasks dht-chord dht-kademlia platform-failures io-file io-remote io-storage task-priority
+ cloud-two-tasks dht-chord dht-pastry dht-kademlia platform-failures io-file io-remote io-storage task-priority
process-create process-kill process-migration process-suspend platform-properties synchro-semaphore
process-startkilltime)
ADD_TESH_FACTORIES(msg-${x} "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/${x} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_HOME_DIRECTORY}/examples/msg/${x} ${x}.tesh)
if(HAVE_NS3)
ADD_TESH_FACTORIES(msg-network-ns3 "thread;ucontext;raw;boost" --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/network-ns3/network-ns3.tesh)
endif()
-
-# This one is not usable:
-# ADD_TESH_FACTORIES(msg-dht-pastry "thread;ucontext;raw;boost" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg/dht-pastry --cd ${CMAKE_BINARY_DIR}/examples/msg/dht-pastry dht-pastry.tesh)
static void set_finger(node_t node, int finger_index, int id);
static void set_predecessor(node_t node, int predecessor_id);
-// process functions
-static int node(int argc, char *argv[]);
+//// process functions
static void handle_task(node_t node, msg_task_t task);
-// Chord core
+//// Chord core
static void create(node_t node);
static int join(node_t node, int known_id);
static void leave(node_t node);
static void remote_notify(node_t node, int notify_to, int predecessor_candidate_id);
static void fix_fingers(node_t node);
static void check_predecessor(node_t node);
-static void random_lookup(node_t);
+static void random_lookup(node_t node);
static void quit_notify(node_t node);
/* Global initialization of the Chord simulation. */
{
// compute the powers of 2 once for all
powers2 = xbt_new(int, nb_bits);
- int pow = 1;
+ unsigned int pow = 1;
unsigned i;
for (i = 0; i < nb_bits; i++) {
powers2[i] = pow;
/* Turns an id into an equivalent id in [0, nb_keys). */
static int normalize(int id)
{
- // like id % nb_keys, but works with negatives numbers (and faster)
- return id & (nb_keys - 1);
+ return id % nb_keys;
}
/* Returns whether an id belongs to the interval [start, end].
*
- * The parameters are noramlized to make sure they are between 0 and nb_keys - 1).
+ * The parameters are normalized to make sure they are between 0 and nb_keys - 1).
* 1 belongs to [62, 3]
* 1 does not belong to [3, 62]
* 63 belongs to [62, 3]
*/
static int is_in_interval(int id, int start, int end)
{
- id = normalize(id);
- start = normalize(start);
- end = normalize(end);
+ int i = normalize(id);
+ int s = normalize(start);
+ int e = normalize(end);
// make sure end >= start and id >= start
- if (end < start) {
- end += nb_keys;
+ if (e < s) {
+ e += nb_keys;
}
- if (id < start) {
- id += nb_keys;
+ if (i < s) {
+ i += nb_keys;
}
- return id <= end;
+ return i <= e;
}
/* Gets the mailbox name of a host given its chord id.
static void print_finger_table(node_t node)
{
if (XBT_LOG_ISENABLED(msg_chord, xbt_log_priority_verbose)) {
- int i;
XBT_VERB("My finger table:");
XBT_VERB("Start | Succ");
- for (i = 0; i < nb_bits; i++) {
+ for (int i = 0; i < nb_bits; i++) {
XBT_VERB(" %3d | %3d", (node->id + powers2[i]) % nb_keys, node->fingers[i].id);
}
XBT_VERB("Predecessor: %d", node->pred_id);
* - the id of a guy I know in the system (except for the first node)
* - the time to sleep before I join (except for the first node)
*/
-int node(int argc, char *argv[])
+static int node(int argc, char *argv[])
{
-
/* Reduce the run size for the MC */
if(MC_is_active() || MC_record_replay_is_active()){
periodic_stabilize_delay = 8;
} else {
int known_id = xbt_str_parse_int(argv[2],"Invalid root ID: %s");
- //double sleep_time = atof(argv[3]);
deadline = xbt_str_parse_double(argv[4],"Invalid deadline: %s");
- /*
- // sleep before starting
- XBT_DEBUG("Let's sleep during %f", sleep_time);
- MSG_process_sleep(sleep_time);
- */
XBT_DEBUG("Hey! Let's join the system.");
join_success = join(&node, known_id);
task_data->type = TASK_FIND_SUCCESSOR_ANSWER;
task_data->answer_id = node->fingers[0].id;
XBT_DEBUG("Sending back a 'Find Successor Answer' to %s (mailbox %s): the successor of %d is %d",
- task_data->issuer_host_name,
- task_data->answer_to,
- task_data->request_id, task_data->answer_id);
+ task_data->issuer_host_name, task_data->answer_to, task_data->request_id, task_data->answer_id);
MSG_task_dsend(task, task_data->answer_to, task_free);
- }
- else {
+ } else {
// otherwise, forward the request to the closest preceding finger in my table
int closest = closest_preceding_node(node, task_data->request_id);
XBT_DEBUG("Forwarding the 'Find Successor' request for id %d to my closest preceding finger %d",
task_data->type = TASK_GET_PREDECESSOR_ANSWER;
task_data->answer_id = node->pred_id;
XBT_DEBUG("Sending back a 'Get Predecessor Answer' to %s via mailbox '%s': my predecessor is %d",
- task_data->issuer_host_name,
- task_data->answer_to, task_data->answer_id);
+ task_data->issuer_host_name, task_data->answer_to, task_data->answer_id);
MSG_task_dsend(task, task_data->answer_to, task_free);
break;
XBT_DEBUG("Receiving a 'Predecessor Alive' request from %s", task_data->issuer_host_name);
task_data->type = TASK_PREDECESSOR_ALIVE_ANSWER;
XBT_DEBUG("Sending back a 'Predecessor Alive Answer' to %s (mailbox %s)",
- task_data->issuer_host_name,
- task_data->answer_to);
+ task_data->issuer_host_name, task_data->answer_to);
MSG_task_dsend(task, task_data->answer_to, task_free);
break;
XBT_INFO("Joining the ring with id %d, knowing node %d", node->id, known_id);
set_predecessor(node, -1); // no predecessor (yet)
- /*
- for (int i = 0; i < nb_bits; i++)
- set_finger(node, i, known_id);
- */
-
int successor_id = remote_find_successor(node, known_id, node->id);
if (successor_id == -1) {
XBT_INFO("Cannot join the ring.");
msg_task_t task_sent = MSG_task_create(NULL, COMP_SIZE, COMM_SIZE, req_data);
XBT_DEBUG("Sending a 'PREDECESSOR_LEAVING' to my successor %d",node->fingers[0].id);
- if (MSG_task_send_with_timeout(task_sent, node->fingers[0].mailbox, timeout)==
- MSG_TIMEOUT) {
- XBT_DEBUG("Timeout expired when sending a 'PREDECESSOR_LEAVING' to my successor %d",
- node->fingers[0].id);
+ if (MSG_task_send_with_timeout(task_sent, node->fingers[0].mailbox, timeout)== MSG_TIMEOUT) {
+ XBT_DEBUG("Timeout expired when sending a 'PREDECESSOR_LEAVING' to my successor %d", node->fingers[0].id);
task_free(task_sent);
}
msg_task_t task_sent_s = MSG_task_create(NULL, COMP_SIZE, COMM_SIZE, req_data_s);
XBT_DEBUG("Sending a 'SUCCESSOR_LEAVING' to my predecessor %d",node->pred_id);
- if (MSG_task_send_with_timeout(task_sent_s, mailbox, timeout)==
- MSG_TIMEOUT) {
- XBT_DEBUG("Timeout expired when sending a 'SUCCESSOR_LEAVING' to my predecessor %d",
- node->pred_id);
+ if (MSG_task_send_with_timeout(task_sent_s, mailbox, timeout)== MSG_TIMEOUT) {
+ XBT_DEBUG("Timeout expired when sending a 'SUCCESSOR_LEAVING' to my predecessor %d", node->pred_id);
task_free(task_sent_s);
}
-
}
/* Makes the current node find the successor node of an id.
msg_error_t res = MSG_task_send_with_timeout(task_sent, mailbox, timeout);
if (res != MSG_OK) {
- XBT_DEBUG("Failed to send the 'Find Successor' request (task %p) to %d for id %d",
- task_sent, ask_to, id);
+ XBT_DEBUG("Failed to send the 'Find Successor' request (task %p) to %d for id %d", task_sent, ask_to, id);
task_free(task_sent);
}
else {
* \param id the id to find
* \return the closest preceding finger of that id
*/
-int closest_preceding_node(node_t node, int id)
+static int closest_preceding_node(node_t node, int id)
{
int i;
for (i = nb_bits - 1; i >= 0; i--) {
/* TODO: *
* - handle node departure *
* - handle objects on the network *
- * - handle neighborood in the update */
+ * - handle neighborhood in the update */
#define COMM_SIZE 10
#define COMP_SIZE 0
/* Print the node id */
static void print_node_id(node_t node) {
- int i;
- printf(" id: %i '%08x' ", node->id, node->id);
- for (i=0;i<LEVELS_COUNT;i++)
- printf(" %x", domain(node->id, i));
- printf("\n");
+ XBT_INFO(" Id: %i '%08x' ", node->id, node->id);
}
/* * Print the node neighborhood set */
static void print_node_neighborood_set(node_t node) {
- int i;
- printf(" Neighborhood:\n");
- for (i=0; i<NEIGHBORHOOD_SIZE; i++)
- printf(" %08x\n", node->neighborhood_set[i]);
+ XBT_INFO(" Neighborhood:");
+ for (int i=0; i<NEIGHBORHOOD_SIZE; i++)
+ XBT_INFO(" %08x", node->neighborhood_set[i]);
}
/* Print the routing table */
static void print_node_routing_table(node_t node) {
- printf(" routing table:\n");
+ XBT_INFO(" Routing table:");
for (int i=0; i<LEVELS_COUNT; i++){
- printf(" ");
for (int j=0; j<LEVEL_SIZE; j++)
- printf("%08x ", node->routing_table[i][j]);
- printf("\n");
+ XBT_INFO(" %08x ", node->routing_table[i][j]);
}
}
/* Print the node namespace set */
static void print_node_namespace_set(node_t node) {
- printf(" namespace:\n");
+ XBT_INFO(" Namespace:");
for (int i=0; i<NAMESPACE_SIZE; i++)
- printf(" %08x\n", node->namespace_set[i]);
- printf("\n");
+ XBT_INFO(" %08x", node->namespace_set[i]);
}
/* Print the node information */
static void print_node(node_t node) {
- printf("Node:\n");
+ XBT_INFO("Node:");
print_node_id(node);
print_node_neighborood_set(node);
print_node_routing_table(node);
XBT_DEBUG("Task update %i !!!", node->id);
/* Update namespace ses */
- printf("Task update from %i !!!\n", task_data->sender_id);
+ XBT_INFO("Task update from %i !!!", task_data->sender_id);
+ XBT_INFO("Node:");
print_node_id(node);
print_node_namespace_set(node);
int curr_namespace_set[NAMESPACE_SIZE];
int task_namespace_set[NAMESPACE_SIZE+1];
- // Copy the current namedspace
- // and the task state namespace with state->id in the middle
+ // Copy the current namespace and the task state namespace with state->id in the middle
i=0;
for (; i<NAMESPACE_SIZE/2; i++){
curr_namespace_set[i] = node->namespace_set[i];
max = -1;
for (i=0; i<=NAMESPACE_SIZE; i++) {
j = task_namespace_set[i];
- if (i<NAMESPACE_SIZE)
- printf("%08x %08x | ", j, curr_namespace_set[i]);
if (j != -1 && j < node->id) min = i;
if (j != -1 && max == -1 && j > node->id) max = i;
}
- printf("\n");
// add lower elements
j = NAMESPACE_SIZE/2-1;
for (i=NAMESPACE_SIZE/2-1; i>=0; i--) {
- printf("i:%i, j:%i, min:%i, currj:%08x, taskmin:%08x\n", i, j, min, curr_namespace_set[j],
- task_namespace_set[min]);
if (min<0) {
node->namespace_set[i] = curr_namespace_set[j];
j--;
// add greater elements
j = NAMESPACE_SIZE/2;
for (i=NAMESPACE_SIZE/2; i<NAMESPACE_SIZE; i++) {
- printf("i:%i, j:%i, max:%i, currj:%08x, taskmax:%08x\n", i, j, max, curr_namespace_set[j],
- task_namespace_set[max]);
if (min<0 || max>=NAMESPACE_SIZE) {
node->namespace_set[i] = curr_namespace_set[j];
j++;
max++;
}
}
- print_node_namespace_set(node);
/* Update routing table */
for (i=shl(node->id, task_data->state->id); i<LEVELS_COUNT; i++) {
return 1;
}
-
/**
* \brief Node Function
* Arguments:
}
}
- print_node(&node);
}
return 1;
}
#! ./tesh
-p Testing the Chord implementation with MSG
+p Testing the Pastry implementation with MSG (use the deployment file for chord in ../dht-chord)
-$ $SG_TEST_EXENV ${bindir:=.}/dht-pastry$EXEEXT -nb_bits=6 ${srcdir:=.}/../../platforms/platform.xml ${srcdir:=.}/dht-pastry_d.xml --cfg=network/crosstraffic:0 --log=msg_pastry.thres:verbose "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ $SG_TEST_EXENV ${bindir:=.}/dht-pastry$EXEEXT -nb_bits=6 ${srcdir:=.}/cluster.xml ${srcdir:=.}/../msg/dht-chord/dht-chord_d.xml --log=msg_pastry.thres:verbose "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 25.007806] (1:node@node-0.acme.org) Task update from 366680 !!!
+> [ 25.007806] (1:node@node-0.acme.org) Node:
+> [ 25.007806] (1:node@node-0.acme.org) Id: 42 '0000002a'
+> [ 25.007806] (1:node@node-0.acme.org) Namespace:
+> [ 25.007806] (1:node@node-0.acme.org) ffffffff
+> [ 25.007806] (1:node@node-0.acme.org) ffffffff
+> [ 25.007806] (1:node@node-0.acme.org) ffffffff
+> [ 25.007806] (1:node@node-0.acme.org) ffffffff
+> [ 25.007806] (1:node@node-0.acme.org) ffffffff
+> [ 25.007806] (1:node@node-0.acme.org) ffffffff
+> [ 40.015612] (1:node@node-0.acme.org) Task update from 533744 !!!
+> [ 40.015612] (1:node@node-0.acme.org) Node:
+> [ 40.015612] (1:node@node-0.acme.org) Id: 42 '0000002a'
+> [ 40.015612] (1:node@node-0.acme.org) Namespace:
+> [ 40.015612] (1:node@node-0.acme.org) ffffffff
+> [ 40.015612] (1:node@node-0.acme.org) ffffffff
+> [ 40.015612] (1:node@node-0.acme.org) ffffffff
+> [ 40.015612] (1:node@node-0.acme.org) ffffffff
+> [ 40.015612] (1:node@node-0.acme.org) ffffffff
+> [ 40.015612] (1:node@node-0.acme.org) ffffffff
+> [ 40.023418] (2:node@node-1.acme.org) Task update from 533744 !!!
+> [ 40.023418] (2:node@node-1.acme.org) Node:
+> [ 40.023418] (2:node@node-1.acme.org) Id: 366680 '00059858'
+> [ 40.023418] (2:node@node-1.acme.org) Namespace:
+> [ 40.023418] (2:node@node-1.acme.org) ffffffff
+> [ 40.023418] (2:node@node-1.acme.org) ffffffff
+> [ 40.023418] (2:node@node-1.acme.org) 0000002a
+> [ 40.023418] (2:node@node-1.acme.org) ffffffff
+> [ 40.023418] (2:node@node-1.acme.org) ffffffff
+> [ 40.023418] (2:node@node-1.acme.org) ffffffff
+> [ 45.015612] (1:node@node-0.acme.org) Task update from 1319738 !!!
+> [ 45.015612] (1:node@node-0.acme.org) Node:
+> [ 45.015612] (1:node@node-0.acme.org) Id: 42 '0000002a'
+> [ 45.015612] (1:node@node-0.acme.org) Namespace:
+> [ 45.015612] (1:node@node-0.acme.org) ffffffff
+> [ 45.015612] (1:node@node-0.acme.org) ffffffff
+> [ 45.015612] (1:node@node-0.acme.org) ffffffff
+> [ 45.015612] (1:node@node-0.acme.org) ffffffff
+> [ 45.015612] (1:node@node-0.acme.org) ffffffff
+> [ 45.015612] (1:node@node-0.acme.org) ffffffff
+> [ 55.015612] (1:node@node-0.acme.org) Task update from 16509405 !!!
+> [ 55.015612] (1:node@node-0.acme.org) Node:
+> [ 55.015612] (1:node@node-0.acme.org) Id: 42 '0000002a'
+> [ 55.015612] (1:node@node-0.acme.org) Namespace:
+> [ 55.015612] (1:node@node-0.acme.org) ffffffff
+> [ 55.015612] (1:node@node-0.acme.org) ffffffff
+> [ 55.015612] (1:node@node-0.acme.org) ffffffff
+> [ 55.015612] (1:node@node-0.acme.org) ffffffff
+> [ 55.015612] (1:node@node-0.acme.org) ffffffff
+> [ 55.015612] (1:node@node-0.acme.org) ffffffff
+> [ 55.031224] (2:node@node-1.acme.org) Task update from 16509405 !!!
+> [ 55.031224] (2:node@node-1.acme.org) Node:
+> [ 55.031224] (2:node@node-1.acme.org) Id: 366680 '00059858'
+> [ 55.031224] (2:node@node-1.acme.org) Namespace:
+> [ 55.031224] (2:node@node-1.acme.org) ffffffff
+> [ 55.031224] (2:node@node-1.acme.org) ffffffff
+> [ 55.031224] (2:node@node-1.acme.org) 0000002a
+> [ 55.031224] (2:node@node-1.acme.org) ffffffff
+> [ 55.031224] (2:node@node-1.acme.org) ffffffff
+> [ 55.031224] (2:node@node-1.acme.org) ffffffff
+> [ 60.015612] (1:node@node-0.acme.org) Task update from 10874876 !!!
+> [ 60.015612] (1:node@node-0.acme.org) Node:
+> [ 60.015612] (1:node@node-0.acme.org) Id: 42 '0000002a'
+> [ 60.015612] (1:node@node-0.acme.org) Namespace:
+> [ 60.015612] (1:node@node-0.acme.org) ffffffff
+> [ 60.015612] (1:node@node-0.acme.org) ffffffff
+> [ 60.015612] (1:node@node-0.acme.org) ffffffff
+> [ 60.015612] (1:node@node-0.acme.org) ffffffff
+> [ 60.015612] (1:node@node-0.acme.org) ffffffff
+> [ 60.015612] (1:node@node-0.acme.org) ffffffff
+> [ 60.031224] (2:node@node-1.acme.org) Task update from 10874876 !!!
+> [ 60.031224] (2:node@node-1.acme.org) Node:
+> [ 60.031224] (2:node@node-1.acme.org) Id: 366680 '00059858'
+> [ 60.031224] (2:node@node-1.acme.org) Namespace:
+> [ 60.031224] (2:node@node-1.acme.org) ffffffff
+> [ 60.031224] (2:node@node-1.acme.org) ffffffff
+> [ 60.031224] (2:node@node-1.acme.org) 0000002a
+> [ 60.031224] (2:node@node-1.acme.org) ffffffff
+> [ 60.031224] (2:node@node-1.acme.org) ffffffff
+> [ 60.031224] (2:node@node-1.acme.org) ffffffff
+> [ 60.039030] (3:node@node-2.acme.org) Task update from 10874876 !!!
+> [ 60.039030] (3:node@node-2.acme.org) Node:
+> [ 60.039030] (3:node@node-2.acme.org) Id: 533744 '000824f0'
+> [ 60.039030] (3:node@node-2.acme.org) Namespace:
+> [ 60.039030] (3:node@node-2.acme.org) ffffffff
+> [ 60.039030] (3:node@node-2.acme.org) 0000002a
+> [ 60.039030] (3:node@node-2.acme.org) 00059858
+> [ 60.039030] (3:node@node-2.acme.org) ffffffff
+> [ 60.039030] (3:node@node-2.acme.org) ffffffff
+> [ 60.039030] (3:node@node-2.acme.org) ffffffff
+> [ 65.031224] (4:node@node-3.acme.org) Task update from 16728096 !!!
+> [ 65.031224] (4:node@node-3.acme.org) Node:
+> [ 65.031224] (4:node@node-3.acme.org) Id: 1319738 '0014233a'
+> [ 65.031224] (4:node@node-3.acme.org) Namespace:
+> [ 65.031224] (4:node@node-3.acme.org) ffffffff
+> [ 65.031224] (4:node@node-3.acme.org) ffffffff
+> [ 65.031224] (4:node@node-3.acme.org) 0000002a
+> [ 65.031224] (4:node@node-3.acme.org) ffffffff
+> [ 65.031224] (4:node@node-3.acme.org) ffffffff
+> [ 65.031224] (4:node@node-3.acme.org) ffffffff
+> [ 70.015612] (1:node@node-0.acme.org) Task update from 16728096 !!!
+> [ 70.015612] (1:node@node-0.acme.org) Node:
+> [ 70.015612] (1:node@node-0.acme.org) Id: 42 '0000002a'
+> [ 70.015612] (1:node@node-0.acme.org) Namespace:
+> [ 70.015612] (1:node@node-0.acme.org) ffffffff
+> [ 70.015612] (1:node@node-0.acme.org) ffffffff
+> [ 70.015612] (1:node@node-0.acme.org) ffffffff
+> [ 70.015612] (1:node@node-0.acme.org) ffffffff
+> [ 70.015612] (1:node@node-0.acme.org) ffffffff
+> [ 70.015612] (1:node@node-0.acme.org) ffffffff
+> [ 75.031224] (2:node@node-1.acme.org) Task update from 10004760 !!!
+> [ 75.031224] (2:node@node-1.acme.org) Node:
+> [ 75.031224] (2:node@node-1.acme.org) Id: 366680 '00059858'
+> [ 75.031224] (2:node@node-1.acme.org) Namespace:
+> [ 75.031224] (2:node@node-1.acme.org) ffffffff
+> [ 75.031224] (2:node@node-1.acme.org) ffffffff
+> [ 75.031224] (2:node@node-1.acme.org) 0000002a
+> [ 75.031224] (2:node@node-1.acme.org) ffffffff
+> [ 75.031224] (2:node@node-1.acme.org) ffffffff
+> [ 75.031224] (2:node@node-1.acme.org) ffffffff
+> [ 75.054642] (5:node@node-4.acme.org) Task update from 10004760 !!!
+> [ 75.054642] (5:node@node-4.acme.org) Node:
+> [ 75.054642] (5:node@node-4.acme.org) Id: 16509405 '00fbe9dd'
+> [ 75.054642] (5:node@node-4.acme.org) Namespace:
+> [ 75.054642] (5:node@node-4.acme.org) ffffffff
+> [ 75.054642] (5:node@node-4.acme.org) 0000002a
+> [ 75.054642] (5:node@node-4.acme.org) 00059858
+> [ 75.054642] (5:node@node-4.acme.org) ffffffff
+> [ 75.054642] (5:node@node-4.acme.org) ffffffff
+> [ 75.054642] (5:node@node-4.acme.org) ffffffff
+> [ 80.015612] (1:node@node-0.acme.org) Task update from 10004760 !!!
+> [ 80.015612] (1:node@node-0.acme.org) Node:
+> [ 80.015612] (1:node@node-0.acme.org) Id: 42 '0000002a'
+> [ 80.015612] (1:node@node-0.acme.org) Namespace:
+> [ 80.015612] (1:node@node-0.acme.org) ffffffff
+> [ 80.015612] (1:node@node-0.acme.org) ffffffff
+> [ 80.015612] (1:node@node-0.acme.org) ffffffff
+> [ 80.015612] (1:node@node-0.acme.org) ffffffff
+> [ 80.015612] (1:node@node-0.acme.org) ffffffff
+> [ 80.015612] (1:node@node-0.acme.org) ffffffff
+> [ 95.023418] (1:node@node-0.acme.org) Task update from 6518808 !!!
+> [ 95.023418] (1:node@node-0.acme.org) Node:
+> [ 95.023418] (1:node@node-0.acme.org) Id: 42 '0000002a'
+> [ 95.023418] (1:node@node-0.acme.org) Namespace:
+> [ 95.023418] (1:node@node-0.acme.org) ffffffff
+> [ 95.023418] (1:node@node-0.acme.org) ffffffff
+> [ 95.023418] (1:node@node-0.acme.org) ffffffff
+> [ 95.023418] (1:node@node-0.acme.org) ffffffff
+> [ 95.023418] (1:node@node-0.acme.org) ffffffff
+> [ 95.023418] (1:node@node-0.acme.org) ffffffff
+> [100.023418] (1:node@node-0.acme.org) Task update from 2015253 !!!
+> [100.023418] (1:node@node-0.acme.org) Node:
+> [100.023418] (1:node@node-0.acme.org) Id: 42 '0000002a'
+> [100.023418] (1:node@node-0.acme.org) Namespace:
+> [100.023418] (1:node@node-0.acme.org) ffffffff
+> [100.023418] (1:node@node-0.acme.org) ffffffff
+> [100.023418] (1:node@node-0.acme.org) ffffffff
+> [100.023418] (1:node@node-0.acme.org) ffffffff
+> [100.023418] (1:node@node-0.acme.org) ffffffff
+> [100.023418] (1:node@node-0.acme.org) ffffffff
+> [100.039030] (4:node@node-3.acme.org) Task update from 2015253 !!!
+> [100.039030] (4:node@node-3.acme.org) Node:
+> [100.039030] (4:node@node-3.acme.org) Id: 1319738 '0014233a'
+> [100.039030] (4:node@node-3.acme.org) Namespace:
+> [100.039030] (4:node@node-3.acme.org) ffffffff
+> [100.039030] (4:node@node-3.acme.org) ffffffff
+> [100.039030] (4:node@node-3.acme.org) 0000002a
+> [100.039030] (4:node@node-3.acme.org) ffffffff
+> [100.039030] (4:node@node-3.acme.org) ffffffff
+> [100.039030] (4:node@node-3.acme.org) ffffffff
+> [1000.054642] (0:maestro@) Simulated time: 1000.05
+++ /dev/null
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4">
- <process host="c-0.me" function="node"><argument value="42"/><argument value="6000000"/></process>
- <process host="c-1.me" function="node"><argument value="366680" /><argument value="42" /><argument value="10" /><argument value="6000000" /></process>
- <process host="c-2.me" function="node"><argument value="533744" /><argument value="366680" /><argument value="20" /><argument value="6000000" /></process>
- <process host="c-3.me" function="node"><argument value="1319738" /><argument value="42" /><argument value="30" /><argument value="6000000" /></process>
- <process host="c-4.me" function="node"><argument value="16509405" /><argument value="366680" /><argument value="40" /><argument value="6000000" /></process>
- <process host="c-5.me" function="node"><argument value="10874876" /><argument value="533744" /><argument value="50" /><argument value="6000000" /></process>
- <process host="c-6.me" function="node"><argument value="16728096" /><argument value="1319738" /><argument value="60" /><argument value="6000000" /></process>
- <process host="c-7.me" function="node"><argument value="10004760" /><argument value="16509405" /><argument value="70" /><argument value="6000000" /></process>
- <process host="c-8.me" function="node"><argument value="6518808" /><argument value="42" /><argument value="80" /><argument value="6000000" /></process>
- <process host="c-9.me" function="node"><argument value="2015253" /><argument value="1319738" /><argument value="90" /><argument value="6000000" /></process>
-</platform>