File manager - Edit - /usr/local/cpanel/3rdparty/perl/542/cpanel-lib/Sys/Statistics/Linux/MemStats.pm
Back
=head1 NAME Sys::Statistics::Linux::MemStats - Collect linux memory information. =head1 SYNOPSIS use Sys::Statistics::Linux::MemStats; my $lxs = Sys::Statistics::Linux::MemStats->new; my $stat = $lxs->get; =head1 DESCRIPTION Sys::Statistics::Linux::MemStats gathers memory statistics from the virtual F</proc> filesystem (procfs). For more information read the documentation of the front-end module L<Sys::Statistics::Linux>. =head1 MEMORY INFORMATIONS Generated by F</proc/meminfo>. memused - Total size of used memory in kilobytes. memfree - Total size of free memory in kilobytes. memusedper - Total size of used memory in percent. memtotal - Total size of memory in kilobytes. buffers - Total size of buffers used from memory in kilobytes. cached - Total size of cached memory in kilobytes. realfree - Total size of memory is real free (memfree + buffers + cached). realfreeper - Total size of memory is real free in percent of total memory. swapused - Total size of swap space is used is kilobytes. swapfree - Total size of swap space is free in kilobytes. swapusedper - Total size of swap space is used in percent. swaptotal - Total size of swap space in kilobytes. swapcached - Memory that once was swapped out, is swapped back in but still also is in the swapfile. active - Memory that has been used more recently and usually not reclaimed unless absolutely necessary. inactive - Memory which has been less recently used and is more eligible to be reclaimed for other purposes. On earlier kernels (2.4) Inact_dirty + Inact_laundry + Inact_clean. The following statistics are only available by kernels from 2.6. slab - Total size of memory in kilobytes that used by kernel for data structure allocations. dirty - Total size of memory pages in kilobytes that waits to be written back to disk. mapped - Total size of memory in kilbytes that is mapped by devices or libraries with mmap. writeback - Total size of memory that was written back to disk. committed_as - The amount of memory presently allocated on the system. The following statistic is only available by kernels from 2.6.9. commitlimit - Total amount of memory currently available to be allocated on the system. =head1 METHODS =head2 new() Call C<new()> to create a new object. my $lxs = Sys::Statistics::Linux::MemStats->new; It's possible to set the path to the proc filesystem. Sys::Statistics::Linux::MemStats->new( files => { # This is the default path => '/proc', meminfo => 'meminfo', } ); =head2 get() Call C<get()> to get the statistics. C<get()> returns the statistics as a hash reference. my $stat = $lxs->get; =head1 EXPORTS No exports. =head1 SEE ALSO B<proc(5)> =head1 REPORTING BUGS Please report all bugs to <jschulz.cpan(at)bloonix.de>. =head1 AUTHOR Jonny Schulz <jschulz.cpan(at)bloonix.de>. =head1 COPYRIGHT Copyright (c) 2006, 2007 by Jonny Schulz. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut package Sys::Statistics::Linux::MemStats; use strict; use warnings; use Carp qw(croak); our $VERSION = '0.16'; sub new { my $class = shift; my $opts = ref($_[0]) ? shift : {@_}; my %self = ( files => { path => '/proc', meminfo => 'meminfo', } ); foreach my $file (keys %{ $opts->{files} }) { $self{files}{$file} = $opts->{files}->{$file}; } return bless \%self, $class; } sub get { my $self = shift; my $class = ref($self); my $file = $self->{files}; my %meminfo = (); my $filename = $file->{path} ? "$file->{path}/$file->{meminfo}" : $file->{meminfo}; open my $fh, '<', $filename or croak "$class: unable to open $filename ($!)"; # MemTotal: 1035648 kB # MemFree: 15220 kB # Buffers: 4280 kB # Cached: 47664 kB # SwapCached: 473988 kB # Active: 661992 kB # Inactive: 314312 kB # HighTotal: 130884 kB # HighFree: 264 kB # LowTotal: 904764 kB # LowFree: 14956 kB # SwapTotal: 1951856 kB # SwapFree: 1164864 kB # Dirty: 520 kB # Writeback: 0 kB # AnonPages: 908892 kB # Mapped: 34308 kB # Slab: 19284 kB # SReclaimable: 7532 kB # SUnreclaim: 11752 kB # PageTables: 3056 kB # NFS_Unstable: 0 kB # Bounce: 0 kB # CommitLimit: 2469680 kB # Committed_AS: 1699568 kB # VmallocTotal: 114680 kB # VmallocUsed: 12284 kB # VmallocChunk: 100992 kB # kernel <= 2.4 # Inact_dirty: 138632 kB # Inact_laundry: 35520 kB # Inact_clean: 7544 kB while (my $line = <$fh>) { if ($line =~ /^((?:Mem|Swap)(?:Total|Free)|Buffers|Cached|SwapCached|Active|Inactive| Dirty|Writeback|Mapped|Slab|Commit(?:Limit|ted_AS)):\s*(\d+)/x) { my ($n, $v) = ($1, $2); $n =~ tr/A-Z/a-z/; $meminfo{$n} = $v; } elsif ($line =~ /^Inact_(?:dirty|laundry|clean):\s*(\d+)/) { $meminfo{inactive} += $1; } } close($fh); $meminfo{memused} = sprintf('%u', $meminfo{memtotal} - $meminfo{memfree}); $meminfo{memusedper} = sprintf('%.2f', 100 * $meminfo{memused} / $meminfo{memtotal}); $meminfo{swapused} = sprintf('%u', $meminfo{swaptotal} - $meminfo{swapfree}); $meminfo{realfree} = sprintf('%u', $meminfo{memfree} + $meminfo{buffers} + $meminfo{cached}); $meminfo{realfreeper} = sprintf('%.2f', 100 * $meminfo{realfree} / $meminfo{memtotal}); # maybe there is no swap space on the machine if (!$meminfo{swaptotal}) { $meminfo{swapusedper} = '0.00'; } else { $meminfo{swapusedper} = sprintf('%.2f', 100 * $meminfo{swapused} / $meminfo{swaptotal}); } return \%meminfo; } 1;
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings