blob: 23f205acad1ae6a89b9fdf9b00c9a84b2c169e17 [file] [log] [blame]
# **********************************************************
# Copyright (c) 2006 VMware, Inc. All rights reserved.
# **********************************************************
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# * Neither the name of VMware, Inc. nor the names of its contributors may be
# used to endorse or promote products derived from this software without
# specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE.
# borrowed from Lina
#
use Date::EzDate;
use Time::Local;
my $build;
my $output;
my $hostname;
my %Totals;
my $titles;
my $output_tag;
my $TimeNow;
my $LastBoot;
my $TimeToBoot;
my $ScriptPath;
my $OutputPath;
if (($#ARGV+1) < 1 ) {
print " Usage : <path to dir boot_data>\n";
exit;
}
$ScriptPath=$ARGV[0];
print "path=$ARGV[0]\n";
# first get boot time
$TimeToBoot=&GetLastBootTime();
$OutputPath = "Z:\\desktop-benchmarks\\results\\boot_data";
&GetNetworkDrive();
&GetBuild();
&CollectData();
#--------------------------------------------------------------------------
sub GetNetworkDrive {
if (-e $OutputPath) {
# use it
return;
}
else {
system("net use Z: \/del");
system("net use Z: \\\\10.1.5.85\\g_shares \"\" /USER:guest");
}
}
sub CollectData {} {
&GetDate();
&GetHost();
&go();
&PrintTotals();
system("del $ScriptPath\\$output");
system("del $ScriptPath\\build.out");
system("del $ScriptPath\\OS.out");
system("del $ScriptPath\\host.out");
system("del $ScriptPath\\lastboot.txt");
}
sub GetBuild() {
system("drview -listdr > $ScriptPath\\build.out");
open(IN,"$ScriptPath\\build.out") or die "Cannot find the build #\n";
while( $line=<IN> ) {
if ($line =~ /found/i ) {
$build="Native";
print "NATIVE!!!!!!\n";
return;
}
$line=~ s/\)//g;
my @build=split(' ',$line);
$build="DR_". $build[$#build];
last;
}
}
sub GetDate() {
my $mydate = Date::EzDate->new();
$mydate->set_format('myformat', '{monthnumbase1}{day of month}{yearshort}{hour}{min}{sec}');
$mytoday=$mydate->{'myformat'};
$output=$build . "_" . $mytoday . "\.txt"; ###$output="jnk";
$output_tag=$build . "_" . $mytoday;
print "your output file ==>> $output\n";
}
sub GetHost() {
system("hostname > $ScriptPath\\host.out");
system("ver > $ScriptPath\\OS.out"); #get the OS
open(IN,"$ScriptPath\\host.out") or die "Cannot find the build #\n";
$hostname=<IN>;
chomp;
s/\n//g;
#print "host22 = $hostname";
close IN;
open(IN,"$ScriptPath\\OS.out") or die "Cannot find the build #\n";
$line=<IN>;
while ($line=<IN>) {
print "line= $line";
if ($line =~ /microsoft/gi) {
if ($line =~ /XP/gi) { $myos= "xp_"; last;}
elsif ($line =~ /2000/ ) {$myos = "2k_"; last}
else { $myos = "2k3_";last}
}
}
my $name= $myos . $hostname;
$hostname=$name;
print "host = $hostname";
system("mkdir $OutputPath\\$hostname");
}
sub go() {
system("drview -listall -showmem > $ScriptPath\\$output");
system("copy $ScriptPath\\$output $OutputPath\\$hostname");
close IN;
}
sub GetTotal(){
open(IN,"<$ScriptPath\\$output");
chomp(my $committed = <IN>);
$committed =~ s/.*KB.: //;
$line=<IN>; #dont need second line
$titles_tmp=<IN>;
$titles_tmp=~ s/\s+/,/g;
@titles=split(',',$titles_tmp);
while ($line=<IN>) {
$line=~ s/\s+/,/g;
#print "line1= $line \n";
$line=~ s/%//g;
#print "line= $line, count=$#titles\n";
@line2=split(',',$line); #print "line2= @line2\n";
for ($i=4; $i < ($#titles+1);$i++) {
$Totals{$titles[$i]}+=$line2[$i];
}
}
$Totals{"Committed"} = $committed;
close IN;
}
sub PrintTotals() {
$hostname=~s/\n//g;
my $sumfile="Boot_Summary_" . $hostname. "\.txt";
my $fullpath="$OutputPath\\$hostname\\$sumfile";
print "Summary= $sumfile\n";
my @arr;
format OUT=
@>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$Bld,$Totals{"CPU"},$Totals{"User"} ,$Totals{"Hndl"},$Totals{"Thr"},$Totals{"PVSz"},$Totals{"VSz"},$Totals{"PPriv"},$Totals{"Priv"}$Totals{"PWSS"},$Totals{"WSS"},$Totals{"Fault"},$Totals{"PPage"},$Totals{"Page"},$Totals{"PNonP"},$Totals{"NonP"},$Totals{"BootTime"},$Totals{"Committed"}
.
if ( -e $fullpath) {
open(OUT,">>$fullpath") or die "cannot open existing summary: $!\n";
}
else {
print "Cannot find a summary file starting a new one..\n";
open(OUT,">$fullpath") or die "cannot open a new summary: $!\n";
my $j=1;
$Bld="Build";
$Totals{"CPU"}="CPU";
$Totals{"User"}="User";
$Totals{"Hndl"}="Hndl";
$Totals{"Thr"}="Thr";
$Totals{"PVSz"}="PVSz";
$Totals{"VSz"}="VSz";
$Totals{"PPriv"}="PPriv";
$Totals{"Priv"}="Priv";
$Totals{"PWSS"}="PWSS";
$Totals{"WSS"}="WSS";
$Totals{"Fault"}="Fault";
$Totals{"PPage"}="PPage";
$Totals{"Page"}="Page";
$Totals{"PNonP"}="PNonP";
$Totals{"NonP"}="NonP";
$Totals{"BootTime"}="BootTime";
$Totals{"Committed"}="Commit Charge";
write(OUT);
}
&GetTotal();
$Bld=$build;
$Totals{"BootTime"}=$TimeToBoot;
write(OUT);
}
sub GetLastBootTime(){
system("cscript $ScriptPath\\uptime.vbs > $ScriptPath\\lastboot.txt");
open(IN,"<$ScriptPath\\lastboot.txt") or die "Cannot open sys time file:$!\n";
while ($line=<IN>) {
if ($line =~ /uptime in seconds/i) {
print "line=$line \n";
@arr=split(':',$line); #ex:Uptime in seconds: 15764
close IN;
return($arr[1]);
}
}
}