linux/Documentation/networking/index.rst
Coco Li 14006f1d8f Documentations: Analyze heavily used Networking related structs
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: Eric Dumazet <edumazet@google.com>
Signed-off-by: Coco Li <lixiaoyan@google.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Shakeel Butt <shakeelb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2023-12-02 22:24:36 +00:00

136 lines
1.7 KiB
ReStructuredText

Networking
==========
Refer to :ref:`netdev-FAQ` for a guide on netdev development process specifics.
Contents:
.. toctree::
:maxdepth: 2
af_xdp
bareudp
batman-adv
can
can_ucan_protocol
device_drivers/index
dsa/index
devlink/index
caif/index
ethtool-netlink
ieee802154
j1939
kapi
msg_zerocopy
failover
net_dim
net_failover
page_pool
phy
sfp-phylink
alias
bridge
snmp_counter
checksum-offloads
segmentation-offloads
scaling
tls
tls-offload
tls-handshake
nfc
6lowpan
6pack
arcnet-hardware
arcnet
atm
ax25
bonding
cdc_mbim
dccp
dctcp
dns_resolver
driver
eql
fib_trie
filter
generic-hdlc
generic_netlink
netlink_spec/index
gen_stats
gtp
ila
ioam6-sysctl
ip_dynaddr
ipsec
ip-sysctl
ipv6
ipvlan
ipvs-sysctl
kcm
l2tp
lapb-module
mac80211-injection
mctp
mpls-sysctl
mptcp-sysctl
multiqueue
napi
net_cachelines/index
netconsole
netdev-features
netdevices
netfilter-sysctl
netif-msg
nexthop-group-resilient
nf_conntrack-sysctl
nf_flowtable
openvswitch
operstates
packet_mmap
phonet
pktgen
plip
ppp_generic
proc_net_tcp
radiotap-headers
rds
regulatory
representors
rxrpc
sctp
secid
seg6-sysctl
skbuff
smc-sysctl
statistics
strparser
switchdev
sysfs-tagging
tc-actions-env-rules
tc-queue-filters
tcp_ao
tcp-thin
team
timestamping
tipc
tproxy
tuntap
udplite
vrf
vxlan
x25
x25-iface
xfrm_device
xfrm_proc
xfrm_sync
xfrm_sysctl
xdp-rx-metadata
xsk-tx-metadata
.. only:: subproject and html
Indices
=======
* :ref:`genindex`