summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2022-01-19 13:04:12 +0300
committerJakub Kicinski <kuba@kernel.org>2022-01-19 19:14:40 +0300
commitd07418afea8f1d9896aaf9dc5ae47ac4f45b220c (patch)
tree99556371ae6bd0963505ee19ba41f2b4641395ae /arch
parent8eb896a77701bef7c80a99833ca776c9ddc317c8 (diff)
downloadlinux-d07418afea8f1d9896aaf9dc5ae47ac4f45b220c.tar.xz
ipv4: avoid quadratic behavior in netns dismantle
net/ipv4/fib_semantics.c uses an hash table of 256 slots, keyed by device ifindexes: fib_info_devhash[DEVINDEX_HASHSIZE] Problem is that with network namespaces, devices tend to use the same ifindex. lo device for instance has a fixed ifindex of one, for all network namespaces. This means that hosts with thousands of netns spend a lot of time looking at some hash buckets with thousands of elements, notably at netns dismantle. Simply add a per netns perturbation (net_hash_mix()) to spread elements more uniformely. Also change fib_devindex_hashfn() to use more entropy. Fixes: aa79e66eee5d ("net: Make ifindex generation per-net namespace") Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: David Ahern <dsahern@kernel.org> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'arch')
0 files changed, 0 insertions, 0 deletions