lkml.org 
[lkml]   [2014]   [Feb]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/7] Cpuidle: Ensure menu coefficients stay within domain
    Date
    The menu governor uses coefficients as one method of actual idle
    period length estimation. The coefficients are, as detailed below,
    multipliers giving expected idle period length from time until next
    timer expiry. The multipliers are supposed to have domain of (0..1].

    The coefficients are fractions where only the numerators are stored
    and denominators are a shared constant RESOLUTION*DECAY. Since the
    value of the coefficient should always be greater than 0 and less
    than or equal to 1, the numerator must have a value greater than
    0 and less than or equal to RESOLUTION*DECAY.

    If the coefficients are updated with measured idle durations exceeding
    timer length, the multiplier may reach values exceeding unity (i.e.
    the stored numerator exceeds RESOLUTION*DECAY). This patch ensures that
    the multipliers are updated with durations capped to timer length.

    Signed-off-by: Tuukka Tikkanen <tuukka.tikkanen@linaro.org>
    ---
    drivers/cpuidle/governors/menu.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c
    index 115386a..f0995dd 100644
    --- a/drivers/cpuidle/governors/menu.c
    +++ b/drivers/cpuidle/governors/menu.c
    @@ -410,6 +410,9 @@ static void menu_update(struct cpuidle_driver *drv, struct cpuidle_device *dev)
    if (measured_us > target->exit_latency)
    measured_us -= target->exit_latency;

    + /* Make sure our coefficients do not exceed unity */
    + if (measured_us > data->next_timer_us)
    + measured_us = data->next_timer_us;

    /* Update our correction ratio */
    new_factor = data->correction_factor[data->bucket];
    --
    1.7.9.5


    \
     
     \ /
      Last update: 2014-02-25 01:41    [W:4.381 / U:0.720 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site