X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/620004c2a9db271a47d5c4df9b02633703afcb76..5ce2cc84f1f1154453e9534505c394fbd2b89e05:/src/instr/instr_config.cpp diff --git a/src/instr/instr_config.cpp b/src/instr/instr_config.cpp index da2524cae7..415e3baa95 100644 --- a/src/instr/instr_config.cpp +++ b/src/instr/instr_config.cpp @@ -1,13 +1,15 @@ -/* Copyright (c) 2010-2018. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2010-2019. 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 "include/xbt/config.hpp" +#include "simgrid/Exception.hpp" #include "simgrid/s4u/Engine.hpp" #include "src/instr/instr_private.hpp" #include "surf/surf.hpp" -#include "xbt/virtu.h" /* sg_cmdline */ +#include "xbt/virtu.h" /* xbt_cmdline */ + #include #include #include @@ -17,21 +19,12 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_config, instr, "Configuration"); std::ofstream tracing_file; -#define OPT_TRACING_BASIC "tracing/basic" -#define OPT_TRACING_BUFFER "tracing/buffer" -#define OPT_TRACING_CATEGORIZED "tracing/categorized" -#define OPT_TRACING_COMMENT_FILE "tracing/comment-file" -#define OPT_TRACING_COMMENT "tracing/comment" -#define OPT_TRACING_DISABLE_DESTROY "tracing/disable-destroy" -#define OPT_TRACING_FORMAT_TI_ONEFILE "tracing/smpi/format/ti-one-file" -#define OPT_TRACING_PLATFORM "tracing/platform" -#define OPT_TRACING_SMPI_COMPUTING "tracing/smpi/computing" -#define OPT_TRACING_SMPI_GROUP "tracing/smpi/group" -#define OPT_TRACING_SMPI_INTERNALS "tracing/smpi/internals" -#define OPT_TRACING_SMPI_SLEEPING "tracing/smpi/sleeping" -#define OPT_TRACING_SMPI "tracing/smpi" -#define OPT_TRACING_TOPOLOGY "tracing/platform/topology" -#define OPT_TRACING_UNCATEGORIZED "tracing/uncategorized" +constexpr char OPT_TRACING_BASIC[] = "tracing/basic"; +constexpr char OPT_TRACING_COMMENT_FILE[] = "tracing/comment-file"; +constexpr char OPT_TRACING_DISABLE_DESTROY[] = "tracing/disable-destroy"; +constexpr char OPT_TRACING_FORMAT_TI_ONEFILE[] = "tracing/smpi/format/ti-one-file"; +constexpr char OPT_TRACING_SMPI[] = "tracing/smpi"; +constexpr char OPT_TRACING_TOPOLOGY[] = "tracing/platform/topology"; static simgrid::config::Flag trace_enabled{ "tracing", "Enable the tracing system. You have to enable this option to use other tracing options.", false}; @@ -44,24 +37,34 @@ static simgrid::config::Flag trace_actor_enabled{ static simgrid::config::Flag trace_vm_enabled{"tracing/vm", "Trace the behavior of all virtual machines.", false}; -static simgrid::config::Flag trace_platform{OPT_TRACING_PLATFORM, +static simgrid::config::Flag trace_platform{"tracing/platform", "Register the platform in the trace as a hierarchy.", false}; + static simgrid::config::Flag trace_platform_topology{ OPT_TRACING_TOPOLOGY, "Register the platform topology in the trace as a graph.", true}; static simgrid::config::Flag trace_smpi_enabled{OPT_TRACING_SMPI, "Tracing of the SMPI interface.", false}; -static simgrid::config::Flag trace_smpi_grouped{OPT_TRACING_SMPI_GROUP, "Group MPI processes by host.", false}; +static simgrid::config::Flag trace_smpi_grouped{"tracing/smpi/group", "Group MPI processes by host.", false}; + static simgrid::config::Flag trace_smpi_computing{ - OPT_TRACING_SMPI_COMPUTING, "Generate states for timing out of SMPI parts of the application", false}; + "tracing/smpi/computing", "Generate 'Computing' states to trace the out-of-SMPI parts of the application", false}; + static simgrid::config::Flag trace_smpi_sleeping{ - OPT_TRACING_SMPI_SLEEPING, "Generate states for timing out of SMPI parts of the application", false}; + "tracing/smpi/sleeping", "Generate 'Sleeping' states for the sleeps in the application that do not pertain to SMPI", + false}; + static simgrid::config::Flag trace_view_internals{ - OPT_TRACING_SMPI_INTERNALS, "View internal messages sent by Collective communications in SMPI", false}; + "tracing/smpi/internals", + "Generate tracing events corresponding to point-to-point messages sent by SMPI collective communications", false}; + static simgrid::config::Flag trace_categorized{ - OPT_TRACING_CATEGORIZED, "Tracing categorized resource utilization of hosts and links.", false}; + "tracing/categorized", "Trace categorized resource utilization of hosts and links.", false}; + static simgrid::config::Flag trace_uncategorized{ - OPT_TRACING_UNCATEGORIZED, "Tracing uncategorized resource utilization of hosts and links.", false}; -static simgrid::config::Flag trace_buffer{OPT_TRACING_BUFFER, - "Buffer trace events to put them in temporal order.", true}; + "tracing/uncategorized", + "Trace uncategorized resource utilization of hosts and links. " + "To use if the simulator does not use tracing categories but resource utilization have to be traced.", + false}; + static simgrid::config::Flag trace_disable_destroy{ OPT_TRACING_DISABLE_DESTROY, {"tracing/disable_destroy"}, "Disable platform containers destruction.", false}; static simgrid::config::Flag trace_basic{OPT_TRACING_BASIC, "Avoid extended events (impoverished trace file).", @@ -101,7 +104,9 @@ static void TRACE_start() std::string filename = TRACE_get_filename(); tracing_file.open(filename.c_str(), std::ofstream::out); if (tracing_file.fail()) { - THROWF(system_error, 1, "Tracefile %s could not be opened for writing.", filename.c_str()); + throw simgrid::TracingError( + XBT_THROW_POINT, + simgrid::xbt::string_printf("Tracefile %s could not be opened for writing.", filename.c_str())); } XBT_DEBUG("Filename %s is open for writing", filename.c_str()); @@ -120,7 +125,7 @@ static void TRACE_start() } /* output one line comment */ - dump_comment(simgrid::config::get_value(OPT_TRACING_COMMENT)); + dump_comment(simgrid::config::get_value("tracing/comment")); /* output comment file */ dump_comment_file(simgrid::config::get_value(OPT_TRACING_COMMENT_FILE)); @@ -236,11 +241,6 @@ bool TRACE_disable_speed() return trace_disable_power && trace_enabled; } -bool TRACE_buffer () -{ - return trace_buffer && trace_enabled; -} - bool TRACE_disable_destroy () { return trace_disable_destroy && trace_enabled; @@ -285,10 +285,9 @@ void TRACE_global_init() simgrid::config::declare_flag(OPT_TRACING_FORMAT_TI_ONEFILE, "(smpi only) For replay format only : output to one file only", false); simgrid::config::alias(OPT_TRACING_FORMAT_TI_ONEFILE, {"tracing/smpi/format/ti_one_file"}); - simgrid::config::declare_flag(OPT_TRACING_COMMENT, "Comment to be added on the top of the trace file.", - ""); - simgrid::config::declare_flag( - OPT_TRACING_COMMENT_FILE, "The contents of the file are added to the top of the trace file as comment.", ""); + simgrid::config::declare_flag("tracing/comment", "Add a comment line to the top of the trace file.", ""); + simgrid::config::declare_flag(OPT_TRACING_COMMENT_FILE, + "Add the contents of a file as comments to the top of the trace.", ""); simgrid::config::alias(OPT_TRACING_COMMENT_FILE, {"tracing/comment_file"}); simgrid::config::declare_flag("tracing/precision", "Numerical precision used when timestamping events " "(expressed in number of digits after decimal point)", @@ -305,44 +304,20 @@ static void print_line(const char* option, const char* desc, const char* longdes std::string str = std::string("--cfg=") + option + " "; int len = str.size(); - printf("%s%*.*s %s\n", str.c_str(), 30 - len, 30 - len, "", desc); + XBT_HELP("%s%*.*s %s", str.c_str(), 30 - len, 30 - len, "", desc); if (longdesc != nullptr) { - printf ("%s\n\n", longdesc); + XBT_HELP("%s\n", longdesc); } } void TRACE_help() { - printf("Description of the tracing options accepted by this simulator:\n\n"); - print_line(OPT_TRACING_CATEGORIZED, "Trace categorized resource utilization", - " It activates the categorized resource utilization tracing. It should\n" - " be enabled if tracing categories are used by this simulator."); - print_line(OPT_TRACING_UNCATEGORIZED, "Trace uncategorized resource utilization", - " It activates the uncategorized resource utilization tracing. Use it if\n" - " this simulator do not use tracing categories and resource use have to be\n" - " traced."); + XBT_HELP("Description of the tracing options accepted by this simulator:\n"); print_line(OPT_TRACING_SMPI, "Trace the MPI Interface (SMPI)", " This option only has effect if this simulator is SMPI-based. Traces the MPI\n" " interface and generates a trace that can be analyzed using Gantt-like\n" " visualizations. Every MPI function (implemented by SMPI) is transformed in a\n" " state, and point-to-point communications can be analyzed with arrows."); - print_line(OPT_TRACING_SMPI_GROUP, "Group MPI processes by host (SMPI)", - " This option only has effect if this simulator is SMPI-based. The processes\n" - " are grouped by the hosts where they were executed."); - print_line(OPT_TRACING_SMPI_COMPUTING, "Generates a \" Computing \" State", - " This option aims at tracing computations in the application, outside SMPI\n" - " to allow further study of simulated or real computation time"); - 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"); - print_line(OPT_TRACING_SMPI_INTERNALS, "Generates tracing events corresponding", - " to point-to-point messages sent by collective communications"); - print_line(OPT_TRACING_BUFFER, "Buffer events to put them in temporal order", - " This option put some events in a time-ordered buffer using the insertion\n" - " sort algorithm. The process of acquiring and releasing locks to access this\n" - " buffer and the cost of the sorting algorithm make this process slow. The\n" - " simulator performance can be severely impacted if this option is activated,\n" - " but you are sure to get a trace file with events sorted."); print_line(OPT_TRACING_DISABLE_DESTROY, "Disable platform containers destruction", " Disable the destruction of containers at the end of simulation. This can be\n" " used with simulators that have a different notion of time (different from\n" @@ -356,10 +331,6 @@ void TRACE_help() " By default, each process outputs to a separate file, inside a filename_files folder\n" " By setting this option to yes, all processes will output to only one file\n" " This is meant to avoid opening thousands of files with large simulations"); - print_line(OPT_TRACING_COMMENT, "Comment to be added on the top of the trace file.", - " Use this to add a comment line to the top of the trace file."); - print_line(OPT_TRACING_COMMENT_FILE, "File contents added to trace file as comment.", - " Use this to add the contents of a file to the top of the trace file as comment."); print_line(OPT_TRACING_TOPOLOGY, "Register the platform topology as a graph", " This option (enabled by default) can be used to disable the tracing of\n" " the platform topology in the trace file. Sometimes, such task is really\n"