Jamie Lokier wrote:
> Avi Kivity wrote:
>   
>>> At such a tiny difference, I'm wondering why Linux-AIO exists at all,
>>> as it complicates the kernel rather a lot.  I can see the theoretical
>>> appeal, but if performance is so marginal, I'm surprised it's in
>>> there.
>>>       
>> Linux aio exists, but that's all that can be said for it.  It works 
>> mostly for raw disks, doesn't integrate with networking, and doesn't 
>> advance at the same pace as the rest of the kernel.  I believe only 
>> databases use it (and a userspace filesystem I wrote some time ago).
>>     
>
> And video streaming on some embedded devices with no MMU!  (Due to the
> page cache heuristics working poorly with no MMU, sustained reliable
> streaming is managed with O_DIRECT and the app managing cache itself
> (like a database), and that needs AIO to keep the request queue busy.
> At least, that's the theory.)
>
>   

Could use threads as well, no?

>>> I'm also surprised the Glibc implementation of AIO using ordinary
>>> threads is so close to it.  
>>>       
>> Why are you surprised?
>>     
>
> Because I've read that Glibc AIO (which uses a thread pool) is a
> relatively poor performer as AIO implementations go, and is only there
> for API compatibility, not suggested for performance.
>
> But I read that quite a while ago, perhaps it's changed.
>
>   

It's me at fault here.  I just assumed that because it's easy to do aio 
in a thread pool efficiently, that's what glibc does.

Unfortunately the code does some ridiculous things like not service 
multiple requests on a single fd in parallel.  I see absolutely no 
reason for it (the code says "fight for resources").

So my comments only apply to linux-aio vs a sane thread pool.  Sorry for 
spreading confusion.

>> Actually the glibc implementation could be improved from what I've 
>> heard.  My estimates are for a thread pool implementation, but there is 
>> not reason why glibc couldn't achieve exactly the same performance.
>>     
>
> Erm...  I thought you said it _does_ achieve nearly the same
> performance, not that it _could_.
>
> Do you mean it could achieve exactly the same performance by using
> Linux AIO when possible?
>
>   

It could and should.  It probably doesn't.

A simple thread pool implementation could come within 10% of Linux aio 
for most workloads.  It will never be "exactly", but for small numbers 
of disks, close enough.

>>> And then, I'm wondering why use AIO it
>>> all: it suggests QEMU would run about as fast doing synchronous I/O in
>>> a few dedicated I/O threads.
>>>       
>> Posix aio is the unix API for this, why not use it?
>>     
>
> Because far more host platforms have threads than have POSIX AIO.  (I
> suspect both options will end up supported in the end, as dedicated
> I/O threads were already suggested for other things.)
>   

Agree.

>   
>>>> Also, I'd presume that those that need 10K IOPS and above will not place 
>>>> their high throughput images on a filesystem; rather on a separate SAN 
>>>> LUN.
>>>>         
>>> Does the separate LUN make any difference?  I thought O_DIRECT on a
>>> filesystem was meant to be pretty close to block device performance.
>>>       
>> On a good extent-based filesystem like XFS you will get good performance 
>> (though more cpu overhead due to needing to go through additional 
>> mapping layers.  Old clunkers like ext3 will require additional seeks or 
>> a ton of cache (1 GB per 1 TB).
>>     
>
> Hmm.  Thanks.  I may consider switching to XFS now....
>
>   

I'm rooting for btrfs myself.

-- 
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to