mbox series

[0/3] condition EAS enablement on FI support

Message ID 20200924123937.20938-1-ionela.voinescu@arm.com (mailing list archive)
Headers show
Series condition EAS enablement on FI support | expand

Message

Ionela Voinescu Sept. 24, 2020, 12:39 p.m. UTC
Given the maturity gained by cpufreq-based Frequency Invariance (FI)
support following the patches at [1], this series conditions Energy
Aware Scheduling (EAS) enablement on a frequency invariant system.

Currently, EAS can be enabled on a system without FI support, leading
to incorrect (energy-wise) task placements. As no warning is emitted,
it could take some debugging effort to track the behavior back to the
lack of FI support; this series changes that by disabling EAS
(and advertising it) when FI support is missing.

The series is structured as follows:
 - 1/3 - create function that can rebuild the scheduling and EAS'
   performance domains if EAS' initial conditions change
 - 2/3 - condition EAS enablement on FI support
 - 3/3 - arm64: rebuild scheduling and performance domains in the
         case of late, counter-driven FI initialisation.

This series is dependent on the patches at [1] and based on linux-next
20200918.

[1] Most recent version at:
https://lore.kernel.org/lkml/20200901205549.30096-1-ionela.voinescu@arm.com/

Ionela Voinescu (3):
  sched/topology,schedutil: wrap sched domains rebuild
  sched/topology: condition EAS enablement on FIE support
  arm64: rebuild sched domains on invariance status changes

 arch/arm64/include/asm/topology.h |  1 +
 arch/arm64/kernel/topology.c      | 10 ++++++++++
 include/linux/sched/topology.h    |  1 +
 kernel/sched/cpufreq_schedutil.c  |  9 +--------
 kernel/sched/topology.c           | 26 +++++++++++++++++++-------
 5 files changed, 32 insertions(+), 15 deletions(-)


base-commit: b652d2a5f2a4e93d803cc33eb57fdc41ee528500
prerequisite-patch-id: 592324cdfe0735a845d827d23f4d042b66e480ae
prerequisite-patch-id: b232a586616b573b7fc320df2dcf4783f26dc169
prerequisite-patch-id: 8a8238e55f4e522eb0ee44c1d4a083cac019959a
prerequisite-patch-id: 8edd7fc97f15c7f737339d3e07dbcd6c6d99d986
prerequisite-patch-id: b24b28cd2ec4c929b770f5dd3eeb30f839f8d6ab

Comments

Quentin Perret Sept. 24, 2020, 1:37 p.m. UTC | #1
On Thursday 24 Sep 2020 at 13:39:34 (+0100), Ionela Voinescu wrote:
> Given the maturity gained by cpufreq-based Frequency Invariance (FI)
> support following the patches at [1], this series conditions Energy
> Aware Scheduling (EAS) enablement on a frequency invariant system.
> 
> Currently, EAS can be enabled on a system without FI support, leading
> to incorrect (energy-wise) task placements. As no warning is emitted,
> it could take some debugging effort to track the behavior back to the
> lack of FI support; this series changes that by disabling EAS
> (and advertising it) when FI support is missing.
> 
> The series is structured as follows:
>  - 1/3 - create function that can rebuild the scheduling and EAS'
>    performance domains if EAS' initial conditions change
>  - 2/3 - condition EAS enablement on FI support
>  - 3/3 - arm64: rebuild scheduling and performance domains in the
>          case of late, counter-driven FI initialisation.

I'm still reading through this, but shouldn't patch 2 and 3 be swapped?
Otherwise we have a weird state at patch 2 where EAS will fail to start
(IIUC), which might not be ideal for bisection.

Thoughts?

Cheers,
Quentin
Ionela Voinescu Sept. 24, 2020, 4:08 p.m. UTC | #2
On Thursday 24 Sep 2020 at 14:37:27 (+0100), Quentin Perret wrote:
> On Thursday 24 Sep 2020 at 13:39:34 (+0100), Ionela Voinescu wrote:
> > Given the maturity gained by cpufreq-based Frequency Invariance (FI)
> > support following the patches at [1], this series conditions Energy
> > Aware Scheduling (EAS) enablement on a frequency invariant system.
> > 
> > Currently, EAS can be enabled on a system without FI support, leading
> > to incorrect (energy-wise) task placements. As no warning is emitted,
> > it could take some debugging effort to track the behavior back to the
> > lack of FI support; this series changes that by disabling EAS
> > (and advertising it) when FI support is missing.
> > 
> > The series is structured as follows:
> >  - 1/3 - create function that can rebuild the scheduling and EAS'
> >    performance domains if EAS' initial conditions change
> >  - 2/3 - condition EAS enablement on FI support
> >  - 3/3 - arm64: rebuild scheduling and performance domains in the
> >          case of late, counter-driven FI initialisation.
> 
> I'm still reading through this, but shouldn't patch 2 and 3 be swapped?
> Otherwise we have a weird state at patch 2 where EAS will fail to start
> (IIUC), which might not be ideal for bisection.
> 
> Thoughts?

I probably invented myself reasons for not doing it, like: without 2/3,
3/3 does not make any sense having and the scenario at 3/3 is currently
unlikely.

But it would definitely make it safer, so I'll change the order.

Thanks,
Ionela.

> 
> Cheers,
> Quentin