Subject: Re: copyless virtio net thoughts?

From: Avi Kivity <[email-masked]>
Date: Fri, 06 Feb 2009 16:55:40 +0200

Herbert Xu wrote:
> On Fri, Feb 06, 2009 at 10:46:37AM +0200, Avi Kivity wrote:
>   
>> The guest's block layer is copyless.  The host block layer is -><- this  
>> far from being copyless -- all we need is preadv()/pwritev() or to  
>> replace our thread pool implementation in qemu with linux-aio.   
>> Everything else is copyless.
>>
>> Since we are actively working on this, expect this limitation to  
>> disappear soon.
>>     
>
> Great, when that happens I'll promise to revisit zero-copy transmit :)
>
>   

I was hoping to get some concurrency here, but okay.

>> I support this, but it should be in addition to copylessness, not on its  
>> own.
>>     
>
> I was talking about it in the context of zero-copy receive, where
> you mentioned that the virtio/kvm copy may not occur on the CPU of
> the guest's copy.
>
> My point is that using multiqueue you can avoid this change of CPU.
>
> But yeah I think zero-copy receive is much more useful than zero-
> copy transmit at the moment.  Although I'd prefer to wait for
> you guys to finish the block layer work before contemplating
> pushing the copy on receive into the guest :)
>
>   

We'll get the block layer done soon, so it won't be a barrier.

>> - many guests will not support multiqueue
>>     
>
> Well, these guests will suck both on baremetal and in virtualisation,
> big deal :) Multiqueue at 10GbE speeds and above is simply not an
> optional feature.
>   

Each guest may only use a part of the 10Gb/s bandwidth, if you have 10 
guests each using 1Gb/s, then we should be able to support this without 
multiqueue in the guests.

-- 
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.