#!/usr/local/bin/perl # # requires textproc/p5-XML-LibXML # use warnings; use strict; use feature 'say'; use XML::LibXML; my $filename = 'vmstatm.xml'; my %dict; my ($offset) = @ARGV; if (not defined $offset) { $offset = 10; } while (1) { say scalar localtime(); say "------------------------"; system("/usr/bin/vmstat -m --libxo xml >$filename"); my $doc = XML::LibXML->load_xml(location => $filename); foreach my $id ( $doc->findnodes('//memory')) { my $name=$id->findvalue('type'); my $used=$id->findvalue('memory-use'); if (exists $dict{$name}) { my $v0=$dict{$name} + $offset; if ($v0 < $used) { format DIFF_V0V1 = @<<<<<<<<<<<<<<<<<<<<<< @######## => @######## $name,$dict{$name},$used . $~ = "DIFF_V0V1"; write; $dict{$name}=$used; } } else { $dict{$name}=$used; } } say ''; sleep(5); }