ptt_contention - PTT contention measurement tool
ptt_contention [options] input_file
Its primary function is to give some information about traced applications contention. This information is extracted from the binary data collected by ptt_trace(1).
It provides three kinds of information:
Percentages displayed show the impact of each thread or NPTL object in the contention. For threads, percentage of waiting time in relation to the elapsed time is also given.
ptt_contention(1)output, objects that have an address existing in alias_file will be replaced by the corresponding name.
ptt_view(1) for an example of
how to create an alias file.
end - startevents skipping
startevents. The syntax -z :end or -z start: is also supported and implies start=0 or end=infinity.
Warning: the filter is applied to a group of events for performance issue, so the count is not always exact. You can have up to 3 more events than requested.
startmicroseconds and before
endmicroseconds. The syntax -Z :end or -Z start: is also supported and imply start=0 or end=infinity.
The global contention is the sum of each thread contention. The sum of each NPTL object contention can be lower than the global contention. Indeed, some contention doesn't come from NPTL objects. The more obvious example is with the use of pthread_join. The main thread generally launches child threads and wait for them to complete their job with pthread_join. The waiting time is not due to NPTL objects here. There is also some contention due to NPTL internal mechanisms.
Given information is accurate only if the binary input file
was generated by
ptt_trace(1) with the maximum level of trace
Note: if you are interested in contention due to only one type of object, you can trace with the maximum level corresponding to this object (LEVEL_MUTEX_ALL for mutexes, ...).