• Len Brown's avatar
    tools/power turbostat: detect and work around syscall jitter · 0102b067
    Len Brown authored
    The accuracy of Bzy_Mhz and Busy% depend on reading
    the TSC, APERF, and MPERF close together in time.
    
    When there is a very short measurement interval,
    or a large system is profoundly idle, the changes
    in APERF and MPERF may be very small.
    They can be small enough that an expensive interrupt
    between reading APERF and MPERF can cause the APERF/MPERF
    ratio to become inaccurate, resulting in invalid
    calculation and display of Bzy_MHz.
    
    A dummy APERF read of APERF makes this problem
    much more rare.  Apparently this 1st systemn call
    after exiting a long stretch of idle is when we
    typically see expensive timer interrupts that cause
    large jitter.
    
    For the cases that dummy APERF read fails to prevent,
    we compare the latency of the APERF and MPERF reads.
    If they differ by more than 2x, we re-issue them.
    Signed-off-by: default avatarLen Brown <len.brown@intel.com>
    0102b067
turbostat.c 93.5 KB