Can I force a specific unit of measure for sync percentiles in fio output?

0

I'm using fio 3-13 to benchmark an SSD. The job file contains multiple jobs to be run sequentially (with the stonewall parameter), but they all contain fdatasync=1. As a consequence, the output reports fdatasync duration percentiles, and I'm interested in parsing them.

The problem is, to keep the width more or less constant, fio reports them in different units of measure (usec and msec). Is there a way to force fio to always adopt a specific unit of measure? That's what happens with terse output, which always reports lat,slat and clat percentiles in usec. Unfortunately, terse output does not report fdatasync percentiles.

Matteo

Posted 2019-04-05T11:50:03.763

Reputation: 1

Answers

0

Is there a way to force fio to always adopt a specific unit of measure?

Not really for fio's human readable output but the units ARE a fixed size for its machine readable output formats.

Fio's human readable output is NOT designed to be scraped and there's no way to force the unit in that output mode, short of changing fio's source and recompiling. However, it is strongly advised that you switch fio to use a machine readable output format (e.g. by using --output-format=json+ so you get latency outputs too) because (as alluded to in the question) the unit IS fixed with such output formats.

If you decide to scrape unmodified fio's human readable output anyway, you'll have to find a programmatic way to cope with the changing units but see the "Benchmarking gone wrong" Surge 2013 lightning talk by Brendan Gregg for a warning...

(Matteo originally asked this in the "force sync percentiles unit of measure" fio mailing list posting and there's a reply there too)

Anon

Posted 2019-04-05T11:50:03.763

Reputation: 830