Commit 9f3cf8fb authored by Antoine Kaufmann's avatar Antoine Kaufmann
Browse files

results: add dctcp experiment parse script along with qemu data

parent 274f06bf
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
import glob
import json
import os
import fnmatch
import re
import itertools
import sys
def parse_iperf_run(data, skip=1, use=8):
tp_pat = re.compile(r'\[ *\d*\] *([0-9\.]*)- *([0-9\.]*) sec.*Bytes *([0-9\.]*) Gbits.*')
tps_time = {}
for hn in fnmatch.filter(data['sims'].keys(), 'host.client.*'):
sim = data['sims'][hn]
for l in sim['stdout']:
m = tp_pat.match(l)
if not m:
continue
time = int(float(m.group(1)))
if time < skip:
continue
if time >= skip + use:
continue
if not time in tps_time:
tps_time[time] = []
tps_time[time].append(float(m.group(3)))
tps = []
for t in sorted(tps_time.keys()):
x = sum(tps_time[t])
tps.append(x)
if len(tps) == 0:
return None
return sum(tps) / len(tps)
def parse_iperf(basename, skip=1, use=8):
runs = []
for path in glob.glob(basename + '-*.json'):
if path == basename + '-0.json':
# skip checkpoints
continue
with open(path, 'r') as f:
data = json.load(f)
result = parse_iperf_run(data, skip, use)
if result is not None:
runs.append(result)
if not runs:
return {'avg': None, 'min': None, 'max': None}
else:
return {'avg': sum(runs) / len(runs), 'min': min(runs),
'max': max(runs)}
result = {}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment