[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20180417.234543.308308798618847609.davem@davemloft.net>
Date: Tue, 17 Apr 2018 23:45:43 -0400 (EDT)
From: David Miller <davem@...emloft.net>
To: dsahern@...il.com
Cc: netdev@...r.kernel.org, idosch@...sch.org,
roopa@...ulusnetworks.com, eric.dumazet@...il.com,
weiwan@...gle.com, kafai@...com, yoshfuji@...ux-ipv6.org
Subject: Re: [PATCH net-next v2 00/21] net/ipv6: Separate data structures
for FIB and data path
From: David Ahern <dsahern@...il.com>
Date: Tue, 17 Apr 2018 17:33:06 -0700
> IPv6 uses the same data struct for both control plane (FIB entries) and
> data path (dst entries). This struct has elements needed for both paths
> adding memory overhead and complexity (taking a dst hold in most places
> but an additional reference on rt6i_ref in a few). Furthermore, because
> of the dst_alloc tie, all FIB entries are allocated with GFP_ATOMIC.
>
> This patch set separates FIB entries from dst entries, better aligning
> IPv6 code with IPv4, simplifying the reference counting and allowing
> FIB entries added by userspace (not autoconf) to use GFP_KERNEL. It is
> first step to a number of performance and scalability changes.
>
> The end result of this patch set:
> - FIB entries (fib6_info):
> /* size: 208, cachelines: 4, members: 25 */
> /* sum members: 207, holes: 1, sum holes: 1 */
>
> - dst entries (rt6_info)
> /* size: 240, cachelines: 4, members: 11 */
>
> Versus the the single rt6_info struct today for both paths:
> /* size: 320, cachelines: 5, members: 28 */
>
> This amounts to a 35% reduction in memory use for FIB entries and a
> 25% reduction for dst entries.
Looks great, series applied, thanks David!
Powered by blists - more mailing lists