diff options
author | Eric Dumazet <edumazet@google.com> | 2022-01-19 11:04:12 +0100 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2022-01-19 17:14:40 +0100 |
commit | d07418afea8f1d9896aaf9dc5ae47ac4f45b220c (patch) | |
tree | 99556371ae6bd0963505ee19ba41f2b4641395ae /Makefile | |
parent | Merge branch 'net-fsl-xgmac_mdio-add-workaround-for-erratum-a-009885' (diff) | |
download | linux-d07418afea8f1d9896aaf9dc5ae47ac4f45b220c.tar.xz linux-d07418afea8f1d9896aaf9dc5ae47ac4f45b220c.zip |
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 'Makefile')
0 files changed, 0 insertions, 0 deletions