• Vincent Guittot's avatar
    sched/fair: Prefer prev cpu in asymmetric wakeup path · b4c9c9f1
    Vincent Guittot authored
    During fast wakeup path, scheduler always check whether local or prev
    cpus are good candidates for the task before looking for other cpus in
    the domain. With commit b7a33161 ("sched/fair: Add asymmetric CPU
    capacity wakeup scan") the heterogenous system gains a dedicated path
    but doesn't try to reuse prev cpu whenever possible. If the previous
    cpu is idle and belong to the LLC domain, we should check it 1st
    before looking for another cpu because it stays one of the best
    candidate and this also stabilizes task placement on the system.
    
    This change aligns asymmetric path behavior with symmetric one and reduces
    cases where the task migrates across all cpus of the sd_asym_cpucapacity
    domains at wakeup.
    
    This change does not impact normal EAS mode but only the overloaded case or
    when EAS is not used.
    
    - On hikey960 with performance governor (EAS disable)
    
    ./perf bench sched pipe -T -l 50000
                 mainline           w/ patch
    # migrations   999364                  0
    ops/sec        149313(+/-0.28%)   182587(+/- 0.40) +22%
    
    - On hikey with performance governor
    
    ./perf bench sched pipe -T -l 50000
                 mainline           w/ patch
    # migrations        0                  0
    ops/sec         47721(+/-0.76%)    47899(+/- 0.56) +0.4%
    
    According to test on hikey, the patch doesn't impact symmetric system
    compared to current implementation (only tested on arm64)
    
    Also read the uclamped value of task's utilization at most twice instead
    instead each time we compare task's utilization with cpu's capacity.
    
    Fixes: b7a33161 ("sched/fair: Add asymmetric CPU capacity wakeup scan")
    Signed-off-by: default avatarVincent Guittot <vincent.guittot@linaro.org>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Tested-by: default avatarDietmar Eggemann <dietmar.eggemann@arm.com>
    Reviewed-by: default avatarValentin Schneider <valentin.schneider@arm.com>
    Link: https://lkml.kernel.org/r/20201029161824.26389-1-vincent.guittot@linaro.org
    b4c9c9f1
fair.c 298 KB