mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
netns-ipv4: reorganize netns_ipv4 fast path variables
Reorganize fast path variables on tx-txrx-rx order. Fastpath cacheline ends after sysctl_tcp_rmem. There are only read-only variables here. (write is on the control path and not considered in this case) Below data generated with pahole on x86 architecture. Fast path variables span cache lines before change: 4 Fast path variables span cache lines after change: 2 Suggested-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Wei Wang <weiwan@google.com> Reviewed-by: David Ahern <dsahern@kernel.org> 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>
This commit is contained in:
@@ -1099,11 +1099,56 @@ out:
|
||||
rtnl_set_sk_err(net, RTNLGRP_NSID, err);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NET_NS
|
||||
static void __init netns_ipv4_struct_check(void)
|
||||
{
|
||||
/* TX readonly hotpath cache lines */
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_tx,
|
||||
sysctl_tcp_early_retrans);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_tx,
|
||||
sysctl_tcp_tso_win_divisor);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_tx,
|
||||
sysctl_tcp_tso_rtt_log);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_tx,
|
||||
sysctl_tcp_autocorking);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_tx,
|
||||
sysctl_tcp_min_snd_mss);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_tx,
|
||||
sysctl_tcp_notsent_lowat);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_tx,
|
||||
sysctl_tcp_limit_output_bytes);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_tx,
|
||||
sysctl_tcp_min_rtt_wlen);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_tx,
|
||||
sysctl_tcp_wmem);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_tx,
|
||||
sysctl_ip_fwd_use_pmtu);
|
||||
CACHELINE_ASSERT_GROUP_SIZE(struct netns_ipv4, netns_ipv4_read_tx, 33);
|
||||
|
||||
/* TXRX readonly hotpath cache lines */
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_txrx,
|
||||
sysctl_tcp_moderate_rcvbuf);
|
||||
CACHELINE_ASSERT_GROUP_SIZE(struct netns_ipv4, netns_ipv4_read_txrx, 1);
|
||||
|
||||
/* RX readonly hotpath cache line */
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_rx,
|
||||
sysctl_ip_early_demux);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_rx,
|
||||
sysctl_tcp_early_demux);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_rx,
|
||||
sysctl_tcp_reordering);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct netns_ipv4, netns_ipv4_read_rx,
|
||||
sysctl_tcp_rmem);
|
||||
CACHELINE_ASSERT_GROUP_SIZE(struct netns_ipv4, netns_ipv4_read_rx, 18);
|
||||
}
|
||||
#endif
|
||||
|
||||
void __init net_ns_init(void)
|
||||
{
|
||||
struct net_generic *ng;
|
||||
|
||||
#ifdef CONFIG_NET_NS
|
||||
netns_ipv4_struct_check();
|
||||
net_cachep = kmem_cache_create("net_namespace", sizeof(struct net),
|
||||
SMP_CACHE_BYTES,
|
||||
SLAB_PANIC|SLAB_ACCOUNT, NULL);
|
||||
|
||||
Reference in New Issue
Block a user