Re: A quick fio test (was Re: [patch 00/13] Syslets, "Threadlets", generic AIO support, v3)

Jens Axboe
2007-02-28T08:37:30Z

On Tue, Feb 27 2007, Suparna Bhattacharya wrote:
> > It's not bad for such a high depth/batch setting, but I still wonder why
> > are results are so different. I'll look around for an x86 box with some
> > TCQ/NCQ enabled storage attached for testing. Can you pass me your
> > command line or job file (whatever you use) so we are on the same page?
>
> Sure - I used variations of the following job file (e.g. engine=syslet-rw,
> iodepth=20000).
>
> Also the io scheduler on my system is set to Anticipatory by default.
> FWIW it is a 4 way SMP (PIII, 700MHz)
>
> ; aio-stress -l -O -o3 <1GB file>
> [global]
> ioengine=libaio
> buffered=0
> rw=randread
> bs=64k
> size=1024m
> directory=/kdump/suparna
>
> [testfile2]
> iodepth=64
> iodepth_batch=8

Ok, now that I can run this on more than x86, I gave it a spin on a box
with a little more potent storage. This is a core 2 quad, disks are
7200rpm sata (with NCQ) and a 15krpm SCSI disk. IO scheduler is
deadline.

SATA disk:

Engine Depth Batch Bw (KiB/sec)
----------------------------------------------------
libaio 64 8 17,486
syslet 64 8 17,357
libaio 20000 8 17,625
syslet 20000 8 16,526
sync 1 1 7,529

SCSI disk:

Engine Depth Batch Bw (KiB/sec)
----------------------------------------------------
libaio 64 8 20,723
syslet 64 8 20,742
libaio 20000 8 21,125
syslet 20000 8 19,610
sync 1 1 16,659

> > > Engine Depth Batch Bw (KiB/sec)
> > > ----------------------------------------------------
> > > libaio 64 default 17,429
> > > syslet 64 default 16,155
> > > libaio 20000 default 15,494
> > > syslet 20000 default 7,971
> > >
> > If iodepth_batch isn't set, the syslet queued io will be serialized and
>
> I see, so then this particular setting is not very meaningful

Not if you want to take advantage of hw queuing, as in this random
workload. fio being a test tool, it's important to be able to control as
many aspects of what happens as possible. That means you can also do
things that you do not want to do in real life, having a pending list of
20000 serialized requests is indeed one of them. It also means you
pretty much have to know what you are doing, when testing little details
like this.

--
Jens Axboe