Re: Mention of fio by Apple

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

 



On Fri, 9 Nov 2018 at 00:18, Jens Axboe <axboe@xxxxxxxxx> wrote:
>
> On 11/8/18 1:09 PM, Sebastien Boisvert wrote:
> >
> >
> > On 2018-11-07 3:57 p.m., Jens Axboe wrote:
> >> On 11/5/18 8:00 AM, Sebastien Boisvert wrote:
> >>>
> >>>
> >>> On 2018-11-04 5:44 a.m., Sitsofe Wheeler wrote:
> >>>> Looks like someone is referencing an fio benchmark result on Apple's
> >>>> Mac Mini page and whoever did it took care to respect the Moral
> >>>> License (https://fio.readthedocs.io/en/latest/fio_doc.html#moral-license
> >>>> ). From https://www.apple.com/mac-mini/ :
> >>>>
> >>>> "4. Testing conducted by Apple in October 2018 using preproduction
> >>>> 3.2GHz 6-core Intel Core i7-based Mac mini systems with 64GB of RAM
> >>>> and 1TB SSD, and shipping 3.0GHz dual-core Intel Core i7-based Mac
> >>>> mini systems with 16GB of RAM and 1TB SSD. Tested with FIO 3.8, 1024KB
> >>>> request size, 150GB test file and IO depth=8. Performance tests are
> >>>> conducted using specific computer systems and reflect the approximate
> >>>> performance of Mac mini."
> >>>>
> >>>> My only question is: as the depth was 8 were they using the posixaio engine?
> >>>>
> >>>
> >>> The foot note number 4 supports this claim:
> >>>
> >>>     "Up to 4X faster read speed"
> >>>
> >>> It would make sense to use asynchronous I/O since ioengine=psync is the default on Mac.
> >>
> >> I'd be fine making that change, if someone can benchmark psync vs posixaio
> >> in terms of latency in that platform.
> >>
> >> Might also make sense to improve the setup so that we have a default
> >> engine per OS depending on iodepth. For instance, on Linux, QD=1 should
> >> just be psync. But if QD > 1, then we should default to libaio. I'm
> >> afraid lots of folks have run iodepth=32 or whatever without changing
> >> the IO engine and wondering what is going on.
> >
> > Would this change be *after* parse_options() has been called ?
> >
> > I looked at init.c and options.{h,c}.
>
> Right now we use FIO_PREFERRED_ENGINE to set the default engine, which
> can be defined by the platform. I think we should drop that, don't set
> a default, and instead add some logic to eg fixup_options() that sets
> the preferred engine based on platform and depth. Probably want
> platforms to define
>
> FIO_PREF_SYNC_ENGINE
> FIO_PREF_ASYNC_ENGINE
>
> and just pick one of those depending on iodepth. Something like that.

I don't know this is a safe idea unless we are also going to start
tweaking other defaults at the same time. Imagine someone going from
iodepth=1 to iodepth=2 but with direct=0 set - ihey are now comparing
pvsync iodepth=1 to libaio iodepth=2. Perhaps there should be an
"best" ioengine that does what described?

I still wonder whether we should just warn if someone uses a
synchronous engine with an iodepth > 1 when they aren't using one of
the typical cases (https://github.com/axboe/fio/pull/347 + (libaio
with direct=1) ) ...

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



[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