• Josh Don's avatar
    Revert "sched/fair: Make sure to try to detach at least one movable task" · 2feab249
    Josh Don authored
    This reverts commit b0defa7a.
    
    b0defa7a changed the load balancing logic to ignore env.max_loop if
    all tasks examined to that point were pinned. The goal of the patch was
    to make it more likely to be able to detach a task buried in a long list
    of pinned tasks. However, this has the unfortunate side effect of
    creating an O(n) iteration in detach_tasks(), as we now must fully
    iterate every task on a cpu if all or most are pinned. Since this load
    balance code is done with rq lock held, and often in softirq context, it
    is very easy to trigger hard lockups. We observed such hard lockups with
    a user who affined O(10k) threads to a single cpu.
    
    When I discussed this with Vincent he initially suggested that we keep
    the limit on the number of tasks to detach, but increase the number of
    tasks we can search. However, after some back and forth on the mailing
    list, he recommended we instead revert the original patch, as it seems
    likely no one was actually getting hit by the original issue.
    
    Fixes: b0defa7a ("sched/fair: Make sure to try to detach at least one movable task")
    Signed-off-by: default avatarJosh Don <joshdon@google.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: default avatarVincent Guittot <vincent.guittot@linaro.org>
    Link: https://lore.kernel.org/r/20240620214450.316280-1-joshdon@google.com
    2feab249
fair.c 354 KB