• Nick Piggin's avatar
    [PATCH] sched: likely profiling · beed33a8
    Nick Piggin authored
    This likely profiling is pretty fun. I found a few possible problems
    in sched.c.
    
    This patch may be not measurable, but when I did measure long ago,
    nooping (un)likely cost a couple of % on scheduler heavy benchmarks, so
    it all adds up.
    
    Tweak some branch hints:
    
    - the 2nd 64 bits in the bitmask is likely to be populated, because it
      contains the first 28 bits (nearly 3/4) of the normal priorities.
      (ratio of 669669:691 ~= 1000:1).
    
    - it isn't unlikely that context switching switches to another process. it
      might be very rapidly switching to and from the idle process (ratio of
      475815:419004 and 471330:423544). Let the branch predictor decide.
    
    - preempt_enable seems to be very often called in a nested preempt_disable
      or with interrupts disabled (ratio of 3567760:87965 ~= 40:1)
    Signed-off-by: default avatarNick Piggin <npiggin@suse.de>
    Acked-by: default avatarIngo Molnar <mingo@elte.hu>
    Cc: Daniel Walker <dwalker@mvista.com>
    Cc: Hua Zhong <hzhong@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    beed33a8
sched.c 174 KB