X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2be3a64394c62297f906ab221d344c7340e44a02..8f53b49a3b699b15a97868ce7a137e9e43de444c:/src/instr/instr_config.c diff --git a/src/instr/instr_config.c b/src/instr/instr_config.c index 5bd8b1de64..67c7d50b2e 100644 --- a/src/instr/instr_config.c +++ b/src/instr/instr_config.c @@ -69,6 +69,10 @@ int TRACE_end() TRACE_generate_triva_cat_conf(); } + /* dump trace buffer */ + TRACE_last_timestamp_to_dump = surf_get_clock(); + TRACE_paje_dump_buffer(1); + /* destroy all data structures of tracing (and free) */ destroyAllContainers(); @@ -111,7 +115,8 @@ int TRACE_is_configured(void) int TRACE_smpi_is_enabled(void) { - return xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_SMPI); + return xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_SMPI) && + TRACE_is_enabled(); } int TRACE_smpi_is_grouped(void) @@ -131,17 +136,20 @@ int TRACE_uncategorized (void) int TRACE_msg_task_is_enabled(void) { - return xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_MSG_TASK); + return xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_MSG_TASK) && + TRACE_is_enabled(); } int TRACE_msg_process_is_enabled(void) { - return xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_MSG_PROCESS); + return xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_MSG_PROCESS) && + TRACE_is_enabled(); } int TRACE_msg_volume_is_enabled(void) { - return xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_MSG_VOLUME); + return xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_MSG_VOLUME) && + TRACE_is_enabled(); } char *TRACE_get_filename(void) @@ -346,38 +354,75 @@ void TRACE_generate_triva_uncat_conf (void) { char *output = TRACE_get_triva_uncat_conf (); if (output && strlen(output) > 0){ + xbt_dict_cursor_t cursor=NULL; + char *name, *value; + FILE *file = fopen (output, "w"); xbt_assert1 (file != NULL, "Unable to open file (%s) for writing triva graph " "configuration (uncategorized).", output); + + //open + fprintf (file, "{\n"); + + //register NODE types + fprintf (file, " node = ("); + xbt_dict_foreach(trivaNodeTypes, cursor, name, value) { + fprintf (file, "%s, ", name); + } + + //register EDGE types fprintf (file, - "{\n" - " node = (HOST);\n" - " edge = (LINK);\n" - "\n" - " HOST = {\n" - " size = power;\n" - " scale = global;\n" - " host_sep = {\n" - " type = separation;\n" - " size = power;\n" - " values = (power_used);\n" - " };\n" - " };\n" - " LINK = {\n" - " src = source;\n" - " dst = destination;\n" - " size = bandwidth;\n" - " scale = global;\n" - " link_sep = {\n" - " type = separation;\n" - " size = bandwidth;\n" - " values = (bandwidth_used);\n" - " };\n" - " };\n" - " graphviz-algorithm = neato;\n" - "}\n" - ); + ");\n" + " edge = ("); + xbt_dict_foreach(trivaEdgeTypes, cursor, name, value) { + fprintf (file, "%s, ", name); + } + fprintf (file, + ");\n" + "\n"); + + //register each NODE type layout + xbt_dict_foreach(trivaNodeTypes, cursor, name, value) { + fprintf (file, " %s = {\n", name); + if (strcmp (name, "HOST") == 0){ + fprintf (file, + " type = node;\n" + " size = power;\n" + " host_sep = {\n" + " type = separation;\n" + " size = power;\n" + " values = (power_used);\n" + " };\n"); + }else if (strcmp (name, "ROUTER") == 0){ + fprintf (file, + " type = node;\n" + " size = 10;\n"); + }else if (strcmp (name, "LINK") == 0){ + fprintf (file, + " type = edge;\n" + " size = bandwidth;\n" + " scale = global;\n" + " link_sep = {\n" + " type = separation;\n" + " size = bandwidth;\n" + " values = (bandwidth_used);\n" + " };\n"); + } + fprintf (file, " };\n\n"); + } + + //EDGE configuration + xbt_dict_foreach(trivaEdgeTypes, cursor, name, value) { + fprintf (file, " %s = { size = 1; };\n", name); + } + + //graphviz configuration + fprintf (file, "\n"); + fprintf (file, " graphviz-algorithm = neato;\n"); + + //close + fprintf (file, "}\n"); fclose (file); } } @@ -386,56 +431,92 @@ void TRACE_generate_triva_cat_conf (void) { char *output = TRACE_get_triva_cat_conf(); if (output && strlen(output) > 0){ + xbt_dict_cursor_t cursor=NULL, cursor2=NULL; + char *name, *name2, *value, *value2; + //check if we do have categories declared if (xbt_dict_length(created_categories) == 0){ INFO0("No categories declared, ignoring generation of triva graph configuration"); return; } - xbt_dict_cursor_t cursor=NULL; - char *key, *data; + FILE *file = fopen (output, "w"); xbt_assert1 (file != NULL, "Unable to open file (%s) for writing triva graph " "configuration (categorized).", output); - fprintf (file, - "{\n" - " node = (HOST);\n" - " edge = (LINK);\n" - "\n" - " HOST = {\n" - " size = power;\n" - " scale = global;\n" - " host_sep = {\n" - " type = separation;\n" - " size = power;\n" - " values = ("); - xbt_dict_foreach(created_categories,cursor,key,data) { - fprintf(file, "%s, ",key); + + //open + fprintf (file, "{\n"); + + //register NODE types + fprintf (file, " node = ("); + xbt_dict_foreach(trivaNodeTypes, cursor, name, value) { + fprintf (file, "%s, ", name); } + + //register EDGE types fprintf (file, ");\n" - " };\n" - " };\n" - " LINK = {\n" - " src = source;\n" - " dst = destination;\n" - " size = bandwidth;\n" - " scale = global;\n" - " link_sep = {\n" - " type = separation;\n" - " size = bandwidth;\n" - " values = ("); - xbt_dict_foreach(created_categories,cursor,key,data) { - fprintf(file, "%s, ",key); + " edge = ("); + xbt_dict_foreach(trivaEdgeTypes, cursor, name, value) { + fprintf (file, "%s, ", name); } fprintf (file, ");\n" - " };\n" - " };\n" - " graphviz-algorithm = neato;\n" - "}\n" - ); - fclose(file); + "\n"); + + //register each NODE type layout + xbt_dict_foreach(trivaNodeTypes, cursor, name, value) { + fprintf (file, " %s = {\n", name); + if (strcmp (name, "HOST") == 0){ + fprintf (file, + " type = node;\n" + " size = power;\n" + " host_sep = {\n" + " type = separation;\n" + " size = power;\n" + " values = ("); + xbt_dict_foreach(created_categories,cursor2,name2,value2) { + fprintf (file, "%s, ", name2); + } + fprintf (file, + ");\n" + " };\n"); + }else if (strcmp (name, "ROUTER") == 0){ + fprintf (file, + " type = node;\n" + " size = 10;\n"); + }else if (strcmp (name, "LINK") == 0){ + fprintf (file, + " type = edge;\n" + " size = bandwidth;\n" + " scale = global;\n" + " link_sep = {\n" + " type = separation;\n" + " size = bandwidth;\n" + " values = ("); + xbt_dict_foreach(created_categories,cursor2,name2,value2) { + fprintf (file, "%s, ", name2); + } + fprintf (file, + ");\n" + " };\n"); + } + fprintf (file, " };\n\n"); + } + + //EDGE configuration + xbt_dict_foreach(trivaEdgeTypes, cursor, name, value) { + fprintf (file, " %s = { size = 1; };\n", name); + } + + //graphviz configuration + fprintf (file, "\n"); + fprintf (file, " graphviz-algorithm = neato;\n"); + + //close + fprintf (file, "}\n"); + fclose (file); } }