From 1bee12309eb3a593ada391f627e966a1c13f38a5 Mon Sep 17 00:00:00 2001 From: rwatson Date: Tue, 22 Jun 2010 10:46:57 +0000 Subject: Add TCP scalability testing wrapper scripts for tcpp. Sponsored by: Juniper Networks MFC after: 1 week --- tools/tools/netrate/tcpp/parallelism.csh | 28 ++++++++++++++ tools/tools/netrate/tcpp/runit.pl | 64 ++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 tools/tools/netrate/tcpp/parallelism.csh create mode 100755 tools/tools/netrate/tcpp/runit.pl (limited to 'tools') diff --git a/tools/tools/netrate/tcpp/parallelism.csh b/tools/tools/netrate/tcpp/parallelism.csh new file mode 100644 index 0000000..2534b01 --- /dev/null +++ b/tools/tools/netrate/tcpp/parallelism.csh @@ -0,0 +1,28 @@ +#!/bin/csh +# +# $FreeBSD$ +# +# Run tcpp -s -p 8 on the server, then this on the client. +# +# Note awkwardly hard-coded IP address below. +# +# Accepts two arguments: [filename] [csvprefix] +# + +set totalbytes=4800000 # Bytes per connection +set cores=8 +set trials=6 +set ptcps=24 # Max TCPs concurrently +set ntcps=240 # Total TCPs over test +set nips=4 # Number of local IP addresses to use +set baseip=192.168.100.200 # First IP address to use + +foreach core (`jot $cores`) + foreach trial (`jot $trials`) + set mflag=`echo $ptcps / $core | bc` + set tflag=`echo $ntcps / $core | bc` + echo -n $2,${core},${trial}, >> $1 + ./tcpp -c 192.168.100.102 -p $core -b $totalbytes -m $mflag \ + -t $tflag -M $nips -l $baseip >> $1 + end +end 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); + } + } +} -- cgit v1.1