Kepler (Kubernetes-based Efficient Power Level Exporter) uses eBPF to probe performance counters and other system stats, use ML models to estimate workload energy consumption based on these stats, and exports them as Prometheus metrics
Compare increase in node-exporter-rapl vs kepler_node_package vs kepler_vm_package
Note that the
green is rate(node_rapl_package_joules_total{job="metal-node-exporter"}[${rate}s])
red is sum(rate(kepler_node_package_joules_total{job="metal"}[${rate}s]))
blue is sum(rate(kepler_vm_package_joules_total{job="metal"}[${rate}s]))
Blue (which is fraction of the total power) is reported way higher than the increase in kepler-node-package watts
In the above example, the increase in watts reported by kepler_node_package is as below
Setup
Deploy latest kepler with
EXCLUDE_SWAPPER_PROCESS
set to true on a baremetalTest
Note that the
rate(node_rapl_package_joules_total{job="metal-node-exporter"}[${rate}s])
sum(rate(kepler_node_package_joules_total{job="metal"}[${rate}s]))
sum(rate(kepler_vm_package_joules_total{job="metal"}[${rate}s]))
Blue (which is fraction of the total power) is reported way higher than the increase in kepler-node-package watts In the above example, the increase in watts reported by kepler_node_package is as below
It raise from 18.0 to 29.2 =~ 12 W
While kepler_vm_package watts is as follows
It raises from 0.9 to a max of 26.9 W
Additionally, ` abs( sum(rate(kepler_process_package_joules_total{job="metal"}[20s])) - sum(rate(kepler_node_package_joules_total{job="metal"}[20s])) )