Fix json perf counter print and add script to generate a chart
This commit is contained in:
parent
1ee5c81267
commit
0fce3368d3
|
@ -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")
|
|
@ -36,7 +36,7 @@ impl Counter {
|
||||||
let times = self.times.fetch_add(1, Ordering::Relaxed);
|
let times = self.times.fetch_add(1, Ordering::Relaxed);
|
||||||
if times % self.lograte == 0 && times > 0 {
|
if times % self.lograte == 0 && times > 0 {
|
||||||
info!(
|
info!(
|
||||||
"COUNTER:{{\"name:\":\"{}\", \"counts\": {}, \"nanos\": {}, \"samples\": {} \"rate\": {}, \"now\": {}}}",
|
"COUNTER:{{\"name\": \"{}\", \"counts\": {}, \"nanos\": {}, \"samples\": {}, \"rate\": {}, \"now\": {}}}",
|
||||||
self.name,
|
self.name,
|
||||||
counts,
|
counts,
|
||||||
nanos,
|
nanos,
|
||||||
|
|
Loading…
Reference in New Issue