X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=blobdiff_plain;f=src%2FPVE%2FProcFSTools.pm;h=e413ccf1c50b1f90575f9cb9a764c45fcc73a962;hp=d636427688d2554254505012e71e7b8160b204aa;hb=HEAD;hpb=2e8331ba22db97e439db8d73f0c1e5529a3c63b3 diff --git a/src/PVE/ProcFSTools.pm b/src/PVE/ProcFSTools.pm index d636427..3826fcc 100644 --- a/src/PVE/ProcFSTools.pm +++ b/src/PVE/ProcFSTools.pm @@ -2,14 +2,15 @@ package PVE::ProcFSTools; use strict; use warnings; -use POSIX; -use Time::HiRes qw (gettimeofday); + +use Cwd qw(); use IO::File; use List::Util qw(sum); -use PVE::Tools; -use Cwd qw(); - +use POSIX; use Socket qw(PF_INET PF_INET6 SOCK_DGRAM IPPROTO_IP); +use Time::HiRes qw (gettimeofday); + +use PVE::Tools; use constant IFF_UP => 1; use constant IFNAMSIZ => 16; @@ -283,6 +284,7 @@ sub read_meminfo { swaptotal => 0, swapfree => 0, swapused => 0, + arcsize => 0, }; my $fh = IO::File->new ("/proc/meminfo", "r"); @@ -307,6 +309,11 @@ sub read_meminfo { my $spages = PVE::Tools::file_read_firstline("/sys/kernel/mm/ksm/pages_sharing") // 0 ; $res->{memshared} = int($spages) * 4096; + my $arc_stats = eval { PVE::Tools::file_get_contents("/proc/spl/kstat/zfs/arcstats") }; + if ($arc_stats && $arc_stats =~ m/^size\s+\d+\s+(\d+)$/m) { + $res->{arcsize} = int($1); + } + return $res; } @@ -352,10 +359,10 @@ sub read_proc_net_dev { sub write_proc_entry { my ($filename, $data) = @_;# - my $fh = IO::File->new($filename, O_WRONLY); + my $fh = IO::File->new($filename, O_WRONLY); die "unable to open file '$filename' - $!\n" if !$fh; - die "unable to write '$filename' - $!\n" unless print $fh $data; - die "closing file '$filename' failed - $!\n" unless close $fh; + print $fh $data or die "unable to write '$filename' - $!\n"; + close $fh or die "closing file '$filename' failed - $!\n"; $fh->close(); }