1#!/bin/sh
2#
3# stream_range
4#
5# generate a whole lot of numbers from netperf to see the effects
6# of send size on thruput
7#
8
9#
10# usage : tcp_stream_range hostname [CPU]
11#
12
13if [ $# -gt 2 ]; then
14	echo "try again, correctly -> tcp_stream_range hostname [CPU]"
15	exit 1
16fi
17
18if [ $# -eq 0 ]; then
19  echo "try again, correctly -> tcp_stream_range hostname [CPU]"
20  exit 1
21fi
22
23# if there are two parms, parm one it the hostname and parm two will
24# be a CPU indicator. actually, anything as a second parm will cause
25# the CPU to be measured, but we will "advertise" it should be "CPU"
26
27if [ $# -eq 2 ]; then
28  REM_HOST=$1
29  LOC_CPU="-c"
30  REM_CPU="-C"
31fi
32
33if [ $# -eq 1 ]; then
34  REM_HOST=$1
35fi
36
37# at what port will netserver be waiting? If you decide to run
38# netserver at a differnet port than the default of 12865, then set
39# the value of PORT apropriately
40#PORT="-p some_other_portnum"
41PORT=""
42
43# where is netperf, and are there any "constant" options such as 
44# the netserver port number
45#NETHOME=/usr/etc/net_perf
46NETHOME="."
47NETPERF=$NETHOME/netperf $PORT
48
49# How accurate we want the estimate of performance: 
50#      maximum and minimum test iterations (-i)
51#      confidence level (99 or 95) and interval (percent)
52STATS_STUFF="-i 10,2 -I 99,3"
53
54#
55# some stuff for the arithmetic 
56#
57# we start at start, and then multiply by MULT and add ADD. by changing
58# these numbers, we can double each time, or increase by a fixed
59# amount, or go up by 4x, whatever we like...
60#
61START=1
62
63END=65536
64
65MULT=4
66
67ADD=0
68
69# If we are measuring CPU utilization, then we can save beaucoup
70# time by saving the results of the CPU calibration and passing
71# them in during the real tests. So, we execute the new CPU "tests"
72# of netperf and put the values into shell vars.
73case $LOC_CPU in
74\-c) LOC_RATE=`$NETPERF -t LOC_CPU`;;
75*) LOC_RATE=""
76esac
77
78case $REM_CPU in
79\-C) REM_RATE=`$NETPERF -t REM_CPU -H $REM_HOST`;;
80*) REM_RATE=""
81esac
82
83TIME="60"
84
85#
86# the maximum socket buffer size is system dependent. for the
87# "cannonical" tests we use 32KB, but this can be altered
88#
89SOCKET_SIZE="-s 32768 -S 32768"
90
91MESSAGE=$START
92while [ $MESSAGE -le $END ]; do
93  echo
94  echo ------------------------------------
95  echo Testing with the following command line:
96  echo  $NETPERF -l $TIME -H $REM_HOST -t TCP_STREAM\
97        $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF --\
98        -m $MESSAGE $SOCKET_SIZE 
99  echo
100  $NETPERF -l $TIME -H $REM_HOST -t TCP_STREAM\
101  $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF --\
102  -m $MESSAGE $SOCKET_SIZE
103
104  MESSAGE=`expr $MESSAGE + $ADD`
105  MESSAGE=`expr $MESSAGE \* $MULT`
106
107done
108echo
109
110