in fiosynth_lib/fio_json_parser.py [0:0]
def get_csv_line(jobname, json, index, data, version_str, serverMode):
clat = "clat"
con = 1
# clat -> clat_ns in version 3.0
verstr = version_str[version_str.rfind("-") + 1 :]
fio_version = StrictVersion(verstr)
v3_version = StrictVersion("3.0")
if fio_version >= v3_version:
clat = "clat_ns"
# convert nanoseconds to microseconds
con = 1000
if serverMode:
# Support for older and newer fio json formats
options1 = "percentile_list" in json["job options"]
options2 = "percentile_list" in json["global options"]
else:
options1 = "percentile_list" in json["jobs"][0]["job options"]
options2 = "percentile_list" in json["global options"]
iotype = ["read", "write", "trim"]
if options1 or options2:
percent = [
"25.000000",
"50.000000",
"70.000000",
"75.000000",
"90.000000",
"99.000000",
"99.900000",
"99.990000",
"99.999000",
"99.999900",
]
else:
percent = [
"50.000000",
"70.000000",
"90.000000",
"99.000000",
"99.900000",
"99.990000",
"99.999900",
]
line = [
jobname,
data["read"]["iops"],
data["read"]["bw"],
data["write"]["iops"],
data["write"]["bw"],
data["trim"]["iops"],
data["trim"]["bw"],
]
for io in iotype:
line.append(str(data[io][clat]["mean"] / con))
line.append(str(data[io][clat]["max"] / con))
if data[io]["iops"] > 0:
for p in percent:
if "percentile" in data[io][clat]:
line.append(str(data[io][clat]["percentile"][p] / con))
else:
for _p in percent:
line.append(0)
return line