From: Alexandre Derumier Date: Sun, 7 Feb 2021 13:36:45 +0000 (+0100) Subject: add get_pressure_stat X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=commitdiff_plain;h=0bc3dac963efb4d30efb9708fce6100e635b720a add get_pressure_stat Signed-off-by: Alexandre Derumier --- diff --git a/src/PVE/CGroup.pm b/src/PVE/CGroup.pm index 71d0846..cbd77cb 100644 --- a/src/PVE/CGroup.pm +++ b/src/PVE/CGroup.pm @@ -365,6 +365,48 @@ sub get_memory_stat { return $res; } +sub get_pressure_stat { + my ($self) = @_; + + my $res = { + cpu => { + some => { avg10 => 0, avg60 => 0, avg300 => 0 } + }, + memory => { + some => { avg10 => 0, avg60 => 0, avg300 => 0 }, + full => { avg10 => 0, avg60 => 0, avg300 => 0 } + }, + io => { + some => { avg10 => 0, avg60 => 0, avg300 => 0 }, + full => { avg10 => 0, avg60 => 0, avg300 => 0 } + }, + }; + + my ($path, $ver) = $self->get_path(undef, 1); + if (!defined($path)) { + # container or VM most likely isn't running + return undef; + } elsif ($ver == 2) { + + foreach my $type (qw(cpu memory io)) { + if (my $fh = IO::File->new ("$path/$type.pressure", "r")) { + while (defined (my $line = <$fh>)) { + if ($line =~ /^(some|full)\s+avg10\=(\d+\.\d+)\s+avg60\=(\d+\.\d+)\s+avg300\=(\d+\.\d+)\s+total\=(\d+)/) { + $res->{$type}->{$1}->{avg10} = $2; + $res->{$type}->{$1}->{avg60} = $3; + $res->{$type}->{$1}->{avg300} = $4; + } + } + $fh->close; + } + } + } else { + die "bad cgroup version: $ver\n"; + } + + return $res; +} + # Change the memory limit for this container. # # Dies on error (including a not-running or currently-shutting-down guest).