• Benjamin Segall's avatar
    sched/eevdf: Fix pick_eevdf() · b01db23d
    Benjamin Segall authored
    The old pick_eevdf() could fail to find the actual earliest eligible
    deadline when it descended to the right looking for min_deadline, but
    it turned out that that min_deadline wasn't actually eligible. In that
    case we need to go back and search through any left branches we
    skipped looking for the actual best _eligible_ min_deadline.
    
    This is more expensive, but still O(log n), and at worst should only
    involve descending two branches of the rbtree.
    
    I've run this through a userspace stress test (thank you
    tools/lib/rbtree.c), so hopefully this implementation doesn't miss any
    corner cases.
    
    Fixes: 147f3efa ("sched/fair: Implement an EEVDF-like scheduling policy")
    Signed-off-by: default avatarBen Segall <bsegall@google.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/xm261qego72d.fsf_-_@google.com
    b01db23d
fair.c 346 KB