[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250131070938.95551-1-changwoo@igalia.com>
Date: Fri, 31 Jan 2025 16:09:27 +0900
From: Changwoo Min <changwoo@...lia.com>
To: tj@...nel.org,
void@...ifault.com,
arighi@...dia.com
Cc: kernel-dev@...lia.com,
linux-kernel@...r.kernel.org,
Changwoo Min <changwoo@...lia.com>
Subject: [PATCH v3 00/11] sched_ext: Implement core event counters
The sched_ext core often has to override the BPF scheduler decisions,
and some events could be interesting but not easily visible.
This patchset aims to address such a problem in the following manner:
- Introduce an infrastructure to collect such events in a scalable and
extensible way and to expose the collected events to the BPF scheduler
in a compatible way.
- Define seven events to be collected.
- Modify an scx scheduler to demonstrate the usage of the new BPF APIs.
ChangeLog: v2 -> v3
- Rename scx_bpf_event_stats() to scx_bpf_events().
- Add a prefix SCX_EV_ to all event names.
- Change the implementation SCX_EV_SELECT_CPU_FALLBACK such that
record the selected cpu (p->scx.selected_cpu) in
select_task_rq_scx() and compare it in enqueue_task_scx() to
reliably count events.
- Change the implementation of SCX_EV_BYPASS_DISPATCH such that log
the event where the condition is initially detected.
- Modify scx_qmap to print the core event counter every second.
- Remove unnecessary white space in patch 6.
ChangeLog: v1 -> v2
- Rename scx_event_stat and scx_bpf_event_stat() to scx_event_stats and
scx_bpf_event_stats().
- Rename event names following the convention of $COMPONENT_$EVENT.
- Rename event_stats to event_stats_cpu.
- Drop the enum scx_event_kind and related macros.
- Revise scx_add_event() to use this_cpu_add().
- Add __scx_add_event() to use __this_cpu_add().
- Move the event counter resetting code to the loading of a BPF scheduler.
- The bypass-related event is further categorized into three events:
BYPASS_ACTIVATE, BYPASS_DISPATCH, and BYPASS_DURATION.
- Revise SELECT_CPU_FALLBACK to capture the case of the chosen CPU is not
allowed.
- Move is_cpu_allowed() from core.c to sched.h to use in the
SELECT_CPU_FALLBACK code.
Changwoo Min (11):
sched_ext: Implement event counter infrastructure
sched_ext: Add an event, SCX_EV_SELECT_CPU_FALLBACK
sched_ext: Add an event, SCX_EV_DISPATCH_LOCAL_DSQ_OFFLINE
sched_ext: Add an event, SCX_EV_DISPATCH_KEEP_LAST
sched_ext: Add an event, SCX_EV_ENQ_SKIP_EXITING
sched_ext: Add an event, SCX_EV_BYPASS_ACTIVATE
sched_ext: Add an event, SCX_EV_BYPASS_DISPATCH
sched_ext: Add an event, SCX_EV_BYPASS_DURATION
sched_ext: Add scx_bpf_events() and scx_read_event() for BPF
schedulers
sched_ext: Print core event count in scx_central scheduler
sched_ext: Print core event count in scx_qmap scheduler
include/linux/sched/ext.h | 1 +
kernel/sched/ext.c | 197 ++++++++++++++++++++++-
tools/sched_ext/include/scx/common.bpf.h | 4 +
tools/sched_ext/scx_central.bpf.c | 21 +++
tools/sched_ext/scx_qmap.bpf.c | 19 +++
5 files changed, 237 insertions(+), 5 deletions(-)
--
2.48.1
Powered by blists - more mailing lists