From: David Ahern <dsah...@gmail.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!

Reply via email to