Skip to content
  • Adrian Hunter's avatar
    perf/x86: Improve accuracy of perf/sched clock · b20112ed
    Adrian Hunter authored
    
    
    When TSC is stable perf/sched clock is based on it.
    However the conversion from cycles to nanoseconds
    is not as accurate as it could be.  Because
    CYC2NS_SCALE_FACTOR is 10, the accuracy is +/- 1/2048
    
    The change is to calculate the maximum shift that
    results in a multiplier that is still a 32-bit number.
    For example all frequencies over 1 GHz will have
    a shift of 32, making the accuracy of the conversion
    +/- 1/(2^33).  That is achieved by using the
    'clocks_calc_mult_shift()' function.
    
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: http://lkml.kernel.org/r/1440147918-22250-1-git-send-email-adrian.hunter@intel.com
    
    
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    b20112ed