diff options
Diffstat (limited to 'tools/tools/netrate/tcpp/runit.pl')
-rwxr-xr-x | tools/tools/netrate/tcpp/runit.pl | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/tools/tools/netrate/tcpp/runit.pl b/tools/tools/netrate/tcpp/runit.pl new file mode 100755 index 0000000..d0d5227 --- /dev/null +++ b/tools/tools/netrate/tcpp/runit.pl @@ -0,0 +1,64 @@ +#!/usr/bin/perl +# +# $FreeBSD$ +# + +if ($#ARGV != 0) { + print "runit.pl kernelname\n"; + exit(-1); +} + +$tcpp_dir = "/rwatson/svn/base/head/tools/tools/netrate/tcpp"; + +($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +$mon++; +$year += 1900; +$date = sprintf("%04d%02d%02d", $year, $mon, $mday); + +$kernel = $ARGV[0]; +$outfile = $date."_".$kernel.".csv"; +unlink($outfile); +open(OUTFILE, ">".$outfile) || die $outfile; +print OUTFILE "# $kernel $date\n"; +print OUTFILE "# hydra1: ".`ssh root\@hydra1 uname -a`."\n"; +print OUTFILE "# hydra2: ".`ssh root\@hydra2 uname -a`."\n"; +print OUTFILE "#\n"; +print OUTFILE "kernel,tso,lro,mtu,cores,trial,"; +print OUTFILE "bytes,seconds,conns,bandwidth,user,nice,sys,intr,idle\n"; +close(OUTFILE); + +system("ssh root\@hydra1 killall tcpp"); +system("ssh root\@hydra2 killall tcpp"); +sleep(1); +system("ssh root\@hydra2 ${tcpp_dir}/tcpp -s -p 8&"); +sleep(1); + +sub test { + my ($kernel, $tso, $lro, $mtu) = @_; + + $prefix = "$kernel,$tso,$lro,$mtu"; + print "Configuring $prefix\n"; + + system("ssh root\@hydra1 ifconfig cxgb0 $tso $lro mtu $mtu"); + + system("ssh root\@hydra2 ifconfig cxgb0 $tso $lro mtu $mtu"); + + print "Running $prefix\n"; + system("ssh root\@hydra1 '(cd $tcpp_dir ; csh parallelism.csh ". + "$outfile $prefix)'"); +} + +# Frobbing MTU requires resetting the host cache, which we don't do, +# so don't frob MTU. +@mtu_options = ("1500"); +@tso_options = ("tso", "-tso"); +@lro_options = ("lro", "-lro"); + +foreach $mtu (@mtu_options) { + foreach $tso (@tso_options) { + foreach $lro (@lro_options) { + sleep(5); + test($kernel, $tso, $lro, $mtu); + } + } +} |