qemu: resctrl energy counters via domstats

Added energy reporting from resctrl PERF_PK_MON through domstats:
  cpu.energy.monitor.count=1
  cpu.energy.monitor.0.name=vcpus_0
  cpu.energy.monitor.0.vcpus=0
  cpu.energy.monitor.0.pkg.count=2
  cpu.energy.monitor.0.pkg.0.id=0
  cpu.energy.monitor.0.pkg.0.core_energy=0.000000
  cpu.energy.monitor.0.pkg.0.activity=0.000000
  cpu.energy.monitor.0.pkg.1.id=1
  cpu.energy.monitor.0.pkg.1.core_energy=2.888203
  cpu.energy.monitor.0.pkg.1.activity=1.718601

Changes:
 - Added VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_* macros to libvirt-domain.h
 - Added qemuDomainGetStatsEnergy() to qemu_driver.c

Signed-off-by: Jedrzej Wasiukiewicz <jedrzej.wasiukiewicz@intel.com>
Signed-off-by: Christopher M. Cantalupo <christopher.m.cantalupo@intel.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Jedrzej Wasiukiewicz authored and Michal Privoznik committed 2026-05-15 14:02:20 +02:00
1 parent 615a7bb898
commit 4e6f997867
2 files changed
+128 -4

No files matched your search

+65
View File
@@ -4420,6 +4420,71 @@ struct _virDomainStatsRecord {
# define VIR_DOMAIN_STATS_MEMORY_BANDWIDTH_MONITOR_SUFFIX_NODE_SUFFIX_BYTES_TOTAL ".bytes.total"
/**
* VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_COUNT:
*
* The number of energy monitors for this domain, as an unsigned int.
*
* Since: 12.4.0
*/
# define VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_COUNT "cpu.energy.monitor.count"
/**
* VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_PREFIX:
*
* Prefix for an individual energy monitor group. Concatenate
* with the monitor index and one of the "cpu.energy.monitor.<i>." suffix
* macros below to form a full parameter name.
*
* Since: 12.4.0
*/
# define VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_PREFIX "cpu.energy.monitor."
/**
* VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_SUFFIX_NAME:
*
* Name of the monitor group as a string.
*
* Since: 12.4.0
*/
# define VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_SUFFIX_NAME ".name"
/**
* VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_SUFFIX_VCPUS:
*
* vCPU set covered by the monitor group as a string.
*
* Since: 12.4.0
*/
# define VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_SUFFIX_VCPUS ".vcpus"
/**
* VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_SUFFIX_PKG_COUNT:
*
* Number of PERF_PKG nodes the monitor group exposes, as an unsigned int.
*
* Since: 12.4.0
*/
# define VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_SUFFIX_PKG_COUNT ".pkg.count"
/**
* VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_SUFFIX_PKG_PREFIX:
*
* Prefix for a single mon_PERF_PKG node inside a monitor group.
*
* Since: 12.4.0
*/
# define VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_SUFFIX_PKG_PREFIX ".pkg."
/**
* VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_SUFFIX_PKG_SUFFIX_ID:
*
* Kernel-assigned mon_PERF_PKG node id, as an unsigned int.
*
* Since: 12.4.0
*/
# define VIR_DOMAIN_STATS_CPU_ENERGY_MONITOR_SUFFIX_PKG_SUFFIX_ID ".id"
/**
* VIR_DOMAIN_STATS_DIRTYRATE_CALC_STATUS:
*