Re: [PATCH 1/2] sched/fair: move cpufreq hook to update_cfs_rq_load_avg()

From: Dietmar Eggemann
Date: Mon Mar 28 2016 - 16:05:19 EST


On 03/28/2016 06:34 PM, Steve Muckle wrote:
Hi Dietmar,

On 03/28/2016 05:02 AM, Dietmar Eggemann wrote:
Hi Steve,

these patches fall into the bucket of 'optimization of updating the
value only if the root cfs_rq util has changed' as discussed in '[PATCH
5/8] sched/cpufreq: pass sched class into cpufreq_update_util' of Mike
T's current series '[PATCH 0/8] schedutil enhancements', right?

I would say just the second patch is an optimization. The first and
third patches cover additional paths in CFS where the hook should be
called but currently is not, which I think is a correctness issue.

Not disagreeing here but I don't know if this level of accuracy is really needed. I mean we currently miss updates in enqueue_task_fair()->enqueue_entity()->enqueue_entity_load_avg() and idle_balance()/rebalance_domains()->update_blocked_averages() but there are plenty of call sides of update_load_avg(se, ...) with '&rq_of(cfs_rq_of(se))->cfs == cfs_rq_of(se)'.

The question for me is does schedutil work better with this new, more accurate signal? IMO, not receiving a bunch of consecutive cpufreq_update_util's w/ the same 'util' value is probably a good thing, unless we see the interaction with RT/DL class as mentioned by Sai. Here an agreement on the design for the 'capacity vote aggregation from CFS/RT/DL' would help to clarify.

I wonder if it makes sense to apply them before a proper 'capacity vote
aggregation from CFS/RT/DL' has been agreed upon?

Getting the right call sites for the hook in CFS should be orthogonal to
the sched class vote aggregation IMO.

Hopefully :-)

[...]

Cheers,

-- Dietmar