diff mbox series

[2/2] arm64: defconfig: enable CONFIG_SCHED_SMT

Message ID 20200226164118.6405-3-valentin.schneider@arm.com (mailing list archive)
State New, archived
Headers show
Series sched, arm64: enable CONFIG_SCHED_SMT for arm64 | expand

Commit Message

Valentin Schneider Feb. 26, 2020, 4:41 p.m. UTC
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(+)

Comments

Dietmar Eggemann Feb. 27, 2020, 4:28 p.m. UTC | #1
On 26.02.20 16:41, Valentin Schneider wrote:
> 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.

[...]

> 
> 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

Have you tested that EAS still comes up ?
Valentin Schneider Feb. 27, 2020, 4:37 p.m. UTC | #2
On Thu, Feb 27 2020, Dietmar Eggemann wrote:
>> 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
>
> Have you tested that EAS still comes up ?

Yep:

  root@valsch-h960:~# zcat /proc/config.gz | grep SMT
  CONFIG_SCHED_SMT=y
  root@valsch-h960:~# ./set_governor.sh schedutil
  [  127.834363] root_domain 0-7: pd4:{ cpus=4-7 nr_cstate=5 } pd0:{ cpus=0-3 nr_cstate=5 }
  [  127.842344] sched_energy_set: starting EAS

No reason for it not to come up unless something's broken (but it's
always good to check!).
diff mbox series

Patch

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