This patchset proposes a way to extend the existing scheduling tracepoints. The
intent is to allow to output relevant priority informations based on the
scheduling class of the tasks without breaking the existing tracepoints or
having to handle the various cases in the scheduler code.
The proposed approach is to add the TRACE_EVENT_MAP_COND macro which depends on
an existing TRACE_EVENT, but only writes data into the trace when a condition
is satisfied. This allows to create multiple versions of the same tracepoint
without having to call each of them explicitly from the instrumented code.
This approach is then illustrated with the sched_switch tracepoint, where we
provide a way to output different fields based on the scheduling class of the
If accepted, this method could be used everywhere the "prio" field is currently
exposed to user-space through traces.
Julien Desfossez (2):
tracing: add TRACE_EVENT_MAP_COND
tracing: add policy-based sched_switch events
include/linux/trace_events.h | 14 +++-
include/linux/tracepoint.h | 6 ++
include/trace/define_trace.h | 6 ++
include/trace/events/sched.h | 192 +++++++++++++++++++++++++++++++++++++++++++
include/trace/perf.h | 24 ++++--
include/trace/trace_events.h | 130 +++++++++++++++++++++++++----
kernel/trace/trace_events.c | 15 +++-
7 files changed, 360 insertions(+), 27 deletions(-)