1209429Srwatson#!/usr/bin/perl
2209429Srwatson#
3209429Srwatson# $FreeBSD$
4209429Srwatson#
5209429Srwatson
6209429Srwatsonif ($#ARGV != 0) {
7209429Srwatson	print "runit.pl kernelname\n";
8209429Srwatson	exit(-1);
9209429Srwatson}
10209429Srwatson
11209429Srwatson$tcpp_dir = "/rwatson/svn/base/head/tools/tools/netrate/tcpp";
12209429Srwatson
13209429Srwatson($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
14209429Srwatson$mon++;
15209429Srwatson$year += 1900;
16209429Srwatson$date = sprintf("%04d%02d%02d", $year, $mon, $mday);
17209429Srwatson
18209429Srwatson$kernel = $ARGV[0];
19209429Srwatson$outfile = $date."_".$kernel.".csv";
20209429Srwatsonunlink($outfile);
21209429Srwatsonopen(OUTFILE, ">".$outfile) || die $outfile;
22209429Srwatsonprint OUTFILE "# $kernel $date\n";
23209429Srwatsonprint OUTFILE "# hydra1: ".`ssh root\@hydra1 uname -a`."\n";
24209429Srwatsonprint OUTFILE "# hydra2: ".`ssh root\@hydra2 uname -a`."\n";
25209429Srwatsonprint OUTFILE "#\n";
26209429Srwatsonprint OUTFILE "kernel,tso,lro,mtu,cores,trial,";
27209429Srwatsonprint OUTFILE "bytes,seconds,conns,bandwidth,user,nice,sys,intr,idle\n";
28209429Srwatsonclose(OUTFILE);
29209429Srwatson
30209429Srwatsonsystem("ssh root\@hydra1 killall tcpp");
31209429Srwatsonsystem("ssh root\@hydra2 killall tcpp");
32209429Srwatsonsleep(1);
33209429Srwatsonsystem("ssh root\@hydra2 ${tcpp_dir}/tcpp -s -p 8&");
34209429Srwatsonsleep(1);
35209429Srwatson
36209429Srwatsonsub test {
37209429Srwatson	my ($kernel, $tso, $lro, $mtu) = @_;
38209429Srwatson
39209429Srwatson	$prefix = "$kernel,$tso,$lro,$mtu";
40209429Srwatson	print "Configuring $prefix\n";
41209429Srwatson
42209429Srwatson	system("ssh root\@hydra1 ifconfig cxgb0 $tso $lro mtu $mtu");
43209429Srwatson
44209429Srwatson	system("ssh root\@hydra2 ifconfig cxgb0 $tso $lro mtu $mtu");
45209429Srwatson
46209429Srwatson	print "Running $prefix\n";
47209429Srwatson	system("ssh root\@hydra1 '(cd $tcpp_dir ; csh parallelism.csh ".
48209429Srwatson	    "$outfile $prefix)'");
49209429Srwatson}
50209429Srwatson
51209429Srwatson# Frobbing MTU requires resetting the host cache, which we don't do,
52209429Srwatson# so don't frob MTU.
53209429Srwatson@mtu_options = ("1500");
54209429Srwatson@tso_options = ("tso", "-tso");
55209429Srwatson@lro_options = ("lro", "-lro");
56209429Srwatson
57209429Srwatsonforeach $mtu (@mtu_options) {
58209429Srwatson	foreach $tso (@tso_options) {
59209429Srwatson		foreach $lro (@lro_options) {
60209429Srwatson			sleep(5);
61209429Srwatson			test($kernel, $tso, $lro, $mtu);
62209429Srwatson		}
63209429Srwatson	}
64209429Srwatson}
65