[RFC PATCH v2 0/5] Additional scheduling information in tracepoints

From: Julien Desfossez
Date: Fri Sep 23 2016 - 12:50:01 EST


This patchset is a proposal to extract more accurate scheduling information in
the kernel trace. The existing scheduling tracepoints currently expose the
"prio" field which is an internal detail of the kernel and is not enough to
understand the behaviour of the scheduler. In order to get more accurate
information, we need the nice value, rt_priority, the policy and deadline
parameters (period, runtime and deadline).

The problem is that adding all these fields to the existing tracepoints will
quickly bloat the traces, especially for users who do not need these fields.
Moreover, removing the "prio" field might break existing tools.

This patchset, proposes a way to connect new probes to existing tracepoints
with the introduction of the TRACE_EVENT_MAP macro so that the instrumented
code does not have to change and we can create alternative versions of the
existing tracepoints.

With this macro, we propose new versions of the sched_switch, sched_waking,
sched_process_fork and sched_pi_setprio tracepoint probes that contain more
scheduling information and get rid of the "prio" field. We also add the PI
information to these tracepoints, so if a process is currently boosted, we show
the name and PID of the top waiter. This allows to quickly see the blocking
chain even if some of the trace background is missing.

In addition, we also propose a new tracepoint (sched_update_prio) that is
called whenever the scheduling configuration of a process is explicitly
changed.

Changes from v1:
- Add a cover letter
- Fix the signed-off-by chain
- Remove an effect-less fix that was proposed
- Move the effective_policy/rt_prio helpers to sched/core.c
- Reorder the patchset so that the new TP sched_update_prio is the last one

Julien Desfossez (5):
sched: get effective policy and rt_prio
tracing: add TRACE_EVENT_MAP
tracing: extend scheduling tracepoints
tracing: extend sched_pi_setprio
tracing: add sched_update_prio

include/linux/sched.h | 2 +
include/linux/trace_events.h | 14 +-
include/linux/tracepoint.h | 11 +-
include/trace/define_trace.h | 4 +
include/trace/events/sched.h | 386 +++++++++++++++++++++++++++++++++++++++++++
include/trace/perf.h | 7 +
include/trace/trace_events.h | 50 ++++++
kernel/sched/core.c | 39 +++++
kernel/trace/trace_events.c | 15 +-
9 files changed, 522 insertions(+), 6 deletions(-)

--
1.9.1