-#!/usr/bin/python
+#!/usr/bin/python2.7
+# Note: this script is python2 and python3 compatible.
#
# fio_jsonplus_clat2csv
#
# 10304ns is the 100th percentile for read latency
#
+from __future__ import absolute_import
+from __future__ import print_function
import os
import json
import argparse
+import six
+from six.moves import range
def parse_args():
def more_lines(indices, bins):
- for key, value in indices.iteritems():
+ for key, value in six.iteritems(indices):
if value < len(bins[key]):
return True
prev_ddir = None
for ddir in ddir_set:
+ if 'bins' in jsondata['jobs'][jobnum][ddir]['clat_ns']:
+ bins_loc = 'clat_ns'
+ elif 'bins' in jsondata['jobs'][jobnum][ddir]['lat_ns']:
+ bins_loc = 'lat_ns'
+ else:
+ raise RuntimeError("Latency bins not found. "
+ "Are you sure you are using json+ output?")
+
bins[ddir] = [[int(key), value] for key, value in
- jsondata['jobs'][jobnum][ddir]['clat_ns']
- ['bins'].iteritems()]
+ six.iteritems(jsondata['jobs'][jobnum][ddir][bins_loc]
+ ['bins'])]
bins[ddir] = sorted(bins[ddir], key=lambda bin: bin[0])
run_total[ddir] = [0 for x in range(0, len(bins[ddir]))]
outfile = stub + '_job' + str(jobnum) + ext
with open(outfile, 'w') as output:
- output.write("clat_nsec, ")
+ output.write("{0}ec, ".format(bins_loc))
ddir_list = list(ddir_set)
for ddir in ddir_list:
output.write("{0}_count, {0}_cumulative, {0}_percentile, ".
output.write(", , , ")
output.write("\n")
- print "{0} generated".format(outfile)
+ print("{0} generated".format(outfile))
if __name__ == '__main__':