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.

Reply via email to