Re: Measuring IOPS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am Mittwoch, 3. August 2011 schrieb Martin Steigerwald:
> Am Mittwoch, 3. August 2011 schrieb Martin Steigerwald:
> > Am Mittwoch, 3. August 2011 schrieben Sie:
> > > Martin Steigerwald <Martin@xxxxxxxxxxxx> writes:
> [...]
> 
> > Does using iodepth > 1 need ioengine=libaio? Let´s see the manpage:
> >        iodepth=int
> >        
> >               Number  of I/O units to keep in flight against the
> >               file. Note that increasing iodepth beyond  1  will
> >               not affect synchronous ioengines (except for small
> >               degress when verify_async is in use).  Even  async
> >               engines  my  impose  OS  restrictions  causing the
> >               desired depth not to be achieved.  This may happen
> >               on   Linux  when  using  libaio  and  not  setting
> >               direct=1, since buffered IO is not async  on  that
> >               OS.  Keep  an  eye on the IO depth distribution in
> >               the fio output to verify that the  achieved  depth
> >               is as expected. Default: 1.
> > 
> > Okay, yes, it does. I start getting a hang on it. Its a bit puzzling
> > to have two concepts of synchronous I/O around:
> > 
> > 1) synchronous system call interfaces aka fio I/O engine
> > 
> > 2) synchronous I/O requests aka O_SYNC
> 
> But isn´t this a case for iodepth=1 if buffered I/O on Linux is
> synchronous? I bet most regular applications except some databases use
> buffered I/O.

Thanks a lot for your answers, Jens, Jeff, DongJin.

Now what about the above one?

In what cases is iodepth > 1 relevant, when Linux buffered I/O is 
synchronous? For mutiple threads or processes?

One process / thread can only submit one I/O at a time with synchronous 
system call I/O, but the function returns when the stuff is in the page 
cache. So first why can´t Linux use iodepth > 1 when there is lots of stuff 
in the page cache to be written out? That should help the single process 
case.

On the mutiple process/threadsa case Linux gets several I/O requests from 
mutiple processes/threads and thus iodepth > 1 does make sense?

Maybe it helps getting clear where in the stack iodepth is located at, is 
it

process / thread
systemcall
pagecache
blocklayer
iodepth
device driver
device

? If so, why can´t Linux  not make use of iodepth > 1 with synchronous 
system call I/O? Or is it further up on the system call level? But then 
what sense would it make there, when using system calls that are 
asynchronous already?
(Is that ordering above correct at all?)

-- 
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA  B82F 991B EAAC A599 84C7
--
To unsubscribe from this list: send the line "unsubscribe fio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux