fix duplicate name
[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                 my $val = int($used);
33
34                 if ($name eq "vm pgcache") {
35                         $name = $name . "_$c";
36                         $c++;
37                 }
38                 
39                 if (exists $dict{$name}) {
40                         my $v0=$dict{$name} + $offset;
41
42                         if ($v0 <= $val) {
43 format DIFF_V0V1 =
44         @<<<<<<<<<<<<<<<<<<<<<< @######## => @########
45         $name,$v0,$val
46 .
47                                 $~ = "DIFF_V0V1";
48                                 write;
49                                 $dict{$name} = $val;
50                         }
51                 } else {
52                         $dict{$name} = $val;
53                 }
54         }
55
56         print "\n";
57
58         sleep(5);
59 }
60
61