diff mbox series

cpufreq: Select schedutil when using big.LITTLE

Message ID 20200402080239.7471-1-linus.walleij@linaro.org (mailing list archive)
State New, archived
Headers show
Series cpufreq: Select schedutil when using big.LITTLE | expand

Commit Message

Linus Walleij April 2, 2020, 8:02 a.m. UTC
When we are using a system with big.LITTLE HMP
configuration, we need to use EAS to schedule the
system.

As can be seen from kernel/sched/topology.c:

 "EAS can be used on a root domain if it meets all the following conditions:
  1. an Energy Model (EM) is available;
  2. the SD_ASYM_CPUCAPACITY flag is set in the sched_domain hierarchy.
  3. no SMT is detected.
  4. the EM complexity is low enough to keep scheduling overheads low;
  5. schedutil is driving the frequency of all CPUs of the rd;"

This means that at the very least, schedutil needs to be
available as a scheduling policy for EAS to work on these
systems. Make this explicit by defaulting to the schedutil
governor if BIG_LITTLE is selected.

Currently users of the TC2 board (like me) has to figure these
dependencies out themselves and it is not helpful.

Suggested-by: Arnd Bergmann <arnd@arndb.de>
Cc: Vincent Guittot <vincent.guittot@linaro.org>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/cpufreq/Kconfig | 1 +
 1 file changed, 1 insertion(+)

Comments

Sudeep Holla April 2, 2020, 9:14 a.m. UTC | #1
On Thu, Apr 02, 2020 at 10:02:39AM +0200, Linus Walleij wrote:
> When we are using a system with big.LITTLE HMP
> configuration, we need to use EAS to schedule the
> system.
> 
> As can be seen from kernel/sched/topology.c:
> 
>  "EAS can be used on a root domain if it meets all the following conditions:
>   1. an Energy Model (EM) is available;
>   2. the SD_ASYM_CPUCAPACITY flag is set in the sched_domain hierarchy.
>   3. no SMT is detected.
>   4. the EM complexity is low enough to keep scheduling overheads low;
>   5. schedutil is driving the frequency of all CPUs of the rd;"
> 
> This means that at the very least, schedutil needs to be
> available as a scheduling policy for EAS to work on these
> systems. Make this explicit by defaulting to the schedutil
> governor if BIG_LITTLE is selected.
> 
> Currently users of the TC2 board (like me) has to figure these
> dependencies out themselves and it is not helpful.
> 
> Suggested-by: Arnd Bergmann <arnd@arndb.de>
> Cc: Vincent Guittot <vincent.guittot@linaro.org>
> Cc: Viresh Kumar <viresh.kumar@linaro.org>
> Cc: Sudeep Holla <sudeep.holla@arm.com>

Good to see another user of TC2 ;)

FWIW:
Acked-by: Sudeep Holla <sudeep.holla@arm.com>
Rafael J. Wysocki April 2, 2020, 9:44 a.m. UTC | #2
On Thu, Apr 2, 2020 at 11:15 AM Sudeep Holla <sudeep.holla@arm.com> wrote:
>
> On Thu, Apr 02, 2020 at 10:02:39AM +0200, Linus Walleij wrote:
> > When we are using a system with big.LITTLE HMP
> > configuration, we need to use EAS to schedule the
> > system.
> >
> > As can be seen from kernel/sched/topology.c:
> >
> >  "EAS can be used on a root domain if it meets all the following conditions:
> >   1. an Energy Model (EM) is available;
> >   2. the SD_ASYM_CPUCAPACITY flag is set in the sched_domain hierarchy.
> >   3. no SMT is detected.
> >   4. the EM complexity is low enough to keep scheduling overheads low;
> >   5. schedutil is driving the frequency of all CPUs of the rd;"
> >
> > This means that at the very least, schedutil needs to be
> > available as a scheduling policy for EAS to work on these
> > systems. Make this explicit by defaulting to the schedutil
> > governor if BIG_LITTLE is selected.
> >
> > Currently users of the TC2 board (like me) has to figure these
> > dependencies out themselves and it is not helpful.
> >
> > Suggested-by: Arnd Bergmann <arnd@arndb.de>
> > Cc: Vincent Guittot <vincent.guittot@linaro.org>
> > Cc: Viresh Kumar <viresh.kumar@linaro.org>
> > Cc: Sudeep Holla <sudeep.holla@arm.com>
>
> Good to see another user of TC2 ;)
>
> FWIW:
> Acked-by: Sudeep Holla <sudeep.holla@arm.com>

This slightly clashes with
https://patchwork.kernel.org/patch/11463531/, so I'm going to queue up
them both.

Thanks!
Viresh Kumar April 3, 2020, 5:48 a.m. UTC | #3
On 02-04-20, 10:02, Linus Walleij wrote:
> When we are using a system with big.LITTLE HMP
> configuration, we need to use EAS to schedule the
> system.
> 
> As can be seen from kernel/sched/topology.c:
> 
>  "EAS can be used on a root domain if it meets all the following conditions:
>   1. an Energy Model (EM) is available;
>   2. the SD_ASYM_CPUCAPACITY flag is set in the sched_domain hierarchy.
>   3. no SMT is detected.
>   4. the EM complexity is low enough to keep scheduling overheads low;
>   5. schedutil is driving the frequency of all CPUs of the rd;"
> 
> This means that at the very least, schedutil needs to be
> available as a scheduling policy for EAS to work on these
> systems. Make this explicit by defaulting to the schedutil
> governor if BIG_LITTLE is selected.
> 
> Currently users of the TC2 board (like me) has to figure these
> dependencies out themselves and it is not helpful.
> 
> Suggested-by: Arnd Bergmann <arnd@arndb.de>
> Cc: Vincent Guittot <vincent.guittot@linaro.org>
> Cc: Viresh Kumar <viresh.kumar@linaro.org>
> Cc: Sudeep Holla <sudeep.holla@arm.com>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
>  drivers/cpufreq/Kconfig | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
> index bff5295016ae..873aefd96cf2 100644
> --- a/drivers/cpufreq/Kconfig
> +++ b/drivers/cpufreq/Kconfig
> @@ -36,6 +36,7 @@ config CPU_FREQ_STAT
>  
>  choice
>  	prompt "Default CPUFreq governor"
> +	default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if BIG_LITTLE
>  	default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1100_CPUFREQ || ARM_SA1110_CPUFREQ
>  	default CPU_FREQ_DEFAULT_GOV_PERFORMANCE
>  	help

Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
diff mbox series

Patch

diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
index bff5295016ae..873aefd96cf2 100644
--- a/drivers/cpufreq/Kconfig
+++ b/drivers/cpufreq/Kconfig
@@ -36,6 +36,7 @@  config CPU_FREQ_STAT
 
 choice
 	prompt "Default CPUFreq governor"
+	default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if BIG_LITTLE
 	default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1100_CPUFREQ || ARM_SA1110_CPUFREQ
 	default CPU_FREQ_DEFAULT_GOV_PERFORMANCE
 	help