Commit 664f47ed authored by Antoine Kaufmann's avatar Antoine Kaufmann
Browse files

results: add script to generate netperf table

parent fe269309
from utils.netperf import *
import sys
import os.path
from time import strftime
from time import gmtime
def fmt_lat(lat):
if not lat:
return ''
x = float(lat)
if x >= 1000.:
return '%.1f\\,ms' % (x / 1000)
else:
return '%d\\,$\\mu$s' % (int(x))
def fmt_tp(tp):
if not tp:
return ''
x = float(tp)
if x > 1000.:
return '%.2f\\,G' % (x / 1000)
else:
return '%d\\,M' % (int(x))
hosts = [('qemu','QK'), ('qt','QT'), ('gem5','G5')]
nics = [('i40e','IB'), ('cd_bm','CB'), ('cd_verilator','CV')]
nets = [('switch','SW'), ('ns3','NS')]
outdir = sys.argv[1]
for (h,h_l) in hosts:
for (nic, nic_l) in nics:
for (net, net_l) in nets:
path = '%s/netperf-%s-%s-%s-1.json' % (outdir, h, net, nic)
data = parse_netperf_run(path)
if 'simtime' in data:
t = strftime("%H:%M:%S", gmtime(data['simtime']))
else:
t = ''
tp = fmt_tp(data.get('throughput', ''))
latMean = fmt_lat(data.get('latenyMean', ''))
latTail = fmt_lat(data.get('latenyTail', ''))
print(' %s & %s & %s & %s & %s & %s & %s \\\\' % (h_l, nic_l, net_l,
tp, latMean, latTail, t))
import json
import re
import os
def parse_netperf_run(path):
ret = {}
if not os.path.exists(path):
return ret
with open(path, 'r') as f:
data = json.load(f)
ret['simtime'] = data['end_time'] - data['start_time']
tph_pat = re.compile(r'Size\s*Size\s*Size\s*Time\s*Throughput.*')
start = None
i = 0
lines = data['sims']['host.client.0']['stdout']
for l in lines:
if tph_pat.match(l):
start = i
break
i += 1
if start is not None:
tp_line = lines[start + 3]
tp_pat = re.compile(r'\s*\d*\s*\d*\s*\d*\s*[0-9\.]*\s*([0-9\.]*).*')
m = tp_pat.match(tp_line)
ret['throughput'] = float(m.group(1))
lath_pat = re.compile(r'\s*Mean Latency.*')
start = None
i = 0
lines = data['sims']['host.client.0']['stdout']
for l in lines:
if lath_pat.match(l):
start = i
break
i += 1
if start is not None:
lat_line = lines[start + 1]
lat_pat = re.compile(r'\s*([-0-9\.]*),([-0-9\.]*),([-0-9\.]*),([-0-9\.]*).*')
m = lat_pat.match(lat_line)
ret['latenyMean'] = float(m.group(1))
ret['latenyTail'] = float(m.group(4))
return ret
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