mirror of
https://github.com/vacp2p/dst-libp2p-test-node.git
synced 2026-08-27 12:51:12 +00:00
74 lines
3.1 KiB
Awk
74 lines
3.1 KiB
Awk
# we parse the latencies(x) file produced by run.sh to receive results summary (Max/Avg Latency --> per packet, overall)
|
|
# runs $awk -f result_summary.awk latencies(x)
|
|
|
|
BEGIN {
|
|
FS = " "; #default column separator
|
|
network_size = 0
|
|
max_nw_lat = sum_nw_lat = sum_max_delays = 0
|
|
hop_lat = 100 #should be consistent with shadow.yaml
|
|
}
|
|
|
|
{
|
|
clean_int = $3
|
|
gsub(/[^0-9]/, "", clean_int);
|
|
if ($3 == clean_int){ #get rid of unwanted rows
|
|
sum_nw_lat += $NF
|
|
if (max_nw_lat < $NF) {max_nw_lat = $NF}
|
|
if (split($1, arr, "peer|/main|:.*:")) {
|
|
#$3 = rx_latency, arr[4] = publish_time, arr[2] = peerID
|
|
|
|
#We compute network-wide dissemination latency for each message
|
|
if (max_msg_latency[arr[4]] < $NF) {max_msg_latency[arr[4]] = $NF}
|
|
|
|
#we round to values to nearest hop_lat to estimate hop coverage
|
|
rounded_RxTime = (int($3/hop_lat + 0.5)) * hop_lat
|
|
lat_arr[arr[4], rounded_RxTime]++;
|
|
msg_arr[arr[4]] = 1; #we maintain set of messages identified by their publish time
|
|
if (network_size < arr[2]) {network_size = arr[2]}
|
|
}
|
|
}
|
|
}
|
|
|
|
END {
|
|
|
|
print "Total Nodes : ", network_size, "Total Messages Published : ", length(msg_arr),
|
|
"Network Latency\t MAX : ", max_nw_lat, "\tAverage : ", sum_nw_lat/NR
|
|
print " Message ID \t Avg Latency \t Messages Received"
|
|
for (value in msg_arr) {
|
|
sum_rx_msgs = 0;
|
|
latency = 0;
|
|
spread[1] = spread[2] = spread[3] = spread[4] = spread[5] = spread[6] = spread[7] = spread[8] = spread[9] = 0
|
|
spread[10] = spread[11] = spread[12] = spread[13] = spread[14] = spread[15] = spread[16] = spread[17] = spread[18] = 0
|
|
for (key in lat_arr) {
|
|
split(key, parts, SUBSEP);
|
|
if (parts[1] == value) {
|
|
#parts[2] recv time
|
|
#10% 20% 30%....90% under parts[2]
|
|
sum_rx_msgs = sum_rx_msgs + lat_arr[key]; #total receives / message
|
|
latency = latency + (lat_arr[key] * parts[2])
|
|
spread[ int((parts[2]) / hop_lat) ] = lat_arr[key] #hop-by-hop spread count of messages
|
|
}
|
|
}
|
|
|
|
print value, "\t", latency/sum_rx_msgs, "\t ", sum_rx_msgs, "spread is",
|
|
spread[1], spread[2], spread[3], spread[4], spread[5], spread[6], spread[7], spread[8], spread[9],
|
|
spread[10], spread[11], spread[12], spread[13], spread[14], spread[15], spread[16], spread[17], spread[18],
|
|
spread[19], spread[20], spread[21], spread[22], spread[23], spread[24], spread[25], spread[26], spread[27],
|
|
spread[28], spread[29], spread[30], spread[31], spread[32], spread[33], spread[34], spread[35], spread[36],
|
|
spread[37], spread[38], spread[39], spread[40], spread[41], spread[42], spread[43], spread[44], spread[45],
|
|
spread[46], spread[47], spread[48], spread[49], spread[50], spread[51], spread[52], spread[53], spread[54]
|
|
delete spread
|
|
}
|
|
|
|
for (delay_val in max_msg_latency) {
|
|
print "MAX delay for ", delay_val, "is \t", max_msg_latency[delay_val]
|
|
sum_max_delays = sum_max_delays + max_msg_latency[delay_val]
|
|
}
|
|
|
|
print "Total Messages Published : ", length(max_msg_latency), "Average Max Message Dissemination Latency : ", sum_max_delays/length(max_msg_latency)
|
|
|
|
|
|
}
|
|
|
|
|