[pve-devel] [PATCH qemu-server v4 1/4] metrics: add pressure to metrics
Aaron Lauterer
a.lauterer at proxmox.com
Sat Jul 26 03:06:21 CEST 2025
From: Folke Gleumes <f.gleumes at proxmox.com>
Originally-by: Folke Gleumes <f.gleumes at proxmox.com>
[AL:
* rebased on current master
* switch to new, more generic read_cgroup_pressure function
* add pressures to return properties
]
Signed-off-by: Aaron Lauterer <a.lauterer at proxmox.com>
---
Notes:
changes since:
v2:
* added return properties
* reordered collection prior to the cpu collection, as it would be
skipped, especially when collected via `pvesh`
* added '* 1' to make sure we use numbers in the JSON -> an better
alternative for numbers that are not integers?
src/PVE/QemuServer.pm | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/src/PVE/QemuServer.pm b/src/PVE/QemuServer.pm
index 5a4f8120..59b13709 100644
--- a/src/PVE/QemuServer.pm
+++ b/src/PVE/QemuServer.pm
@@ -2533,6 +2533,36 @@ our $vmstatus_return_properties = {
type => 'boolean',
optional => 1,
},
+ pressurecpusome => {
+ description => "CPU Some pressure average over the last 10 seconds.",
+ type => 'number',
+ optional => 1,
+ },
+ pressurecpufull => {
+ description => "CPU Full pressure average over the last 10 seconds.",
+ type => 'number',
+ optional => 1,
+ },
+ pressureiosome => {
+ description => "IO Some pressure average over the last 10 seconds.",
+ type => 'number',
+ optional => 1,
+ },
+ pressureiofull => {
+ description => "IO Full pressure average over the last 10 seconds.",
+ type => 'number',
+ optional => 1,
+ },
+ pressurememorysome => {
+ description => "Memory Some pressure average over the last 10 seconds.",
+ type => 'number',
+ optional => 1,
+ },
+ pressurememoryfull => {
+ description => "Memory Full pressure average over the last 10 seconds.",
+ type => 'number',
+ optional => 1,
+ },
};
my $last_proc_pid_stat;
@@ -2645,6 +2675,14 @@ sub vmstatus {
$d->{mem} = int(($pstat->{rss} / $pstat->{vsize}) * $d->{maxmem});
}
+ my $pressures = PVE::ProcFSTools::read_cgroup_pressure("qemu.slice/${vmid}.scope");
+ $d->{pressurecpusome} = $pressures->{cpu}->{some}->{avg10} * 1;
+ $d->{pressurecpufull} = $pressures->{cpu}->{full}->{avg10} * 1;
+ $d->{pressureiosome} = $pressures->{io}->{some}->{avg10} * 1;
+ $d->{pressureiofull} = $pressures->{io}->{full}->{avg10} * 1;
+ $d->{pressurememorysome} = $pressures->{memory}->{some}->{avg10} * 1;
+ $d->{pressurememoryfull} = $pressures->{memory}->{full}->{avg10} * 1;
+
my $old = $last_proc_pid_stat->{$pid};
if (!$old) {
$last_proc_pid_stat->{$pid} = {
@@ -2669,6 +2707,7 @@ sub vmstatus {
} else {
$d->{cpu} = $old->{cpu};
}
+
}
return $res if !$full;
--
2.39.5
More information about the pve-devel
mailing list