1. 06 Oct, 2012 1 commit
  2. 27 Sep, 2012 1 commit
  3. 26 Sep, 2012 5 commits
  4. 19 Jul, 2012 2 commits
    • Len Brown's avatar
      tools/power: turbostat: fix large c1% issue · c3ae331d
      Len Brown authored
      
      
      Under some conditions, c1% was displayed as very large number,
      much higher than 100%.
      
      c1% is not measured, it is derived as "that, which is left over"
      from other counters.  However, the other counters are not collected
      atomically, and so it is possible for c1% to be calaculagted as
      a small negative number -- displayed as very large positive.
      
      There was a check for mperf vs tsc for this already,
      but it needed to also include the other counters
      that are used to calculate c1.
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      c3ae331d
    • Len Brown's avatar
      tools/power: turbostat v2 - re-write for efficiency · c98d5d94
      Len Brown authored
      
      
      Measuring large profoundly-idle configurations
      requires turbostat to be more lightweight.
      Otherwise, the operation of turbostat itself
      can interfere with the measurements.
      
      This re-write makes turbostat topology aware.
      Hardware is accessed in "topology order".
      Redundant hardware accesses are deleted.
      Redundant output is deleted.
      Also, output is buffered and
      local RDTSC use replaces remote MSR access for TSC.
      
      From a feature point of view, the output
      looks different since redundant figures are absent.
      Also, there are now -c and -p options -- to restrict
      output to the 1st thread in each core, and the 1st
      thread in each package, respectively.  This is helpful
      to reduce output on big systems, where more detail
      than the "-s" system summary is desired.
      Finally, periodic mode output is now on stdout, not stderr.
      
      Turbostat v2 is also slightly more robust in
      handling run-time CPU online/offline events,
      as it now checks the actual map of on-line cpus rather
      than just the total number of on-line cpus.
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      c98d5d94
  5. 03 Jun, 2012 2 commits
    • Len Brown's avatar
      tools/power turbostat: fix IVB support · 650a37f3
      Len Brown authored
      Initial IVB support went into turbostat in Linux-3.1:
      553575f1
      
      
      (tools turbostat: recognize and run properly on IVB)
      
      However, when running on IVB, turbostat would fail
      to report the new couters added with SNB, c7, pc2 and pc7.
      So in scenarios where these counters are non-zero on IVB,
      turbostat would report erroneous residencey results.
      
      In particular c7 time would be added to c1 time,
      since c1 time is calculated as "that which is left over".
      
      Also, turbostat reports MHz capabilities when passed
      the "-v" option, and it would incorrectly report 133MHz
      bclk instead of 100MHz bclk for IVB, which would inflate
      GHz reported with that option.
      
      This patch is a backport of a fix already included in turbostat v2.
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      650a37f3
    • Len Brown's avatar
      tools/power turbostat: fix un-intended affinity of forked program · d15cf7c1
      Len Brown authored
      Linux 3.4 included a modification to turbostat to
      lower cross-call overhead by using scheduler affinity:
      
      15aaa346
      
      
      (tools turbostat: reduce measurement overhead due to IPIs)
      
      In the use-case where turbostat forks a child program,
      that change had the un-intended side-effect of binding
      the child to the last cpu in the system.
      
      This change removed the binding before forking the child.
      
      This is a back-port of a fix already included in turbostat v2.
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      d15cf7c1
  6. 29 Mar, 2012 3 commits
    • Len Brown's avatar
      tools turbostat: harden against cpu online/offline · 15aaa346
      Len Brown authored
      
      
      Sometimes users have turbostat running in interval mode
      when they take processors offline/online.
      
      Previously, turbostat would survive, but not gracefully.
      
      Tighten up the error checking so turbostat notices
      changesn sooner, and print just 1 line on change:
      
      turbostat: re-initialized with num_cpus %d
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      15aaa346
    • Len Brown's avatar
      tools turbostat: reduce measurement overhead due to IPIs · 88c3281f
      Len Brown authored
      
      
      turbostat uses /dev/cpu/*/msr interface to read MSRs.
      For modern systems, it reads 10 MSR/CPU.  This can
      be observed as 10 "Function Call Interrupts"
      per CPU per sample added to /proc/interrupts.
      
      This overhead is measurable on large idle systems,
      and as Yoquan Song pointed out, it can even trick
      cpuidle into thinking the system is busy.
      
      Here turbostat re-schedules itself in-turn to each
      CPU so that its MSR reads will always be local.
      This replaces the 10 "Function Call Interrupts"
      with a single "Rescheduling interrupt" per sample
      per CPU.
      
      On an idle 32-CPU system, this shifts some residency from
      the shallow c1 state to the deeper c7 state:
      
       # ./turbostat.old -s
         %c0  GHz  TSC    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7
        0.27 1.29 2.29   0.95   0.02   0.00  98.77  20.23   0.00  77.41   0.00
        0.25 1.24 2.29   0.98   0.02   0.00  98.75  20.34   0.03  77.74   0.00
        0.27 1.22 2.29   0.54   0.00   0.00  99.18  20.64   0.00  77.70   0.00
        0.26 1.22 2.29   1.22   0.00   0.00  98.52  20.22   0.00  77.74   0.00
        0.26 1.38 2.29   0.78   0.02   0.00  98.95  20.51   0.05  77.56   0.00
      ^C
       i# ./turbostat.new -s
         %c0  GHz  TSC    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7
        0.27 1.20 2.29   0.24   0.01   0.00  99.49  20.58   0.00  78.20   0.00
        0.27 1.22 2.29   0.25   0.00   0.00  99.48  20.79   0.00  77.85   0.00
        0.27 1.20 2.29   0.25   0.02   0.00  99.46  20.71   0.03  77.89   0.00
        0.28 1.26 2.29   0.25   0.01   0.00  99.46  20.89   0.02  77.67   0.00
        0.27 1.20 2.29   0.24   0.01   0.00  99.48  20.65   0.00  78.04   0.00
      
      cc: Youquan Song <youquan.song@intel.com>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      88c3281f
    • Len Brown's avatar
      tools turbostat: add summary option · e23da037
      Len Brown authored
      
      
      turbostat -s
      cuts down on the amount of output, per user request.
      
      also treak some output whitespace and the man page.
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      e23da037
  7. 18 Nov, 2011 1 commit
  8. 02 Aug, 2011 1 commit
  9. 03 Jul, 2011 1 commit
  10. 10 Apr, 2011 1 commit
  11. 10 Feb, 2011 2 commits
  12. 11 Jan, 2011 1 commit
    • Len Brown's avatar
      tools: create power/x86/turbostat · 103a8fea
      Len Brown authored
      
      
      turbostat is a Linux tool to observe proper operation
      of Intel(R) Turbo Boost Technology.
      
      turbostat displays the actual processor frequency
      on x86 processors that include APERF and MPERF MSRs.
      
      Note that turbostat is of limited utility on Linux
      kernels 2.6.29 and older, as acpi_cpufreq cleared
      APERF/MPERF up through that release.
      
      On Intel Core i3/i5/i7 (Nehalem) and newer processors,
      turbostat also displays residency in idle power saving states,
      which are necessary for diagnosing any cpuidle issues
      that may have an effect on turbo-mode.
      
      See the turbostat.8 man page for example usage.
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      103a8fea