1#!/usr/bin/perl 2# 3# 4 5if ($#ARGV != 0) { 6 print "runit.pl kernelname\n"; 7 exit(-1); 8} 9 10$tcpp_dir = "/rwatson/svn/base/head/tools/tools/netrate/tcpp"; 11 12($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); 13$mon++; 14$year += 1900; 15$date = sprintf("%04d%02d%02d", $year, $mon, $mday); 16 17$kernel = $ARGV[0]; 18$outfile = $date."_".$kernel.".csv"; 19unlink($outfile); 20open(OUTFILE, ">".$outfile) || die $outfile; 21print OUTFILE "# $kernel $date\n"; 22print OUTFILE "# hydra1: ".`ssh root\@hydra1 uname -a`."\n"; 23print OUTFILE "# hydra2: ".`ssh root\@hydra2 uname -a`."\n"; 24print OUTFILE "#\n"; 25print OUTFILE "kernel,tso,lro,mtu,cores,trial,"; 26print OUTFILE "bytes,seconds,conns,bandwidth,user,nice,sys,intr,idle\n"; 27close(OUTFILE); 28 29system("ssh root\@hydra1 killall tcpp"); 30system("ssh root\@hydra2 killall tcpp"); 31sleep(1); 32system("ssh root\@hydra2 ${tcpp_dir}/tcpp -s -p 8&"); 33sleep(1); 34 35sub test { 36 my ($kernel, $tso, $lro, $mtu) = @_; 37 38 $prefix = "$kernel,$tso,$lro,$mtu"; 39 print "Configuring $prefix\n"; 40 41 system("ssh root\@hydra1 ifconfig cxgb0 $tso $lro mtu $mtu"); 42 43 system("ssh root\@hydra2 ifconfig cxgb0 $tso $lro mtu $mtu"); 44 45 print "Running $prefix\n"; 46 system("ssh root\@hydra1 '(cd $tcpp_dir ; csh parallelism.csh ". 47 "$outfile $prefix)'"); 48} 49 50# Frobbing MTU requires resetting the host cache, which we don't do, 51# so don't frob MTU. 52@mtu_options = ("1500"); 53@tso_options = ("tso", "-tso"); 54@lro_options = ("lro", "-lro"); 55 56foreach $mtu (@mtu_options) { 57 foreach $tso (@tso_options) { 58 foreach $lro (@lro_options) { 59 sleep(5); 60 test($kernel, $tso, $lro, $mtu); 61 } 62 } 63} 64