#!/usr/bin/perl use strict; use warnings; #print $ENV{'PROCESSOR_ARCHITECTURE'}; my $pagesize = 4*1024; #my $arch=$ENV{'PROCESSOR_ARCHITECTURE'}; #if (my $arch == "IA64") #{ # my $pagesize = 16*1024; #} if ($#ARGV != 0) { print "Usage: script \n"; exit 1; } my $minutes = $ARGV[0]; printf ("Will run for %d minutes, please wait\n", $minutes); my @veid = `vzlist -H -o veid`; chomp( @veid ); my $S = 0; my @phys_mem; my $t1=time; my $t2=$t1+$minutes*60; my $i; while (time <= $t2) { $i = 0; foreach my $id (@veid) { if ($id > 100) { if (! defined($phys_mem[$i])) { $phys_mem[$i] = 0; } my $out = `vzlist -a -H -o vprvmem $id`; my @values = split(/\s+/, $out); my $vprvmem = $values[1]; my $mem = $vprvmem; #+ my $physpages * my $pagesize; if ($phys_mem[$i] < $mem) { $phys_mem[$i] = $mem; } $i = $i + 1; } } sleep(1); } printf("----------------------------------- \n" ); # calculate S as sum of phys_mem values $i = 0; foreach my $id (@veid) { if ($id > 100) { $S = $S + $phys_mem[$i]; $i = $i + 1; } } $i=0; print "VEID\tPHYSICAL MEMORY\tUSE SHARE\n"; foreach my $id (@veid) { if ($id > 100) { #printf( "\$phys_mem[\$i] = $phys_mem[$i], \$S = $S\n" ); my $p = $phys_mem[$i] * 100/ $S; printf("%-5d\t%-5.2f %s\t%-5.2f %%\n", $id,$phys_mem[$i],"Mb",$p); $i = $i + 1; } }