OSDN Git Service

sched/fair: Remove redundant call to cpufreq_update_util()
authorVincent Guittot <vincent.guittot@linaro.org>
Wed, 15 Jan 2020 10:20:20 +0000 (11:20 +0100)
committerPeter Zijlstra <peterz@infradead.org>
Fri, 17 Jan 2020 09:19:22 +0000 (10:19 +0100)
commita4f9a0e51bbf89cb461b1985a1a570e6b87da3b5
tree9a4f99835b7065a85a2832921bde7ef3f2233503
parent3d817689a62cf71bbb290af18cd26cf9764f38fe
sched/fair: Remove redundant call to cpufreq_update_util()

With commit

  bef69dd87828 ("sched/cpufreq: Move the cfs_rq_util_change() call to cpufreq_update_util()")

update_load_avg() has become the central point for calling cpufreq
(not including the update of blocked load). This change helps to
simplify further the number of calls to cpufreq_update_util() and to
remove last redundant ones. With update_load_avg(), we are now sure
that cpufreq_update_util() will be called after every task attachment
to a cfs_rq and especially after propagating this event down to the
util_avg of the root cfs_rq, which is the level that is used by
cpufreq governors like schedutil to set the frequency of a CPU.

The SCHED_CPUFREQ_MIGRATION flag forces an early call to cpufreq when
the migration happens in a cgroup whereas util_avg of root cfs_rq is
not yet updated and this call is duplicated with the one that happens
immediately after when the migration event reaches the root cfs_rq.
The dedicated flag SCHED_CPUFREQ_MIGRATION is now useless and can be
removed. The interface of attach_entity_load_avg() can also be
simplified accordingly.

Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://lkml.kernel.org/r/1579083620-24943-1-git-send-email-vincent.guittot@linaro.org
include/linux/sched/cpufreq.h
kernel/sched/fair.c