From 0bc3dac963efb4d30efb9708fce6100e635b720a Mon Sep 17 00:00:00 2001 From: Alexandre Derumier Date: Sun, 7 Feb 2021 14:36:45 +0100 Subject: [PATCH] add get_pressure_stat Signed-off-by: Alexandre Derumier --- src/PVE/CGroup.pm | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) 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). -- 2.39.2