ipv4: 16 slots in initial fib_info hash table
authorEric Dumazet <edumazet@google.com>
Sun, 21 Oct 2012 20:12:09 +0000 (20:12 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 22 Oct 2012 18:29:06 +0000 (14:29 -0400)
A small host typically needs ~10 fib_info structures, so create initial
hash table with 16 slots instead of only one. This removes potential
false sharing and reallocs/rehashes (1->2->4->8->16)

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/fib_semantics.c

index 71b125c..4797a80 100644 (file)
@@ -803,7 +803,7 @@ struct fib_info *fib_create_info(struct fib_config *cfg)
                unsigned int bytes;
 
                if (!new_size)
-                       new_size = 1;
+                       new_size = 16;
                bytes = new_size * sizeof(struct hlist_head *);
                new_info_hash = fib_info_hash_alloc(bytes);
                new_laddrhash = fib_info_hash_alloc(bytes);