Messages in this thread | | | Date | Tue, 12 Dec 2023 12:35:35 +0000 | From | Qais Yousef <> | Subject | Re: [PATCH 1/4] sched/fair: Be less aggressive in calling cpufreq_update_util() |
| |
On 12/12/23 11:46, Dietmar Eggemann wrote: > On 08/12/2023 02:52, Qais Yousef wrote: > > Due to the way code is structured, it makes a lot of sense to trigger > > cpufreq_update_util() from update_load_avg(). But this is too aggressive > > as in most cases we are iterating through entities in a loop to > > update_load_avg() in the hierarchy. So we end up sending too many > > request in an loop as we're updating the hierarchy. > > But update_load_avg() calls cfs_rq_util_change() which only issues a > cpufreq_update_util() call for the root cfs_rq?
Yes I've noticed that and wondered. Maybe my analysis was flawed and I was just hitting the issue of iowait boost request conflicting with update_load_avg() request.
Let me have another look. I think we'll still end up needing to take the update out of util_avg to be able to combine the two calls.
Cheers
-- Qais Yousef
> > So the 'iterating through entities' should be for a task in a non-root > taskgroup which the condition (1) takes care of. > > cfs_rq_util_change() > > ... > if (&rq->cfs == cfs_rq) (1) > > cpufreq_update_util() > > [...]
| |