Re: [PATCH] net: allow netdev_wait_allrefs() to run faster
From: Eric Dumazet <hidden>
Date: 2009-10-21 19:54:57
Benjamin LaHaise a écrit :
On Wed, Oct 21, 2009 at 05:40:07PM +0200, Eric Dumazet wrote:quoted
Ben patch only address interface deletion, and one part of the problem, maybe the more visible one for the current kernel.The first part I've been tackling has been the overhead in procfs, sysctl and sysfs. I've got patches for some of the issues, hacks for others, and should have something to post in a few days. Getting rid of those overheads is enough to get to decent interface creation times for the first 20 or 30k interfaces. On the interface deletion side of things, within the network code, fib_hash has a few linear scans that really start hurting. trie is a bit better, but I haven't started digging too deeply into its flush/remove overhead yet, aside from noticing that trie has a linear scan if CONFIG_IP_ROUTE_MULTIPATH is set since it sets the hash size to 1. fn_trie_flush() is currently the worst offender during deletion.
Well, there are many things to change... # ip -o link | wc -l 13097 # time ip -o link show mv22248 13045: mv22248@eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN \ link/ether 00:1e:0b:8e:c8:08 brd ff:ff:ff:ff:ff:ff real 0m0.840s user 0m0.473s sys 0m0.368s almost one second to get link status of one particular interface :(