From: Folke Gleumes <f.gleu...@proxmox.com> Originally-by: Folke Gleumes <f.gleu...@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.laute...@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 d36fd1d..9e2c621 100644 --- a/src/PVE/QemuServer.pm +++ b/src/PVE/QemuServer.pm @@ -2526,6 +2526,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; @@ -2638,6 +2668,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} = { @@ -2662,6 +2700,7 @@ sub vmstatus { } else { $d->{cpu} = $old->{cpu}; } + } return $res if !$full; -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel