X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dbb6723a79b9b957971b41da882cf31cf292aa4c..def9d357a9211e9ee3d7bae418cb3e0fe8481c1e:/src/instr/instr_config.c diff --git a/src/instr/instr_config.c b/src/instr/instr_config.c index 9ee6472b04..8aad85e6bc 100644 --- a/src/instr/instr_config.c +++ b/src/instr/instr_config.c @@ -39,7 +39,7 @@ int TRACE_start() return 0; } - DEBUG0("Tracing starts"); + XBT_DEBUG("Tracing starts"); /* open the trace file */ TRACE_paje_start(); @@ -59,9 +59,6 @@ int TRACE_end() if (!TRACE_is_active()) return 1; - /* close the trace file */ - TRACE_paje_end(); - /* generate uncategorized graph configuration for triva */ if (TRACE_get_triva_uncat_conf()){ TRACE_generate_triva_uncat_conf(); @@ -72,23 +69,33 @@ 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(); + + /* close the trace file */ + TRACE_paje_end(); + /* activate trace */ TRACE_desactivate (); - DEBUG0("Tracing system is shutdown"); + XBT_DEBUG("Tracing system is shutdown"); return 0; } void TRACE_activate (void) { - xbt_assert0 (trace_active==0, "Tracing is already active."); + xbt_assert (trace_active==0, "Tracing is already active."); trace_active = 1; - DEBUG0 ("Tracing is on"); + XBT_DEBUG ("Tracing is on"); } void TRACE_desactivate (void) { trace_active = 0; - DEBUG0 ("Tracing is off"); + XBT_DEBUG ("Tracing is off"); } int TRACE_is_active (void) @@ -108,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) @@ -128,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) @@ -343,38 +354,48 @@ 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, + xbt_assert (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" + " edge = ("); + xbt_dict_foreach(trivaEdgeTypes, cursor, name, value) { + fprintf (file, "%s, ", name); + } + fprintf (file, + ");\n" + "\n"); + + //configuration for all nodes fprintf (file, - "{\n" - " node = (HOST);\n" - " edge = (LINK);\n" - "\n" - " HOST = {\n" + " host = {\n" + " type = square;\n" " size = power;\n" - " scale = global;\n" - " host_sep = {\n" - " type = separation;\n" - " size = power;\n" - " values = (power_used);\n" - " };\n" + " values = (power_used);\n" " };\n" - " LINK = {\n" - " src = source;\n" - " dst = destination;\n" + " link = {\n" + " type = rhombus;\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" - ); + " values = (bandwidth_used);\n" + " };\n"); + //close + fprintf (file, "}\n"); fclose (file); } } @@ -383,56 +404,65 @@ 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"); + XBT_INFO("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, + xbt_assert (file != NULL, "Unable to open file (%s) for writing triva graph " "configuration (categorized).", 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" + ");\n" + " edge = ("); + xbt_dict_foreach(trivaEdgeTypes, cursor, name, value) { + fprintf (file, "%s, ", name); + } + fprintf (file, + ");\n" + "\n"); + + //configuration for all nodes + fprintf (file, + " host = {\n" + " type = square;\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); + " values = ("); + xbt_dict_foreach(created_categories,cursor2,name2,value2) { + fprintf (file, "p%s, ", name2); } fprintf (file, ");\n" - " };\n" " };\n" - " LINK = {\n" - " src = source;\n" - " dst = destination;\n" + " link = {\n" + " type = rhombus;\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); + " values = ("); + xbt_dict_foreach(created_categories,cursor2,name2,value2) { + fprintf (file, "b%s, ", name2); } fprintf (file, ");\n" - " };\n" - " };\n" - " graphviz-algorithm = neato;\n" - "}\n" - ); - fclose(file); + " };\n"); + //close + fprintf (file, "}\n"); + fclose (file); } }