head 1.13;
access;
symbols
SNMPDX_1_0_0:1.13
SNMPDX_0_2_11:1.12
SNMPDX_0_2_10:1.11
SNMPDX_0_2_9:1.10
SNMPDX_0_2_8:1.9
SNMPDX_0_2_7:1.9
SNMPDX_0_2_6:1.6
SNMPDX_0_2_5:1.6
SNMPDX_0_2_4:1.6
SNMPDX_0_2_3:1.6
SNMPDX_0_2_2:1.6
SNMPDX_0_2_1:1.5
SNMPDX_0_2_0:1.5;
locks; strict;
comment @# @;
1.13
date 2007.03.01.10.52.39; author rse; state Exp;
branches;
next 1.12;
commitid FNuFlqR2Qo3fkn8s;
1.12
date 2005.10.05.17.42.13; author rse; state Exp;
branches;
next 1.11;
1.11
date 2004.07.29.09.48.25; author thl; state Exp;
branches;
next 1.10;
1.10
date 2004.07.28.13.00.59; author thl; state Exp;
branches;
next 1.9;
1.9
date 2003.09.20.10.33.17; author rse; state Exp;
branches;
next 1.8;
1.8
date 2003.09.20.10.11.22; author rse; state Exp;
branches;
next 1.7;
1.7
date 2003.09.10.15.01.46; author rse; state Exp;
branches;
next 1.6;
1.6
date 2003.09.09.13.43.45; author thl; state Exp;
branches;
next 1.5;
1.5
date 2003.09.04.10.07.47; author thl; state Exp;
branches;
next 1.4;
1.4
date 2003.09.04.09.21.04; author thl; state Exp;
branches;
next 1.3;
1.3
date 2003.09.04.08.33.16; author thl; state Exp;
branches;
next 1.2;
1.2
date 2003.09.03.15.41.04; author thl; state Exp;
branches;
next 1.1;
1.1
date 2003.09.03.09.22.03; author rse; state Exp;
branches;
next ;
desc
@@
1.13
log
@Upgrade build environment to GNU shtool 2.0.6 and GNU autoconf 2.60
@
text
@##
## OSSP snmpdx - SNMP Daemon Extension
## Copyright (c) 2003-2007 The OSSP Project
## Copyright (c) 2003-2007 Ralf S. Engelschall
## Copyright (c) 2003-2005 Cable & Wireless
##
## This file is part of OSSP snmpdx, a SNMP daemon extension which
## can be found at http://www.ossp.org/pkg/tool/snmpdx/.
##
## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License
## as published by the Free Software Foundation; either version
## 2.0 of the License, or (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
## General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this file; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
## USA, or contact Ralf S. Engelschall .
##
## sysVM.pm: probe for System Virtual Memory
##
package My::Probe::sysVM;
our @@ISA = qw(My::Probe);
sub oids ($) {
my ($self) = @@_;
return $self->{-ctx}->{-mib}->oids("*.snmpdx.host.system.sysVM.*");
}
sub probe ($$) {
my ($self, $obj) = @@_;
if ($self->{-ctx}->{-platform}->id() =~ m/FreeBSD/i) {
##
## FreeBSD 4/5
##
## sysVMRamMax "/sbin/sysctl -a", "hw.physmem", convert bytes to MB
## sysVMRamUsed sysVMRamMax - sysVMRamFree
## sysVMRamFree "/sbin/sysctl -a", "vm.stats.vm.*", convert pages to MB
## sysVMSwapMax "/usr/sbin/swapinfo -k", 1K-blocks, last line, convert KB to MB
## sysVMSwapUsed "/usr/sbin/swapinfo -k", Used, last line, convert KB to MB
## sysVMSwapFree sysVMSwapMax - sysVMSwapUsed
## sysVMActivity "/usr/bin/vmstat", add pi and po column
##
if ($obj->{-name} =~ m/\.sysVMRam(Max|Used|Free)$/) {
my $sysVMRamMax;
my $sysVMRamUsed;
my $sysVMRamFree;
# query system for sysctl(8) variables
my $out = $self->{-ctx}->{-sys}->run("/sbin/sysctl -a", "1m");
my $sysctl = {};
foreach my $line (split(/\n/, $out->{-stdout})) {
$sysctl->{$1} = $2 if ($line =~ m/^([^:]+):\s+(.+)\s*$/s);
}
# determine sysVMRamMax
$sysVMRamMax = int(&mem_rounded($sysctl->{"hw.physmem"}) / (1024*1024));
# determine sysVMRamFree
$sysVMRamFree =
int(( $sysctl->{"hw.pagesize"}
* ( $sysctl->{"vm.stats.vm.v_inactive_count"}
+ $sysctl->{"vm.stats.vm.v_cache_count"}
+ $sysctl->{"vm.stats.vm.v_free_count"} )) / (1024*1024));
# determine sysVMRamUsed
if (defined($sysVMRamMax) and defined($sysVMRamFree)) {
$sysVMRamUsed = ($sysVMRamMax - $sysVMRamFree);
}
# provide result
$obj->{-value} = $sysVMRamMax if ($obj->{-name} =~ m/\.sysVMRamMax$/);
$obj->{-value} = $sysVMRamUsed if ($obj->{-name} =~ m/\.sysVMRamUsed$/);
$obj->{-value} = $sysVMRamFree if ($obj->{-name} =~ m/\.sysVMRamFree$/);
}
elsif ($obj->{-name} =~ m/\.sysVMSwap(Max|Used|Free)$/) {
my $sysVMSwapMax;
my $sysVMSwapUsed;
my $sysVMSwapFree;
# determine sysVMSwapMax and sysVMSwapUsed
my $out = $self->{-ctx}->{-sys}->run("/usr/sbin/swapinfo -k", "1m");
my $raw = $out->{-stdout};
my $n2i = {};
if ($raw =~ m/^\s*([^\n]*\b1K-blocks[^\n]*\bUsed[^\n]*).*\n([^\n]+)$/s) {
$n2i = &mkn2i(split(/\s+/, $1));
}
my @@dat = split(/\s+/, $2);
if (defined($n2i->{_1K_blocks})) {
$sysVMSwapMax = int(@@dat[$n2i->{_1K_blocks}] / 1024)
}
if (defined($n2i->{Used})) {
$sysVMSwapUsed = int(@@dat[$n2i->{Used}] / 1024)
}
# determine sysVMSwapFree
if (defined($sysVMSwapMax) and defined($sysVMSwapUsed)) {
$sysVMSwapFree = $sysVMSwapMax - $sysVMSwapUsed;
}
# provide result
$obj->{-value} = $sysVMSwapMax if ($obj->{-name} =~ m/\.sysVMSwapMax$/);
$obj->{-value} = $sysVMSwapUsed if ($obj->{-name} =~ m/\.sysVMSwapUsed$/);
$obj->{-value} = $sysVMSwapFree if ($obj->{-name} =~ m/\.sysVMSwapFree$/);
}
elsif ($obj->{-name} =~ m/\.sysVMActivity$/) {
my $sysVMActivity;
my $out = $self->{-ctx}->{-sys}->run("/usr/bin/vmstat", "1m");
my $raw = $out->{-stdout};
my $n2i = {};
if ($raw =~ m/^[^\n]*\n *([^\n]*(\bp[io]\b[^\n]*){2})\n *([^\n]*)\n$/s) {
$n2i = &mkn2i(split / +/, $1);
}
if (defined($n2i->{pi}) and defined($n2i->{po})) {
my @@dat = split(/ +/, $3);
$sysVMActivity = @@dat[$n2i->{pi}] + @@dat[$n2i->{po}];
}
$obj->{-value} = $sysVMActivity;
}
}
elsif ($self->{-ctx}->{-platform}->id() =~ m/Linux/i) {
##
## Linux 2.2/2.4
##
## sysVMRamMax "/bin/cat /proc/meminfo", MemTotal, convert KB to MB
## sysVMRamUsed "/bin/cat /proc/meminfo", MemTotal-Buffers-Cached-MemFree, convert KB to MB
## sysVMRamFree sysVMRamMax - sysVMRamUsed
## sysVMSwapMax "/bin/cat /proc/meminfo", SwapTotal, convert KB to MB
## sysVMSwapUsed sysVMSwapMax - sysVMSwapFree
## sysVMSwapFree "/bin/cat /proc/meminfo", SwapFree, convert KB to MB
## sysVMActivity "/usr/bin/vmstat", add si and so column
##
## FIXME: sysVMRamMax does not include the kernel and some of
## its structures so it is not pyhsical RAM, see dmesg | egrep
## '^Memory:'. Additionally, /bin/cat is used here but could be
## replaced by native Perl code to improve performance...
##
if ($obj->{-name} =~ m/\.sysVMRam(Max|Used|Free)$/) {
my $sysVMRamMax;
my $sysVMRamUsed;
my $sysVMRamFree;
# determine sysVMRamMax and sysVMRamUsed
my $out = $self->{-ctx}->{-sys}->run("/bin/cat /proc/meminfo", "1m");
my $raw = $out->{-stdout};
my $tmp = {};
$tmp->{MemTotal} = $1 if ($raw =~ m/\nMemTotal:[^\n]*\b(\d+)\b[^\n]*kB\n/s);
$tmp->{Buffers} = $1 if ($raw =~ m/\nBuffers:[^\n]*\b(\d+)\b[^\n]*kB\n/s);
$tmp->{Cached} = $1 if ($raw =~ m/\nCached:[^\n]*\b(\d+)\b[^\n]*kB\n/s);
$tmp->{MemFree} = $1 if ($raw =~ m/\nMemFree:[^\n]*\b(\d+)\b[^\n]*kB\n/s);
if (defined($tmp->{MemTotal})) {
$sysVMRamMax = int($tmp->{MemTotal} / 1024);
}
if ( defined($tmp->{MemTotal})
and defined($tmp->{Buffers})
and defined($tmp->{Cached})
and defined($tmp->{MemFree}) ) {
$sysVMRamUsed = int (( $tmp->{MemTotal}
- $tmp->{Buffers}
- $tmp->{Cached}
- $tmp->{MemFree} ) / 1024 );
}
# determine sysVMRamFree
if (defined $sysVMRamMax and defined $sysVMRamUsed) {
$sysVMRamFree = $sysVMRamMax - $sysVMRamUsed;
}
# provide result
$obj->{-value} = $sysVMRamMax if ($obj->{-name} =~ m/\.sysVMRamMax$/);
$obj->{-value} = $sysVMRamUsed if ($obj->{-name} =~ m/\.sysVMRamUsed$/);
$obj->{-value} = $sysVMRamFree if ($obj->{-name} =~ m/\.sysVMRamFree$/);
}
elsif ($obj->{-name} =~ m/\.sysVMSwap(Max|Used|Free)$/) {
my $sysVMSwapMax;
my $sysVMSwapUsed;
my $sysVMSwapFree;
# determine sysVMSwapMax and sysVMSwapFree
my $out = $self->{-ctx}->{-sys}->run("/bin/cat /proc/meminfo", "1m");
my $raw = $out->{-stdout};
if ($raw =~ m/\nSwapTotal:[^\n]*\b(\d+)\b[^\n]*kB\n/s) {
$sysVMSwapMax = int($1 / 1024);
}
if ($raw =~ m/\nSwapFree:[^\n]*\b(\d+)\b[^\n]*kB\n/s) {
$sysVMSwapFree = int($1 / 1024);
}
# determine sysVMSwapUsed
if (defined($sysVMSwapMax) and defined($sysVMSwapFree)) {
$sysVMSwapUsed = $sysVMSwapMax - $sysVMSwapFree;
}
# provide result
$obj->{-value} = $sysVMSwapMax if ($obj->{-name} =~ m/\.sysVMSwapMax$/);
$obj->{-value} = $sysVMSwapUsed if ($obj->{-name} =~ m/\.sysVMSwapUsed$/);
$obj->{-value} = $sysVMSwapFree if ($obj->{-name} =~ m/\.sysVMSwapFree$/);
}
elsif ($obj->{-name} =~ m/\.sysVMActivity$/) {
my $sysVMActivity;
my $out = $self->{-ctx}->{-sys}->run("/usr/bin/vmstat", "1m");
my $raw = $out->{-stdout};
my $n2i = {};
if ($raw =~ m/^[^\n]*\n *([^\n]*(\bs[io]\b[^\n]*){2})\n *([^\n]*)\n$/s) {
$n2i = &mkn2i(split(/\s+/, $1)) if (not defined($n2i->{sr}));
}
if (defined($n2i->{si}) and defined($n2i->{so})) {
my @@dat = split(/\s+/, $3);
$sysVMActivity = @@dat[$n2i->{si}] + @@dat[$n2i->{so}];
}
$obj->{-value} = $sysVMActivity;
}
}
elsif ($self->{-ctx}->{-platform}->id() =~ m/SunOS/i) {
##
## Sun Solaris 2.x (SunOS 5.x)
##
## sysVMRamMax "/usr/platform/$arch/sbin/prtdiag", Memory size
## sysVMRamUsed sysVMRamMax - sysVMRamFree
## sysVMRamFree "/bin/pagesize" * "/bin/sar -r 1 1", freemem, convert bytes to MB
## sysVMSwapMax "swap -l", egrep ^/ and accumulate, convert 512byte blocks to MB
## sysVMSwapUsed sysVMSwapMax - sysVMSwapFree
## sysVMSwapFree "swap -l", egrep ^/ and accumulate, convert 512byte blocks to MB
## sysVMActivity "/bin/vmstat", sr column
##
if ($obj->{-name} =~ m/\.sysVMRam(Max|Used|Free)$/) {
my $sysVMRamMax;
my $sysVMRamUsed;
my $sysVMRamFree;
# determine architecture
my $arch = $self->{-ctx}->{-platform}->arch();
# determine page size
my $out = $self->{-ctx}->{-sys}->run("/bin/pagesize", "forever");
my $raw = $out->{-stdout};
my $pagesize = 4096;
if ($raw =~ m/^(\d+)$/) {
$pagesize = $1;
}
# determine sysVMRamMax
$out = $self->{-ctx}->{-sys}->run("/usr/platform/$arch/sbin/prtdiag -v", "1m");
$raw = $out->{-stdout};
if ($raw =~ m/\nMemory size: (\d+) Megabytes/s) {
$sysVMRamMax = $1;
}
# determine sysVMRamFree
$out = $self->{-ctx}->{-sys}->run("/bin/sar -r 1 1", "1m");
$raw = $out->{-stdout};
my $n2i = {};
if ($raw =~ m/^.*\n([^\n]*\bfreemem[^\n]*)\n(.*)$/s) {
$n2i = &mkn2i(split(/\s+/, $1));
}
my @@dat = split(/\s+/, $2);
if (defined($n2i->{freemem})) {
$tmp = @@dat[$n2i->{freemem}];
}
$sysVMRamFree = int($tmp * $pagesize / (1024*1024)) if (defined($tmp));
# determine sysVMRamUsed
if (defined($sysVMRamMax) and defined($sysVMRamFree)) {
$sysVMRamUsed = $sysVMRamMax - $sysVMRamFree;
}
# provide result
$obj->{-value} = $sysVMRamMax if ($obj->{-name} =~ m/\.sysVMRamMax$/);
$obj->{-value} = $sysVMRamUsed if ($obj->{-name} =~ m/\.sysVMRamUsed$/);
$obj->{-value} = $sysVMRamFree if ($obj->{-name} =~ m/\.sysVMRamFree$/);
}
elsif ($obj->{-name} =~ m/\.sysVMSwap(Max|Used|Free)$/) {
my $sysVMSwapMax;
my $sysVMSwapUsed;
my $sysVMSwapFree;
# determine sysVMSwapMax, sysVMSwapFree
my $out = $self->{-ctx}->{-sys}->run("/usr/sbin/swap -l", "1m");
my $raw = $out->{-stdout};
my $n2i = {};
if ($raw =~ m/^\s*([^\n]*\bblocks[^\n]*\bfree[^\n]*)\n(.*)$/s) {
$n2i = &mkn2i(split(/\s+/, $1)) if (scalar(keys(%{$n2i})) == 0);
}
my $tmpMax;
my $tmpFree;
foreach my $r (split(/\n/, $2)) {
if ($r =~ m/^\//) {
my @@dat = split(/\s+/, $r);
if (defined($n2i->{blocks})) {
$tmpMax = 0 if (not defined($tmpMax));
$tmpMax += @@dat[$n2i->{blocks}];
}
if (defined($n2i->{free})) {
$tmpFree = 0 if (not defined($tmpFree));
$tmpFree += @@dat[$n2i->{free}];
}
}
}
$sysVMSwapMax = int($tmpMax * 512 / 1024 / 1024) if (defined($tmpMax));
$sysVMSwapFree = int($tmpFree * 512 / 1024 / 1024) if (defined($tmpFree));
# determine sysVMSwapUsed
if (defined($sysVMSwapMax) and defined($sysVMSwapFree)) {
$sysVMSwapUsed = $sysVMSwapMax - $sysVMSwapFree;
}
# provide result
$obj->{-value} = $sysVMSwapMax if ($obj->{-name} =~ m/\.sysVMSwapMax$/);
$obj->{-value} = $sysVMSwapUsed if ($obj->{-name} =~ m/\.sysVMSwapUsed$/);
$obj->{-value} = $sysVMSwapFree if ($obj->{-name} =~ m/\.sysVMSwapFree$/);
}
elsif ($obj->{-name} =~ m/\.sysVMActivity$/) {
my $sysVMActivity;
my $out = $self->{-ctx}->{-sys}->run("/bin/vmstat", "1m");
my $raw = $out->{-stdout};
my $n2i = {};
if ($raw =~ m/^[^\n]*\n *([^\n]*\bsr\b[^\n]*)\n *([^\n]*)\n$/s) {
$n2i = &mkn2i(split(/\s+/, $1)) if (not defined($n2i->{sr}));
}
if (defined $n2i->{sr}) {
my @@dat = split(/\s+/, $2);
$sysVMActivity = @@dat[$n2i->{sr}];
}
$obj->{-value} = $sysVMActivity;
}
}
return;
}
# table row name to index mapping
sub mkn2i ($) {
my (@@name) = @@_;
my $rc = {};
my $i = 0;
foreach my $f (@@name) {
$f =~ s/[^\w]/_/;
$f =~ s/^([^a-zA-Z_])/_$1/;
$rc->{$f} = $i++;
};
return $rc;
}
# round the physical memory size to the next power of two which is
# reasonable for memory cards. We do this by first determining the
# guessed memory card size under the assumption that usual computer
# hardware has an average of a maximally eight memory cards installed
# and those are usually of equal size.
sub mem_rounded {
my ($mem_size) = @@_;
my $chip_size = 1;
my $chip_guess = ($mem_size / 8) - 1;
while ($chip_guess != 0) {
$chip_guess >>= 1;
$chip_size <<= 1;
}
my $mem_round = (int($mem_size / $chip_size) + 1) * $chip_size;
return $mem_round;
}
1;
@
1.12
log
@flush pending changes
@
text
@d3 2
a4 2
## Copyright (c) 2003-2005 The OSSP Project
## Copyright (c) 2003-2005 Ralf S. Engelschall
@
1.11
log
@remove superfluous "my"
@
text
@d3 3
a5 3
## Copyright (c) 2003 The OSSP Project
## Copyright (c) 2003 Ralf S. Engelschall
## Copyright (c) 2003 Cable & Wireless
@
1.10
log
@remove irrelevant assignments which perl >= 5.8.4 optimizes away anyway
@
text
@d67 1
a67 1
my $sysVMRamFree =
@
1.9
log
@Reimplement the FreeBSD sysVMRam* variables because the vmstat->avm
is totally bogus and cannot be used for RAM usage determination at
all. Instead calculate the stuff through the only reliable source: the
vm.stats.vm* sysctl(8) variables which directly came from the kernel
variables of the VM subsystem. The used calculation in sysVM.pm is now
derived from a larger basic research on this topic resulting in a script
which gives this output:
SYSTEM MEMORY INFORMATION:
mem_wire: 179642368 ( 171MB) [ 8%] Wired: disabled for paging out
mem_active: + 158838784 ( 151MB) [ 7%] Active: recently referenced
mem_inactive:+ 1147584512 ( 1094MB) [ 54%] Inactive: recently not referenced
mem_cache: + 71606272 ( 68MB) [ 3%] Cached: almost avail. for allocation
mem_free: + 549912576 ( 524MB) [ 26%] Free: fully available for allocation
mem_gap_vm: + 364544 ( 0MB) [ 0%] Memory gap: UNKNOWN
-------------- ------------ ----------- ------
mem_all: = 2107949056 ( 2010MB) [100%] Total real memory managed
mem_gap_sys: + 35684352 ( 34MB) Memory gap: Kernel?!
-------------- ------------ -----------
mem_phys: = 2143633408 ( 2044MB) Total real memory available
mem_gap_hw: + 3850240 ( 3MB) Memory gap: Segment Mappings?!
-------------- ------------ -----------
mem_hw: = -2147483648 ( 2048MB) Total real memory installed
SYSTEM MEMORY SUMMARY:
mem_used: 378380288 ( 360MB) [ 17%] Logically unused memory
mem_avail: + 1769103360 ( 1687MB) [ 82%] Logically available memory
-------------- ------------ ----------- ------
mem_total: = -2147483648 ( 2048MB) [100%] Logically total memory
The script itself is appended for reference, too.
--------------------------------------------------------------------
#!/usr/opkg/bin/perl
# query the system through the generic sysctl(8) interface
# (this does not require special priviledges)
my $sysctl = {};
my $sysctl_output = `/sbin/sysctl -a`;
foreach my $line (split(/\n/, $sysctl_output)) {
if ($line =~ m/^([^:]+):\s+(.+)\s*$/s) {
$sysctl->{$1} = $2;
}
}
# round the physical memory size to the next power of two which is
# reasonable for memory cards. We do this by first determining the
# guessed memory card size under the assumption that usual computer
# hardware has an average of a maximally eight memory cards installed
# and those are usually of equal size.
sub mem_rounded {
my ($mem_size) = @@_;
my $chip_size = 1;
my $chip_guess = ($mem_size / 8) - 1;
while ($chip_guess != 0) {
$chip_guess >>= 1;
$chip_size <<= 1;
}
my $mem_round = (int($mem_size / $chip_size) + 1) * $chip_size;
return $mem_round;
}
# determine the individual known information
# NOTICE: forget hw.usermem, it is just (hw.physmem - vm.stats.vm.v_wire_count).
# NOTICE: forget vm.stats.misc.zero_page_count, it is just the subset of
# vm.stats.vm.v_free_count which is already pre-zeroed.
my $mem_hw = &mem_rounded($sysctl->{"hw.physmem"});
my $mem_phys = $sysctl->{"hw.physmem"};
my $mem_all = $sysctl->{"vm.stats.vm.v_page_count"} * $sysctl->{"hw.pagesize"};
my $mem_wire = $sysctl->{"vm.stats.vm.v_wire_count"} * $sysctl->{"hw.pagesize"};
my $mem_active = $sysctl->{"vm.stats.vm.v_active_count"} * $sysctl->{"hw.pagesize"};
my $mem_inactive = $sysctl->{"vm.stats.vm.v_inactive_count"} * $sysctl->{"hw.pagesize"};
my $mem_cache = $sysctl->{"vm.stats.vm.v_cache_count"} * $sysctl->{"hw.pagesize"};
my $mem_free = $sysctl->{"vm.stats.vm.v_free_count"} * $sysctl->{"hw.pagesize"};
# determine the individual unknown information
my $mem_gap_vm = $mem_all - ($mem_wire + $mem_active + $mem_inactive + $mem_cache + $mem_free);
my $mem_gap_sys = $mem_phys - $mem_all;
my $mem_gap_hw = $mem_hw - $mem_phys;
# determine logical summary information
my $mem_total = $mem_hw;
my $mem_avail = $mem_inactive + $mem_cache + $mem_free;
my $mem_used = $mem_total - $mem_avail;
# information annotations
my $info = {
"mem_wire" => 'Wired: disabled for paging out',
"mem_active" => 'Active: recently referenced',
"mem_inactive" => 'Inactive: recently not referenced',
"mem_cache" => 'Cached: almost avail. for allocation',
"mem_free" => 'Free: fully available for allocation',
"mem_gap_vm" => 'Memory gap: UNKNOWN',
"mem_all" => 'Total real memory managed',
"mem_gap_sys" => 'Memory gap: Kernel?!',
"mem_phys" => 'Total real memory available',
"mem_gap_hw" => 'Memory gap: Segment Mappings?!',
"mem_hw" => 'Total real memory installed',
"mem_used" => 'Logically unused memory',
"mem_avail" => 'Logically available memory',
"mem_total" => 'Logically total memory',
};
# print system results
printf("SYSTEM MEMORY INFORMATION:\n");
printf("mem_wire: %12d (%7dMB) [%3d%%] %s\n", $mem_wire, $mem_wire / (1024*1024), ($mem_wire / $mem_all) * 100, $info->{"mem_wire"});
printf("mem_active: + %12d (%7dMB) [%3d%%] %s\n", $mem_active, $mem_active / (1024*1024), ($mem_active / $mem_all) * 100, $info->{"mem_active"});
printf("mem_inactive:+ %12d (%7dMB) [%3d%%] %s\n", $mem_inactive, $mem_inactive / (1024*1024), ($mem_inactive / $mem_all) * 100, $info->{"mem_inactive"});
printf("mem_cache: + %12d (%7dMB) [%3d%%] %s\n", $mem_cache, $mem_cache / (1024*1024), ($mem_cache / $mem_all) * 100, $info->{"mem_cache"});
printf("mem_free: + %12d (%7dMB) [%3d%%] %s\n", $mem_free, $mem_free / (1024*1024), ($mem_free / $mem_all) * 100, $info->{"mem_free"});
printf("mem_gap_vm: + %12d (%7dMB) [%3d%%] %s\n", $mem_gap_vm, $mem_gap_vm / (1024*1024), ($mem_gap_vm / $mem_all) * 100, $info->{"mem_gap_vm"});
printf("-------------- ------------ ----------- ------\n");
printf("mem_all: = %12d (%7dMB) [100%%] %s\n", $mem_all, $mem_all / (1024*1024), $info->{"mem_all"});
printf("mem_gap_sys: + %12d (%7dMB) %s\n", $mem_gap_sys, $mem_gap_sys / (1024*1024), $info->{"mem_gap_sys"});
printf("-------------- ------------ -----------\n");
printf("mem_phys: = %12d (%7dMB) %s\n", $mem_phys, $mem_phys / (1024*1024), $info->{"mem_phys"});
printf("mem_gap_hw: + %12d (%7dMB) %s\n", $mem_gap_hw, $mem_gap_hw / (1024*1024), $info->{"mem_gap_hw"});
printf("-------------- ------------ -----------\n");
printf("mem_hw: = %12d (%7dMB) %s\n", $mem_hw, $mem_hw / (1024*1024), $info->{"mem_hw"});
# print logical results
printf("\n");
printf("SYSTEM MEMORY SUMMARY:\n");
printf("mem_used: %12d (%7dMB) [%3d%%] %s\n", $mem_used, $mem_used / (1024*1024), ($mem_used / $mem_total) * 100, $info->{"mem_used"});
printf("mem_avail: + %12d (%7dMB) [%3d%%] %s\n", $mem_avail, $mem_avail / (1024*1024), ($mem_avail / $mem_total) * 100, $info->{"mem_avail"});
printf("-------------- ------------ ----------- ------\n");
printf("mem_total: = %12d (%7dMB) [100%%] %s\n", $mem_total, $mem_total / (1024*1024), $info->{"mem_total"});
--------------------------------------------------------------------
@
text
@d52 3
a54 3
my $sysVMRamMax = undef;
my $sysVMRamUsed = undef;
my $sysVMRamFree = undef;
d84 3
a86 3
my $sysVMSwapMax = undef;
my $sysVMSwapUsed = undef;
my $sysVMSwapFree = undef;
d114 1
a114 1
my $sysVMActivity = undef;
d147 3
a149 3
my $sysVMRamMax = undef;
my $sysVMRamUsed = undef;
my $sysVMRamFree = undef;
d183 3
a185 3
my $sysVMSwapMax = undef;
my $sysVMSwapUsed = undef;
my $sysVMSwapFree = undef;
d208 1
a208 1
my $sysVMActivity = undef;
d236 3
a238 3
my $sysVMRamMax = undef;
my $sysVMRamUsed = undef;
my $sysVMRamFree = undef;
d282 3
a284 3
my $sysVMSwapMax = undef;
my $sysVMSwapUsed = undef;
my $sysVMSwapFree = undef;
d293 2
a294 2
my $tmpMax = undef;
my $tmpFree = undef;
d322 1
a322 1
my $sysVMActivity = undef;
@
1.8
log
@some code refactoring and additional commenting before I try to fix the FreeBSD memory statistics
@
text
@d43 1
a43 1
## sysVMRamMax "/sbin/sysctl -n hw.physmem", convert bytes to MB
d45 1
a45 1
## sysVMRamFree "/usr/bin/vmstat", avm, convert KB to MB
d56 7
d64 1
a64 5
my $out = $self->{-ctx}->{-sys}->run("/sbin/sysctl -n hw.physmem", "forever");
my $raw = $out->{-stdout};
if ($raw =~ m/^(\d+)$/) {
$sysVMRamMax = int($1 / (1024*1024));
}
d67 5
a71 10
$out = $self->{-ctx}->{-sys}->run("/usr/bin/vmstat", "1m");
$raw = $out->{-stdout};
my $n2i = {};
if ($raw =~ m/^[^\n]*\n *([^\n]*\bavm\b[^\n]*)\n *([^\n]*)\n$/s) {
$n2i = &mkn2i(split(/\s+/, $1));
}
if (defined($n2i->{avm})) {
my @@dat = split(/\s+/, $2);
$sysVMRamFree = int(@@dat[$n2i->{avm}] / 1024);
}
d75 1
a75 1
$sysVMRamUsed = $sysVMRamMax - $sysVMRamFree;
d351 17
@
1.7
log
@More source tree cleanups and polishing, especially adding the GPL-based copyright header used inside OSSP packages
@
text
@d40 11
a50 4
# sysVMRamMax "/sbin/sysctl -n hw.physmem", convert bytes to MB
# sysVMRamUsed sysVMRamMax - sysVMRamFree
# sysVMRamFree "/usr/bin/vmstat", avm, convert KB to MB
#
d56 3
a58 6
# local workspace
my $out; my $raw; my $n2i; my @@dat;
# sysVMRamMax
$out = $self->{-ctx}->{-sys}->run("/sbin/sysctl -n hw.physmem", "forever");
$raw = $out->{-stdout};
d60 1
a60 1
$sysVMRamMax = int($1 / 1024 / 1024);
d63 1
a63 1
# sysVMRamFree
d66 1
a66 1
$n2i = {};
d68 1
a68 1
$n2i = &mkn2i(split / +/, $1);
d70 2
a71 2
if (defined $n2i->{avm}) {
@@dat = split(/ +/, $2);
d75 2
a76 2
# sysVMRamUsed
if (defined $sysVMRamMax and defined $sysVMRamFree) {
d80 1
d85 1
a85 6
# sysVMSwapMax "/usr/sbin/swapinfo -k", 1K-blocks, last line, convert KB to MB
# sysVMSwapUsed "/usr/sbin/swapinfo -k", Used, last line, convert KB to MB
# sysVMSwapFree sysVMSwapMax - sysVMSwapUsed
#
if ($obj->{-name} =~ m/\.sysVMSwap(Max|Used|Free)$/) {
d90 4
a93 7
# local workspace
my $out; my $raw; my $n2i; my @@dat;
# sysVMSwapMax, sysVMSwapUsed
$out = $self->{-ctx}->{-sys}->run("/usr/sbin/swapinfo -k", "1m");
$raw = $out->{-stdout};
$n2i = {};
d95 1
a95 1
$n2i = &mkn2i(split / +/, $1);
d97 3
a99 3
@@dat = split(/ +/, $2);
if (defined $n2i->{_1K_blocks}) {
$sysVMSwapMax = int(@@dat[$n2i->{_1K_blocks}] / 1024)
d101 1
a101 1
if (defined $n2i->{Used}) {
d105 2
a106 2
# sysVMSwapFree
if (defined $sysVMSwapMax and defined $sysVMSwapUsed) {
d110 1
d115 1
a115 4
# sysVMActivity "/usr/bin/vmstat", add pi and po column
#
if ($obj->{-name} =~ m/\.sysVMActivity$/) {
d118 3
a120 6
# local workspace
my $out; my $raw; my $n2i; my @@dat;
$out = $self->{-ctx}->{-sys}->run("/usr/bin/vmstat", "1m");
$raw = $out->{-stdout};
$n2i = {};
d124 2
a125 2
if (defined $n2i->{pi} and defined $n2i->{po}) {
@@dat = split(/ +/, $3);
d132 16
a147 8
# sysVMRamMax "/bin/cat /proc/meminfo", MemTotal, convert KB to MB
# sysVMRamUsed "/bin/cat /proc/meminfo", MemTotal-Buffers-Cached-MemFree, convert KB to MB
# sysVMRamFree sysVMRamMax - sysVMRamUsed
#
# FIXME sysVMRamMax does not include the kernel and some of its structures so
# FIXME it is not pyhsical RAM, see dmesg | egrep '^Memory:'
# FIXME /bin/cat is used here but could be replaced by native perl code to improve performance
#
d153 4
a156 7
# local workspace
my $out; my $raw; my $n2i; my @@dat; my $tmp;
# sysVMRamMax, sysVMRamUsed
$out = $self->{-ctx}->{-sys}->run("/bin/cat /proc/meminfo", "1m");
$raw = $out->{-stdout};
$tmp = {};
d161 1
a161 1
if (defined $tmp->{MemTotal}) {
d164 8
a171 11
if ( defined $tmp->{MemTotal}
and defined $tmp->{Buffers}
and defined $tmp->{Cached}
and defined $tmp->{MemFree}
) {
$sysVMRamUsed = int (( $tmp->{MemTotal}
- $tmp->{Buffers}
- $tmp->{Cached}
- $tmp->{MemFree}
) / 1024 );
d174 1
a174 1
# sysVMRamFree
d179 1
d184 1
a184 6
# sysVMSwapMax "/bin/cat /proc/meminfo", SwapTotal, convert KB to MB
# sysVMSwapUsed sysVMSwapMax - sysVMSwapFree
# sysVMSwapFree "/bin/cat /proc/meminfo", SwapFree, convert KB to MB
#
if ($obj->{-name} =~ m/\.sysVMSwap(Max|Used|Free)$/) {
d189 3
a191 6
# local workspace
my $out; my $raw; my $n2i; my @@dat;
# sysVMSwapMax, sysVMSwapFree
$out = $self->{-ctx}->{-sys}->run("/bin/cat /proc/meminfo", "1m");
$raw = $out->{-stdout};
d193 1
a193 1
$sysVMSwapMax = int($1 / 1024);
d199 2
a200 2
# sysVMSwapUsed
if (defined $sysVMSwapMax and defined $sysVMSwapFree) {
d204 1
d209 1
a209 4
# sysVMActivity "/usr/bin/vmstat", add si and so column
#
if ($obj->{-name} =~ m/\.sysVMActivity$/) {
d212 3
a214 6
# local workspace
my $out; my $raw; my $n2i; my @@dat;
$out = $self->{-ctx}->{-sys}->run("/usr/bin/vmstat", "1m");
$raw = $out->{-stdout};
$n2i = {};
d216 1
a216 1
$n2i = &mkn2i(split / +/, $1) if (not defined $n2i->{sr});
d218 2
a219 2
if (defined $n2i->{si} and defined $n2i->{so}) {
my @@dat = split(/ +/, $3);
d226 11
a236 4
# sysVMRamMax "/usr/platform/$arch/sbin/prtdiag", Memory size
# sysVMRamUsed sysVMRamMax - sysVMRamFree
# sysVMRamFree "/bin/pagesize" * "/bin/sar -r 1 1", freemem, convert bytes to MB
#
d242 2
a243 2
# local workspace
my $out; my $raw; my $n2i; my @@dat; my $arch; my $pagesize; my $tmp;
d245 4
a248 5
# initialize arch; get or assume pagesize(1)
$arch = $self->{-ctx}->{-platform}->arch();
$out = $self->{-ctx}->{-sys}->run("/bin/pagesize", "forever");
$raw = $out->{-stdout};
$pagesize = 4096;
d253 1
a253 1
# sysVMRamMax
d260 1
a260 1
# sysVMRamFree
d263 1
a263 1
$n2i = {};
d265 1
a265 1
$n2i = &mkn2i(split / +/, $1);
d267 2
a268 2
@@dat = split(/ +/, $2);
if (defined $n2i->{freemem}) {
d271 1
a271 1
$sysVMRamFree = int($tmp * $pagesize / 1024 / 1024) if (defined $tmp);
d273 2
a274 2
# sysVMRamUsed
if (defined $sysVMRamMax and defined $sysVMRamFree) {
d278 1
d283 1
a283 6
# sysVMSwapMax "swap -l", egrep ^/ and accumulate, convert 512byte blocks to MB
# sysVMSwapUsed sysVMSwapMax - sysVMSwapFree
# sysVMSwapFree "swap -l", egrep ^/ and accumulate, convert 512byte blocks to MB
#
if ($obj->{-name} =~ m/\.sysVMSwap(Max|Used|Free)$/) {
d288 4
a291 7
# local workspace
my $out; my $raw; my $n2i; my @@dat; my $tmpMax; my $tmpFree;
# sysVMSwapMax, sysVMSwapFree
$out = $self->{-ctx}->{-sys}->run("/usr/sbin/swap -l", "1m");
$raw = $out->{-stdout};
$n2i = {};
d293 1
a293 1
$n2i = &mkn2i(split / +/, $1) if (scalar keys %$n2i == 0);
d295 3
a297 3
$tmpMax = undef;
$tmpFree = undef;
foreach my $r (split /\n/, $2) {
d299 3
a301 3
@@dat = split(/ +/, $r);
if (defined $n2i->{blocks}) {
$tmpMax = 0 if (not defined $tmpMax);
d304 2
a305 2
if (defined $n2i->{free}) {
$tmpFree = 0 if (not defined $tmpFree);
d310 2
a311 2
$sysVMSwapMax = int($tmpMax * 512 / 1024 / 1024) if (defined $tmpMax);
$sysVMSwapFree = int($tmpFree * 512 / 1024 / 1024) if (defined $tmpFree);
d313 2
a314 2
# sysVMSwapUsed
if (defined $sysVMSwapMax and defined $sysVMSwapFree) {
d318 1
d323 1
a323 4
# sysVMActivity "/bin/vmstat", sr column
#
if ($obj->{-name} =~ m/\.sysVMActivity$/) {
d326 3
a328 6
# local workspace
my $out; my $raw; my $n2i; my @@dat;
$out = $self->{-ctx}->{-sys}->run("/bin/vmstat", "1m");
$raw = $out->{-stdout};
$n2i = {};
d330 1
a330 1
$n2i = &mkn2i(split / +/, $1) if (not defined $n2i->{sr});
d333 1
a333 1
@@dat = split(/ +/, $2);
d342 1
a342 1
# name to index
@
1.6
log
@fix local variable warning
@
text
@d2 1
a2 1
## snmpdx -- SNMP Daemon Extension
d7 2
a8 4
## Permission to use, copy, modify, and distribute this software for
## any purpose with or without fee is hereby granted, provided that
## the above copyright notice and this permission notice appear in all
## copies.
d10 4
a13 12
## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
## SUCH DAMAGE.
d15 11
a25 1
## sysVM: System Virtual Memory
@
1.5
log
@variable name, namespace and coding style cleanup
@
text
@d310 1
a310 1
my $n2i = {};
@
1.4
log
@sysVM for FreeBSD
@
text
@d49 3
d53 5
a57 3
my $out = $self->{-ctx}->{-sys}->run("/sbin/sysctl -n hw.physmem", "forever");
my $raw = $out->{-stdout};
$sysVMRamMax = int($1 / 1024 / 1024) if ($raw =~ m/^(\d+)$/);
d60 3
a62 3
my $out = $self->{-ctx}->{-sys}->run("/usr/bin/vmstat", "1m");
my $raw = $out->{-stdout};
my $i_vmstat = {};
d64 1
a64 1
$i_vmstat = &n2i(split / +/, $1) if (not defined $i_vmstat->{sr});
d66 3
a68 3
if (defined $i_vmstat->{avm}) {
my @@data = split(/ +/, $2);
$sysVMRamFree = int(@@data[$i_vmstat->{avm}] / 1024);
d90 3
d94 3
a96 3
my $out = $self->{-ctx}->{-sys}->run("/usr/sbin/swapinfo -k", "1m");
my $raw = $out->{-stdout};
my $i_swapl = {};
d98 8
a105 1
$i_swapl = &n2i(split / +/, $1) if (scalar keys %$i_swapl == 0);
a106 3
@@data = split(/ +/, $2);
$sysVMSwapMax = int(@@data[$i_swapl->{_1K_blocks}] / 1024) if (defined $i_swapl->{_1K_blocks});
$sysVMSwapUsed = int(@@data[$i_swapl->{Used}] / 1024) if (defined $i_swapl->{Used});
d121 8
a128 4
my $value = undef;
my $out = $self->{-ctx}->{-sys}->run("/usr/bin/vmstat", "1m");
my $raw = $out->{-stdout};
my $i_vmstat = {};
d130 1
a130 1
$i_vmstat = &n2i(split / +/, $1) if (not defined $i_vmstat->{sr});
d132 3
a134 3
if (defined $i_vmstat->{pi} and defined $i_vmstat->{po}) {
my @@data = split(/ +/, $3);
$value = @@data[$i_vmstat->{pi}] + @@data[$i_vmstat->{po}];
d136 1
a136 1
$obj->{-value} = $value;
d153 3
d157 9
a165 9
my $out = $self->{-ctx}->{-sys}->run("/bin/cat /proc/meminfo", "1m");
my $raw = $out->{-stdout};
my $i_meminfo = {};
$i_meminfo->{MemTotal} = int($1 / 1024) if ($raw =~ m/\nMemTotal:[^\n]*\b(\d+)\b[^\n]*kB\n/s);
$i_meminfo->{Buffers} = int($1 / 1024) if ($raw =~ m/\nBuffers:[^\n]*\b(\d+)\b[^\n]*kB\n/s);
$i_meminfo->{Cached} = int($1 / 1024) if ($raw =~ m/\nCached:[^\n]*\b(\d+)\b[^\n]*kB\n/s);
$i_meminfo->{MemFree} = int($1 / 1024) if ($raw =~ m/\nMemFree:[^\n]*\b(\d+)\b[^\n]*kB\n/s);
if (defined $i_meminfo->{MemTotal}) {
$sysVMRamMax = $i_meminfo->{MemTotal};
d168 4
a171 4
if ( defined $i_meminfo->{MemTotal}
and defined $i_meminfo->{Buffers}
and defined $i_meminfo->{Cached}
and defined $i_meminfo->{MemFree}
d173 5
a177 4
$sysVMRamUsed = $i_meminfo->{MemTotal}
- $i_meminfo->{Buffers}
- $i_meminfo->{Cached}
- $i_meminfo->{MemFree};
d199 3
d203 2
a204 3
my $out = $self->{-ctx}->{-sys}->run("/bin/cat /proc/meminfo", "1m"); #FIXME this could be done in perl natively to improve performance
my $raw = $out->{-stdout};
my $i_swapl = {};
d225 8
a232 4
my $value = undef;
my $out = $self->{-ctx}->{-sys}->run("/usr/bin/vmstat", "1m");
my $raw = $out->{-stdout};
my $i_vmstat = {};
d234 1
a234 1
$i_vmstat = &n2i(split / +/, $1) if (not defined $i_vmstat->{sr});
d236 3
a238 3
if (defined $i_vmstat->{si} and defined $i_vmstat->{so}) {
my @@data = split(/ +/, $3);
$value = @@data[$i_vmstat->{si}] + @@data[$i_vmstat->{so}];
d240 1
a240 1
$obj->{-value} = $value;
d253 3
d257 7
a263 3
my $arch = $self->{-ctx}->{-platform}->arch();
my $out = $self->{-ctx}->{-sys}->run("/bin/pagesize", "forever");
my $pagesize = $out->{-stdout} || 4096;
d266 2
a267 2
my $out = $self->{-ctx}->{-sys}->run("/usr/platform/$arch/sbin/prtdiag -v", "1m");
my $raw = $out->{-stdout};
d273 3
a275 3
my $out = $self->{-ctx}->{-sys}->run("/bin/sar -r 1 1", "1m");
my $raw = $out->{-stdout};
my $i_sarr = {};
d277 1
a277 1
$i_sarr = &n2i(split / +/, $1) if (scalar keys %$i_sarr == 0);
d279 3
a281 4
@@data = split(/ +/, $2);
if (defined $i_sarr->{freemem}) {
$sysVMRamFree = 0 if (not defined $sysVMRamFree);
$sysVMRamFree += @@data[$i_sarr->{freemem}];
d283 1
a283 1
$sysVMRamFree = int($sysVMRamFree * $pagesize / 1024 / 1024) if (defined $sysVMRamFree);
d304 3
d308 3
a310 3
my $out = $self->{-ctx}->{-sys}->run("/usr/sbin/swap -l", "1m");
my $raw = $out->{-stdout};
my $i_swapl = {};
d312 1
a312 1
$i_swapl = &n2i(split / +/, $1) if (scalar keys %$i_swapl == 0);
d314 2
d318 4
a321 4
@@data = split(/ +/, $r);
if (defined $i_swapl->{blocks}) {
$sysVMSwapMax = 0 if (not defined $sysVMSwapMax);
$sysVMSwapMax += @@data[$i_swapl->{blocks}];
d323 3
a325 3
if (defined $i_swapl->{free}) {
$sysVMSwapFree = 0 if (not defined $sysVMSwapFree);
$sysVMSwapFree += @@data[$i_swapl->{free}];
d329 2
a330 2
$sysVMSwapMax = int($sysVMSwapMax * 512 / 1024 / 1024) if (defined $sysVMSwapMax);
$sysVMSwapFree = int($sysVMSwapFree * 512 / 1024 / 1024) if (defined $sysVMSwapFree);
d345 8
a352 4
my $value = undef;
my $out = $self->{-ctx}->{-sys}->run("/bin/vmstat", "1m");
my $raw = $out->{-stdout};
my $i_vmstat = {};
d354 1
a354 1
$i_vmstat = &n2i(split / +/, $1) if (not defined $i_vmstat->{sr});
d356 3
a358 3
if (defined $i_vmstat->{sr}) {
my @@data = split(/ +/, $2);
$value = @@data[$i_vmstat->{sr}];
d360 1
a360 1
$obj->{-value} = $value;
d367 1
a367 1
sub n2i ($) {
@
1.3
log
@sysVM for Linux
@
text
@d40 38
a77 5
# sysVMRamMax sysctl -n hw.physmem
# sysVMRamUsed vmstat: avm
# sysVMRamFree sysVMRamMax - sysVMRamUsed
# sysVMSwapMax swapinfo -k | tail -1
# sysVMSwapUsed swapinfo -k | tail -1
d79 43
a121 1
# sysVMActivity vmstat: pi+po
a141 1
$self->{-ctx}->{-log}->printf(1, "DEBUG: 1=$1\n");
a145 1
$self->{-ctx}->{-log}->printf(1, "DEBUG: MemTotal=%s\n", $i_meminfo->{MemTotal});
d331 2
@
1.2
log
@sysVM for SunOS
@
text
@d25 1
a25 1
## sysVM: System Vritual Memory
d49 2
a50 2
# sysVMRamMax /proc/meminfo:MemTotal
# sysVMRamUsed /proc/meminfo:MemTotal-Buffers-Cached-MemFree
d52 46
a97 1
# sysVMSwapMax /proc/meminfo:SwapTotal
d99 44
a142 1
# sysVMSwapFree /proc/meminfo:SwapFree
@
1.1
log
@merge RAM and Swap into sysVM and start initial probe for it
@
text
@d39 122
a160 13
# FreeBSD Linux Solaris
#Mem Total sysctl -n hw.physmem /proc/meminfo:MemTotal /usr/platform/`uname -i`/sbin/prtdiag:Memory size
#Mem Used vmstat: avm /proc/meminfo:MemTotal-Buffers-Cached-MemFree "total" - "free"
#Mem Free "total"-"used" "total"-"used" sar -r 1 1: freemem * `pagesize`
#Mem Status N.A. N.A. /usr/platform/`uname -i`/sbin/prtdiag:Status col.
#
#Swap Total swapinfo -k | tail -1 /proc/meminfo:SwapTotal swap -l: blocks * 512 (accumulate)
#Swap Used swapinfo -k | tail -1 "total" - "free" "total"-"free"
#Swap Free "total"-"used" /proc/meminfo:SwapFree swap -l: free * 512 (accumulate)
#
#Mem/Swap vmstat: pi+po vmstat: si+so vmstat: sr
#Page Activity
d162 11
@