# requires textproc/p5-XML-LibXML
#
use warnings;
+use strict;
+use feature 'say';
use XML::LibXML;
+my ($offset) = @ARGV;
+
+if (not defined $offset) {
+ $offset = 10;
+}
+
my $filename = 'vmstat.xml';
my %dict;
-my $offset = 10;
+
+
while (1) {
- print scalar localtime() . "\n";
+ say scalar localtime();
+ say "------------------------";
system("/usr/bin/vmstat -z --libxo xml >$filename");
- $doc = XML::LibXML->load_xml(location => $filename);
- foreach my $id ( $doc->findnodes('//zone')) {
+ my $doc = XML::LibXML->load_xml(location => $filename);
+ my $c = 0;
+ foreach my $id ($doc->findnodes('//zone')) {
my $name=$id->findvalue('name');
my $used=$id->findvalue('used');
+ my $val = int($used);
+
if ($name eq "vm pgcache") {
- next;
+ $name = $name . "_$c";
+ $c++;
}
if (exists $dict{$name}) {
my $v0=$dict{$name} + $offset;
- if ($v0 < int($used)) {
- print "$name: $v0 => $used \n";
- $dict{$name}=int(${used});
+ if ($v0 <= $val) {
+format DIFF_V0V1 =
+ @<<<<<<<<<<<<<<<<<<<<<< @######## => @########
+ $name,$dict{$name},$val
+.
+ $~ = "DIFF_V0V1";
+ write;
+ $dict{$name} = $val;
}
} else {
- $dict{$name}=int(${used});
+ $dict{$name} = $val;
}
}
- print "------------------------\n" ;
+
+ say '';
sleep(5);
}
+