From: Nikolay Aleksandrov <nikolay-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Thomas Graf <tgraf-G/eBtMaohhA@public.gmane.org>,
davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org,
netfilter-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org,
kaber-dcUjhNyLwpNeoWH0uzbU5w@public.gmane.org,
walpole-sKt6ljEC1JY3uPMLIKxrzw@public.gmane.org
Subject: Re: [PATCH net-next 2/3] netlink: Convert netlink_lookup() to use RCU protected hash table
Date: Sat, 02 Aug 2014 12:44:14 +0200 [thread overview]
Message-ID: <53DCC0FE.5010502@redhat.com> (raw)
In-Reply-To: <a0370889bd1b1bdf097f74df7017d39ae845c12e.1406971567.git.tgraf-G/eBtMaohhA@public.gmane.org>
On 08/02/2014 11:47 AM, Thomas Graf wrote:
> Heavy Netlink users such as Open vSwitch spend a considerable amount of
> time in netlink_lookup() due to the read-lock on nl_table_lock. Use of
> RCU relieves the lock contention.
>
> Makes use of the new resizable hash table to avoid locking on the
> lookup.
>
> The hash table will grow if entries exceeds 75% of table size up to a
> total table size of 64K. It will automatically shrink if usage falls
> below 30%.
>
> Also splits nl_table_lock into a separate mutex to protect hash table
> mutations and allow synchronize_rcu() to sleep while waiting for readers
> during expansion and shrinking.
>
> Before:
> 9.16% kpktgend_0 [openvswitch] [k] masked_flow_lookup
> 6.42% kpktgend_0 [pktgen] [k] mod_cur_headers
> 6.26% kpktgend_0 [pktgen] [k] pktgen_thread_worker
> 6.23% kpktgend_0 [kernel.kallsyms] [k] memset
> 4.79% kpktgend_0 [kernel.kallsyms] [k] netlink_lookup
> 4.37% kpktgend_0 [kernel.kallsyms] [k] memcpy
> 3.60% kpktgend_0 [openvswitch] [k] ovs_flow_extract
> 2.69% kpktgend_0 [kernel.kallsyms] [k] jhash2
>
> After:
> 15.26% kpktgend_0 [openvswitch] [k] masked_flow_lookup
> 8.12% kpktgend_0 [pktgen] [k] pktgen_thread_worker
> 7.92% kpktgend_0 [pktgen] [k] mod_cur_headers
> 5.11% kpktgend_0 [kernel.kallsyms] [k] memset
> 4.11% kpktgend_0 [openvswitch] [k] ovs_flow_extract
> 4.06% kpktgend_0 [kernel.kallsyms] [k] _raw_spin_lock
> 3.90% kpktgend_0 [kernel.kallsyms] [k] jhash2
> [...]
> 0.67% kpktgend_0 [kernel.kallsyms] [k] netlink_lookup
>
> Signed-off-by: Thomas Graf <tgraf-G/eBtMaohhA@public.gmane.org>
> ---
> net/netlink/af_netlink.c | 285 ++++++++++++++++++-----------------------------
> net/netlink/af_netlink.h | 18 +--
> net/netlink/diag.c | 11 +-
> 3 files changed, 119 insertions(+), 195 deletions(-)
>
Reviewed-by: Nikolay Aleksandrov <nikolay-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
WARNING: multiple messages have this Message-ID (diff)
From: Nikolay Aleksandrov <nikolay@redhat.com>
To: Thomas Graf <tgraf@suug.ch>, davem@davemloft.net, netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, kaber@trash.net,
paulmck@linux.vnet.ibm.com, josh@joshtriplett.org,
challa@noironetworks.com, walpole@cs.pdx.edu,
dev@openvswitch.org, netfilter-devel@vger.kernel.org
Subject: Re: [PATCH net-next 2/3] netlink: Convert netlink_lookup() to use RCU protected hash table
Date: Sat, 02 Aug 2014 12:44:14 +0200 [thread overview]
Message-ID: <53DCC0FE.5010502@redhat.com> (raw)
In-Reply-To: <a0370889bd1b1bdf097f74df7017d39ae845c12e.1406971567.git.tgraf@suug.ch>
On 08/02/2014 11:47 AM, Thomas Graf wrote:
> Heavy Netlink users such as Open vSwitch spend a considerable amount of
> time in netlink_lookup() due to the read-lock on nl_table_lock. Use of
> RCU relieves the lock contention.
>
> Makes use of the new resizable hash table to avoid locking on the
> lookup.
>
> The hash table will grow if entries exceeds 75% of table size up to a
> total table size of 64K. It will automatically shrink if usage falls
> below 30%.
>
> Also splits nl_table_lock into a separate mutex to protect hash table
> mutations and allow synchronize_rcu() to sleep while waiting for readers
> during expansion and shrinking.
>
> Before:
> 9.16% kpktgend_0 [openvswitch] [k] masked_flow_lookup
> 6.42% kpktgend_0 [pktgen] [k] mod_cur_headers
> 6.26% kpktgend_0 [pktgen] [k] pktgen_thread_worker
> 6.23% kpktgend_0 [kernel.kallsyms] [k] memset
> 4.79% kpktgend_0 [kernel.kallsyms] [k] netlink_lookup
> 4.37% kpktgend_0 [kernel.kallsyms] [k] memcpy
> 3.60% kpktgend_0 [openvswitch] [k] ovs_flow_extract
> 2.69% kpktgend_0 [kernel.kallsyms] [k] jhash2
>
> After:
> 15.26% kpktgend_0 [openvswitch] [k] masked_flow_lookup
> 8.12% kpktgend_0 [pktgen] [k] pktgen_thread_worker
> 7.92% kpktgend_0 [pktgen] [k] mod_cur_headers
> 5.11% kpktgend_0 [kernel.kallsyms] [k] memset
> 4.11% kpktgend_0 [openvswitch] [k] ovs_flow_extract
> 4.06% kpktgend_0 [kernel.kallsyms] [k] _raw_spin_lock
> 3.90% kpktgend_0 [kernel.kallsyms] [k] jhash2
> [...]
> 0.67% kpktgend_0 [kernel.kallsyms] [k] netlink_lookup
>
> Signed-off-by: Thomas Graf <tgraf@suug.ch>
> ---
> net/netlink/af_netlink.c | 285 ++++++++++++++++++-----------------------------
> net/netlink/af_netlink.h | 18 +--
> net/netlink/diag.c | 11 +-
> 3 files changed, 119 insertions(+), 195 deletions(-)
>
Reviewed-by: Nikolay Aleksandrov <nikolay@redhat.com>
next prev parent reply other threads:[~2014-08-02 10:44 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-02 9:47 [PATCH net-next v5 0/3] Lockless netlink_lookup() with new concurrent hash table Thomas Graf
2014-08-02 9:47 ` Thomas Graf
2014-08-02 9:47 ` [PATCH net-next 3/3] nftables: Convert nft_hash to use generic rhashtable Thomas Graf
[not found] ` <583cb5fc8f1bc2f47d338dfba06f514e7b89a548.1406971567.git.tgraf-G/eBtMaohhA@public.gmane.org>
2014-08-02 10:56 ` Nikolay Aleksandrov
2014-08-02 10:56 ` Nikolay Aleksandrov
[not found] ` <cover.1406971567.git.tgraf-G/eBtMaohhA@public.gmane.org>
2014-08-02 9:47 ` [PATCH net-next 1/3] lib: Resizable, Scalable, Concurrent Hash Table Thomas Graf
2014-08-02 9:47 ` Thomas Graf
[not found] ` <f7740ef7d22a334a775348caee916f1ddb3c584d.1406971567.git.tgraf-G/eBtMaohhA@public.gmane.org>
2014-08-02 10:32 ` Nikolay Aleksandrov
2014-08-02 10:32 ` Nikolay Aleksandrov
2014-08-02 9:47 ` [PATCH net-next 2/3] netlink: Convert netlink_lookup() to use RCU protected hash table Thomas Graf
2014-08-02 9:47 ` Thomas Graf
[not found] ` <a0370889bd1b1bdf097f74df7017d39ae845c12e.1406971567.git.tgraf-G/eBtMaohhA@public.gmane.org>
2014-08-02 10:44 ` Nikolay Aleksandrov [this message]
2014-08-02 10:44 ` Nikolay Aleksandrov
2014-08-05 2:10 ` Sasha Levin
2014-08-05 2:10 ` Sasha Levin
[not found] ` <53E03D0B.3000208-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2014-08-05 2:58 ` David Miller
2014-08-05 2:58 ` David Miller
[not found] ` <20140804.195841.536725238366145203.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2014-08-05 5:50 ` Eric Dumazet
2014-08-05 5:50 ` Eric Dumazet
[not found] ` <1407217807.3178.70.camel-XN9IlZ5yJG9HTL0Zs8A6p/gx64E7kk8eUsxypvmhUTTZJqsBc5GL+g@public.gmane.org>
2014-08-05 5:58 ` David Miller
2014-08-05 5:58 ` David Miller
2014-08-03 2:53 ` [PATCH net-next v5 0/3] Lockless netlink_lookup() with new concurrent " David Miller
2014-08-03 2:53 ` David Miller
-- strict thread matches above, loose matches on Subject: below --
2014-08-01 11:58 [PATCH net-next v4 " Thomas Graf
[not found] ` <cover.1406891028.git.tgraf-G/eBtMaohhA@public.gmane.org>
2014-08-01 11:58 ` [PATCH net-next 2/3] netlink: Convert netlink_lookup() to use RCU protected " Thomas Graf
2014-08-01 11:58 ` Thomas Graf
[not found] ` <72a64dfee4f20f2ca596df26f3e4ae543cf4c068.1406891028.git.tgraf-G/eBtMaohhA@public.gmane.org>
2014-08-01 14:51 ` Nikolay Aleksandrov
2014-08-01 14:51 ` Nikolay Aleksandrov
[not found] ` <53DBA976.8030103-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-08-01 15:15 ` Thomas Graf
2014-08-01 15:15 ` Thomas Graf
[not found] ` <20140801151527.GF7331-FZi0V3Vbi30CUdFEqe4BF2D2FQJk+8+b@public.gmane.org>
2014-08-01 15:20 ` Nikolay Aleksandrov
2014-08-01 15:20 ` Nikolay Aleksandrov
2014-08-01 8:51 [PATCH net-next v3 0/3] Lockless netlink_lookup() with new concurrent " Thomas Graf
[not found] ` <cover.1406882738.git.tgraf-G/eBtMaohhA@public.gmane.org>
2014-08-01 8:51 ` [PATCH net-next 2/3] netlink: Convert netlink_lookup() to use RCU protected " Thomas Graf
2014-08-01 8:51 ` Thomas Graf
2014-07-31 22:56 [PATCH v2 0/3 net-next] Lockless netlink_lookup() with new concurrent " Thomas Graf
[not found] ` <cover.1406846586.git.tgraf-G/eBtMaohhA@public.gmane.org>
2014-07-31 22:56 ` [PATCH net-next 2/3] netlink: Convert netlink_lookup() to use RCU protected " Thomas Graf
2014-07-31 22:56 ` Thomas Graf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53DCC0FE.5010502@redhat.com \
--to=nikolay-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org \
--cc=dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org \
--cc=josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org \
--cc=kaber-dcUjhNyLwpNeoWH0uzbU5w@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=netfilter-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
--cc=tgraf-G/eBtMaohhA@public.gmane.org \
--cc=walpole-sKt6ljEC1JY3uPMLIKxrzw@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.