• Eric Dumazet's avatar
    net: reorder 'struct net' fields to avoid false sharing · 2a06b898
    Eric Dumazet authored
    Intel test robot reported a ~7% regression on TCP_CRR tests
    that they bisected to the cited commit.
    
    Indeed, every time a new TCP socket is created or deleted,
    the atomic counter net->count is touched (via get_net(net)
    and put_net(net) calls)
    
    So cpus might have to reload a contended cache line in
    net_hash_mix(net) calls.
    
    We need to reorder 'struct net' fields to move @hash_mix
    in a read mostly cache line.
    
    We move in the first cache line fields that can be
    dirtied often.
    
    We probably will have to address in a followup patch
    the __randomize_layout that was added in linux-4.13,
    since this might break our placement choices.
    
    Fixes: 355b9855 ("netns: provide pure entropy for net_hash_mix()")
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Reported-by: default avatarkernel test robot <oliver.sang@intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2a06b898
net_namespace.h 11.7 KB