Re: config SCHED_CORE

From: Joel Fernandes
Date: Fri May 21 2021 - 07:58:18 EST


On Fri, May 21, 2021 at 3:53 AM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>
> On Thu, May 20, 2021 at 08:06:07PM -0700, Hugh Dickins wrote:
> > Hi Peter,
> >
> > make oldconfig gave me no help at all on how to decide whether to choose
> > SCHED_CORE Y or n, beyond it recommending Y. Maybe you'll delete that
> > option later, or maybe removing the prompt string would silence it.
>
> Ah, you're quite right. I never seem to have gotten around to actually
> writing anything useful there :/ Similarly the documentation for all
> this seems to have gone missing too.
>
> Joel, could I ask you to refresh the document to match the current state
> of things and repost? I still whole hartedly despise this RST crud, it
> makes it so hard to read / modify the files.
>
> ( I think the latest version is here:
> https://lkml.kernel.org/r/20210324214020.34142-8-joel@xxxxxxxxxxxxxxxxx
> )
>
> Anyway, how is something like the below, Joel can add a reference to the
> document once it's there.
>
> ---
> kernel/Kconfig.preempt | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
> index ea1e3331c0ba..3c4566cd20ef 100644
> --- a/kernel/Kconfig.preempt
> +++ b/kernel/Kconfig.preempt
> @@ -104,4 +104,16 @@ config SCHED_CORE
> bool "Core Scheduling for SMT"
> default y
> depends on SCHED_SMT
> -
> + help
> + This option enables Core scheduling, a means of coordinated task
> + selection across SMT siblings with the express purpose of creating a
> + Core wide privilidge boundary. When enabled -- see prctl(PR_SCHED_CORE)
> + -- task selection will ensure all SMT siblings will execute a task
> + from the same 'core group', forcing idle when no matching task is found.
> +
> + This provides means of mitigation against a number of SMT side-channels;
> + but is, on its own, insufficient to mitigate all known side-channels.
> + Notable: the MDS class of attacks require more.
> +
> + Default enabled for anything that has SCHED_SMT, when unused there should
> + be no impact on performance.

This description sort of makes it sound like security is the only
usecase. Perhaps we can also add here that core-scheduling can help
performance of workloads where hyperthreading is undesired, such as
when VM providers don't want to share hyperthreads.

Thoughts?