X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e14aabeee188d0182d686681c2a5c5833cf699bf..1a7a3e5a1f23fee5399f22654d1f696f2a145763:/src/instr/instr_config.c diff --git a/src/instr/instr_config.c b/src/instr/instr_config.c index 3fb5dbfbf5..defc1f54a6 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(); @@ -47,65 +47,9 @@ int TRACE_start() /* activate trace */ TRACE_activate (); - /* base type hierarchy: - * --cfg=tracing - */ - if(0){ -// FIXME -// pajeDefineEventType("source", "LINK", "source"); -// pajeDefineEventType("destination", "LINK", "destination"); - - /* type hierarchy for: - * --cfg=tracing/msg/process - * --cfg=tracing/msg/volume - */ -// FIXME -// if (TRACE_msg_process_is_enabled() || TRACE_msg_volume_is_enabled()) { -// //processes grouped by host -// pajeDefineContainerType("PROCESS", "HOST", "PROCESS"); -// } -// -// if (TRACE_msg_process_is_enabled()) { -// pajeDefineStateType("category", "PROCESS", "category"); -// pajeDefineStateType("presence", "PROCESS", "presence"); -// } -// -// if (TRACE_msg_volume_is_enabled()) { -// pajeDefineLinkType("volume", "0", "PROCESS", "PROCESS", "volume"); -// } - - /* type hierarchy for: - * --cfg=tracing/msg/task - */ -// FIXME -// if (TRACE_msg_task_is_enabled()) { -// //tasks grouped by host -// pajeDefineContainerType("TASK", "HOST", "TASK"); -// pajeDefineStateType("category", "TASK", "category"); -// pajeDefineStateType("presence", "TASK", "presence"); -// } - - /* type hierarchy for - * --cfg=tracing/smpi - * --cfg=tracing/smpi/group - */ -// FIXME -// if (TRACE_smpi_is_enabled()) { -// if (TRACE_smpi_is_grouped()){ -// pajeDefineContainerType("MPI_PROCESS", "HOST", "MPI_PROCESS"); -// }else{ -// pajeDefineContainerType("MPI_PROCESS", "PLATFORM", "MPI_PROCESS"); -// } -// pajeDefineStateType("MPI_STATE", "MPI_PROCESS", "MPI_STATE"); -// pajeDefineLinkType("MPI_LINK", "0", "MPI_PROCESS", "MPI_PROCESS", -// "MPI_LINK"); -// } - } /* other trace initialization */ created_categories = xbt_dict_new(); - TRACE_msg_task_alloc(); TRACE_surf_alloc(); - TRACE_msg_process_alloc(); TRACE_smpi_alloc(); return 0; } @@ -115,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(); @@ -128,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) @@ -164,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) @@ -184,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) @@ -399,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" - " 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 = (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); } } @@ -439,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, "%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, "%s, ", name2); } fprintf (file, ");\n" - " };\n" - " };\n" - " graphviz-algorithm = neato;\n" - "}\n" - ); - fclose(file); + " };\n"); + //close + fprintf (file, "}\n"); + fclose (file); } }