ipv6: speedup ipv6 tunnels dismantle
authorEric Dumazet <edumazet@google.com>
Tue, 19 Sep 2017 23:27:08 +0000 (16:27 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 19 Sep 2017 23:32:23 +0000 (16:32 -0700)
commitbb401caefe9d2c65e0c0fa23b21deecfbfa473fe
tree265825e512645729790e0f932b82c9b09ff7fa08
parent789e6ddb0b2fb5d5024b760b178a47876e4de7a6
ipv6: speedup ipv6 tunnels dismantle

Implement exit_batch() method to dismantle more devices
per round.

(rtnl_lock() ...
 unregister_netdevice_many() ...
 rtnl_unlock())

Tested:
$ cat add_del_unshare.sh
for i in `seq 1 40`
do
 (for j in `seq 1 100` ; do unshare -n /bin/true >/dev/null ; done) &
done
wait ; grep net_namespace /proc/slabinfo

Before patch :
$ time ./add_del_unshare.sh
net_namespace        110    267   5504    1    2 : tunables    8    4    0 : slabdata    110    267      0

real    3m25.292s
user    0m0.644s
sys     0m40.153s

After patch:

$ time ./add_del_unshare.sh
net_namespace        126    282   5504    1    2 : tunables    8    4    0 : slabdata    126    282      0

real 1m38.965s
user 0m0.688s
sys 0m37.017s

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/ip6_gre.c
net/ipv6/ip6_tunnel.c
net/ipv6/ip6_vti.c
net/ipv6/sit.c