#!/usr/local/bin/perl # # 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; while (1) { say scalar localtime(); say "------------------------"; system("/usr/bin/vmstat -z --libxo xml >$filename"); 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") { $name = $name . "_$c"; $c++; } if (exists $dict{$name}) { my $v0=$dict{$name} + $offset; if ($v0 <= $val) { format DIFF_V0V1 = @<<<<<<<<<<<<<<<<<<<<<< @######## => @######## $name,$dict{$name},$val . $~ = "DIFF_V0V1"; write; $dict{$name} = $val; } } else { $dict{$name} = $val; } } say ''; sleep(5); }