mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
14006f1d8f
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>
136 lines
1.7 KiB
ReStructuredText
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`
|