sched_ext: Add trace point to track sched_ext core events
authorChangwoo Min <changwoo@igalia.com>
Tue, 4 Mar 2025 10:49:00 +0000 (19:49 +0900)
committerTejun Heo <tj@kernel.org>
Tue, 4 Mar 2025 18:06:17 +0000 (08:06 -1000)
commit71d078803ccbc020ae3b640293a40a86691b9151
tree98f77dfb263184863f2a5d7d2d775942ab41e1eb
parent038730dc12cb1fa016a95978286a767e8a8b521e
sched_ext: Add trace point to track sched_ext core events

Add tracing support to track sched_ext core events
(/sched_ext/sched_ext_event). This may be useful for debugging sched_ext
schedulers that trigger a particular event.

The trace point can be used as other trace points, so it can be used in,
for example, `perf trace` and BPF programs, as follows:

======
$> sudo perf trace -e sched_ext:sched_ext_event --filter 'name == "SCX_EV_ENQ_SLICE_DFL"'
======

======
struct tp_sched_ext_event {
struct trace_entry ent;
u32 __data_loc_name;
s64 delta;
};

SEC("tracepoint/sched_ext/sched_ext_event")
int rtp_add_event(struct tp_sched_ext_event *ctx)
{
char event_name[128];
unsigned short offset = ctx->__data_loc_name & 0xFFFF;
        bpf_probe_read_str((void *)event_name, 128, (char *)ctx + offset);

bpf_printk("name %s   delta %lld", event_name, ctx->delta);
return 0;
}
======

Signed-off-by: Changwoo Min <changwoo@igalia.com>
Acked-by: Andrea Righi <arighi@nvidia.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
include/trace/events/sched_ext.h
kernel/sched/ext.c