.. _nanos6-verbose-instrumentation: Verbose instrumentation ----------------------- .. index:: triple: Nanos6; verbose; instrumentation To enable verbose logging, run the application with the ``version.instrument`` configuration variable set to ``verbose``. By default it generates a lot of information. This is controlled by the ``instrument.verbose.areas`` configuration variable, which can contain a list of areas. The areas are the following: **AddTask** Task creation. **Blocking** Blocking and unblocking within a task through calls to the blocking API. **ComputePlaceManagement** Starting and stopping compute places (CPUs, GPUs, etc). **DependenciesByAccess** Dependencies by their accesses. **DependenciesByAccessLinks** Dependencies by the links between the accesses to the same data. **DependenciesByGroup** Dependencies by groups of tasks that determine common predecessors and common successors. **LeaderThread** Execution of the leader thread. **LoggingMessages** Additional logging messages. **TaskExecution** Task execution. **TaskStatus** Task status transitions. **TaskWait** Entering and exiting taskwaits. **ThreadManagement** Thread creation, activation and suspension. **UserMutex** User-side mutexes (critical). The case is ignored, and the ``all`` keyword enables all of them. Additionally, an area can have the ``!`` prepended to it to disable it. For instance, ``areas = [ "AddTask", "TaskExecution" , "TaskWait" ]`` is a good starting point. The default value is:: [instrument] [instrument.verbose] areas = ["all", "!ComputePlaceManagement", "!DependenciesByAccess", "!DependenciesByAccessLinks", "!DependenciesByGroup", "!LeaderThread", "!TaskStatus", "!ThreadManagement"] By default, events are recorded with their timestamp and ordered accordingly. This can be disabled by setting the ``instrument.verbose.timestamps`` configuration variable to ``false``. The output is emitted by default to standard error, but it can be sent to a file by specifying it through the ``instrument.verbose.output_file`` option. Also the ``instrument.verbose.dump_only_on_exit`` can be set to ``true`` to delay the output to the end of the program to avoid getting it mixed with the output of the program.