mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
inet: move icmp_global_{credit,stamp} to a separate cache line
icmp_global_credit was meant to be changed ~1000 times per second,
but if an admin sets net.ipv4.icmp_msgs_per_sec to a very high value,
icmp_global_credit changes can inflict false sharing to surrounding
fields that are read mostly.
Move icmp_global_credit and icmp_global_stamp to a separate
cacheline aligned group.
Fixes: b056b4cd91 ("icmp: move icmp_global.credit and icmp_global.stamp to per netns storage")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20260216142832.3834174-3-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
034bbd8062
commit
87b08913a9
@@ -88,6 +88,12 @@ struct netns_ipv4 {
|
||||
int sysctl_tcp_rcvbuf_low_rtt;
|
||||
__cacheline_group_end(netns_ipv4_read_rx);
|
||||
|
||||
/* ICMP rate limiter hot cache line. */
|
||||
__cacheline_group_begin_aligned(icmp);
|
||||
atomic_t icmp_global_credit;
|
||||
u32 icmp_global_stamp;
|
||||
__cacheline_group_end_aligned(icmp);
|
||||
|
||||
struct inet_timewait_death_row tcp_death_row;
|
||||
struct udp_table *udp_table;
|
||||
|
||||
@@ -141,8 +147,7 @@ struct netns_ipv4 {
|
||||
int sysctl_icmp_ratemask;
|
||||
int sysctl_icmp_msgs_per_sec;
|
||||
int sysctl_icmp_msgs_burst;
|
||||
atomic_t icmp_global_credit;
|
||||
u32 icmp_global_stamp;
|
||||
|
||||
u32 ip_rt_min_pmtu;
|
||||
int ip_rt_mtu_expires;
|
||||
int ip_rt_min_advmss;
|
||||
|
||||
Reference in New Issue
Block a user