[NET]: use __read_mostly on kmem_cache_t , DEFINE_SNMP_STAT pointers
This patch puts mostly read only data in the right section (read_mostly), to help sharing of these data between CPUS without memory ping pongs. On one of my production machine, tcp_statistics was sitting in a heavily modified cache line, so *every* SNMP update had to force a reload. Signed-off-by: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
29cb9f9c55
commit
ba89966c19
@@ -67,7 +67,7 @@
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/system.h>
|
||||
|
||||
DEFINE_SNMP_STAT(struct icmpv6_mib, icmpv6_statistics);
|
||||
DEFINE_SNMP_STAT(struct icmpv6_mib, icmpv6_statistics) __read_mostly;
|
||||
|
||||
/*
|
||||
* The ICMP socket(s). This is the most convenient way to flow control
|
||||
|
@@ -49,7 +49,7 @@
|
||||
|
||||
struct rt6_statistics rt6_stats;
|
||||
|
||||
static kmem_cache_t * fib6_node_kmem;
|
||||
static kmem_cache_t * fib6_node_kmem __read_mostly;
|
||||
|
||||
enum fib_walk_state_t
|
||||
{
|
||||
|
@@ -55,7 +55,7 @@
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
DEFINE_SNMP_STAT(struct ipstats_mib, ipv6_statistics);
|
||||
DEFINE_SNMP_STAT(struct ipstats_mib, ipv6_statistics) __read_mostly;
|
||||
|
||||
static struct packet_type ipv6_packet_type = {
|
||||
.type = __constant_htons(ETH_P_IPV6),
|
||||
|
@@ -59,7 +59,7 @@
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/seq_file.h>
|
||||
|
||||
DEFINE_SNMP_STAT(struct udp_mib, udp_stats_in6);
|
||||
DEFINE_SNMP_STAT(struct udp_mib, udp_stats_in6) __read_mostly;
|
||||
|
||||
/* Grrr, addr_type already calculated by caller, but I don't want
|
||||
* to add some silly "cookie" argument to this method just for that.
|
||||
|
@@ -79,7 +79,7 @@ static u32 xfrm6_tunnel_spi;
|
||||
#define XFRM6_TUNNEL_SPI_MIN 1
|
||||
#define XFRM6_TUNNEL_SPI_MAX 0xffffffff
|
||||
|
||||
static kmem_cache_t *xfrm6_tunnel_spi_kmem;
|
||||
static kmem_cache_t *xfrm6_tunnel_spi_kmem __read_mostly;
|
||||
|
||||
#define XFRM6_TUNNEL_SPI_BYADDR_HSIZE 256
|
||||
#define XFRM6_TUNNEL_SPI_BYSPI_HSIZE 256
|
||||
|
Reference in New Issue
Block a user