vmstatm.pl 849 B

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