• Peter Zijlstra's avatar
    sched/fair: Optimize __update_load_avg() · 6115c793
    Peter Zijlstra authored
    
    
    Prior to this patch; the line:
    
    	scaled_delta_w = (delta_w * 1024) >> 10;
    
    which is the result of the default arch_scale_freq_capacity()
    function, turns into:
    
        1b03:	49 89 d1             	mov    %rdx,%r9
        1b06:	49 c1 e1 0a          	shl    $0xa,%r9
        1b0a:	49 c1 e9 0a          	shr    $0xa,%r9
    
    Which is silly; when made unsigned int, GCC recognises this as
    pointless ops and fails to emit them (confirmed on 4.9.3 and 5.1.1).
    
    Furthermore, afaict unsigned is actually the correct type for these
    fields anyway, as we've explicitly ruled out negative delta's earlier
    in this function.
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    6115c793
fair.c 217 KB