Re: [PATCH v2 00/31] Implement user mode network for kvm tools

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

 



On 04.07.2011, at 11:11, Ingo Molnar wrote:

> 
> * Alexander Graf <agraf@xxxxxxx> wrote:
> 
>>>> I don't see how it would. Once you overrun device buffers, you 
>>>> have to do something. Either you drop packets or you stall the 
>>>> guest. I'd usually prefer the former :).
>>> 
>>> What scenario do you see where we'd have to drop packets?
>>> 
>>> When the guest sends packets, we send them over to the host TCP 
>>> socket - no blocking.
>> 
>> When the guest sends packets, I'd hope you have 2 threads:
>> 
>> * vcpu
>> * virtio network queue process
>> 
>> So those two run in parallel now, with the network queue processing 
>> packets while the vcpu pushes packets into the ring. What if the 
>> network thread is slower than the vcpu fills the ring? You only 
>> have so many entries in a vring.
>> 
>>> When the host receives packets it should only read data out of 
>>> the host socket(s) if the vring buffer suggests that there's 
>>> space available.
>> 
>> I agree :).
>> 
>>> So i don't see we'd need to drop packets or block things - we 
>>> just have to react to packets and to vring space availability in 
>>> a straightforward way.
>> 
>> Well, the only way for the sending path is to stall the vcpu, 
>> otherwise the guest figures "oh, I can't push packets into the 
>> vring, let's just drop it", no?
> 
> No, that's not how the Linux TCP/IP implementation works.
> 
> Filled up TX rings are pretty normal on physical hardware: we do not 
> drop packets but the TCP state machine keeps buffering and filling 
> the device as it can.
> 
> The same will happen with virtual guests as well - there's no packet 
> dropping nor 'blocking of the whole guest'.

I see. Can you guarantee that other guests (in case that ever gets implemented) behave the same?


Alex

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux