* [PATCH 0/2] sched, arm64: enable CONFIG_SCHED_SMT for arm64
@ 2020-02-26 16:41 Valentin Schneider
2020-02-26 16:41 ` [PATCH 1/2] sched/topology: Don't enable EAS on SMT systems Valentin Schneider
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Valentin Schneider @ 2020-02-26 16:41 UTC (permalink / raw)
To: linux-kernel, linux-arm-kernel
Cc: Peter Zijlstra, Ingo Molnar, Vincent Guittot, Dietmar Eggemann,
morten.rasmussen, qperret, Catalin Marinas, Will Deacon,
Mark Rutland
Hi,
Strictly speaking those two patches are independent, but I figured it would
make sense to send them together (since one led to the other).
Patch 1 adds a sanity check against EAS + SMT.
Patch 2 enables CONFIG_SCHED_SMT in the arm64 defconfig.
Cheers,
Valentin
Valentin Schneider (2):
sched/topology: Don't enable EAS on SMT systems
arm64: defconfig: enable CONFIG_SCHED_SMT
arch/arm64/configs/defconfig | 1 +
kernel/sched/topology.c | 4 ++++
2 files changed, 5 insertions(+)
--
2.24.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] sched/topology: Don't enable EAS on SMT systems
2020-02-26 16:41 [PATCH 0/2] sched, arm64: enable CONFIG_SCHED_SMT for arm64 Valentin Schneider
@ 2020-02-26 16:41 ` Valentin Schneider
2020-02-27 13:00 ` Quentin Perret
2020-02-26 16:41 ` [PATCH 2/2] arm64: defconfig: enable CONFIG_SCHED_SMT Valentin Schneider
2020-02-27 16:32 ` [PATCH 0/2] sched, arm64: enable CONFIG_SCHED_SMT for arm64 Dietmar Eggemann
2 siblings, 1 reply; 7+ messages in thread
From: Valentin Schneider @ 2020-02-26 16:41 UTC (permalink / raw)
To: linux-kernel, linux-arm-kernel
Cc: Peter Zijlstra, Ingo Molnar, Vincent Guittot, Dietmar Eggemann,
morten.rasmussen, qperret, Catalin Marinas, Will Deacon,
Mark Rutland
EAS already requires asymmetric CPU capacities to be enabled, and mixing
this with SMT is an aberration, but better be safe than sorry.
Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
---
kernel/sched/topology.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c
index 00911884b7e7..76cd0a370b9a 100644
--- a/kernel/sched/topology.c
+++ b/kernel/sched/topology.c
@@ -360,6 +360,10 @@ static bool build_perf_domains(const struct cpumask *cpu_map)
goto free;
}
+ /* EAS definitely does *not* handle SMT */
+ if (sched_smt_active())
+ goto free;
+
for_each_cpu(i, cpu_map) {
/* Skip already covered CPUs. */
if (find_pd(pd, i))
--
2.24.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] arm64: defconfig: enable CONFIG_SCHED_SMT
2020-02-26 16:41 [PATCH 0/2] sched, arm64: enable CONFIG_SCHED_SMT for arm64 Valentin Schneider
2020-02-26 16:41 ` [PATCH 1/2] sched/topology: Don't enable EAS on SMT systems Valentin Schneider
@ 2020-02-26 16:41 ` Valentin Schneider
2020-02-27 16:32 ` [PATCH 0/2] sched, arm64: enable CONFIG_SCHED_SMT for arm64 Dietmar Eggemann
2 siblings, 0 replies; 7+ messages in thread
From: Valentin Schneider @ 2020-02-26 16:41 UTC (permalink / raw)
To: linux-kernel, linux-arm-kernel
Cc: Peter Zijlstra, Ingo Molnar, Vincent Guittot, Dietmar Eggemann,
morten.rasmussen, qperret, Catalin Marinas, Will Deacon,
Mark Rutland
The (CFS) scheduler has some extra logic catering to systems with SMT, but
that logic won't be compiled in unless the above config is set.
Note that the SMT-centric codepaths are gated by the sched_smt_present
static key, and the SMT sched_domains will only survive if the platform has
SMT. As such, the only impact on !SMT platforms should be a slightly
bigger kernel - no behavioural change.
Distro kernels already enable it, which makes sense since there already are
things like ThunderX2 out in the wild. Enable it for the defconfig.
Some deltas
===========
FWIW my ELF symbol table diff looks something like this:
NAME BEFORE AFTER DELTA
update_sd_lb_stats.constprop.135 0 1864 +1864
find_idlest_group.isra.115 0 1808 +1808
update_numa_stats.isra.121 0 628 +628
select_task_rq_fair 3236 3732 +496
compute_energy.isra.112 0 420 +420
score_nearby_nodes.part.120 0 380 +380
__update_idle_core 0 232 +232
nohz_balance_exit_idle.part.127 0 216 +216
sched_slice.isra.99 0 172 +172
update_load_avg.part.107 0 116 +116
wakeup_preempt_entity.isra.101 0 92 +92
sched_cpu_activate 340 396 +56
pick_next_task_idle 8 56 +48
sched_cpu_deactivate 252 292 +40
show_smt_active 44 80 +36
cpu_smt_mask 0 28 +28
set_next_task_idle 4 32 +28
task_numa_work 680 692 +12
cpu_smt_flags 0 8 +8
enqueue_task_fair 2608 2612 +4
wakeup_preempt_entity.isra.104 92 0 -92
update_load_avg 1028 932 -96
task_numa_migrate 1824 1728 -96
sched_slice.isra.102 172 0 -172
nohz_balance_exit_idle.part.130 216 0 -216
task_numa_find_cpu 2116 1868 -248
score_nearby_nodes.part.123 380 0 -380
compute_energy.isra.115 420 0 -420
update_numa_stats.isra.124 472 0 -472
find_idlest_group.isra.118 1808 0 -1808
update_sd_lb_stats.constprop.138 1864 0 -1864
------------------------------------------------------------------
DELTA SUM +820
As for the sched_domains, this is on a hikey960:
before:
$ cat /proc/sys/kernel/sched_domain/cpu*/domain*/name | sort | uniq
DIE
MC
after:
$ cat /proc/sys/kernel/sched_domain/cpu*/domain*/name | sort | uniq
DIE
MC
Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
---
arch/arm64/configs/defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index 905109f6814f..3e75007f6592 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -62,6 +62,7 @@ CONFIG_ARCH_ZX=y
CONFIG_ARCH_ZYNQMP=y
CONFIG_ARM64_VA_BITS_48=y
CONFIG_SCHED_MC=y
+CONFIG_SCHED_SMT=y
CONFIG_NUMA=y
CONFIG_SECCOMP=y
CONFIG_KEXEC=y
--
2.24.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] sched/topology: Don't enable EAS on SMT systems
2020-02-26 16:41 ` [PATCH 1/2] sched/topology: Don't enable EAS on SMT systems Valentin Schneider
@ 2020-02-27 13:00 ` Quentin Perret
2020-02-27 16:28 ` Dietmar Eggemann
0 siblings, 1 reply; 7+ messages in thread
From: Quentin Perret @ 2020-02-27 13:00 UTC (permalink / raw)
To: Valentin Schneider
Cc: linux-kernel, linux-arm-kernel, Peter Zijlstra, Ingo Molnar,
Vincent Guittot, Dietmar Eggemann, morten.rasmussen,
Catalin Marinas, Will Deacon, Mark Rutland, kernel-team
On Wednesday 26 Feb 2020 at 16:41:17 (+0000), Valentin Schneider wrote:
> EAS already requires asymmetric CPU capacities to be enabled, and mixing
> this with SMT is an aberration, but better be safe than sorry.
>
> Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
Acked-by: Quentin Perret <qperret@google.com>
Thanks,
Quentin
> ---
> kernel/sched/topology.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c
> index 00911884b7e7..76cd0a370b9a 100644
> --- a/kernel/sched/topology.c
> +++ b/kernel/sched/topology.c
> @@ -360,6 +360,10 @@ static bool build_perf_domains(const struct cpumask *cpu_map)
> goto free;
> }
>
> + /* EAS definitely does *not* handle SMT */
> + if (sched_smt_active())
> + goto free;
> +
> for_each_cpu(i, cpu_map) {
> /* Skip already covered CPUs. */
> if (find_pd(pd, i))
> --
> 2.24.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] sched/topology: Don't enable EAS on SMT systems
2020-02-27 13:00 ` Quentin Perret
@ 2020-02-27 16:28 ` Dietmar Eggemann
2020-02-27 16:42 ` Valentin Schneider
0 siblings, 1 reply; 7+ messages in thread
From: Dietmar Eggemann @ 2020-02-27 16:28 UTC (permalink / raw)
To: Quentin Perret, Valentin Schneider
Cc: linux-kernel, linux-arm-kernel, Peter Zijlstra, Ingo Molnar,
Vincent Guittot, morten.rasmussen, Catalin Marinas, Will Deacon,
Mark Rutland, kernel-team
On 27.02.20 13:00, Quentin Perret wrote:
> On Wednesday 26 Feb 2020 at 16:41:17 (+0000), Valentin Schneider wrote:
>> EAS already requires asymmetric CPU capacities to be enabled, and mixing
>> this with SMT is an aberration, but better be safe than sorry.
>>
>> Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
>
> Acked-by: Quentin Perret <qperret@google.com>
>
> Thanks,
> Quentin
>
>> ---
>> kernel/sched/topology.c | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c
>> index 00911884b7e7..76cd0a370b9a 100644
>> --- a/kernel/sched/topology.c
>> +++ b/kernel/sched/topology.c
>> @@ -360,6 +360,10 @@ static bool build_perf_domains(const struct cpumask *cpu_map)
>> goto free;
>> }
>>
>> + /* EAS definitely does *not* handle SMT */
>> + if (sched_smt_active())
Can you add a pr_warn() and use the current comment as the warning
message? Since we have one for !Asym CPU capacity and !schedutil.
>> + goto free;
>> +
[...]
There is this 'EAS can be used ...' list of currently 4 items in the
build_perf_domains() function header. You could include 'X. No SMT
support' there.
;-)
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] sched, arm64: enable CONFIG_SCHED_SMT for arm64
2020-02-26 16:41 [PATCH 0/2] sched, arm64: enable CONFIG_SCHED_SMT for arm64 Valentin Schneider
2020-02-26 16:41 ` [PATCH 1/2] sched/topology: Don't enable EAS on SMT systems Valentin Schneider
2020-02-26 16:41 ` [PATCH 2/2] arm64: defconfig: enable CONFIG_SCHED_SMT Valentin Schneider
@ 2020-02-27 16:32 ` Dietmar Eggemann
2 siblings, 0 replies; 7+ messages in thread
From: Dietmar Eggemann @ 2020-02-27 16:32 UTC (permalink / raw)
To: Valentin Schneider, linux-kernel, linux-arm-kernel
Cc: Peter Zijlstra, Ingo Molnar, Vincent Guittot, morten.rasmussen,
qperret, Catalin Marinas, Will Deacon, Mark Rutland
On 26.02.20 16:41, Valentin Schneider wrote:
> Hi,
>
> Strictly speaking those two patches are independent, but I figured it would
> make sense to send them together (since one led to the other).
>
> Patch 1 adds a sanity check against EAS + SMT.
> Patch 2 enables CONFIG_SCHED_SMT in the arm64 defconfig.
>
> Cheers,
> Valentin
With those small questions in 1/2 and 2/2:
Reviewed-by: "Dietmar Eggemann <dietmar.eggemann@arm.com>"
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] sched/topology: Don't enable EAS on SMT systems
2020-02-27 16:28 ` Dietmar Eggemann
@ 2020-02-27 16:42 ` Valentin Schneider
0 siblings, 0 replies; 7+ messages in thread
From: Valentin Schneider @ 2020-02-27 16:42 UTC (permalink / raw)
To: Dietmar Eggemann
Cc: Quentin Perret, linux-kernel, linux-arm-kernel, Peter Zijlstra,
Ingo Molnar, Vincent Guittot, morten.rasmussen, Catalin Marinas,
Will Deacon, Mark Rutland, kernel-team
On Thu, Feb 27 2020, Dietmar Eggemann wrote:
>>> + /* EAS definitely does *not* handle SMT */
>>> + if (sched_smt_active())
>
> Can you add a pr_warn() and use the current comment as the warning
> message? Since we have one for !Asym CPU capacity and !schedutil.
>
>>> + goto free;
>>> +
>
> [...]
>
> There is this 'EAS can be used ...' list of currently 4 items in the
> build_perf_domains() function header. You could include 'X. No SMT
> support' there.
> ;-)
Right, the rst doc says "EAS on SMT is not supported" but I think that can
be interpreted as "EAS on !asym SMT". I'll add the warning and update the
comment.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-02-27 16:43 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-26 16:41 [PATCH 0/2] sched, arm64: enable CONFIG_SCHED_SMT for arm64 Valentin Schneider
2020-02-26 16:41 ` [PATCH 1/2] sched/topology: Don't enable EAS on SMT systems Valentin Schneider
2020-02-27 13:00 ` Quentin Perret
2020-02-27 16:28 ` Dietmar Eggemann
2020-02-27 16:42 ` Valentin Schneider
2020-02-26 16:41 ` [PATCH 2/2] arm64: defconfig: enable CONFIG_SCHED_SMT Valentin Schneider
2020-02-27 16:32 ` [PATCH 0/2] sched, arm64: enable CONFIG_SCHED_SMT for arm64 Dietmar Eggemann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).