Commit 91dd93f9 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

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: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent be346ffa
...@@ -89,7 +89,7 @@ static inline int netlink_is_kernel(struct sock *sk) ...@@ -89,7 +89,7 @@ static inline int netlink_is_kernel(struct sock *sk)
return nlk_sk(sk)->flags & NETLINK_KERNEL_SOCKET; 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); EXPORT_SYMBOL_GPL(nl_table);
static DECLARE_WAIT_QUEUE_HEAD(nl_table_wait); static DECLARE_WAIT_QUEUE_HEAD(nl_table_wait);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment