# How to compute CPU power consumption

I am working on a problem for which I need to know how much power will be consumed on a given CPU as the parameter sizes are increased. The following properties/attributes of the CPU are available:

    Version: Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
Voltage: 0.8 V
External Clock: 100 MHz
Max Speed: 2600 MHz


It is not possible to install any special tool as far as I know from the admins of the system. I am looking for a suggestion for some kind of formula/method to map a given executable running on this CPU and the power that the CPU will consume. Do I need to know any more about the CPU to obtain a more accurate power profile? About the executable: is there a way to accurately figure out its CPU profile?

• The question was originally posted on UNIX and Linux exchange. It was suggested that I post it here for suitability. Jan 26, 2015 at 17:09
• You need to look at the data sheet for the part. However with modern CPUs, it is very complicated. Jan 26, 2015 at 17:26
• Simple estimate: Assume that all cores at 100% load equals TDP (115W ), and that all cores at 0% load equals the C1E ('active idle') power (47W according to the data sheet). Map the process to that range according to its average CPU load. Its' a rather loose estimate, but it's not possible to calculate the power consumption exactly without real-time monitoring - the OS, CPU, and motherboard are all involved in scaling the frequency and voltage relative to load. Jan 26, 2015 at 23:24
• Thank you for your answers. However, I was still not able to nail this down. So, I am keeping the question open and not marking any answer as accepted for now. Jan 27, 2015 at 16:03

If you're mapping a given executable and you have access to more information about the CPU then you may be able to use some equations from frequency scaling to get a power profile.

For instance, the power consumption of a processor is estimated by:

$$P = C * V^2 * F$$

where P is power, C is the capacitance being switched per clock cycle, V is voltage, and F is the processor frequency (cycles per second).

• Interesting formula. However - where would you get an even remotely reasonable estimate of the C value, though?
– Russ
Jun 9, 2019 at 22:46

I can recommend you to have a look to the PowerAPI tookit, a middleware library that estimates the power consumption of the CPU in real-time. You can even have an estimation of the power consumption per process. PowerAPI does not require any third-party power meter to be connected (unless you need a custom power model).

A good way to evaluate power profiles for a computer should include the system, memory and power delivery components as well as the CPU. After all power is also consumed by all of these components as well and in almost all cases this other power scales to some degree with increased compute load placed on the CPU. That said what you really want to do is get yourself a power meter that can measure the power to your whole system as delivered on the AC power line. If you get one that has a USB or RS232 interface and supports remote reading and logging then you can make use of a standard computer power profiling tool called SpecPower. This tool which should be a free download can run on x86 type platforms and place loading on multiple CPU cores from 0 to 100 % and then remotely monitor the system power intake at each load level. It can then generate very nice graphs of the results.

I have used meters called "WattsUp" for this purpose that are in the few 100 $price category. The defacto standard meter that systems manufacturers use to profile their systems with SpecPower is called a Yokogawa but they cost in the 1000s of$.

Read more at the SpecPower web site.