• Eric Dumazet's avatar
    [IPV4] FIB_HASH: Reduce memory needs and speedup lookups · a6501e08
    Eric Dumazet authored
    Currently, sizeof(struct fib_alias) is 24 or 48 bytes on 32/64 bits
    arches.
    
    Because of SLAB_HWCACHE_ALIGN requirement, these are rounded to 32 and
    64 bytes respectively.
    
    This patch moves rcu to the end of fib_alias, and conditionally
    defines it only for CONFIG_IP_FIB_TRIE.
    
    We also remove SLAB_HWCACHE_ALIGN requirement for fib_alias and
    fib_node objects because it is not necessary.
    
    (BTW SLUB currently denies it for objects smaller than
    cache_line_size() / 2, but not SLAB)
    
    Finally, sizeof(fib_alias) go back to 16 and 32 bytes.
    
    Then, we can embed one fib_alias on each fib_node, to favor locality.
    Most of the time access to the fib_alias will be free because one
    cache line contains both the list head (fn_alias) and (one of) the
    list element.
    Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a6501e08
fib_lookup.h 1.48 KB