aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/profiling/microbenchmarks/bm2bq.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/profiling/microbenchmarks/bm2bq.py')
-rwxr-xr-xtools/profiling/microbenchmarks/bm2bq.py29
1 files changed, 22 insertions, 7 deletions
diff --git a/tools/profiling/microbenchmarks/bm2bq.py b/tools/profiling/microbenchmarks/bm2bq.py
index 124dbdfec5..a7d82269f5 100755
--- a/tools/profiling/microbenchmarks/bm2bq.py
+++ b/tools/profiling/microbenchmarks/bm2bq.py
@@ -61,6 +61,11 @@ columns = [
('allocs_per_iteration', 'float'),
('locks_per_iteration', 'float'),
('writes_per_iteration', 'float'),
+ ('bandwidth_kilobits', 'integer'),
+ ('cli_transport_stalls_per_iteration', 'float'),
+ ('cli_stream_stalls_per_iteration', 'float'),
+ ('svr_transport_stalls_per_iteration', 'float'),
+ ('svr_stream_stalls_per_iteration', 'float'),
]
if sys.argv[1] == '--schema':
@@ -92,7 +97,11 @@ bm_specs = {
'BM_StreamingPingPongMsgs': {
'tpl': ['fixture', 'client_mutator', 'server_mutator'],
'dyn': ['request_size'],
- }
+ },
+ 'BM_PumpStreamServerToClient_Trickle': {
+ 'tpl': [],
+ 'dyn': ['request_size', 'bandwidth_kilobits'],
+ },
}
def numericalize(s):
@@ -106,6 +115,8 @@ def numericalize(s):
assert 'not a number: %s' % s
def parse_name(name):
+ if '<' not in name and '/' not in name and name not in bm_specs:
+ return {'name': name}
rest = name
out = {}
tpl_args = []
@@ -136,7 +147,7 @@ def parse_name(name):
rest = s[0]
dyn_args = s[1:]
name = rest
- assert name in bm_specs
+ assert name in bm_specs, 'bm_specs needs to be expanded for %s' % name
assert len(dyn_args) == len(bm_specs[name]['dyn'])
assert len(tpl_args) == len(bm_specs[name]['tpl'])
out['name'] = name
@@ -146,10 +157,13 @@ def parse_name(name):
for bm in js['benchmarks']:
context = js['context']
- labels_list = [s.split(':') for s in bm.get('label', '').split(' ')]
- for el in labels_list:
- el[0] = el[0].replace('/iter', '_per_iteration')
- labels = dict(labels_list)
+ if 'label' in bm:
+ labels_list = [s.split(':') for s in bm['label'].split(' ')]
+ for el in labels_list:
+ el[0] = el[0].replace('/iter', '_per_iteration')
+ labels = dict(labels_list)
+ else:
+ labels = {}
row = {
'jenkins_build': os.environ.get('BUILD_NUMBER', ''),
'jenkins_job': os.environ.get('JOB_NAME', ''),
@@ -158,5 +172,6 @@ for bm in js['benchmarks']:
row.update(bm)
row.update(parse_name(row['name']))
row.update(labels)
- del row['label']
+ if 'label' in row:
+ del row['label']
writer.writerow(row)