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