lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-Id: <1454365952-10324-1-git-send-email-noureddine@arista.com> Date: Mon, 1 Feb 2016 14:32:28 -0800 From: Salam Noureddine <noureddine@...sta.com> To: "David S. Miller" <davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>, Jiri Pirko <jiri@...lanox.com>, Alexei Starovoitov <ast@...mgrid.com>, Daniel Borkmann <daniel@...earbox.net>, "Eric W. Biederman" <ebiederm@...ssion.com>, netdev@...r.kernel.org Cc: Salam Noureddine <noureddine@...sta.com> Subject: [PATCH net-next 0/4] batch calls to fib_flush and arp_ifdown fib_flush walks the whole fib in a net_namespace and is called for each net_device being closed or unregistered. This can be very expensive when dealing with 100k or more routes in the fib and removal of a lot of interfaces. These four patches deal with this issue by calling fib_flush just once for each net namespace and introduce a new function arp_ifdown_all that does a similar optimization for the neighbour table. I got the following benchmark results on one of our switches. Without this patch, deleting 1k interfaces with 100k routes in the fib held the rtnl_lock for 13 seconds. With the patch, rtnl_lock hold time went down to 5 seconds. The gain is even more pronounced with 512k routes in the FIB. In this case, without the patch, rtnl_lock was held for 36 seconds and with the patch it was held for 5.5 seconds. Salam Noureddine (4): net: add event_list to struct net and provide utility functions net: dev: add batching to net_device notifiers net: core: introduce neigh_ifdown_all for all down interfaces net: fib: avoid calling fib_flush for each device when doing batch close and unregister include/linux/netdevice.h | 2 ++ include/net/arp.h | 1 + include/net/neighbour.h | 1 + include/net/net_namespace.h | 22 ++++++++++++++++++++++ include/net/netns/ipv4.h | 1 + net/core/dev.c | 39 ++++++++++++++++++++++++++++++++++++--- net/core/neighbour.c | 38 +++++++++++++++++++++++++++++++------- net/ipv4/arp.c | 4 ++++ net/ipv4/fib_frontend.c | 16 ++++++++++++++-- 9 files changed, 112 insertions(+), 12 deletions(-) -- 1.8.1.4
Powered by blists - more mailing lists