49 lines
1.6 KiB
Python
Executable File
49 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import sys
|
|
import math
|
|
import numpy as np
|
|
|
|
from bwparser import JansenBandwidthParser, KomloBandwidthParser
|
|
|
|
if __name__ == '__main__':
|
|
|
|
# sensible defaults
|
|
bandwidth_file = os.getenv('BW_FILE')
|
|
|
|
if len(sys.argv) < 3:
|
|
print("Usage: calcprop.py scale epoch_count")
|
|
exit()
|
|
|
|
scale = float(sys.argv[1])
|
|
epoch_count = int(sys.argv[2]) + 3
|
|
bw_parser = None
|
|
|
|
if os.getenv('BW_ALGO') != "komlo":
|
|
bw_parser = JansenBandwidthParser(bw_file=bandwidth_file, netscale=scale)
|
|
else:
|
|
bw_parser = KomloBandwidthParser(sample_size=math.ceil(6500*scale))
|
|
|
|
dats = [
|
|
('vanilla_none.dat', 'Vanilla'),
|
|
('singlepass_merkle.dat', 'Sing(M)'),
|
|
('telescoping_merkle.dat', 'Tele(M)'),
|
|
('singlepass_threshsig.dat', 'Sing(T)'),
|
|
('telescoping_threshsig.dat', 'Tele(T)'),
|
|
]
|
|
|
|
for file, name in dats:
|
|
with open(file) as f:
|
|
for line in f.readlines():
|
|
total_bytes = float(line.split(" ")[3])
|
|
net_size = bw_parser.get_relay_num()
|
|
throughput = bw_parser.get_relay_throughput()
|
|
relay_traffic = (net_size*total_bytes)/(epoch_count * 1000)
|
|
prop = relay_traffic/throughput
|
|
print("===================================")
|
|
print(name)
|
|
print("Throughput: " + np.format_float_scientific(throughput, precision=3))
|
|
print("Total bytes: " + np.format_float_scientific(relay_traffic, precision=3))
|
|
print("Proportion: " + np.format_float_scientific(prop, precision=3))
|