• Morten Rasmussen's avatar
    sched/fair: Compute task/cpu utilization at wake-up correctly · 104cb16d
    Morten Rasmussen authored
    At task wake-up load-tracking isn't updated until the task is enqueued.
    The task's own view of its utilization contribution may therefore not be
    aligned with its contribution to the cfs_rq load-tracking which may have
    been updated in the meantime. Basically, the task's own utilization
    hasn't yet accounted for the sleep decay, while the cfs_rq may have
    (partially). Estimating the cfs_rq utilization in case the task is
    migrated at wake-up as task_rq(p)->cfs.avg.util_avg - p->se.avg.util_avg
    is therefore incorrect as the two load-tracking signals aren't time
    synchronized (different last update).
    
    To solve this problem, this patch synchronizes the task utilization with
    its previous rq before the task utilization is used in the wake-up path.
    Currently the update/synchronization is done _after_ the task has been
    placed by select_task_rq_fair(). The synchronization is done without
    having to take the rq lock using the existing mechanism used in
    remove_entity_load_avg().
    Signed-off-by: default avatarMorten Rasmussen <morten.rasmussen@arm.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: dietmar.eggemann@arm.com
    Cc: freedom.tan@mediatek.com
    Cc: keita.kobayashi.ym@renesas.com
    Cc: mgalbraith@suse.de
    Cc: sgurrappadi@nvidia.com
    Cc: vincent.guittot@linaro.org
    Cc: yuyang.du@intel.com
    Link: http://lkml.kernel.org/r/1476452472-24740-2-git-send-email-morten.rasmussen@arm.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    104cb16d
fair.c 238 KB