lkml.org 
[lkml]   [2014]   [Aug]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH net-next 2/3] netlink: Convert netlink_lookup() to use RCU protected hash table
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>




\
 
 \ /
  Last update: 2014-08-02 13:21    [W:0.078 / U:0.484 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site