• Steven Rostedt's avatar
    sched_clock: fix calculation of other CPU · 2b8a0cf4
    Steven Rostedt authored
    The algorithm to calculate the 'now' of another CPU is not correct.
    At each scheduler tick, each CPU records the last sched_clock and
    gtod (tick_raw and tick_gtod respectively). If the TSC is somewhat the
    same in speed between two clocks the algorithm would be:
    
      tick_gtod1 + (now1 - tick_raw1) = tick_gtod2 + (now2 - tick_raw2)
    
    To calculate now2 we would have:
    
      now2 = (tick_gtod1 - tick_gtod2) + (tick_raw2 - tick_raw1) + now1
    
    Currently the algorithm is:
    
      now2 = (tick_gtod1 - tick_gtod2) + (tick_raw1 - tick_raw2) + now1
    
    This solves most of the rest of the issues I've had with timestamps in
    ftace.
    Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: john stultz <johnstul@us.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    2b8a0cf4
sched_clock.c 6.48 KB