You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kamailio/utils/profile/launch.sh

107 lines
2.0 KiB

#!/bin/sh -x
# profile filename
PREF=$1
# number of cycles
NROFCYCLES=4
# functions to go into report
MYFN="eat_line|eat_space|eat_token"
# set to non-zero if only a report is to be generated
#REPONLY=tru
CONFIG=profile.cfg
SRD=${HOME}/sip_router
PRO=${SRD}/profile
REP=$PRO/$PREF.txt
EXEC=ser
function usage()
{
cat << EOF
usage: $0 profile_name
currently, this script starts a remote sender at alioth.
The sender iterates through all messages available in its
directory and send them many times (should be configurable).
Sip-router is configured to relay requests to benetnash:sink
and responses are built to be routed there too.
This repeats NROFCYCLES-times. Results of all cycles are then
dumped into <profile_name>-<cycle number>.txt and a
report <profile_name>.txt is generated.
EOF
exit 1
}
if [ "$#" -ne 1 ] ; then
usage
fi
cd $SRD
function run()
{
j=0
while [ $j -lt "$NROFCYCLES" ] ; do
i=`printf "%.3d" $j`
j=`expr $j + 1`
echo "*** Entering cycle $j"
/usr/bin/time --output="$PRO/${PREF}-${i}-time.txt" ${SRD}/$EXEC -l 192.168.99.100 -D -E -d -f ${PRO}/$CONFIG &
#rsh -l jku benetnash.fokus.gmd.de 'nohup bin/sock -s -u 5060 '
rsh -l jku alioth.fokus.gmd.de 'nohup tmp/sipp/start.sh '
killall -INT $EXEC
gprof $EXEC > $PRO/${PREF}-${i}.txt
done
}
function report()
{
cat > $REP << EOF
first line ... time spent in tested procedure
second line (yyrestart) ... total time
third line (receive_msg) ... numer of calls
% cumulative self self total
time seconds seconds calls ms/call ms/call name
EOF
j=0
while [ $j -lt "$NROFCYCLES" ] ; do
i=`printf "%.3d" $j`
j=`expr $j + 1`
FN="${PRO}/${PREF}-${i}.txt"
echo >> $REP
echo >> $REP
echo $FN >> $REP
egrep "($MYFN|yyrestart)" $FN | grep -v '\[' >> $REP
grep 'receive_msg \[.\]' $FN | grep -v '\/' >> $REP
echo >> $REP
cat $PRO/${PREF}-${i}-time.txt >> $REP
done
cat >> $REP << EOF
Execution environment:
EOF
cat /proc/cpuinfo /proc/meminfo >> $REP
}
if [ -z "$REPONLY" ] ; then
run
fi
report
echo '*** finished ***'
echo