• Coco Li's avatar
    Documentations: Analyze heavily used Networking related structs · 14006f1d
    Coco Li authored
    Analyzed a few structs in the networking stack by looking at variables
    within them that are used in the TCP/IP fast path.
    
    Fast path is defined as TCP path where data is transferred from sender to
    receiver unidirectionally. It doesn't include phases other than
    TCP_ESTABLISHED, nor does it look at error paths.
    
    We hope to re-organizing variables that span many cachelines whose fast
    path variables are also spread out, and this document can help future
    developers keep networking fast path cachelines small.
    
    Optimized_cacheline field is computed as
    (Fastpath_Bytes/L3_cacheline_size_x86), and not the actual organized
    results (see patches to come for these).
    
    Investigation is done on 6.5
    
    Name	                Struct_Cachelines  Cur_fastpath_cache Fastpath_Bytes Optimized_cacheline
    tcp_sock	        42 (2664 Bytes)	   12   		396		8
    net_device	        39 (2240 bytes)	   12			234		4
    inet_sock	        15 (960 bytes)	   14			922		14
    Inet_connection_sock	22 (1368 bytes)	   18			1166		18
    Netns_ipv4 (sysctls)	12 (768 bytes)     4			77		2
    linux_mib	        16 (1060)	   6			104		2
    
    Note how there isn't much improvement space for inet_sock and
    Inet_connection_sock because sk and icsk_inet respectively takes up so
    much of the struct that rest of the variables become a small portion of
    the struct size.
    
    So, we decided to reorganize tcp_sock, net_device, netns_ipv4
    Suggested-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarCoco Li <lixiaoyan@google.com>
    Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
    Reviewed-by: default avatarShakeel Butt <shakeelb@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    14006f1d
MAINTAINERS 717 KB