dev: use name hash for dev_seq_ops
authorMihai Maruseac <mihai.maruseac@gmail.com>
Thu, 20 Oct 2011 20:45:10 +0000 (20:45 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 21 Oct 2011 06:54:38 +0000 (02:54 -0400)
commitf04565ddf52e401880f8ba51de0dff8ba51c99fd
tree720ebd86cb3012319023389a54ae7152073d6bdb
parente09eff7fc1c6f011f7bdb304e10d2ceef08c88ab
dev: use name hash for dev_seq_ops

Instead of using the dev->next chain and trying to resync at each call to
dev_seq_start, use the name hash, keeping the bucket and the offset in
seq->private field.

Tests revealed the following results for ifconfig > /dev/null
* 1000 interfaces:
* 0.114s without patch
* 0.089s with patch
* 3000 interfaces:
* 0.489s without patch
* 0.110s with patch
* 5000 interfaces:
* 1.363s without patch
* 0.250s with patch
* 128000 interfaces (other setup):
* ~100s without patch
* ~30s with patch

Signed-off-by: Mihai Maruseac <mmaruseac@ixiacom.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c