Re: [PATCH v2] cpufreq/schedutil: Cleanup, document and fix iowait boost

From: Peter Zijlstra
Date: Tue Apr 10 2018 - 15:37:30 EST


On Tue, Apr 10, 2018 at 04:59:31PM +0100, Patrick Bellasi wrote:
> The iowait boosting code has been recently updated to add a progressive
> boosting behavior which allows to be less aggressive in boosting tasks
> doing only sporadic IO operations, thus being more energy efficient for
> example on mobile platforms.
>
> The current code is now however a bit convoluted. Some functionalities
> (e.g. iowait boost reset) are replicated in different paths and their
> documentation is slightly misaligned.

While your patch does seem to improve things, it still has duplicated
bits in. Eg. the TICK_NSEC clearing exists in both functions.

> - sugov_set_iowait_boost: is now in charge only to set/increase the IO
> wait boost, every time a task wakes up from an IO wait.
>
> - sugov_iowait_boost: is now in charge to reset/reduce the IO wait
> boost, every time a sugov update is triggered, as well as
> to (eventually) enforce the currently required IO boost value.

I'm not sold on those function names; feels like we can do better,
although I'm struggling to come up with anything sensible just now.


>
> if (delta_ns > TICK_NSEC) {
> + sg_cpu->iowait_boost = iowait
> + ? sg_cpu->sg_policy->policy->min : 0;
> + sg_cpu->iowait_boost_pending = iowait;
> + return;
> }

> + if (delta_ns > TICK_NSEC) {
> + sg_cpu->iowait_boost = 0;
> + sg_cpu->iowait_boost_pending = false;
> + return;
> + }

Looks like something we can maybe put in a helper or something.