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