📄 analyse-end-to-end.tcl
字号:
package require structpackage require counterpackage require math::statistics::struct::matrix sendtimessendtimes add row::struct::matrix recvtimesrecvtimes add rowproc do_line {line} { global sendtimes recvtimes regexp " -t (.*?) " $line match time if {[regexp {^(.).*-Nl AGT.*-Is (\S*?) -Id (\S*?).*-Il (\S*?).*-Ii (\S*?)} $line match \ operation source dest lengthBytes id\ ]} { if {$operation=="r"} { if {[recvtimes get cell $id 0]==""} { recvtimes set cell $id 0 $time } } if {$operation=="s"} { while {[sendtimes columns] <= $id} { sendtimes add columns 100 recvtimes add columns 100 } sendtimes set cell $id 0 $time } }}set trace_file [open [lindex $argv 0] r]while {[gets $trace_file line]!=-1} { do_line $line}close $trace_fileset sendTimeList [sendtimes get row 0]set recvTimeList [recvtimes get row 0]::counter::init latencyDistribution -hist2x 0.01set latencyList {}set latencyTotal 0.0set deliveredPackets 0foreach send $sendTimeList recv $recvTimeList { if {$send!="" && $send>0 && $recv>0} { set latency [expr $recv-$send] lappend latencyList $latency ::counter::count latencyDistribution $latency set latencyTotal [expr $latencyTotal + $latency] incr deliveredPackets# printf "%d, %f, %f, %f, %f, %d, %f\n", $i, $sendTime[$i], # $recvTime[$i], $recvTime[$i]-$sendTime[$i], # $latencyTotal, $deliveredPackets, # ($latencyTotal/$deliveredPackets); }}if {$deliveredPackets>0} { set avgLatency [expr $latencyTotal / $deliveredPackets] puts "#LATENCY: $avgLatency over $deliveredPackets delivered. $latencyTotal"}set b1 [::math::statistics::basic-stats $latencyList]foreach label {mean min max number stdev var} v1 $b1 { puts "#$label\t$v1"}array set histogramArgs [::counter::get latencyDistribution -all]set buckets [::counter::get latencyDistribution -hist]set min 0set max $histogramArgs(bucketsize)set mult $histogramArgs(mult)puts "#BucketMin BucketMax BucketCentre Value"foreach {index value} $buckets { puts "$min $max [expr ($min+$max)/2] $value" set min $max set max [expr $max * $mult]}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -