X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6de03ecc4e630732984a0673512a5d15fd75e270..9932a0c0d2c44e34633c97a827b2b04d615cb4e9:/src/instr/instr_config.c diff --git a/src/instr/instr_config.c b/src/instr/instr_config.c index 8fa57c0907..2db53d28fe 100644 --- a/src/instr/instr_config.c +++ b/src/instr/instr_config.c @@ -8,8 +8,6 @@ #include "simgrid/sg_config.h" #include "surf/surf.h" -#ifdef HAVE_TRACING - XBT_LOG_NEW_CATEGORY(instr, "Logging the behavior of the tracing system (used for Visualization/Analysis of simulations)"); XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_config, instr, "Configuration"); @@ -19,6 +17,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_config, instr, "Configuration"); #define OPT_TRACING_SMPI "tracing/smpi" #define OPT_TRACING_SMPI_GROUP "tracing/smpi/group" #define OPT_TRACING_SMPI_COMPUTING "tracing/smpi/computing" +#define OPT_TRACING_SMPI_SLEEPING "tracing/smpi/sleeping" #define OPT_TRACING_SMPI_INTERNALS "tracing/smpi/internals" #define OPT_TRACING_DISPLAY_SIZES "tracing/smpi/display_sizes" #define OPT_TRACING_FORMAT "tracing/smpi/format" @@ -39,12 +38,13 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_config, instr, "Configuration"); #define OPT_TRACING_DISABLE_LINK "tracing/disable_link" #define OPT_TRACING_DISABLE_POWER "tracing/disable_power" -static int trace_enabled; +static int trace_enabled = 0; static int trace_platform; static int trace_platform_topology; static int trace_smpi_enabled; static int trace_smpi_grouped; static int trace_smpi_computing; +static int trace_smpi_sleeping; static int trace_view_internals; static int trace_categorized; static int trace_uncategorized; @@ -71,6 +71,7 @@ static void TRACE_getopts(void) trace_smpi_enabled = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_SMPI); trace_smpi_grouped = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_SMPI_GROUP); trace_smpi_computing = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING); + trace_smpi_sleeping = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_SMPI_SLEEPING); trace_view_internals = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_SMPI_INTERNALS); trace_categorized = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_CATEGORIZED); trace_uncategorized = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_UNCATEGORIZED); @@ -95,12 +96,14 @@ void TRACE_add_start_function(void (*func) ()) int TRACE_start() { - TRACE_getopts(); + if (TRACE_is_configured()) + TRACE_getopts(); // tracing system must be: // - enabled (with --cfg=tracing:yes) // - already configured (TRACE_global_init already called) - if (TRACE_is_enabled() && TRACE_is_configured()) { + if (TRACE_is_enabled()) { + XBT_DEBUG("Tracing starts"); /* init the tracing module to generate the right output */ @@ -128,11 +131,11 @@ int TRACE_start() XBT_DEBUG("Tracing is on"); /* other trace initialization */ - created_categories = xbt_dict_new_homogeneous(xbt_free); - declared_marks = xbt_dict_new_homogeneous(xbt_free); - user_host_variables = xbt_dict_new_homogeneous(xbt_free); - user_vm_variables = xbt_dict_new_homogeneous (xbt_free); - user_link_variables = xbt_dict_new_homogeneous(xbt_free); + created_categories = xbt_dict_new_homogeneous(xbt_free_f); + declared_marks = xbt_dict_new_homogeneous(xbt_free_f); + user_host_variables = xbt_dict_new_homogeneous(xbt_free_f); + user_vm_variables = xbt_dict_new_homogeneous(xbt_free_f); + user_link_variables = xbt_dict_new_homogeneous(xbt_free_f); if (TRACE_start_functions != NULL) { void (*func) (); @@ -257,6 +260,11 @@ int TRACE_smpi_is_computing(void) return trace_smpi_computing; } +int TRACE_smpi_is_sleeping(void) +{ + return trace_smpi_sleeping; +} + int TRACE_smpi_view_internals(void) { return trace_view_internals; @@ -353,110 +361,117 @@ void TRACE_global_init(int *argc, char **argv) /* tracing */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING, "Enable Tracing.", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING, "no"); /* register platform in the trace */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_PLATFORM, "Register the platform in the trace as a hierarchy.", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_PLATFORM, "no"); /* register platform in the trace */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_TOPOLOGY, "Register the platform topology in the trace as a graph.", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_TOPOLOGY, "yes"); /* smpi */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI, "Tracing of the SMPI interface.", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI, "no"); /* smpi grouped */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI_GROUP, "Group MPI processes by host.", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI_GROUP, "no"); /* smpi computing */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING, "Generate states for timing out of SMPI parts of the application", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING, "no"); +/* smpi sleeping */ + xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI_SLEEPING, + "Generate states for timing out of SMPI parts of the application", + xbt_cfgelm_boolean, 1, 1, NULL, NULL); + xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI_SLEEPING, "no"); + + /* smpi internals */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI_INTERNALS, "View internal messages sent by Collective communications in SMPI", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI_INTERNALS, "no"); /* tracing categorized resource utilization traces */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_CATEGORIZED, "Tracing categorized resource utilization of hosts and links.", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_CATEGORIZED, "no"); /* tracing uncategorized resource utilization */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_UNCATEGORIZED, "Tracing uncategorized resource utilization of hosts and links.", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_UNCATEGORIZED, "no"); /* msg process */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_MSG_PROCESS, "Tracing of MSG process behavior.", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_MSG_PROCESS, "no"); /* msg process */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_MSG_VM, "Tracing of MSG process behavior.", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_MSG_VM, "no"); /* disable tracing link */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISABLE_LINK, "Do not trace link bandwidth and latency.", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_LINK, "no"); /* disable tracing link */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISABLE_POWER, "Do not trace host power.", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_POWER, "no"); /* tracing buffer */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_BUFFER, "Buffer trace events to put them in temporal order.", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_BUFFER, "yes"); /* tracing one link only */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_ONELINK_ONLY, "Use only routes with one link to trace platform.", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_ONELINK_ONLY, "no"); /* disable destroy */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISABLE_DESTROY, "Disable platform containers destruction.", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_DESTROY, "no"); /* basic -- Avoid extended events (impoverished trace file) */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_BASIC, "Avoid extended events (impoverished trace file).", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_BASIC, "no"); /* display_sizes -- Extended events with message size information */ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISPLAY_SIZES, "(smpi only for now) Extended events with message size information", - xbt_cfgelm_boolean, 0, 1, NULL, NULL); + xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_DISPLAY_SIZES, "no"); /* format -- Switch the ouput format of Tracing */ @@ -551,6 +566,10 @@ void TRACE_help (int detailed) " This option aims at tracing computations in the application, outside SMPI\n" " to allow further study of simulated or real computation time", detailed); + print_line (OPT_TRACING_SMPI_SLEEPING, "Generates a \" Sleeping \" State", + " This option aims at tracing sleeps in the application, outside SMPI\n" + " to allow further study of simulated or real sleep time", + detailed); print_line (OPT_TRACING_SMPI_INTERNALS, "Generates tracing events corresponding", " to point-to-point messages sent by collective communications", detailed); @@ -799,5 +818,3 @@ void instr_resume_tracing (void) #undef OPT_TRACING_COMMENT_FILE #undef OPT_VIVA_UNCAT_CONF #undef OPT_VIVA_CAT_CONF - -#endif /* HAVE_TRACING */