[PATCHSET sched_ext/for-6.16] sched_ext: Reduce usage of static_keys
From: Tejun Heo
Date: Tue Apr 08 2025 - 19:06:27 EST
sched_ext uses static_keys to optimize branches on ops flags and which ops
are implemented. Some of those branches aren't that hot and while others are
hotter, they are unlikely to cause meaningful overhead difference given
everything else that's going on. static_keys were used more because there
was no reason not to use static_keys. However, the planned multiple
hierarchical scheduler support won't work with global static_keys as these
branches would have to be based on the specific ops instance.
This patchset replaces static_key usages with tests on ops.flags and a
bitmap tracking which operation is implemented. I couldn't see performance
difference in numerous hackbench runs on a Ryzen 3990x machine before and
after the patchset.
This patchset contains the following five patches:
0001-sched_ext-Indentation-updates.patch
0002-sched_ext-Remove-scx_ops_enq_-static_keys.patch
0003-sched_ext-Remove-scx_ops_cpu_preempt-static_key.patch
0004-sched_ext-Remove-scx_ops_allow_queued_wakeup-static_.patch
0005-sched_ext-Make-scx_has_op-a-bitmap.patch
and is also available in the following git branch:
git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext.git scx-remove-static_keys
diffstat follows. Thanks.
kernel/sched/ext.c | 91 +++++++++++++++++++++++------------------------------
kernel/sched/ext.h | 8 ----
2 files changed, 42 insertions(+), 57 deletions(-)
--
tejun