diff --git a/scripts/perf-plot.py b/scripts/perf-plot.py new file mode 100755 index 00000000000000..e3390b7dc0e40e --- /dev/null +++ b/scripts/perf-plot.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python + +import matplotlib +matplotlib.use('Agg') + +import matplotlib.pyplot as plt +import json +import sys + +stages_to_counters = {} +stages_to_time = {} + +if len(sys.argv) != 2: + print("USAGE: {} ".format(sys.argv[0])) + sys.exit(1) + +with open(sys.argv[1]) as fh: + for line in fh.readlines(): + if "COUNTER" in line: + json_part = line[line.find("{"):] + x = json.loads(json_part) + counter = x['name'] + if not (counter in stages_to_counters): + stages_to_counters[counter] = [] + stages_to_time[counter] = [] + stages_to_counters[counter].append(x['counts']) + stages_to_time[counter].append(x['now']) + +fig, ax = plt.subplots() + +for stage in stages_to_counters.keys(): + plt.plot(stages_to_time[stage], stages_to_counters[stage], label=stage) + +plt.xlabel('ms') +plt.ylabel('count') + +plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, + ncol=2, mode="expand", borderaxespad=0.) + +plt.locator_params(axis='x', nbins=10) +plt.grid(True) + +plt.savefig("perf.pdf") diff --git a/src/counter.rs b/src/counter.rs index 48f40211b97988..11444bfa5772cf 100644 --- a/src/counter.rs +++ b/src/counter.rs @@ -36,7 +36,7 @@ impl Counter { let times = self.times.fetch_add(1, Ordering::Relaxed); if times % self.lograte == 0 && times > 0 { info!( - "COUNTER:{{\"name:\":\"{}\", \"counts\": {}, \"nanos\": {}, \"samples\": {} \"rate\": {}, \"now\": {}}}", + "COUNTER:{{\"name\": \"{}\", \"counts\": {}, \"nanos\": {}, \"samples\": {}, \"rate\": {}, \"now\": {}}}", self.name, counts, nanos,