xref: /freebsd/tools/tools/netrate/tcpp/runit.pl (revision abd87254)
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