X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=blobdiff_plain;f=src%2FPVE%2FProcFSTools.pm;fp=src%2FPVE%2FProcFSTools.pm;h=cbd576813f7d6eb20d40c03c3beef19aa0b36a91;hp=7687c13c4e30b9d483ebb624c8d522ca8a74ca3d;hb=eadfaabdae2ca0f2ebd06c4a2eaab359c496b9bb;hpb=0bc3dac963efb4d30efb9708fce6100e635b720a diff --git a/src/PVE/ProcFSTools.pm b/src/PVE/ProcFSTools.pm index 7687c13..cbd5768 100644 --- a/src/PVE/ProcFSTools.pm +++ b/src/PVE/ProcFSTools.pm @@ -132,21 +132,30 @@ sub read_loadavg { return wantarray ? (0, 0, 0) : 0; } -sub read_pressure { +sub parse_pressure { + my ($path) = @_; my $res = {}; - foreach my $type (qw(cpu memory io)) { - if (my $fh = IO::File->new ("/proc/pressure/$type", "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; + my $v = qr/\d+\.\d+/; + my $fh = IO::File->new($path, "r") or return undef; + while (defined (my $line = <$fh>)) { + if ($line =~ /^(some|full)\s+avg10\=($v)\s+avg60\=($v)\s+avg300\=($v)\s+total\=(\d+)/) { + $res->{$1}->{avg10} = $2; + $res->{$1}->{avg60} = $3; + $res->{$1}->{avg300} = $4; + $res->{$1}->{total} = $4; } } + $fh->close; + return $res; +} + +sub read_pressure { + my $res = {}; + foreach my $type (qw(cpu memory io)) { + my $stats = parse_pressure("/proc/pressure/$type"); + $res->{$type} = $stats if $stats; + } return $res; }