[RFC][PATCH 00/16] sched: Core scheduling

From: Peter Zijlstra
Date: Mon Feb 18 2019 - 12:40:32 EST



A much 'demanded' feature: core-scheduling :-(

I still hate it with a passion, and that is part of why it took a little
longer than 'promised'.

While this one doesn't have all the 'features' of the previous (never
published) version and isn't L1TF 'complete', I tend to like the structure
better (relatively speaking: I hate it slightly less).

This one is sched class agnostic and therefore, in principle, doesn't horribly
wreck RT (in fact, RT could 'ab'use this by setting 'task->core_cookie = task'
to force-idle siblings).

Now, as hinted by that, there are semi sane reasons for actually having this.
Various hardware features like Intel RDT - Memory Bandwidth Allocation, work
per core (due to SMT fundamentally sharing caches) and therefore grouping
related tasks on a core makes it more reliable.

However; whichever way around you turn this cookie; it is expensive and nasty.

It doesn't help that there are truly bonghit crazy proposals for using this out
there, and I really hope to never see them in code.

These patches are lightly tested and didn't insta explode, but no promises,
they might just set your pets on fire.

'enjoy'

@pjt; I know this isn't quite what we talked about, but this is where I ended
up after I started typing. There's plenty design decisions to question and my
changelogs don't even get close to beginning to cover them all. Feel free to ask.

---
include/linux/sched.h | 9 +-
kernel/Kconfig.preempt | 8 +-
kernel/sched/core.c | 762 ++++++++++++++++++++++++++++++++++++++++++++---
kernel/sched/deadline.c | 99 +++---
kernel/sched/debug.c | 4 +-
kernel/sched/fair.c | 129 +++++---
kernel/sched/idle.c | 42 ++-
kernel/sched/pelt.h | 2 +-
kernel/sched/rt.c | 96 +++---
kernel/sched/sched.h | 183 ++++++++----
kernel/sched/stop_task.c | 35 ++-
kernel/sched/topology.c | 4 +-
kernel/stop_machine.c | 2 +
13 files changed, 1096 insertions(+), 279 deletions(-)