From: schnorr Date: Mon, 4 Oct 2010 15:55:53 +0000 (+0000) Subject: memory address is the unique identifier of links in the paje trace file X-Git-Tag: v3_5~480 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/5c3a025bb4b8371564ef0e7565559e03c95be97b memory address is the unique identifier of links in the paje trace file details & todo: - loopback links are traced - still have to do the same thing for hosts git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8344 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/instr/private.h b/src/instr/private.h index 6a1445bd93..3ca43f5bbe 100644 --- a/src/instr/private.h +++ b/src/instr/private.h @@ -106,9 +106,9 @@ void TRACE_surf_host_declaration (char *name, double power); void TRACE_surf_host_set_power (double date, char *resource, double power); void TRACE_surf_host_define_id (const char *name, int host_id); void TRACE_surf_host_vivaldi_parse (char *host, double x, double y, double h); -void TRACE_surf_link_declaration (char *name, double bw, double lat); -void TRACE_surf_link_set_bandwidth (double date, char *resource, double bandwidth); -void TRACE_surf_link_set_latency (double date, char *resource, double latency); +void TRACE_surf_link_declaration (void *link, char *name, double bw, double lat); +void TRACE_surf_link_set_bandwidth (double date, void *link, double bandwidth); +void TRACE_surf_link_set_latency (double date, void *link, double latency); void TRACE_surf_link_missing (void); void TRACE_msg_clean (void); @@ -144,7 +144,7 @@ void TRACE_global_init(int *argc, char **argv); /* from resource_utilization.c */ void TRACE_surf_host_set_utilization (const char *name, smx_action_t smx_action, double value, double now, double delta); -void TRACE_surf_link_set_utilization (const char *name, smx_action_t smx_action, double value, double now, double delta); +void TRACE_surf_link_set_utilization (void *link, smx_action_t smx_action, double value, double now, double delta); void __TRACE_surf_resource_utilization_start (smx_action_t action); void __TRACE_surf_resource_utilization_event (smx_action_t action, double now, double delta, const char *variable, const char *resource, double value); void __TRACE_surf_resource_utilization_end (smx_action_t action); diff --git a/src/instr/resource_utilization.c b/src/instr/resource_utilization.c index ef31072d04..0a3feac3b4 100644 --- a/src/instr/resource_utilization.c +++ b/src/instr/resource_utilization.c @@ -326,19 +326,17 @@ static void __TRACE_surf_resource_utilization_finalize_C () /* * TRACE_surf_link_set_utilization: entry point from SimGrid */ -void TRACE_surf_link_set_utilization (const char *name, smx_action_t smx_action, double value, double now, double delta) +void TRACE_surf_link_set_utilization (void *link, smx_action_t smx_action, double value, double now, double delta) { char type[100]; if (!IS_TRACING || !IS_TRACED(smx_action)) return; - if (strcmp (name, "__loopback__")==0 || - strcmp (name, "loopback")==0){ //ignore loopback updates - return; - } if (!value) return; + char resource[100]; + snprintf (resource, 100, "%p", link); snprintf (type, 100, "b%s", smx_action->category); - __TRACE_surf_resource_utilization_event (smx_action, now, delta, type, name, value); + __TRACE_surf_resource_utilization_event (smx_action, now, delta, type, resource, value); return; } diff --git a/src/instr/surf_instr.c b/src/instr/surf_instr.c index 5192505f3e..29dd9f5b69 100644 --- a/src/instr/surf_instr.c +++ b/src/instr/surf_instr.c @@ -63,19 +63,16 @@ static void __TRACE_surf_set_resource_variable (double date, const char *variabl * main: create LINK container, set initial bandwidth and latency * return: void */ -void TRACE_surf_link_declaration (char *name, double bw, double lat) +void TRACE_surf_link_declaration (void *link, char *name, double bw, double lat) { if (!IS_TRACING) return; - if (strcmp (name, "__loopback__")==0 || - strcmp (name, "loopback")==0){ //ignore loopback updates - return; - } - - pajeCreateContainer (SIMIX_get_clock(), name, "LINK", "platform", name); - xbt_dict_set (created_links, name, xbt_strdup ("1"), xbt_free); - TRACE_surf_link_set_bandwidth (SIMIX_get_clock(), name, bw); - TRACE_surf_link_set_latency (SIMIX_get_clock(), name, lat); + char alias[100]; + snprintf (alias, 100, "%p", link); + pajeCreateContainer (SIMIX_get_clock(), alias, "LINK", "platform", name); + xbt_dict_set (created_links, alias, xbt_strdup ("1"), xbt_free); + TRACE_surf_link_set_bandwidth (SIMIX_get_clock(), link, bw); + TRACE_surf_link_set_latency (SIMIX_get_clock(), link, lat); } /* @@ -100,13 +97,17 @@ void TRACE_surf_host_set_power (double date, char *resource, double power) __TRACE_surf_set_resource_variable (date, "power", resource, power); } -void TRACE_surf_link_set_bandwidth (double date, char *resource, double bandwidth) +void TRACE_surf_link_set_bandwidth (double date, void *link, double bandwidth) { + char resource[100]; + snprintf (resource, 100, "%p", link); __TRACE_surf_set_resource_variable (date, "bandwidth", resource, bandwidth); } -void TRACE_surf_link_set_latency (double date, char *resource, double latency) +void TRACE_surf_link_set_latency (double date, void *link, double latency) { + char resource[100]; + snprintf (resource, 100, "%p", link); __TRACE_surf_set_resource_variable (date, "latency", resource, latency); } diff --git a/src/instr/variables_instr.c b/src/instr/variables_instr.c index 9f4a752cb2..0e9722ac16 100644 --- a/src/instr/variables_instr.c +++ b/src/instr/variables_instr.c @@ -14,13 +14,9 @@ extern routing_global_t global_routing; void __TRACE_link_variable (double time, const char *src, const char *dst, const char *variable, double value, const char *what) { - char valuestr[100]; - xbt_dynar_t route = NULL; - unsigned int i; - void *link_ptr; - char *link = NULL; if (!IS_TRACING || !IS_TRACING_PLATFORM) return; + char valuestr[100]; snprintf (valuestr, 100, "%g", value); if (strcmp (what, "declare") == 0){ @@ -29,17 +25,20 @@ void __TRACE_link_variable (double time, const char *src, const char *dst, const } if (!global_routing) return; - route = global_routing->get_route(src, dst); + xbt_dynar_t route = global_routing->get_route(src, dst); + unsigned int i; + void *link_ptr; xbt_dynar_foreach(route, i, link_ptr) { - link = (*(link_CM02_t)link_ptr).lmm_resource.generic_resource.name; + char resource[100]; + snprintf (resource, 100, "%p", link_ptr); if (strcmp (what, "set") == 0){ - pajeSetVariable (time, variable, link, valuestr); + pajeSetVariable (time, variable, resource, valuestr); }else if (strcmp (what, "add") == 0){ - pajeAddVariable (time, variable, link, valuestr); + pajeAddVariable (time, variable, resource, valuestr); }else if (strcmp (what, "sub") == 0){ - pajeSubVariable (time, variable, link, valuestr); + pajeSubVariable (time, variable, resource, valuestr); } } } diff --git a/src/surf/network.c b/src/surf/network.c index 66d886ab20..67f7731e44 100644 --- a/src/surf/network.c +++ b/src/surf/network.c @@ -121,7 +121,7 @@ static link_CM02_t net_link_new(char *name, xbt_dict_set(surf_network_model->resource_set, name, nw_link, surf_resource_free); #ifdef HAVE_TRACING - TRACE_surf_link_declaration (name, bw_initial, lat_initial); + TRACE_surf_link_declaration (nw_link, name, bw_initial, lat_initial); #endif return nw_link; @@ -350,7 +350,7 @@ static void net_update_actions_state(double now, double delta) link_CM02_t link; unsigned int i; xbt_dynar_foreach(route, i, link) { - TRACE_surf_link_set_utilization (link->lmm_resource.generic_resource.name, + TRACE_surf_link_set_utilization (link, action->generic_action.data, lmm_variable_getvalue(action->variable), now-delta, delta); } #endif @@ -399,7 +399,7 @@ static void net_update_resource_state(void *id, (nw_link->lmm_resource.power.peak * nw_link->lmm_resource.power.scale)); #ifdef HAVE_TRACING - TRACE_surf_link_set_bandwidth (date, nw_link->lmm_resource.generic_resource.name, sg_bandwidth_factor * (nw_link->lmm_resource.power.peak * nw_link->lmm_resource.power.scale)); + TRACE_surf_link_set_bandwidth (date, nw_link, sg_bandwidth_factor * (nw_link->lmm_resource.power.peak * nw_link->lmm_resource.power.scale)); #endif if (sg_weight_S_parameter > 0) { while ((var = lmm_get_var_from_cnst