ipv6/addrconf: speedup /proc/net/if_inet6 filling
authorMihai Maruseac <mihai.maruseac@gmail.com>
Tue, 3 Jan 2012 23:31:35 +0000 (23:31 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 4 Jan 2012 21:00:57 +0000 (16:00 -0500)
commit1d5783030a14d1b6ee763f63c8136e581f48b365
treec17e33ce9a8dae357a653d2f56621369128a9d36
parent48529680dc59061eaa13ea3b1047401612b79600
ipv6/addrconf: speedup /proc/net/if_inet6 filling

This ensures a linear behaviour when filling /proc/net/if_inet6 thus making
ifconfig run really fast on IPv6 only addresses. In fact, with this patch and
the IPv4 one sent a while ago, ifconfig will run in linear time regardless of
address type.

IPv4 related patch: f04565ddf52e401880f8ba51de0dff8ba51c99fd
 dev: use name hash for dev_seq_ops
 ...

Some statistics (running ifconfig > /dev/null on a different setup):

iface count / IPv6 no-patch time / IPv6 patched time / IPv4 time
----------------------------------------------------------------
      6250  |       0.23 s       |      0.13 s       |  0.11 s
     12500  |       0.62 s       |      0.28 s       |  0.22 s
     25000  |       2.91 s       |      0.57 s       |  0.46 s
     50000  |      11.37 s       |      1.21 s       |  0.94 s
    128000  |      86.78 s       |      3.05 s       |  2.54 s

Signed-off-by: Mihai Maruseac <mmaruseac@ixiacom.com>
Cc: Daniel Baluta <dbaluta@ixiacom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/addrconf.c