Sure, but Activity Monitor has separate CPU and Energy graphs, and the author here appears to be talking specifically about the Energy graph ("According to Activity Monitor’s Energy pane") rather than the CPU one.
You also have hardware control chips like the T1/T2 that could help narrow this down even further.
I would get it for PC's, but here, it's quite different.
These are just rough estimates and can be wildly inaccurate (just like in the OSX post we're discussing). AFAIK there's no facility for actual measurement.
> On server hardware (where software-queriable power meters in the power supply are commonplace)
Are you certain these are actual meters and not just estimates done in software?
All motherboards contain sensor chips that can measure the voltages of all power supplies that are used on that board.
All modern CPUs (i.e. all CPUs with variable clock frequency) have internal sensors that measure the currents and the voltages provided by their power supplies. From the currents and the voltages the power consumption is computed. The current and voltage values, together with the temperatures provided by one or more temperature sensors, are used by the algorithms that control the turbo clock frequencies. (The reason why power consumption values are needed by the turbo algorithms is because the chip temperature has a too large inertia, if the clock frequency would be reduced only after the temperature is already too high it would be too late; using the power consumption the future temperature raise can be predicted and the clock frequency can be reduced in advance, avoiding the overshooting of the maximum temperature.)
Some of the values provided by the internal CPU sensors are available in model-specific registers, so the monitoring programs can read them and display the CPU power consumption.
The discrete GPUs from NVIDIA and AMD also have internal sensors that can be read by programs to display the GPU power consumption. The GPUs also use their internal sensors to control their clock frequencies.
Most inaccuracies in reporting the power consumption are due to poor or non-existent documentation of the sensors, which affects especially the AMD CPUs and some of the motherboard sensors. The Intel sensors are usually well documented.
How to read and display the power consumption values provided by the internal CPU sensors can be seen e.g. in the source code of the utility turbostat, which can be found in the source tree of the Linux kernel. (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...)
Apple should have good internal documentation, which should enable accurate power consumption reporting. They cannot blame an external company which refused to provide adequate documentation for the sensors.
Turbostat uses RAPL data, as you can see by reading the source code you linked.
I mention this because as far as I'm aware it's impractical to actually measure energy directly. I'm fairly certain that all of these types of systems use estimate models - whether it's in software or firmware.
It's similar on CPUs, but the monitoring circuitry is internal, I think.
> My CPU is currently using 95W
Are you currently stressing the CPU (compiling, rendering, ...)? If you are not, the 95W figure seems suspect. (FWIW, my entire system, fans and all, uses 25W at the wall when idle. The CPU is Intel 9700k, no dGPU).
But why would they? There's no benefit for them.
https://support.apple.com/en-gb/guide/activity-monitor/actmn...:
- In the Activity Monitor app on your Mac, click Energy (or use the Touch Bar).
To display more columns, choose View > Columns, then choose the columns you want to show.
The energy use of individual apps and their processes is displayed in the upper part of the Activity Monitor window.
- Energy Impact: A relative measure of the current energy consumption of the app (lower is better).
It's like trying to read the amount of gas left in the tank by looking at the odometer. Distance and fuel remaining are related, but there's no 1-to-1 connection going on there.
Different cores having different speeds is a difficult problem to solve for reporting CPU usage. The author seems to have missed the latest Intel CPUs which also have a performance/effeciency core setup, but I bet those suffer from the same "problem" as well.