• Eric Dumazet's avatar
    inet: shrink inet_timewait_death_row by 48 bytes · 1caf8d39
    Eric Dumazet authored
    struct inet_timewait_death_row uses two cache lines, because we want
    tw_count to use a full cache line to avoid false sharing.
    
    Rework its definition and placement in netns_ipv4 so that:
    
    1) We add 60 bytes of padding after tw_count to avoid
      false sharing, knowing that tcp_death_row will
      have ____cacheline_aligned_in_smp attribute.
    
    2) We do not risk padding before tcp_death_row, because
      we move it at the beginning of netns_ipv4, even if new
     fields are added later.
    
    3) We do not waste 48 bytes of padding after it.
    
    Note that I have not changed dccp.
    
    pahole result for struct netns_ipv4 before/after the patch :
    
    /* size: 832, cachelines: 13, members: 139 */
    /* sum members: 721, holes: 12, sum holes: 95 */
    /* padding: 16 */
    /* paddings: 2, sum paddings: 55 */
    
    ->
    
    /* size: 768, cachelines: 12, members: 139 */
    /* sum members: 673, holes: 11, sum holes: 39 */
    /* padding: 56 */
    /* paddings: 2, sum paddings: 7 */
    /* forced alignments: 1 */
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1caf8d39
ipv4.h 5.87 KB