• Lai Jiangshan's avatar
    sched: 64-bit: fix arithmetics overflow · 7a232e03
    Lai Jiangshan authored
    (overflow means weight >= 2^32 here, because inv_weigh = 2^32/weight)
    
    A weight of a cfs_rq is the sum of weights of which entities
    are queued on this cfs_rq, so it will overflow when there are
    too many entities.
    
    Although, overflow occurs very rarely, but it break fairness when
    it occurs. 64-bits systems have more memory than 32-bit systems
    and 64-bit systems can create more process usually, so overflow may
    occur more frequently.
    
    This patch guarantees fairness when overflow happens on 64-bit systems.
    Thanks to the optimization of compiler, it changes nothing on 32-bit.
    Signed-off-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
    Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    7a232e03
sched.c 213 KB