[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1354807403.20888.254.camel@localhost>
Date: Thu, 06 Dec 2012 16:23:23 +0100
From: Jesper Dangaard Brouer <jbrouer@...hat.com>
To: Eric Dumazet <eric.dumazet@...il.com>
Cc: Florian Westphal <fw@...len.de>,
"David S. Miller" <davem@...emloft.net>, netdev@...r.kernel.org,
Thomas Graf <tgraf@...g.ch>,
"Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>,
Cong Wang <amwang@...hat.com>,
Herbert Xu <herbert@...dor.hengli.com.au>
Subject: Re: [net-next PATCH V3-evictor] net: frag evictor, avoid killing
warm frag queues
On Thu, 2012-12-06 at 06:47 -0800, Eric Dumazet wrote:
> On Thu, 2012-12-06 at 14:55 +0100, Jesper Dangaard Brouer wrote:
>
> > The LRU might be the correct solution after all. If I enable Ethernet
> > flow-control again, then I have a hard time "activating" the evictor
> > code (with thresh 4M/3M) . I'll need a separate DoS program, which can
> > send incomplete fragments (in back-to-back bursts) to provoke the
> > evictor and LRU.
> >
> > My cheap DoS reproducer-hack is to disable Ethernet flow-control on only
> > one interface (out of 3), to cause packet drops and the incomplete
> > fragments. The current preliminary results is that the two other
> > interfaces still gets packets through, we don't get the zero throughput
> > situation.
> > Two interfaces and no DoS: 15342 Mbit/s
> > Three interfaces and DoS: 7355 Mbit/s
> >
> > The reduction might look big, but you have to take into account, that
> > "activating" the evictor code, is also causing scalability issues of its
> > own (which could account for the performance drop it self).
>
> I would try removing the LRU, but keeping the age information (jiffie of
> last valid frag received on one inet_frag_queue)
I don't think its worth optimizing further, atm.
Because, the test above is without any of my SMP scalability fixes.
With my SMP fixes the result is, full scalability:
Three interfaces: (9601+6723+9432) = 25756 Mbit/s
And the 6723 Mbit/s number, is because the old 10G NIC cannot generate
anymore...
And I basically cannot use the cheap DoS reproducer-hack, as the
machine/code-path is now too fast...
Running with 4 interfaces, and starting 6 netperf's (to cause more
interleaving and higher mem usage):
4716+8042+8765+6204+2475+4568 = 34770 Mbit/s
I could just manage to get to do IpReasmFails = 14.
[jbrouer@...gon ~]$ nstat > /dev/null && sleep 1 && nstat
#kernel
IpInReceives 2980048 0.0
IpInDelivers 66217 0.0
IpReasmReqds 2980040 0.0
IpReasmOKs 66218 0.0
IpReasmFails 14 0.0
UdpInDatagrams 66218 0.0
IpExtInOctets 4397976885 0.0
So, after the SMP fixes, its very hard to "activate" the evictor. We
would need to find a slower e.g. embedded box and tune the evictor on
that, as a multi-CPU machine basically will scale "too-well" now ;-)
--Jesper
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists