fio icon indicating copy to clipboard operation
fio copied to clipboard

Sequential IOs + blockalign support

Open ssnkrn opened this issue 8 years ago • 4 comments
trafficstars

We'd really like to have a option to run sequential workloads with "blockalign" parameter taken into account. Right now blockalign only works for random IOs. However, for sequential IOs, for example I specify a block size of 1KB and have blockalign=4KB, the alignment is ignored. It'd greatly help if IOs generated are all 1KB IOs, starting 4KB offsets.

I.e. 1KB sized IOs with LBAs: 1KB, 5KB, 9KB, ...

ssnkrn avatar Apr 26 '17 06:04 ssnkrn

Couldn't you get close to this using sequential I/O with holes when the block size is fixed e.g. rw=read:4K ?

sitsofe avatar Apr 26 '17 07:04 sitsofe

Thanks for the suggestion. Let me give more detail as to what I need. I want to generate sequential workloads with varying levels of "4KB alignment". The way I achieve this is using 2 different block sizes, say 1KB and 4KB. By choosing the % of block sizes, I control the % alignment.

For e.g. I have a configuration,

rw=randwrite bsrange=1k-4k bssplit=1k/90:4k/10 blockalign=4k

So this generates 90% misaligned IOs and 10% 4KB aligned IOs. By "misaligned" I mean IOs that are not aligned to a 4KB. This can be IOs lesser than 4KB in size or 4KB IOs that start at a non-4KB boundary.

However, when I choose sequential workloads, this doesn't happen because after a 1KB IO at LBA 8, the next 4KB IO starts at LBA 9 and not in LBA 12 like I need.

So, with sequential IOs with holes I cannot define the % of 4KB aligned IOs.

ssnkrn avatar Apr 26 '17 08:04 ssnkrn

I'd be interested in this as well

JonKohler avatar Jan 04 '22 18:01 JonKohler

To expand on this, in my case, if I had a scenario that did bssplit=64k/20:128k/20:256k/20:512k/20:1m/20, it'd be really cool if I could have that somehow "chunk" those up on a 1MB boundary, such that we never have IO issued that straddles said 1MB boundary. cc @axboe

JonKohler avatar Jan 04 '22 18:01 JonKohler