diff mbox series

ARM: config: multi_v7 Use schedutil cpufreq

Message ID 20200229210225.173084-1-linus.walleij@linaro.org (mailing list archive)
State Deferred
Headers show
Series ARM: config: multi_v7 Use schedutil cpufreq | expand

Commit Message

Linus Walleij Feb. 29, 2020, 9:02 p.m. UTC
The multi v7 config is using the ondemand governor by default,
but the schedutil is mature and enabled by default in other
defconfigs, let's encourage schedutil as governor but keep
ondemand as compiled-in instead of the other way around.

Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
ARM SoC folks: if you agree please apply this directly. I think
putting this in the multi v7 as default is a good way to
actively encourage this governor, unless Viresh or Rafael
objects.
---
 arch/arm/configs/multi_v7_defconfig | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Viresh Kumar March 2, 2020, 4:22 a.m. UTC | #1
On 29-02-20, 22:02, Linus Walleij wrote:
> The multi v7 config is using the ondemand governor by default,
> but the schedutil is mature and enabled by default in other
> defconfigs, let's encourage schedutil as governor but keep
> ondemand as compiled-in instead of the other way around.
> 
> Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
> Cc: Viresh Kumar <viresh.kumar@linaro.org>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> ARM SoC folks: if you agree please apply this directly. I think
> putting this in the multi v7 as default is a good way to
> actively encourage this governor, unless Viresh or Rafael
> objects.
> ---
>  arch/arm/configs/multi_v7_defconfig | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
> index 017d65f86eba..beec2c8d76aa 100644
> --- a/arch/arm/configs/multi_v7_defconfig
> +++ b/arch/arm/configs/multi_v7_defconfig
> @@ -100,11 +100,11 @@ CONFIG_KEXEC=y
>  CONFIG_EFI=y
>  CONFIG_CPU_FREQ=y
>  CONFIG_CPU_FREQ_STAT=y
> -CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
> +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
>  CONFIG_CPU_FREQ_GOV_POWERSAVE=m
>  CONFIG_CPU_FREQ_GOV_USERSPACE=m
>  CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
> -CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
> +CONFIG_CPU_FREQ_GOV_ONDEMAND=y
>  CONFIG_CPUFREQ_DT=y
>  CONFIG_ARM_IMX6Q_CPUFREQ=y
>  CONFIG_ARM_RASPBERRYPI_CPUFREQ=y

FWIW, I have tried something similar for arm64 earlier.

https://lore.kernel.org/lkml/af12e002bc165844101830c0eb00e283b536a879.1510813288.git.viresh.kumar@linaro.org/
Arnd Bergmann March 25, 2020, 4:27 p.m. UTC | #2
On Mon, Mar 2, 2020 at 5:22 AM Viresh Kumar <viresh.kumar@linaro.org> wrote:
>
> On 29-02-20, 22:02, Linus Walleij wrote:
> > The multi v7 config is using the ondemand governor by default,
> > but the schedutil is mature and enabled by default in other
> > defconfigs, let's encourage schedutil as governor but keep
> > ondemand as compiled-in instead of the other way around.
> >
> > Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
> > Cc: Viresh Kumar <viresh.kumar@linaro.org>
> > Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> > ---
> > ARM SoC folks: if you agree please apply this directly. I think
> > putting this in the multi v7 as default is a good way to
> > actively encourage this governor, unless Viresh or Rafael
> > objects.
> > ---
>
> FWIW, I have tried something similar for arm64 earlier.
>
> https://lore.kernel.org/lkml/af12e002bc165844101830c0eb00e283b536a879.1510813288.git.viresh.kumar@linaro.org/

I've dropped this one and not applied it for now after rereading the old thread.
If there is a broader agreement on what the default should be, please
collect more Acks and we can apply whatever you come up with.

       Arnd
Linus Walleij March 26, 2020, 10:08 p.m. UTC | #3
On Wed, Mar 25, 2020 at 5:28 PM Arnd Bergmann <arnd@arndb.de> wrote:
> On Mon, Mar 2, 2020 at 5:22 AM Viresh Kumar <viresh.kumar@linaro.org> wrote:

> > FWIW, I have tried something similar for arm64 earlier.
> >
> > https://lore.kernel.org/lkml/af12e002bc165844101830c0eb00e283b536a879.1510813288.git.viresh.kumar@linaro.org/
>
> I've dropped this one and not applied it for now after rereading the old thread.
> If there is a broader agreement on what the default should be, please
> collect more Acks and we can apply whatever you come up with.

I think there is a more compelling argument: if I understand correctly
the energy aware scheduling and HMP on big.LITTLE only works
correctly if schedutil is used as cpufreq governor (correct Vincent, Viresh?)

That would make the default multi_v7 unusable (or misbehaving)
on e.g. Vexpress TC2.

Thus I suspect the Vexpress and other machines using HMP
and big.LITTLE should just select
CPU_FREQ_DEFAULT_GOV_SCHEDUTIL in their Kconfig.

That will of course make it percolate up to multi_v7 by default
as well.

If more magic configs are necessary to select to make a TC2
work properly I'd like to know these as well so we can just select
them all by default also for these targets.

Yours,
Linus Walleij
Viresh Kumar March 27, 2020, 5:07 a.m. UTC | #4
On 26-03-20, 23:08, Linus Walleij wrote:
> On Wed, Mar 25, 2020 at 5:28 PM Arnd Bergmann <arnd@arndb.de> wrote:
> > On Mon, Mar 2, 2020 at 5:22 AM Viresh Kumar <viresh.kumar@linaro.org> wrote:
> 
> > > FWIW, I have tried something similar for arm64 earlier.
> > >
> > > https://lore.kernel.org/lkml/af12e002bc165844101830c0eb00e283b536a879.1510813288.git.viresh.kumar@linaro.org/
> >
> > I've dropped this one and not applied it for now after rereading the old thread.
> > If there is a broader agreement on what the default should be, please
> > collect more Acks and we can apply whatever you come up with.
> 
> I think there is a more compelling argument: if I understand correctly
> the energy aware scheduling and HMP on big.LITTLE only works
> correctly if schedutil is used as cpufreq governor (correct Vincent, Viresh?)
> 
> That would make the default multi_v7 unusable (or misbehaving)
> on e.g. Vexpress TC2.
> 
> Thus I suspect the Vexpress and other machines using HMP
> and big.LITTLE should just select
> CPU_FREQ_DEFAULT_GOV_SCHEDUTIL in their Kconfig.
> 
> That will of course make it percolate up to multi_v7 by default
> as well.
> 
> If more magic configs are necessary to select to make a TC2
> work properly I'd like to know these as well so we can just select
> them all by default also for these targets.

I always agreed that schedutil must be selected as default governor
instead of ondemand and I still want to get my arm64 patch merged :)

And yes, schedutil will work the best for big LITTLE stuff.
Vincent Guittot March 27, 2020, 8:06 a.m. UTC | #5
On Thu, 26 Mar 2020 at 23:08, Linus Walleij <linus.walleij@linaro.org> wrote:
>
> On Wed, Mar 25, 2020 at 5:28 PM Arnd Bergmann <arnd@arndb.de> wrote:
> > On Mon, Mar 2, 2020 at 5:22 AM Viresh Kumar <viresh.kumar@linaro.org> wrote:
>
> > > FWIW, I have tried something similar for arm64 earlier.
> > >
> > > https://lore.kernel.org/lkml/af12e002bc165844101830c0eb00e283b536a879.1510813288.git.viresh.kumar@linaro.org/
> >
> > I've dropped this one and not applied it for now after rereading the old thread.
> > If there is a broader agreement on what the default should be, please
> > collect more Acks and we can apply whatever you come up with.
>
> I think there is a more compelling argument: if I understand correctly
> the energy aware scheduling and HMP on big.LITTLE only works
> correctly if schedutil is used as cpufreq governor (correct Vincent, Viresh?)

EAS is disabled while building scheduler toology if schedutil is not
the cpufreq governor

Quoting 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;
 *



>
> That would make the default multi_v7 unusable (or misbehaving)
> on e.g. Vexpress TC2.
>
> Thus I suspect the Vexpress and other machines using HMP
> and big.LITTLE should just select
> CPU_FREQ_DEFAULT_GOV_SCHEDUTIL in their Kconfig.
>
> That will of course make it percolate up to multi_v7 by default
> as well.
>
> If more magic configs are necessary to select to make a TC2
> work properly I'd like to know these as well so we can just select
> them all by default also for these targets.
>
> Yours,
> Linus Walleij
diff mbox series

Patch

diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
index 017d65f86eba..beec2c8d76aa 100644
--- a/arch/arm/configs/multi_v7_defconfig
+++ b/arch/arm/configs/multi_v7_defconfig
@@ -100,11 +100,11 @@  CONFIG_KEXEC=y
 CONFIG_EFI=y
 CONFIG_CPU_FREQ=y
 CONFIG_CPU_FREQ_STAT=y
-CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
 CONFIG_CPU_FREQ_GOV_POWERSAVE=m
 CONFIG_CPU_FREQ_GOV_USERSPACE=m
 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
-CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
 CONFIG_CPUFREQ_DT=y
 CONFIG_ARM_IMX6Q_CPUFREQ=y
 CONFIG_ARM_RASPBERRYPI_CPUFREQ=y