X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8e8f8b64b899284cbd166542ba352cd0c44059e8..2f2ce19fcb66a634c19de8dda2dc4b4896203537:/src/surf/instr_routing.c diff --git a/src/surf/instr_routing.c b/src/surf/instr_routing.c index 285a03b1bd..fd095a1c55 100644 --- a/src/surf/instr_routing.c +++ b/src/surf/instr_routing.c @@ -1,21 +1,17 @@ -/* Copyright (c) 2010. The SimGrid Team. +/* Copyright (c) 2010, 2012-2013. 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 "instr/instr_private.h" -#include "mc/mc.h" #ifdef HAVE_TRACING #include "surf/surf_private.h" -#include "surf/network_private.h" #include "xbt/graph.h" XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_routing, instr, "Tracing platform hierarchy"); -extern xbt_dict_t defined_types; /* from instr_interface.c */ - static int platform_created = 0; /* indicate whether the platform file has been traced */ static xbt_dynar_t currentContainer = NULL; /* push and pop, used only in creation */ @@ -119,9 +115,6 @@ static void linkContainers (container_t src, container_t dst, xbt_dict_t filter) //create the link static long long counter = 0; - if(MC_is_active()) - MC_ignore_data_bss(&counter, sizeof(counter)); - char key[INSTR_DEFAULT_STR_SIZE]; snprintf (key, INSTR_DEFAULT_STR_SIZE, "%lld", counter++); new_pajeStartLink(SIMIX_get_clock(), father, link_type, src, "topology", key); @@ -130,38 +123,26 @@ static void linkContainers (container_t src, container_t dst, xbt_dict_t filter) XBT_DEBUG (" linkContainers %s <-> %s", src->name, dst->name); } -static int graph_extraction_filter_out (container_t c1, container_t c2) -{ - if (c1->kind == INSTR_LINK || - c1->kind == INSTR_SMPI || - c1->kind == INSTR_MSG_PROCESS || - c1->kind == INSTR_MSG_TASK || - (c2 && strcmp (c1->name, c2->name) == 0)) - return 1; - else - return 0; -} - static void recursiveGraphExtraction (AS_t rc, container_t container, xbt_dict_t filter) { if (!TRACE_platform_topology()){ - XBT_DEBUG("Graph extracing disable by user."); + XBT_DEBUG("Graph extraction disabled by user."); return; } - XBT_DEBUG ("Graph extraction for routing_component = %s", rc->name); - if (!xbt_dict_is_empty(rc->routing_sons)){ + XBT_DEBUG ("Graph extraction for routing_component = %s", surf_AS_get_name(rc)); + if (!xbt_dict_is_empty(surf_AS_get_routing_sons(rc))){ xbt_dict_cursor_t cursor = NULL; AS_t rc_son; char *child_name; //bottom-up recursion - xbt_dict_foreach(rc->routing_sons, cursor, child_name, rc_son) { - container_t child_container = xbt_dict_get (container->children, rc_son->name); + xbt_dict_foreach(surf_AS_get_routing_sons(rc), cursor, child_name, rc_son) { + container_t child_container = xbt_dict_get (container->children, surf_AS_get_name(rc_son)); recursiveGraphExtraction (rc_son, child_container, filter); } } { - xbt_graph_t graph = xbt_graph_new_graph (0, NULL); + xbt_graph_t graph = xbt_graph_new_graph (0, NULL); xbt_dict_t nodes = xbt_dict_new_homogeneous(NULL); xbt_dict_t edges = xbt_dict_new_homogeneous(NULL); xbt_edge_t edge = NULL; @@ -169,7 +150,7 @@ static void recursiveGraphExtraction (AS_t rc, container_t container, xbt_dict_t xbt_dict_cursor_t cursor = NULL; char *edge_name; - rc->get_graph(graph,nodes,edges,rc); + surf_AS_get_graph(rc, graph, nodes, edges); xbt_dict_foreach(edges,cursor,edge_name,edge) { linkContainers(PJ_container_get(edge->src->data), PJ_container_get(edge->dst->data), filter); } @@ -177,7 +158,6 @@ static void recursiveGraphExtraction (AS_t rc, container_t container, xbt_dict_t xbt_dict_free (&edges); xbt_graph_free_graph(graph,xbt_free, xbt_free, NULL); } - } /* @@ -250,7 +230,7 @@ static void instr_routing_parse_start_link (sg_platf_link_cbarg_t link) container_t new = PJ_container_new (link_name, INSTR_LINK, father); - if (TRACE_categorized() || TRACE_uncategorized() || TRACE_platform()){ + if ((TRACE_categorized() || TRACE_uncategorized() || TRACE_platform()) && (! TRACE_disable_link())) { type_t bandwidth = PJ_type_get_or_null ("bandwidth", new->type); if (bandwidth == NULL){ bandwidth = PJ_type_variable_new ("bandwidth", NULL, new->type); @@ -278,12 +258,15 @@ static void instr_routing_parse_start_host (sg_platf_host_cbarg_t host) container_t father = *(container_t*)xbt_dynar_get_ptr(currentContainer, xbt_dynar_length(currentContainer)-1); container_t new = PJ_container_new (host->id, INSTR_HOST, father); - if (TRACE_categorized() || TRACE_uncategorized() || TRACE_platform()) { + if ((TRACE_categorized() || TRACE_uncategorized() || TRACE_platform()) && (! TRACE_disable_power())) { type_t power = PJ_type_get_or_null ("power", new->type); if (power == NULL){ power = PJ_type_variable_new ("power", NULL, new->type); } - new_pajeSetVariable (0, new, power, host->power_peak); + + double current_power_state; + xbt_dynar_get_cpy(host->power_peak, host->pstate, ¤t_power_state); + new_pajeSetVariable (0, new, power, current_power_state); } if (TRACE_uncategorized()){ type_t power_used = PJ_type_get_or_null ("power_used", new->type); @@ -345,7 +328,7 @@ static void instr_routing_parse_end_platform () currentContainer = NULL; xbt_dict_t filter = xbt_dict_new_homogeneous(xbt_free); XBT_DEBUG ("Starting graph extraction."); - recursiveGraphExtraction (routing_platf->root, PJ_container_get_root(), filter); + recursiveGraphExtraction (surf_platf_get_root(routing_platf), PJ_container_get_root(), filter); XBT_DEBUG ("Graph extraction finished."); xbt_dict_free(&filter); platform_created = 1; @@ -465,18 +448,18 @@ int instr_platform_traced () static void recursiveXBTGraphExtraction (xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges, AS_t rc, container_t container) { - if (!xbt_dict_is_empty(rc->routing_sons)){ + if (!xbt_dict_is_empty(surf_AS_get_routing_sons(rc))){ xbt_dict_cursor_t cursor = NULL; AS_t rc_son; char *child_name; //bottom-up recursion - xbt_dict_foreach(rc->routing_sons, cursor, child_name, rc_son) { - container_t child_container = xbt_dict_get (container->children, rc_son->name); + xbt_dict_foreach(surf_AS_get_routing_sons(rc), cursor, child_name, rc_son) { + container_t child_container = xbt_dict_get (container->children, surf_AS_get_name(rc_son)); recursiveXBTGraphExtraction (graph, nodes, edges, rc_son, child_container); } } - rc->get_graph(graph,nodes,edges,rc); + surf_AS_get_graph(rc, graph, nodes, edges); } xbt_graph_t instr_routing_platform_graph (void) @@ -484,7 +467,7 @@ xbt_graph_t instr_routing_platform_graph (void) xbt_graph_t ret = xbt_graph_new_graph (0, NULL); xbt_dict_t nodes = xbt_dict_new_homogeneous(NULL); xbt_dict_t edges = xbt_dict_new_homogeneous(NULL); - recursiveXBTGraphExtraction (ret, nodes, edges, routing_platf->root, PJ_container_get_root()); + recursiveXBTGraphExtraction (ret, nodes, edges, surf_platf_get_root(routing_platf), PJ_container_get_root()); xbt_dict_free (&nodes); xbt_dict_free (&edges); return ret;