Software Tuning, Performance Optimization & Platform Monitoring
Discussion regarding monitoring and software tuning methodologies, Performance Monitoring Unit (PMU) of Intel microprocessors, and platform updating.

Intel Platform Power Estimation Tool (IPPET) available


We've published the Intel Platform Power Estimation Tool (IPPET) on the web. IPPET is a prototype power monitoring utility that uses Intel-specific energy MSRs and breaks down power consumption per process and displays them in real-time on a web browser.  Another tool from Intel, the Intel Power Gadget, displays the CPU, GPU and package power over time but it doesn't spread the power used back to the processes.

The IPPET package is available at:

The IPPET quick start guide at .

System requirements:

  1. Hardware must be Sandybridge or later chip. (Tool requires energy MSRs)
  2. Port 8080 open for localhost connection (this should be the case by default)
  3. Windows 7 and 8+
  4. If you are using Microsoft Internet Explorer, you need version >= 9.
    • IE compatibility mode doesn’t work (since it reverts IE back to ver8)

You have to use the WinRing0 driver (the WinRing0*.sys and WinRing0*.dll files) from

The source code and binary for IPPET is included in the IPPET zip.

Features of IPPET:

  1. Backend collects the data and optionally, using an embedded webserver, displays the data to a web browser page.
  2. The main IPPET GUI 'Processes' tab is a task manager like display of per process CPU, GPU, and power.
    1. The CPU energy MSR is used to estimate the power used over an interval and the CPU power is spread to the non-idle CPU using processes during that interval.
    2. The GPU energy MSR is used to estimate the power used by the GPU over the interval. IPPET calculates the %GPU_utilization for each process and spreads the GPU power according to how much each process used the GPU.
    3. Some pseudo processes are used to 'charge' other power. For instance, the pseudo process __pkg_overhead holds the difference between: package_overhead = package_power - cpu_power - gpu_power
  3. The 'Power' tab displays power usage over time. Quantities displayed:
    1. Package, CPU and GPU power
    2. GPU %utilization is charted
    3. Disk (SSD) power
    4. Temperature
    5. Battery charge/discharge rate with package power
  4. The 'History' tab displays power and energy usage by process over the history interval.
    1. you can set the interval to the last 1, 2, 5 or 15 minutes, or the entire IPPET run
    2. The 'Top Power' chart displays the top cumulative Power (energy actually) using processes over the history interval
    3. The 'Average Power' chart tells you the average power used by a process when it ran.
  5. The 'Battery' tab displays general battery info and estimates how much you could extend your battery life if you end a process.
    1. You have to be running from the battery for this tab to display info.
    2. The remaining battery time and %remaining is displayed.
    3. For each running process, we estimate how much battery life you could get back if you terminated the process.
  6. The GUI has lots of 'hover of a field to get explanations of how we calculate it' help.
  7. There are many command line options and you can change the defaults via an 'options.txt' file.
    1. For instance, IPPET displays the process description instead process image name. You can change the default to display the process image name if you want.
  8. All the data is logged and written to log files
    1. The logs are written when IPPET exits by default but can be written on demand.
    2. The 'over time' log file shows system and per process data over time. The format of this log is similar to perfmon TSV file.
    3. The files are given extensions .xls so I can load them into Excel easily.
    4. There is a 'system info' log with lots of details about the system.

The web server uses port 8080. This can be changed via options. For security, the webserver only allows localhost connections. You would have to change the source code to allow remote host connections.


  1. The energy MSRs are estimates of power usage.
  2. IPPET takes a snapshot of running processes (using EnumProcesses) every interval to see the currently running processes. If a process starts and exits between snapshots then IPPET will not see the process. This could be fixed using ETW to log process creation and destruction (with perhaps less overhead than EnumProcesses) but so far it hasn't been a problem.
  3. Currently runs only on Windows
  4. Requires a big core Sandybridge or later chip, (not Atom processor)


One of the intentions is to demonstrate how to get a 'who is burning up my battery' display like you see on smart phones. The intention is not to reinvent the task manager display... one could spend a career doing that.

Please let us know your feedback on the utility if you find it useful (or not) or if you have requests.



0 Kudos
1 Reply
I've an issue with IPPET v1.23:
"C:\Program Files (x86)\Intel\Intel(R) Platform Power Estimation Tool\ippet.exe" -debug -verbose

ippet version 1.23
cmdline: C:\Program Files (x86)\Intel\Intel(R) Platform Power Estimation Tool\ippet.exe -debug -verbose
you might need vs2012 runtime DLLs. See
set_priv() rc= 0x0
option debug
verbose set to 1
Need bigger MAX_CACHE_SUBLEAFS(6) at cpu_topology1/cpu_topology.c 2699

C:\WINDOWS\system32>echo %ERRORLEVEL%

What does const MAX_CACHE_SUBLEAFS states for? Why it's 6?


I've installed both x86 and x64 "Visual C++ Redistributable for Visual Studio 2012 Update 4" but it does not help.

0 Kudos