• Peter Zijlstra's avatar
    sched: correct wakeup weight calculations · 83378269
    Peter Zijlstra authored
    rw_i = {2, 4, 1, 0}
    s_i = {2/7, 4/7, 1/7, 0}
    
    wakeup on cpu0, weight=1
    
    rw'_i = {3, 4, 1, 0}
    s'_i = {3/8, 4/8, 1/8, 0}
    
    s_0 = S * rw_0 / \Sum rw_j ->
      \Sum rw_j = S*rw_0/s_0 = 1*2*7/2 = 7 (correct)
    
    s'_0 = S * (rw_0 + 1) / (\Sum rw_j + 1) =
           1 * (2+1) / (7+1) = 3/8 (correct
    
    so we find that adding 1 to cpu0 gains 5/56 in weight
    if say the other cpu were, cpu1, we'd also have to calculate its 4/56 loss
    Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
    Cc: Mike Galbraith <efault@gmx.de>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    83378269
sched_fair.c 39.4 KB