无线Trace脚本(旧格式)-平均延时
生活随笔
收集整理的這篇文章主要介紹了
无线Trace脚本(旧格式)-平均延时
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
BEGIN {#程序初始化,設定一變量以記錄目前處理的封包的最大ID號碼。在awk環境下變量的使用不需要聲明,直接賦值。highest_uid = 0;total_packet=0;total_delay_time=0;
}
#下面大括號里面的內容會針對要進行處理的記錄(也就是我們的trace文件)的每一行都重復執行一次
{event = $1; #$1表示一行的第一欄,是事件的動作。每一欄默認是以空格分隔的。下同。time = $2; #事件發生的時間node_nb = $3; #發生事件的節點號(但是兩邊夾著“_”,下面一句代碼將“_”處理掉)trace_type = $4; #trace文件跟蹤事件的層次(指在路由層或mac層等等)flag = $5; #uid = $6; #包的uid號碼(普通包頭的uid)pkt_type = $7; #包的類型(是信令或是數據)pkt_size = $8; #包的大小(byte)#下面的代碼記錄目前最高的CBR流的packet ID,本來的延遲分析是針對所有的包的(包括信令),這里作了簡化,只針對CBR封包,以后大家做延時分析可以做相應的改動即可。if ( event=="s"&& pkt_type=="cbr" && uid > highest_uid ){#if判斷句的前三個判斷條件就不說了,第四個是說每個包的記錄次數不超過1highest_uid = uid;}#記錄封包的傳送時間if ( event=="s"&& pkt_type=="cbr" && uid==highest_uid&&trace_type=="AGT" )start_time[uid] = time; # start_time[]表明這是一個數組#記錄封包的接收時間if ( event=="r"&& pkt_type=="cbr" && uid==highest_uid&&trace_type=="AGT" ) end_time[uid] = time;if( event=="D")end_time[uid] =-1;}
#END表明這是程序結束前執行的語句,也只執行一次
END {#當每行資料都讀取完畢后,開始計算有效封包的端到端延遲時間。for ( packet_id = 0; packet_id <= highest_uid; packet_id++ ){start = start_time[packet_id];end = end_time[packet_id];#只把接收時間大于傳送時間的記錄打印出來if ( end!=-1&&start < end ){packet_duration = end - start;total_packet++;total_delay_time+=packet_duration;} } printf("%f\n",total_delay_time/total_packet);
}
轉載于:https://www.cnblogs.com/yue-/archive/2012/05/22/6260071.html
總結
以上是生活随笔為你收集整理的无线Trace脚本(旧格式)-平均延时的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一般割双眼皮多少钱啊?
- 下一篇: JQuery 基础:8.节点操作