louwrentius / fio-plot

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

benchmark multiple device simultaneously #61

Closed A2116 closed 1 year ago

A2116 commented 3 years ago

how we should benchmark multiple device simultaneously? if set multiple device in front of --target it benchmark them one by one so what should be done to benchmark them simultaneously?

TjerkNan commented 3 years ago

The benchmark script is designed to benchmark one device at a time. My thinking was that if you benchmark multiple devices at the same time these benchmarks will influence each other because of CPU load.

If you really want to benchmark multiple devices at the same time you have to run multiple instances of the benchmark script in parallel and each instance should only target one device.

Assuming that the devices have distinct names you can use the same directories so the output is in the same Place so fioplot will still work, you can compare multiple devices with each other

Maybe if you can explain your usecase In more detail that will be helpful

A2116 commented 3 years ago

some time i need to benchmark multiple drive in two configuration one in direct attach second in raid array to compare results and its very common that people benchmark multiple drive at once and need accumulative benchmark result not one by one so i think it's can be useful because fio do it as well so for example each group member can be separated with colon(the way fio use) that pass to fio directly but multiple group separate from each other with space(the way you use in command) and therefore it's possible to send multiple group with multiple member

louwrentius commented 3 years ago

Ok, I understand. At this moment I'm quite busy, so I can't make any promises. But when I have some time I'll look into it. Just to be frank: it can take many weeks.

A2116 commented 3 years ago

thanks

A2116 commented 2 years ago

is any change happen on code? @louwrentius

louwrentius commented 2 years ago

Hi, frankly speaking, I should not make promises about when I would work on features, as not to set expectations I can't honor.

At this time, I am busy enough with (new) work that I don't think much will happen soon.

What may help (no promises whatsoever) if you would provide fio configuration examples. Because I wonder if your need can be partially served by a custom fio config template.

With regards!

A2116 commented 2 years ago

Dear sir

exactly benchmark multiple device at once some features that not implemented can be reached with other method like bash script for example when I need benchmark for multiple block size i do run benchmark command multiple time using sh file and so the problem become solved but for benchmarking multiple drive I can't do any modification that do this for example I want to test sda sdb sdc sdd drive together and compare results with 4 other drive for some purpose what should I do for such thing?

regards

MattiasSkohg commented 2 years ago

Hi,

Appreciate the tool!

I had the same request, but i was able to make it happen using parallel. See below example of my run, which benchmarks 12 drives at once, simultaneously (confirmed by iostat)

the file "numbers" contains number 1-12 in a list

Example: cat numbers | parallel -j 120 bench-fio --target /dev/dm-{} --type device --mode read --block-size 64k --iodepth 4 --numjobs 12 -s 50G --output RAID_ARRAY

A2116 commented 2 years ago

Does this run fio simultaneously and cumulates results as fio does with groupreporting? It's important that get cumulative results not 12 simultaneously but independent thread of fio benchmark

Regards

louwrentius commented 2 years ago

@A2116 what I don't understand is why you want to benchmark 4 drives together and then 4 other drives together. Frankly speaking, I don't feel inclined to even work on a feature which purpose I would not understand.

louwrentius commented 2 years ago

No further input, I'm going to close this one.

davidturchak commented 2 years ago

First of all , thanks for a great tool! Let me explain why IO against multiple devices is necessary. In theory measuring performance of single device should be enough to figure out a disk capabilities, but in practice each SAN LU or NAS volume behaves differently if you perform a parallel load on multiple devices or single one since the storage backend is suffer from not perfect implementation of parallelism . The best practice for most of DB applications is to separate loads between transaction log and data. If you want to simulate a real SQL load you have to use multiple devices. The same is true for OracleDB when you separate the redo log and data using ASM on multipath device. This is the reason the fio is designed to support multiple devices natively.
I don't think it's too complicated to add multi-device support to your fio-plot given that FIO knows how to handle it. This feature will satisfy the requirements of many and will make the tool almost perfect ;) Thanks again for the work you've done so far, and I'll be understanding if you decide not work on this.

louwrentius commented 2 years ago

@davidturchak Thank you for this response. To be frank I had to look it up and indeed you can specify multiple devices separated by a colon.

I agree that there are valid use cases for bechmarking multiple separate devices (physical or logical) at the same time, such as the ones you gave me.

I think I can adjust bench-fio to make this work with not much effort to be frank. The key issue is #73 so fio-plot can't deal with job files with multiple jobs and/or devices.

Still for those who like to use bench-fio to automate benchmarking but can live with not using fio-plot, this could be indeed an improvement. For this reason I'll leave this one open.

Indeed I can't promise any timelines for this improvement.

davidturchak commented 2 years ago

@davidturchak Thank you for this response. To be frank I had to look it up and indeed you can specify multiple devices separated by a colon.

I agree that there are valid use cases for bechmarking multiple separate devices (physical or logical) at the same time, such as the ones you gave me.

I think I can adjust bench-fio to make this work with not much effort to be frank. The key issue is #73 so fio-plot can't deal with job files with multiple jobs and/or devices.

Still for those who like to use bench-fio to automate benchmarking but can live with not using fio-plot, this could be indeed an improvement. For this reason I'll leave this one open.

Indeed I can't promise any timelines for this improvement.

Awesome