Skip to content

Commit

Permalink
Fix json perf counter print and add script to generate a chart
Browse files Browse the repository at this point in the history
  • Loading branch information
sakridge committed Jun 9, 2018
1 parent 1ee5c81 commit 0fce336
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 1 deletion.
43 changes: 43 additions & 0 deletions scripts/perf-plot.py
Original file line number Diff line number Diff line change
@@ -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: {} <input file>".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")
2 changes: 1 addition & 1 deletion src/counter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit 0fce336

Please sign in to comment.