Skip to contentSkip to conversation

correct file size to use

DISCUSSION jvogt 5 participants 9 messages Mar 15, 2014 – Mar 18, 2014

lore
Share & tools
lore

jvogt

author
#0 lore raw

Hi list

I was wondering:
When i start
fio --name=/srv/mail/test --size=10M --direct=1 --runtime=60 --time_based --group_reporting --refill_buffer --rw=read --numjobs=1

I get as result:
read : io=1177.4MB, bw=20093KB/s, iops=5023, runt= 60000msec

But when I do a
fio --name=/srv/mail/test --size=10G --direct=1 --runtime=60 --time_based --group_reporting --refill_buffer --rw=read --numjobs=1

The result is:
read : io=976692KB, bw=16278KB/s, iops=4069, runt= 60001msec (decrease of 20%, in some scenarios it's even worse with more than 30%)

So how does the file size influence the speed (iops, bandwith)? My understanding was that it is not important from which filesize we are reading from - important is the block size and if the filesize is not big enough, fio just restarts to read the file from the beginning. How can that be explained? And which sizes should be used to get reliable results?

Thanks
Josef

#1 lore raw
Quoted 9 lines · jvogt

Hi list

I was wondering:
When i start
fio --name=/srv/mail/test --size=10M --direct=1 --runtime=60 --time_based --group_reporting --refill_buffer --rw=read --numjobs=1

I get as result:
read : io=1177.4MB, bw=20093KB/s, iops=5023, runt= 60000msec

From fio/HOWTO:

time_based If set, fio will run for the duration of the runtime
specified even if the file(s) are completely read or written. It will simply loop over the same workload as many times as the runtime allows.

The same 10M file will be read many times(118), so most of times it is read from page cache instead of the file, and the result can't be accurate enough.

Thanks,

Signature · 1 line
Ming Lei
#2 lore raw
Quoted 24 lines · Ming Lei
Quoted 9 lines · jvogt

Hi list

I was wondering:
When i start
fio --name=/srv/mail/test --size=10M --direct=1 --runtime=60 --time_based --group_reporting --refill_buffer --rw=read --numjobs=1

I get as result:
read : io=1177.4MB, bw=20093KB/s, iops=5023, runt= 60000msec

From fio/HOWTO:

time_based If set, fio will run for the duration of the runtime
specified even if the file(s) are completely read or written. It will simply loop over the same workload as many times as the runtime allows.

The same 10M file will be read many times(118), so most of times it is read from page cache instead of the file, and the result can't be accurate enough.

Quoted 7 lines

Thanks,
--
Ming Lei
--
To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Tested on my system and saw no difference in performance. Direct io will bypass the page cache so the only thing that comes to mind would be an on-device cache, though, I would think the difference in performance would be more dramatic if that were the case.

#3 lore raw

[sorry for the lack of quoting, OWA doesn't do it nicely.]

Which OS & file system? If the storage target is an NFS mount, you'll still have the server cache. Also, IIRC solaris doesn't honor direct=1 anyway. If zfs is involved.... there's no escaping it's optimizations :).

Please give us more info about the setup.

z!

#4 lore raw
In reply to Matthew Eaton

On Mon, Mar 17, 2014 at 7:16 AM, Matthew Eaton

Quoted 3 lines

Tested on my system and saw no difference in performance. Direct io will bypass the page cache so the only thing that comes to mind would

Looks I miss the '--direct=1' parameter, :-(

Quoted 2 lines

be an on-device cache, though, I would think the difference in performance would be more dramatic if that were the case.

Another possible cause might be related with storage for the big file. If the file is stored in lot of fragments of the disk, accessing the whole file might become slower than just the first 10M, but not sure if there is so big difference(30%).

Thanks,

Signature · 1 line
Ming Lei
author
#5 lore raw

Am 17.03.2014 03:55, schrieb Ming Lei:

Quoted 5 lines

On Mon, Mar 17, 2014 at 7:16 AM, Matthew Eaton

Quoted 2 lines

Tested on my system and saw no difference in performance. Direct io will bypass the page cache so the only thing that comes to mind would

Looks I miss the '--direct=1' parameter, :-(

Quoted 8 lines
Quoted 2 lines

be an on-device cache, though, I would think the difference in performance would be more dramatic if that were the case.

Another possible cause might be related with storage for the big file. If the file is stored in lot of fragments of the disk, accessing the whole file might become slower than just the first 10M, but not sure if there is so big difference(30%).

Direct io

will bypass the page cache so the only thing that comes to mind would be an on-device cache, though, I would think the difference in performance would be more dramatic if that were the case.

This could be possible - I'm not so sure how to check that...
My setup is the following:
RHEL6.5 as virtual machine via VMWare - the storage is a Dell Equallogic Storage connected via ISCSI to the host. These tests are not made via NFS. I just wanted to make some tests before taking it all in production.
Thank you all for your answers!
Josef

#6 lore raw
Quoted 3 lines · jvogt

I just wanted to make some tests before taking it all in production. Thank you all for your answers!

If you want raw upper maximum numbers try using direct=1 ioengine=libaio with an appropriate iodepth against the openiscsi block device. Bear in mind things like iodepth and whether coalescing can take place can make a huge difference...

Signature · 1 line
Sitsofe | http://sucs.org/~sits/
author
#7 lore raw

Am 17.03.2014 21:34, schrieb Sitsofe Wheeler:

Quoted 7 lines · jvogt
Quoted 2 lines

I just wanted to make some tests before taking it all in production. Thank you all for your answers!

If you want raw upper maximum numbers try using direct=1 ioengine=libaio with an appropriate iodepth against the openiscsi block device. Bear in mind things like iodepth and whether coalescing can take place can make a huge difference...

Please explain, what do you mean with appropriate iodepth? What would you suggest?

#8 lore raw
Quoted 5 lines

From: jvogt [mailto:[email protected]]
Sent: Monday, March 17, 2014 1:41 PM

Please explain, what do you mean with appropriate iodepth? What would you suggest?

Something higher than 1 :). I use 512, since AFAIK no storage array out there will actually queue up that many operations.

z!