3.10.5. 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.