- 分析tr文件
一共52列
$1—time
5
19
40 ?
37?
45
- 运行awk
awk -f filename.awk filename.tr
or
gawk -f filename.awk filename.tr
average throughput
#average throughput
BEGIN {
recv_size=0
sTime=1e6
spTime=0
NumOfRecd=0
}
#This awk file works only for new trace format,old trace does not have support
{
event =$1 //$表示第几列
time =$3
node_id=$5
packet=$19 //AGT
pkt_id=$41
flow_id=$39
packet_size=$37
flow_type=$45
if(packet="AGT"&& sendTime[pkt_id] == 0 && (event == "+" || event == "s")) {
if(time <sTime) {
sTime=time
}
sendTime[pkt_id] = time
this_flow = flow_type
}
if(packet=="AGT" && event == "r") {
if(time > spTime) {
spTime=time
}
recv_size = recv_size + packet_size
recvTime[pkt_id] = time
NumOfRecd = NumOfRecd + 1
}
}
END {
if(NumOfRecd == 0 ) {
printf("No packets,the simulation might be very small \n")
}
printf("Star Time %d\n",sTime)
printf("Stop Time %d\n",spTime)
printf("Received Packets %d\n",NumOfRecd)
printf("The throughput in kbps is %f \n",(NumOfRecd/(spTime-sTime)(8/1000)))
}
运行awk产生TXT文件
gawk -f filename.awk filename.tr > through.txt
gedit through.txt
instant Throughput
#instant Throughput
BEGIN {
recv=0
currentTime =previousTime = 0
timetic=0.1
}
{
event =$1
time =$3
node_id=$5
# AGT-19
packet=$19
pkt_id=$41
flow_id=$39
packet_size=$37
flow_type=$45
if(previousTime == 0)
previousTime = time
if(packet --"AGT" && event =="r") {
recv=recv +packet_size
currentTime = currentTime + (time-previousTime)
if(currentTime >= timetic) {
printf("%f %f \n",time,(recv/currentTime)*(8/1000))
recv=0
currentTime=0
}
previousTime=time
}
}
END {
printf("\n")
}
画图
xgraph XXX.txt
或者
gnuplot
plot "XXX.txt"(plot "XXX.txt with line)
quit
packet Delivery Ratio
gawk -f XXX.awk XXX.tr
#packet Delivery Ratio
BEGIN {
sendPkt = 0
recvPkt = 0
forwardPkt = 0
}
{
packet=$19
event = $1
#if($1 == "s"&& $19 == "AGT")
if(event == "s"&& packet == "AGT"){
sendPkt++;
}
if(event == "r"&& packet == "AGT"){
recvPkt++;
}
if(event == "f"&& packet == "AGT"){
forwardPkt++;
}
}
END {
printf("the sent packets are %d \n",sendPkt);
printf("the received packets are %d \n",recvPkt);
printf("the forwarded packets are %d \n",forwardPkt);
printf("Packet Delivery Ratio is %f \n",(recvPkt/sendPkt));
}
residual energy of node
生成TXT文件
gawk -f XXXawk XXX.tr > energy.txt
#residual energy of node
BEGIN {
i=0
n=0
total_energy=0.0
energy_avail[s] = initenergy;
}
{
event = $1
time = $3
node_id = $5
energy_value = $7
packet = $19
pkt_id = $41
pkt_type = $35
if(event == "N") {
#看tcl文件,6为节点总数
for(i=0;i<6;i++) {
if(i==node_id) {
energy_avail[i] = energy_avail[i]-(energy_avail[i] - energy_value);
printf("%d-%f \n",i,energy_avail[i]);
}
}
}
}
END{
for(i=0;i<6;i++) {
printf("Residual Energy of node %d is %f \n",i,energy_avail[i])
total_energy = total_energy + energy_avail[i];
if(energy_avail[i] !=0)
n++
}
printf("the total Residual energy of the network is %f \n",total_energy);
printf("\n");
}