summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2015-05-13 02:24:50 +0200
committerDavid S. Miller <davem@davemloft.net>2015-05-14 23:49:06 +0200
commit91dd93f956b9ea9ecf47fd4b9acd2d2e7f980303 (patch)
tree1144107d6ac2f98703f314450ebb866baf6bcbad
parentvlan: Correctly propagate promisc|allmulti flags in notifier. (diff)
downloadlinux-91dd93f956b9ea9ecf47fd4b9acd2d2e7f980303.tar.xz
linux-91dd93f956b9ea9ecf47fd4b9acd2d2e7f980303.zip
netlink: move nl_table in read_mostly section
netlink sockets creation and deletion heavily modify nl_table_users and nl_table_lock. If nl_table is sharing one cache line with one of them, netlink performance is really bad on SMP. ffffffff81ff5f00 B nl_table ffffffff81ff5f0c b nl_table_users Putting nl_table in read_mostly section increased performance of my open/delete netlink sockets test by about 80 % This came up while diagnosing a getaddrinfo() problem. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/netlink/af_netlink.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index daa0b818174b..dbe885901b34 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -89,7 +89,7 @@ static inline int netlink_is_kernel(struct sock *sk)
return nlk_sk(sk)->flags & NETLINK_KERNEL_SOCKET;
}
-struct netlink_table *nl_table;
+struct netlink_table *nl_table __read_mostly;
EXPORT_SYMBOL_GPL(nl_table);
static DECLARE_WAIT_QUEUE_HEAD(nl_table_wait);