[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1414451970.2922.27.camel@edumazet-glaptop2.roam.corp.google.com>
Date: Mon, 27 Oct 2014 16:19:30 -0700
From: Eric Dumazet <eric.dumazet@...il.com>
To: Tom Herbert <therbert@...gle.com>
Cc: David Miller <davem@...emloft.net>,
Linux Netdev List <netdev@...r.kernel.org>
Subject: Re: [PATCH net-next 2/2] udp: Reset flow table for flows over
unconnected sockets
On Mon, 2014-10-27 at 12:36 -0700, Tom Herbert wrote:
> Please try this patch and provide real data to support your points.
>
Yep. This is not good, I confirm my fear.
Google servers are shifting to serve both TCP & UDP traffic (QUIC
protocol), with an increasing UDP load.
Millions of packets per second per host, from millions of different
sources...
And your patch voids the RFS table, adds another cache miss in fast path
for UDP rx path which is already too expensive.
> If a TCP connection is hot it will continually refresh the table for
> that connection, if connection becomes idle it only takes one received
> packet to restore the CPU. The only time there could be a persistent
> problem is if collision rate is high (which probably means table is
> too small).
RFS already has a low hit/miss rate, this patch does not help neither
UDP or TCP.
Ideally, RFS should be enabled on a protocol base, not an agnostic u32
flow hash.
Whatever strategy you implement, as long as different protocols share a
common hash table, it wont be perfect for mixed workloads.
Fundamental problem is that when an UDP packet comes, its not possible
to know if its a 'flow' or 'not', unless we perform an expensive lookup,
and then RPS/RFS cost becomes prohibitive.
While for TCP, the current RFS cache miss is good enough, because about
all packets are for connected flows. We eventually have bad steering for
<not yet established> flows where the stack performs poorly anyway.
--
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