• Patrick Bellasi's avatar
    sched/fair/util_est: Implement faster ramp-up EWMA on utilization increases · b8c96361
    Patrick Bellasi authored
    The estimated utilization for a task:
    
       util_est = max(util_avg, est.enqueue, est.ewma)
    
    is defined based on:
    
     - util_avg: the PELT defined utilization
     - est.enqueued: the util_avg at the end of the last activation
     - est.ewma:     a exponential moving average on the est.enqueued samples
    
    According to this definition, when a task suddenly changes its bandwidth
    requirements from small to big, the EWMA will need to collect multiple
    samples before converging up to track the new big utilization.
    
    This slow convergence towards bigger utilization values is not
    aligned to the default scheduler behavior, which is to optimize for
    performance. Moreover, the est.ewma component fails to compensate for
    temporarely utilization drops which spans just few est.enqueued samples.
    
    To let util_est do a better job in the scenario depicted above, change
    its definition by making util_est directly follow upward motion and
    only decay the est.ewma on downward.
    Signed-off-by: default avatarPatrick Bellasi <patrick.bellasi@matbug.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: default avatarVincent Guittot <vincent.guittot@linaro.org>
    Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>
    Cc: Douglas Raillard <douglas.raillard@arm.com>
    Cc: Juri Lelli <juri.lelli@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Quentin Perret <qperret@google.com>
    Cc: Rafael J . Wysocki <rafael.j.wysocki@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/20191023205630.14469-1-patrick.bellasi@matbug.netSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    b8c96361
features.h 2.4 KB