| #!/bin/sh | |
| #set -x | |
| # | |
| # This is a script to generate a quick "snapshot" of performance for a | |
| # pair of nodes. At first, it will perform the following tests: | |
| # | |
| # TCP Stream test with 56KB socket buffers and 4KB sends | |
| # TCP Stream test with 32KB socket buffers and 4KB sends | |
| # TCP Request/Response test with 1 byte requests and 1 byte responses | |
| # UDP Request/Response test with 1 byte requests and 1 byte responses | |
| # UDP Request/Response test with 516 byte requests and 4 byte responses | |
| # UDP Stream test with 32KB socket buffers and 4KB sends | |
| # UDP Stream test with 32KB socket buffers and 1KB sends | |
| # | |
| # All tests will run for sixty seconds. Confidence intervals are used | |
| # to insure the repeatability of the test. This means that the soonest | |
| # the script will be finished is 21 minutes. | |
| # | |
| # This script takes two parameters. The first parm is the name of the | |
| # remote host. It is a required parameter. The second will either | |
| # enable or disable CPU utilization measurements. It is an optional | |
| # parameter which defaults to no CPU utilization measurements. | |
| # | |
| # usage: snapshot_script hostname [CPU] | |
| # | |
| # mod 6/29/95 - echo progress information to stderr so that we can | |
| # see forward progress even when the results are | |
| # re-directed to a file | |
| # | |
| # mod 5/27/96 - switch from NETHOME to NETPERF and take the user's value | |
| # if it is already set | |
| # | |
| # mod 8/12/96 - fix the default netperf command variable so it finds the | |
| # executable and not the directory... | |
| # | |
| # First, let us set-up some of the defaults | |
| # | |
| # where is netperf installed, there are a few possible places: | |
| NETPERF_CMD=${NETPERF_CMD:=/opt/netperf/netperf} | |
| # there should be no more than two parms passed | |
| if [ $# -gt 2 ]; then | |
| echo "try again, correctly -> snapshot_script hostname [CPU]" | |
| exit 1 | |
| fi | |
| if [ $# -eq 0 ]; then | |
| echo "try again, correctly -> snapshot_script hostname [CPU]" | |
| exit 1 | |
| fi | |
| # if there are two parms, parm one it the hostname and parm two will | |
| # be a CPU indicator. actuall, anything as a second parm will cause | |
| # the CPU to be measured, but we will "advertise" it should be "CPU" | |
| if [ $# -eq 2 ]; then | |
| REM_HOST=$1 | |
| LOC_CPU="-c" | |
| REM_CPU="-C" | |
| fi | |
| if [ $# -eq 1 ]; then | |
| REM_HOST=$1 | |
| fi | |
| # at what port will netserver be waiting? If you decide to run | |
| # netserver at a differnet port than the default of 12865, then set | |
| # the value of PORT apropriately | |
| #NETPERF_PORT="-p some_other_portnum" | |
| NETPERF_PORT=${NETPERF_PORT:=""} | |
| # How accurate we want the estimate of performance: | |
| # maximum and minimum test iterations (-i) | |
| # confidence level (99 or 95) and interval (percent) | |
| STATS_STUFF="-i 10,3 -I 99,5" | |
| # length in time of the test - should be 60 seconds | |
| NETPERF_TIME=${NETPERF_TIME:=60} | |
| # where is the bitbucket? | |
| BITBUCKET="/dev/null" | |
| # announce start of test | |
| echo Netperf snapshot script started at `date` >&2 | |
| # If we are measuring CPU utilization, then we can save beaucoup time | |
| # by saving the results of the CPU calibration and passing them in | |
| # during the real tests. So, we execute the new CPU "tests" of netperf | |
| # and put the values into shell vars. | |
| case $LOC_CPU in | |
| \-c) LOC_RATE=`$NETPERF_CMD $NETPERF_PORT -t LOC_CPU`;; | |
| *) LOC_RATE="" | |
| esac | |
| case $REM_CPU in | |
| \-C) REM_RATE=`$NETPERF_CMD $NETPERF_PORT -t REM_CPU -H $REM_HOST`;; | |
| *) REM_RATE="" | |
| esac | |
| # We will perform three twenty second warm-up tests at this point, but | |
| # we will not display the results of those tests. This is unlikely to | |
| # make any difference in the results except right after a system | |
| # reboot, but this is supposed to be rather "general." We will do a | |
| # TCP stream and a TCP req/resp test | |
| WARM_TIME="10" | |
| $NETPERF_CMD $NETPERF_PORT -l $WARM_TIME -t TCP_STREAM -H $REM_HOST -- \ | |
| -s 32768 -S 32768 -m 4096 > ${BITBUCKET} | |
| $NETPERF_CMD $NETPERF_PORT -l $WARM_TIME -t TCP_STREAM -H $REM_HOST -- \ | |
| -s 32768 -S 32768 -m 96 > ${BITBUCKET} | |
| $NETPERF_CMD $NETPERF_PORT -l $WARM_TIME -t TCP_RR -H $REM_HOST -- \ | |
| -r 1,1 > ${BITBUCKET} | |
| # The warm-ups are complete, so perform the real tests first, the | |
| # stream tests, then the request/response | |
| echo Starting 56x4 TCP_STREAM tests at `date` >&2 | |
| # a 56x4 TCP_STREAM test | |
| echo | |
| echo ------------------------------------ | |
| echo Testing with the following command line: | |
| echo $NETPERF_CMD $NETPERF_PORT -t TCP_STREAM -l $NETPERF_TIME -H $REM_HOST \ | |
| $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF -- \ | |
| -s 57344 -S 57344 -m 4096 | |
| echo | |
| $NETPERF_CMD $NETPERF_PORT -t TCP_STREAM -l $NETPERF_TIME -H $REM_HOST \ | |
| $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF -- \ | |
| -s 57344 -S 57344 -m 4096 | |
| echo | |
| echo | |
| # a 32x4 TCP_STREAM test | |
| echo Starting 32x4 TCP_STREAM tests at `date` >&2 | |
| echo | |
| echo ------------------------------------ | |
| echo Testing with the following command line: | |
| echo $NETPERF_CMD $NETPERF_PORT -t TCP_STREAM -l $NETPERF_TIME -H $REM_HOST \ | |
| $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF -- \ | |
| -s 32768 -S 32768 -m 4096 | |
| echo | |
| $NETPERF_CMD $NETPERF_PORT -t TCP_STREAM -l $NETPERF_TIME -H $REM_HOST \ | |
| $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF -- \ | |
| -s 32768 -S 32768 -m 4096 | |
| echo | |
| echo | |
| # a single-byte TCP_RR | |
| echo Starting 1,1 TCP_RR tests at `date` >&2 | |
| echo | |
| echo ------------------------------------ | |
| echo Testing with the following command line: | |
| echo $NETPERF_CMD $NETPERF_PORT -t TCP_RR -l $NETPERF_TIME -H $REM_HOST \ | |
| $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF -- \ | |
| -r 1,1 | |
| echo | |
| $NETPERF_CMD $NETPERF_PORT -t TCP_RR -l $NETPERF_TIME -H $REM_HOST \ | |
| $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF -- \ | |
| -r 1,1 | |
| echo | |
| echo | |
| echo Starting 1,1 UDP_RR tests at `date` >&2 | |
| echo | |
| echo ------------------------------------ | |
| echo Testing with the following command line: | |
| # a single-byte UDP_RR | |
| echo $NETPERF_CMD $NETPERF_PORT -t UDP_RR -l $NETPERF_TIME -H $REM_HOST \ | |
| $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF -- \ | |
| -r 1,1 | |
| echo | |
| $NETPERF_CMD $NETPERF_PORT -t UDP_RR -l $NETPERF_TIME -H $REM_HOST \ | |
| $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF -- \ | |
| -r 1,1 | |
| echo | |
| echo | |
| # a UDP_RR test much like tftp | |
| echo Starting 512,4 UDP_RR tests at `date` >&2 | |
| echo | |
| echo ------------------------------------ | |
| echo Testing with the following command line: | |
| echo $NETPERF_CMD $NETPERF_PORT -t UDP_RR -l $NETPERF_TIME -H $REM_HOST \ | |
| $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF -- \ | |
| -r 516,4 | |
| echo | |
| $NETPERF_CMD $NETPERF_PORT -t UDP_RR -l $NETPERF_TIME -H $REM_HOST \ | |
| $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF -- -r 516,4 | |
| # a 32x4 UDP_STREAM test | |
| echo Starting 32x4 UDP_STREAM tests at `date` >&2 | |
| echo | |
| echo ------------------------------------ | |
| echo Testing with the following command line: | |
| echo $NETPERF_CMD $NETPERF_PORT -t UDP_STREAM -l $NETPERF_TIME -H $REM_HOST \ | |
| $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF -- \ | |
| -s 32768 -S 32768 -m 4096 | |
| echo | |
| $NETPERF_CMD $NETPERF_PORT -t UDP_STREAM -l $NETPERF_TIME -H $REM_HOST \ | |
| $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF -- \ | |
| -s 32768 -S 32768 -m 4096 | |
| echo | |
| echo | |
| # a 32x1 UDP_STREAM test | |
| echo Starting 32x1 UDP_STREAM tests at `date` >&2 | |
| echo | |
| echo ------------------------------------ | |
| echo Testing with the following command line: | |
| echo $NETPERF_CMD $NETPERF_PORT -t UDP_STREAM -l $NETPERF_TIME -H $REM_HOST \ | |
| $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF -- \ | |
| -s 32768 -S 32768 -m 1024 | |
| echo | |
| $NETPERF_CMD $NETPERF_PORT -t UDP_STREAM -l $NETPERF_TIME -H $REM_HOST \ | |
| $LOC_CPU $LOC_RATE $REM_CPU $REM_RATE $STATS_STUFF -- \ | |
| -s 32768 -S 32768 -m 1024 | |
| echo | |
| echo | |
| # and that's that | |
| echo Tests completed at `date` >&2 | |
| echo | |
| echo If you wish to submit these results to the netperf database at | |
| echo http://www.cup.hp.com/netperf/NetperfPage.html, please submit each | |
| echo datapoint individually. Individual datapoints are separated by | |
| echo lines of dashes. |