[PATCH V2 0/2] cpufreq_cooling: Get effective CPU utilization from scheduler

From: Viresh Kumar
Date: Fri Oct 23 2020 - 06:20:32 EST


Hi Peter/Rafael,

I thought about the fallback thing getting registered by scheduler with
cpufreq core, and after Peter's comment about two interactions with
cpufreq I didn't like it much. Either way we are exposing the cpu
utilization finding algorithm to rest of the kernel, through cpufreq or
otherwise.

And so kept it simple for now. Scheduler exposes a single routine,
sched_cpu_util(), along with the related enum and that's all schedutil
and cpufreq_cooling stuff want.

V1->V2:
- Name the routine as sched_cpu_util().
- Make it more self sufficient and remove few parameters that aren't
required to be exposed anymore to rest of the kernel.
- Better cleanups in schedutil and cpufreq_cooling.

---

Schedutil and fair.c use schedutil_cpu_util() to get an idea of how busy
a CPU is. Do the same for cpufreq_cooling which uses CPU's idle time
currently to get load, which is used to calculate the current power
consumption of the CPUs, which isn't that accurate.

Tested with hackbench and sysbench on Hikey (octa-core SMP) and no
regression was observed.

--
Viresh

Viresh Kumar (2):
sched/core: Rename and move schedutil_cpu_util() to core.c
thermal: cpufreq_cooling: Reuse sched_cpu_util()

drivers/thermal/cpufreq_cooling.c | 70 +++++-------------
include/linux/sched.h | 19 +++++
kernel/sched/core.c | 113 +++++++++++++++++++++++++++++
kernel/sched/cpufreq_schedutil.c | 116 +-----------------------------
kernel/sched/fair.c | 6 +-
kernel/sched/sched.h | 29 +-------
6 files changed, 156 insertions(+), 197 deletions(-)

--
2.25.0.rc1.19.g042ed3e048af