【NS2】批量处理TCL脚本并用AWK分析出图/不同CBR流下的性能表现

NS实验,如何批量高效执行脚本,从而避免繁琐的傻瓜操作,将注意力更多地放在方法的改良上,降低实验的操作次数

################ 0.run script by "./" ################
echo "run.sh going!"
echo "\n Now making! \n"
##每次修改c++底层文件,都需要重新编译一次,此处为ns的Makefile目录
cd /root/Downloads/ns-allinone-2.35/ns-2.35	
make



################ 1.setting current ".tcl" folder path ################
echo "\n Now run the ns script!\n"
##常规的实验操作就是设置,建立一个文件夹,放入tcl脚本,生成.tr实验数据
cd /root/Downloads/lam/ns_loadex
#!/bin/bash



################ 2.change the alg name ################
##此处命名的目的是不仅仅是为了区分每次实验项目并为标记生成的.tr文件,为awk分析读取做准备
Algorithm="SPR"



################ 3.setting x range ################
##这个与tcl设置的接受参数相关
xrange=(600k 700k 800k 900k 1000k 1100k 1200k)
#xrange=(2M 2.25M 2.5M 2.75M 3M 3.25M)
#xrange=(0.2M 0.4M 0.6M 0.8M 1M 1.2M 1.4M 1.6M 1.8M 2M)
#xrange=(0.8M 1M 1.2M 1.4M 1.6M 1.8M 2M)



##################################################
##主角!批量处理tcl脚本运行 或需要可以设置结束时间

xrangeSize=`expr ${#xrange[@]} - 1`
for i in $(seq 0 $xrangeSize)

do
	startTime=`date +%Y%m%d-%H:%M:%S`
	startTime_x=`date +%M`
	echo 'step for NS:' ${xrange[$i]}
		################ 4.main prcess program ################
		##此处修改为设置好的tcl脚本文件名字
		ns 12flow_iridium.tcl ${xrange[$i]}
		#或需要可以设置结束时间
		#timeout 60m ns 12flow_iridium.tcl ${xrange[$i]}
	 	
		endTime=`date +%Y%m%d-%H:%M:%S`
		endTime_x=`date +%M`

		sumTime=$(expr $endTime_x - $startTime_x)
		echo "$startTime ---> $endTime" "Total:$sumTime minutes"

	echo " "
done


##################################################
##通过AWK批量分析数据

echo -e "\nBATCH Analyze The : '$Algorithm' Data\n"


# clear file
echo > pltDelay_$Algorithm.txt
echo > pltThroughput_$Algorithm.txt  
echo > pltDelivery_$Algorithm.txt
echo > pltCdf_$Algorithm.txt


for i in $(seq 0 $xrangeSize)
do
    echo ''step for awk:'' ${xrange[$i]}
    	
	    awk -f delay.awk out_cbr${xrange[$i]}.tr >> pltDelay_$Algorithm.txt
	    awk -f throughput.awk out_cbr${xrange[$i]}.tr >> pltThroughput_$Algorithm.txt   
	    awk -f delivery.awk out_cbr${xrange[$i]}.tr >> pltDelivery_$Algorithm.txt
	    awk -f cdf.awk out_cbr${xrange[$i]}.tr >> pltCdf_$Algorithm.txt
	    echo '	AWK done!'
done



##################################################
##gnuplot出图
echo -e "\nOutput The : '$Algorithm' plot\n"

filename="filename='"$Algorithm"'"

#打开预先设置好的.plt文件,输出成图
gnuplot -p -e $filename p.plt

##此处设置,是由于gnuplot有时候出图异常,需要重新出图,但鉴于命令太长,故将写入.sh文件,每次更换实验的Algorithm时也同时将该函数批量处理更改名字,因为本人设置gnuplot的文件运行都是基于$filename参数,动态执行

##找到gnupp.sh的“Algorithm=”所在行,在后面追加刚处理的函数名字
sed -i '/Algorithm=/a\Algorithm="'$Algorithm'"' gnupp.sh



你可能感兴趣的:(NS2网络实验,NS2,shell,linux)