Skip to contentSkip to conversation

What if the parameter for --size option is smaller than the target device?

Question Akira Hayakawa 2 participants 3 messages Sep 21, 2014 – Sep 22, 2014

lore
Share & tools
lore
#0 lore raw

I resend because the server doesn't ack.
Please ignore the previous, if you receive two. (Please remove from the server)

Hi,

I am writing a test with fio tool (2.0.8) and I am facing a problem.

I just want to submit 512B random write to a block device.
In my case, the size of the device is 2MB and the amount of writes (specified by --size option) is 32MB.

like this (A line from device-mapper-test-suite. Is my command wrong?):

      ProcessControl.run("fio --name=test --filename=#{dev.path} --rw=randwrite --ioengine=libaio --direct=1 --size=#{@param[0]}m --bs=512")

The problem is, the runtime is too short.
The block device is just a single HDD so, it will be 30sec or so. But it's actually 3sec...

My guess is that fio uses min(device size, param to --size) as the amount of writes here. To investigate it, I increased the size of the device to x10 and saw the runtime gets x10.

My questions are:
1. Is my guess correct?
2. What shall I do to make fio work as I want it to do?

Thanks,
- Akira

#1 lore raw

Hi,

Quoted 4 lines · Akira Hayakawa

I am writing a test with fio tool (2.0.8) and I am facing a problem.

I just want to submit 512B random write to a block device.
In my case, the size of the device is 2MB and the amount of writes (specified by --size option) is 32MB.

You probably wanted the behaviour of io_limit
(http://git.kernel.dk/?p=fio.git;a=blob;f=HOWTO;h=73e58ff695c3384df30094d6c15ebe9ed615460f;hb=HEAD#l433
) rather than size...

Quoted 7 lines

like this (A line from device-mapper-test-suite. Is my command wrong?):

      ProcessControl.run("fio --name=test --filename=#{dev.path} --rw=randwrite --ioengine=libaio --direct=1 --size=#{@param[0]}m --bs=512")

The problem is, the runtime is too short.
The block device is just a single HDD so, it will be 30sec or so. But it's actually 3sec...

My guess is that fio uses min(device size, param to --size) as the amount of writes here.

That's correct in this context - size is limiting the last possible block that can be written to (see
http://git.kernel.dk/?p=fio.git;a=blob;f=HOWTO;h=73e58ff695c3384df30094d6c15ebe9ed615460f;hb=HEAD#l421
for details).

Quoted 4 lines

To investigate it, I increased the size of the device to x10 and saw the runtime gets x10.

My questions are:
1. Is my guess correct?

Yes.

Quoted 1 line

2. What shall I do to make fio work as I want it to do?

Use io_limit if your fio is new enough or number_ios
(http://git.kernel.dk/?p=fio.git;a=blob;f=HOWTO;h=73e58ff695c3384df30094d6c15ebe9ed615460f;hb=HEAD#l778
).

Sitsofe | http://sucs.org/~sits/

#2 lore raw

Thanks Sitsofe,
it starts to submit 32M in total.

- Akira

Quoted 40 lines · Sitsofe Wheeler

Hi,

Quoted 4 lines · Akira Hayakawa

I am writing a test with fio tool (2.0.8) and I am facing a problem.

I just want to submit 512B random write to a block device.
In my case, the size of the device is 2MB and the amount of writes (specified by --size option) is 32MB.

You probably wanted the behaviour of io_limit
(http://git.kernel.dk/?p=fio.git;a=blob;f=HOWTO;h=73e58ff695c3384df30094d6c15ebe9ed615460f;hb=HEAD#l433
) rather than size...

Quoted 7 lines

like this (A line from device-mapper-test-suite. Is my command wrong?):

      ProcessControl.run("fio --name=test --filename=#{dev.path} --rw=randwrite --ioengine=libaio --direct=1 --size=#{@param[0]}m --bs=512")

The problem is, the runtime is too short.
The block device is just a single HDD so, it will be 30sec or so. But it's actually 3sec...

My guess is that fio uses min(device size, param to --size) as the amount of writes here.

That's correct in this context - size is limiting the last possible block that can be written to (see
http://git.kernel.dk/?p=fio.git;a=blob;f=HOWTO;h=73e58ff695c3384df30094d6c15ebe9ed615460f;hb=HEAD#l421
for details).

Quoted 4 lines

To investigate it, I increased the size of the device to x10 and saw the runtime gets x10.

My questions are:
1. Is my guess correct?

Yes.

Quoted 1 line

2. What shall I do to make fio work as I want it to do?

Use io_limit if your fio is new enough or number_ios
(http://git.kernel.dk/?p=fio.git;a=blob;f=HOWTO;h=73e58ff695c3384df30094d6c15ebe9ed615460f;hb=HEAD#l778
).

Sitsofe | http://sucs.org/~sits/