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