[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1489191742.28631.35.camel@edumazet-glaptop3.roam.corp.google.com>
Date: Fri, 10 Mar 2017 16:22:22 -0800
From: Eric Dumazet <eric.dumazet@...il.com>
To: Tom Herbert <tom@...bertland.com>
Cc: Subash Abhinov Kasiviswanathan <subashab@...eaurora.org>,
Linux Kernel Network Developers <netdev@...r.kernel.org>,
Stephen Hemminger <stephen@...workplumber.org>,
netdev-owner@...r.kernel.org
Subject: Re: [PATCH net-next v2] net: Add sysctl to toggle early demux for
tcp and udp
On Fri, 2017-03-10 at 08:33 -0800, Tom Herbert wrote:
> Okay, now I'm confused. You're saying that when early demux was added
> for IPv6 performance improved, but this patch is allowing early demux
> to be disabled on the basis that it hurts performance for unconnected
> UDP workloads. While it's true that early demux in the case results in
> another UDP lookup, Eric's changes to make it lockless have made that
> lookup very cheap. So we really need numbers to justify this patch.
>
Fact that the lookup is lockless does not avoid a cache line miss.
Early demux computes a hash based on the 4-tuple, and lookups a hash
table with does not fit in cpu caches.
A cache line miss per packet is expensive, when handling millions of UDP
packets per second, (with millions of 4-tuples)
> Even if the numbers were to show a benefit, we still have the problem
> that this creates a bimodal performance characteristic, e.g. what if
> the work load were 1/2 connected and 1/2 unconnected in real life, or
> what it the user incorrectly guesses the actual workload. Maybe a
> deeper solution to investigate is making early demux work with
> unconnected sockets.
Sure, but forcing all UDP applications to perform IP early demux is not
better.
Powered by blists - more mailing lists