* Re: [ovs-dev] Flow Control and Port Mirroring
[not found] ` <AANLkTi=QXBi4wmJS1TY0P=s+11Vjp0v=AfWOdFb4vrCj@mail.gmail.com>
@ 2010-10-30 2:59 ` Simon Horman
2010-11-08 3:11 ` Rusty Russell
0 siblings, 1 reply; 3+ messages in thread
From: Simon Horman @ 2010-10-30 2:59 UTC (permalink / raw)
To: Jesse Gross; +Cc: dev, Michael S. Tsirkin, kvm, virtualization, netdev
[ CCed VHOST contacts ]
On Thu, Oct 28, 2010 at 01:22:02PM -0700, Jesse Gross wrote:
> On Thu, Oct 28, 2010 at 4:54 AM, Simon Horman <horms@verge.net.au> wrote:
> > My reasoning is that in the non-mirroring case the guest is
> > limited by the external interface through wich the packets
> > eventually flow - that is 1Gbit/s. But in the mirrored either
> > there is no flow control or the flow control is acting on the
> > rate of dummy0, which is essentailly infinate.
> >
> > Before investigating this any further I wanted to ask if
> > this behaviour is intentional.
>
> It's not intentional but I can take a guess at what is happening.
>
> When we send the packet to a mirror, the skb is cloned but only the
> original skb is charged to the sender. If the original packet is
> delivered to localhost then it will be freed quickly and no longer
> accounted for, despite the fact that the "real" packet is still
> sitting in the transmit queue on the NIC. The UDP stack will then
> send the next packet, limited only by the speed of the CPU.
That would explain what I have observed.
> Normally, this would be tracked by accounting for the memory charged
> to the socket. However, I know that Xen tracks whether the actual
> pages of memory have been freed, which should avoid this problem since
> the memory won't be released util the last packet has been sent. I
> don't know what KVM virtio does but I'm guessing that it similar to
> the former, since this problem is occurring.
I am also familiar of how Xen tracks pages but less sure of the
virtio side of things.
> While it would be easy to charge the socket for all clones, I also
> want to be careful about over accounting of the same data, leading to
> a very small effective socket buffer.
Agreed, we don't want to see over-charging.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [ovs-dev] Flow Control and Port Mirroring
2010-10-30 2:59 ` [ovs-dev] Flow Control and Port Mirroring Simon Horman
@ 2010-11-08 3:11 ` Rusty Russell
2010-11-08 4:59 ` Simon Horman
0 siblings, 1 reply; 3+ messages in thread
From: Rusty Russell @ 2010-11-08 3:11 UTC (permalink / raw)
To: virtualization
Cc: dev, kvm, Michael S. Tsirkin, netdev, Jesse Gross, virtualization
On Sat, 30 Oct 2010 01:29:33 pm Simon Horman wrote:
> [ CCed VHOST contacts ]
>
> On Thu, Oct 28, 2010 at 01:22:02PM -0700, Jesse Gross wrote:
> > On Thu, Oct 28, 2010 at 4:54 AM, Simon Horman <horms@verge.net.au> wrote:
> > > My reasoning is that in the non-mirroring case the guest is
> > > limited by the external interface through wich the packets
> > > eventually flow - that is 1Gbit/s. But in the mirrored either
> > > there is no flow control or the flow control is acting on the
> > > rate of dummy0, which is essentailly infinate.
> > >
> > > Before investigating this any further I wanted to ask if
> > > this behaviour is intentional.
> >
> > It's not intentional but I can take a guess at what is happening.
> >
> > When we send the packet to a mirror, the skb is cloned but only the
> > original skb is charged to the sender. If the original packet is
> > delivered to localhost then it will be freed quickly and no longer
> > accounted for, despite the fact that the "real" packet is still
> > sitting in the transmit queue on the NIC. The UDP stack will then
> > send the next packet, limited only by the speed of the CPU.
>
> That would explain what I have observed.
I can't find the thread (what is ovs-dev?), but I think the tap device
has this fundamental feature: you can blast as many packets as you want
through it.
If that's a bad thing, we have to look harder...
Cheers,
Rusty.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [ovs-dev] Flow Control and Port Mirroring
2010-11-08 3:11 ` Rusty Russell
@ 2010-11-08 4:59 ` Simon Horman
0 siblings, 0 replies; 3+ messages in thread
From: Simon Horman @ 2010-11-08 4:59 UTC (permalink / raw)
To: Rusty Russell
Cc: virtualization, Jesse Gross, dev, virtualization, netdev, kvm,
Michael S. Tsirkin
On Mon, Nov 08, 2010 at 01:41:23PM +1030, Rusty Russell wrote:
> On Sat, 30 Oct 2010 01:29:33 pm Simon Horman wrote:
> > [ CCed VHOST contacts ]
> >
> > On Thu, Oct 28, 2010 at 01:22:02PM -0700, Jesse Gross wrote:
> > > On Thu, Oct 28, 2010 at 4:54 AM, Simon Horman <horms@verge.net.au> wrote:
> > > > My reasoning is that in the non-mirroring case the guest is
> > > > limited by the external interface through wich the packets
> > > > eventually flow - that is 1Gbit/s. But in the mirrored either
> > > > there is no flow control or the flow control is acting on the
> > > > rate of dummy0, which is essentailly infinate.
> > > >
> > > > Before investigating this any further I wanted to ask if
> > > > this behaviour is intentional.
> > >
> > > It's not intentional but I can take a guess at what is happening.
> > >
> > > When we send the packet to a mirror, the skb is cloned but only the
> > > original skb is charged to the sender. If the original packet is
> > > delivered to localhost then it will be freed quickly and no longer
> > > accounted for, despite the fact that the "real" packet is still
> > > sitting in the transmit queue on the NIC. The UDP stack will then
> > > send the next packet, limited only by the speed of the CPU.
> >
> > That would explain what I have observed.
>
> I can't find the thread (what is ovs-dev?),
Sorry, yes its on ovs-dev.
http://openvswitch.org/pipermail/dev_openvswitch.org/2010-October/003806.html
> but I think the tap device
> has this fundamental feature: you can blast as many packets as you want
> through it.
>
> If that's a bad thing, we have to look harder...
There does seem to be flow control in the non-mirrored case.
So I suspect its occurring at the skb level but that breaks down when
a clone occurs. It would seem that fragment level flow control would
help this problem (which is basically what Xen's netback/netfront has),
but by this point I am speculating wildly. I'll try and find out exactly
where the problem is occurring in order for us to have a more informed
discussion.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-11-08 5:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20101028115403.GA16206@verge.net.au>
[not found] ` <AANLkTi=QXBi4wmJS1TY0P=s+11Vjp0v=AfWOdFb4vrCj@mail.gmail.com>
2010-10-30 2:59 ` [ovs-dev] Flow Control and Port Mirroring Simon Horman
2010-11-08 3:11 ` Rusty Russell
2010-11-08 4:59 ` Simon Horman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).