#!/bin/sh
SERVER=10.0.0.1
CLIENT=10.0.0.2

echo "setting up network..."
ifconfig lo 127.0.0.1
ifconfig eth0 $CLIENT txqueuelen 1000

echo "0" > /proc/sys/net/ipv4/tcp_timestamps
echo "0" > /proc/sys/net/ipv4/tcp_sack
echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem
echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem
echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem
echo "262143" > /proc/sys/net/core/rmem_max
echo "262143" > /proc/sys/net/core/wmem_max
echo "262143" > /proc/sys/net/core/rmem_default
echo "262143" > /proc/sys/net/core/wmem_default
echo "262143" > /proc/sys/net/core/optmem_max
echo "100000" > /proc/sys/net/core/netdev_max_backlog

echo -n "waiting for server..."
/usr/bin/netcat -c -l -p 8000

BINARY=/benchmarks/netperf/netperf
TEST="TCP_STREAM"
SHORT_ARGS="-l -100k"
LONG_ARGS="-- -m 65536 -M 65536 -s 262144 -S 262144"


SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS"
LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS"

echo "starting test..."
echo "netperf warmup"
echo $SHORT
eval $SHORT
NUMCLNTS=`/sbin/m5 initparam`
[ "$NUMCLNTS" -eq "0" ] && NUMCLNTS=1 

echo "netperf benchmark... starting $NUMCLNTS..."
lcv=0

while [ "$lcv" -lt "$NUMCLNTS" ]
do
    echo $LONG
    eval $LONG &
    ((lcv += 1))
done

ckpt=200000000
((ckpt = ckpt * 12/3 + 1000000000))

echo "configuring checkpointing at $ckpt..."
/sbin/m5 checkpoint $ckpt 2000000000
echo "done configuring checkpointing..."
sleep 100000
