louwrentius / fio-plot

Create charts from FIO storage benchmark tool output
BSD 3-Clause "New" or "Revised" License
370 stars 87 forks source link

No instructions on how to use bench-fio combined with fio-plot #114

Closed gdevenyi closed 1 year ago

gdevenyi commented 1 year ago

There is no worked example provided which combines multiple-run bench-fio command (or ini) with a fio-plot command (or ini) to provide a complete set of benchmarks and plots.

louwrentius commented 1 year ago

Hi, thanks for your feedback. The bench-fio -o output directory is used with the fio-plot -i parameter as input. (Like test/sda/4k)

Is there anything in particular you are looking for regarding documentation?

gdevenyi commented 1 year ago

Hi,

I'm looking for a complete worked example consisting of

I've found myself in the state where I ran a multi-hour bench-fio run where I have a bunch of outputs and I don't know how to to get fio-plot to parse and plot everything

louwrentius commented 1 year ago

I think you really have to start with the question: 'what do I want to know about my storage setup'. That will drive the answer how to plot this data. So is there anything in particular that you want to investigate? If you're willing to share your benchmark data, we can work together on this and I'm willing to demo this with an example.

gdevenyi commented 1 year ago

I think you really have to start with the question: 'what do I want to know about my storage setup'. That will drive the answer how to plot this data.

I have a different question. I'm coming at this from "I ran this set of benchmark parameters, I want all the plots it can give me"

Here's the bench-fio config I used:

[benchfio]
target = ./test
output = benchmark
type = directory
mode = randrw
size = 10G
iodepth = 1,2,4,8,16,32,64,128
numjobs = 1,2,4,8
direct = 1
engine = libaio
precondition = False
precondition_repeat = False
runtime = 60
destructive = True
rwmixread = 50
block_size = 4k,8k,16k,64k,128k,256k,512k

And the complete output directory. https://nextcloud.computecanada.ca/index.php/s/k9cFGboKkzfMmb9

Again, a comprehensive example combining an bench-fio and fio-plot run of any kind would go a long way to helping me solve this problem myself, but I appreciate the direct help nonetheless.

louwrentius commented 1 year ago

Thanks for sharing the data. It feels to me that you threw the kitchen sink at your storage but not with any specific purpose so I'm not really sure where you're going with this and what you are trying to accomplish.

The README gives a ton of examples, didn't any of those succeed?

This is the first example from the readme.

fio-plot -i INTEL_D3-S4610 --source "https://louwrentius.com" -T "INTEL D3-S4610 SSD on IBM M1015" -l -r randread

I've adjusted it to your data.

~/projects/fio-plot/bin/fio-plot -i issue114/test/randrw50/4k/ --source "https://louwrentius.com" -T "INTEL D3-S4610 SSD on IBM M1015" -l -r randrw

But we get the error:

Since we are processing randrw data, you must specify a filter for either read or write data, not both.

So we specify the filter -f read like so:

~/projects/fio-plot/bin/fio-plot -i issue114/test/randrw50/4k/ --source "https://louwrentius.com" -T "INTEL D3-S4610 SSD on IBM M1015" -l -r randrw -f read

demoimage

The title is nonsensical, but just to use an example from the readme.

The key issue is really specifically what you want to know, regarding the performance of your storage solution, that determines which graphs to use and which parameters to select.

Looking at the README, I do realise that I should give examples that use the directory structure generated with bench-fio, not (only) the flat directories in my examples.

gdevenyi commented 1 year ago

Looking at the README, I do realise that I should give examples that use the directory structure generated with bench-fio, not (only) the flat directories in my examples.

That would give me enough of a hint to get started I think. In the end, I expect to write something to automate generating all the figures from the bench run, but missing was the connection between the many outputs and a single plot you've just provided.

Additionally, I think it may be worthwhile to document the relationship between the JSON filenames and the fio-plot.

Thanks!

gdevenyi commented 1 year ago

Thanks for your help, I've generated a simple loop to generate a collection of plots now that I have a better sense of what the "smallest unit" of data is from the benchmark outputs

for dir in benchmark/test/randrw50/*/; do
        for type in read write; do
                for output in iops lat; do
                        fio-plot -i ${dir} --source '80dabb87f3ce4a9798bd6ba9cb78bcd6' -T 'vda' -L -r randrw -f ${type} -t ${output} -o vda_$(basename ${dir})_${type}_${output}.png
                done
        done
done

I'd like to leave this issue open for the original request of a complete example of how to use the two tools together.