use builtin say
[vrac.git] / vmstatm.pl
1 #!/usr/local/bin/perl
2 #
3 # requires textproc/p5-XML-LibXML
4 #
5 use warnings;
6 use strict;
7 use feature 'say';
8
9 use XML::LibXML;
10
11 my $filename = 'vmstatm.xml';
12 my %dict;
13
14 my ($offset) = @ARGV;
15
16 if (not defined $offset) {
17         $offset = 10;
18 }
19
20 while (1) {
21         say scalar localtime();
22         say "------------------------";
23         system("/usr/bin/vmstat -m --libxo xml >$filename"); 
24         my $doc = XML::LibXML->load_xml(location => $filename); 
25         foreach my $id ( $doc->findnodes('//memory')) {
26                 my $name=$id->findvalue('type');
27                 my $used=$id->findvalue('memory-use');
28                 if (exists $dict{$name}) {
29                         my $v0=$dict{$name} + $offset;
30
31                         if ($v0 < $used) {
32 format DIFF_V0V1 =
33         @<<<<<<<<<<<<<<<<<<<<<< @######## => @########
34         $name,$dict{$name},$used
35 .
36                                 $~ = "DIFF_V0V1";
37                                 write;
38                                 $dict{$name}=$used;
39                         }
40                 } else {
41                         $dict{$name}=$used;
42                 }
43         }
44
45         say '';
46         sleep(5);
47 }
48