提交 ab32ea5d 编写于 作者: B Brian Haley 提交者: David S. Miller

[NET/IPV4/IPV6]: Change some sysctl variables to __read_mostly

Change net/core, ipv4 and ipv6 sysctl variables to __read_mostly.

Couldn't actually measure any performance increase while testing (.3%
I consider noise), but seems like the right thing to do.
Signed-off-by: NBrian Haley <brian.haley@hp.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 56fc85ac
...@@ -2451,7 +2451,7 @@ static struct neigh_sysctl_table { ...@@ -2451,7 +2451,7 @@ static struct neigh_sysctl_table {
ctl_table neigh_neigh_dir[2]; ctl_table neigh_neigh_dir[2];
ctl_table neigh_proto_dir[2]; ctl_table neigh_proto_dir[2];
ctl_table neigh_root_dir[2]; ctl_table neigh_root_dir[2];
} neigh_sysctl_template = { } neigh_sysctl_template __read_mostly = {
.neigh_vars = { .neigh_vars = {
{ {
.ctl_name = NET_NEIGH_MCAST_SOLICIT, .ctl_name = NET_NEIGH_MCAST_SOLICIT,
......
...@@ -187,13 +187,13 @@ static struct lock_class_key af_callback_keys[AF_MAX]; ...@@ -187,13 +187,13 @@ static struct lock_class_key af_callback_keys[AF_MAX];
#define SK_RMEM_MAX (_SK_MEM_OVERHEAD * _SK_MEM_PACKETS) #define SK_RMEM_MAX (_SK_MEM_OVERHEAD * _SK_MEM_PACKETS)
/* Run time adjustable parameters. */ /* Run time adjustable parameters. */
__u32 sysctl_wmem_max = SK_WMEM_MAX; __u32 sysctl_wmem_max __read_mostly = SK_WMEM_MAX;
__u32 sysctl_rmem_max = SK_RMEM_MAX; __u32 sysctl_rmem_max __read_mostly = SK_RMEM_MAX;
__u32 sysctl_wmem_default = SK_WMEM_MAX; __u32 sysctl_wmem_default __read_mostly = SK_WMEM_MAX;
__u32 sysctl_rmem_default = SK_RMEM_MAX; __u32 sysctl_rmem_default __read_mostly = SK_RMEM_MAX;
/* Maximal space eaten by iovec or ancilliary data plus some space */ /* Maximal space eaten by iovec or ancilliary data plus some space */
int sysctl_optmem_max = sizeof(unsigned long)*(2*UIO_MAXIOV + 512); int sysctl_optmem_max __read_mostly = sizeof(unsigned long)*(2*UIO_MAXIOV+512);
static int sock_set_timeout(long *timeo_p, char __user *optval, int optlen) static int sock_set_timeout(long *timeo_p, char __user *optval, int optlen)
{ {
......
...@@ -391,7 +391,7 @@ int inet_release(struct socket *sock) ...@@ -391,7 +391,7 @@ int inet_release(struct socket *sock)
} }
/* It is off by default, see below. */ /* It is off by default, see below. */
int sysctl_ip_nonlocal_bind; int sysctl_ip_nonlocal_bind __read_mostly;
int inet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) int inet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
{ {
...@@ -987,7 +987,7 @@ void inet_unregister_protosw(struct inet_protosw *p) ...@@ -987,7 +987,7 @@ void inet_unregister_protosw(struct inet_protosw *p)
* Shall we try to damage output packets if routing dev changes? * Shall we try to damage output packets if routing dev changes?
*/ */
int sysctl_ip_dynaddr; int sysctl_ip_dynaddr __read_mostly;
static int inet_sk_reselect_saddr(struct sock *sk) static int inet_sk_reselect_saddr(struct sock *sk)
{ {
......
...@@ -187,11 +187,11 @@ struct icmp_err icmp_err_convert[] = { ...@@ -187,11 +187,11 @@ struct icmp_err icmp_err_convert[] = {
}; };
/* Control parameters for ECHO replies. */ /* Control parameters for ECHO replies. */
int sysctl_icmp_echo_ignore_all; int sysctl_icmp_echo_ignore_all __read_mostly;
int sysctl_icmp_echo_ignore_broadcasts = 1; int sysctl_icmp_echo_ignore_broadcasts __read_mostly = 1;
/* Control parameter - ignore bogus broadcast responses? */ /* Control parameter - ignore bogus broadcast responses? */
int sysctl_icmp_ignore_bogus_error_responses = 1; int sysctl_icmp_ignore_bogus_error_responses __read_mostly = 1;
/* /*
* Configurable global rate limit. * Configurable global rate limit.
...@@ -205,9 +205,9 @@ int sysctl_icmp_ignore_bogus_error_responses = 1; ...@@ -205,9 +205,9 @@ int sysctl_icmp_ignore_bogus_error_responses = 1;
* time exceeded (11), parameter problem (12) * time exceeded (11), parameter problem (12)
*/ */
int sysctl_icmp_ratelimit = 1 * HZ; int sysctl_icmp_ratelimit __read_mostly = 1 * HZ;
int sysctl_icmp_ratemask = 0x1818; int sysctl_icmp_ratemask __read_mostly = 0x1818;
int sysctl_icmp_errors_use_inbound_ifaddr; int sysctl_icmp_errors_use_inbound_ifaddr __read_mostly;
/* /*
* ICMP control array. This specifies what to do with each ICMP. * ICMP control array. This specifies what to do with each ICMP.
......
...@@ -1397,8 +1397,8 @@ static struct in_device * ip_mc_find_dev(struct ip_mreqn *imr) ...@@ -1397,8 +1397,8 @@ static struct in_device * ip_mc_find_dev(struct ip_mreqn *imr)
/* /*
* Join a socket to a group * Join a socket to a group
*/ */
int sysctl_igmp_max_memberships = IP_MAX_MEMBERSHIPS; int sysctl_igmp_max_memberships __read_mostly = IP_MAX_MEMBERSHIPS;
int sysctl_igmp_max_msf = IP_MAX_MSF; int sysctl_igmp_max_msf __read_mostly = IP_MAX_MSF;
static int ip_mc_del1_src(struct ip_mc_list *pmc, int sfmode, static int ip_mc_del1_src(struct ip_mc_list *pmc, int sfmode,
......
...@@ -54,15 +54,15 @@ ...@@ -54,15 +54,15 @@
* even the most extreme cases without allowing an attacker to measurably * even the most extreme cases without allowing an attacker to measurably
* harm machine performance. * harm machine performance.
*/ */
int sysctl_ipfrag_high_thresh = 256*1024; int sysctl_ipfrag_high_thresh __read_mostly = 256*1024;
int sysctl_ipfrag_low_thresh = 192*1024; int sysctl_ipfrag_low_thresh __read_mostly = 192*1024;
int sysctl_ipfrag_max_dist = 64; int sysctl_ipfrag_max_dist __read_mostly = 64;
/* Important NOTE! Fragment queue must be destroyed before MSL expires. /* Important NOTE! Fragment queue must be destroyed before MSL expires.
* RFC791 is wrong proposing to prolongate timer each fragment arrival by TTL. * RFC791 is wrong proposing to prolongate timer each fragment arrival by TTL.
*/ */
int sysctl_ipfrag_time = IP_FRAG_TIME; int sysctl_ipfrag_time __read_mostly = IP_FRAG_TIME;
struct ipfrag_skb_cb struct ipfrag_skb_cb
{ {
...@@ -130,7 +130,7 @@ static unsigned int ipqhashfn(u16 id, u32 saddr, u32 daddr, u8 prot) ...@@ -130,7 +130,7 @@ static unsigned int ipqhashfn(u16 id, u32 saddr, u32 daddr, u8 prot)
} }
static struct timer_list ipfrag_secret_timer; static struct timer_list ipfrag_secret_timer;
int sysctl_ipfrag_secret_interval = 10 * 60 * HZ; int sysctl_ipfrag_secret_interval __read_mostly = 10 * 60 * HZ;
static void ipfrag_secret_rebuild(unsigned long dummy) static void ipfrag_secret_rebuild(unsigned long dummy)
{ {
......
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
#include <linux/netlink.h> #include <linux/netlink.h>
#include <linux/tcp.h> #include <linux/tcp.h>
int sysctl_ip_default_ttl = IPDEFTTL; int sysctl_ip_default_ttl __read_mostly = IPDEFTTL;
/* Generate a checksum for an outgoing IP datagram. */ /* Generate a checksum for an outgoing IP datagram. */
__inline__ void ip_send_check(struct iphdr *iph) __inline__ void ip_send_check(struct iphdr *iph)
......
...@@ -268,7 +268,7 @@ ...@@ -268,7 +268,7 @@
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/ioctls.h> #include <asm/ioctls.h>
int sysctl_tcp_fin_timeout = TCP_FIN_TIMEOUT; int sysctl_tcp_fin_timeout __read_mostly = TCP_FIN_TIMEOUT;
DEFINE_SNMP_STAT(struct tcp_mib, tcp_statistics) __read_mostly; DEFINE_SNMP_STAT(struct tcp_mib, tcp_statistics) __read_mostly;
......
...@@ -72,24 +72,24 @@ ...@@ -72,24 +72,24 @@
#include <asm/unaligned.h> #include <asm/unaligned.h>
#include <net/netdma.h> #include <net/netdma.h>
int sysctl_tcp_timestamps = 1; int sysctl_tcp_timestamps __read_mostly = 1;
int sysctl_tcp_window_scaling = 1; int sysctl_tcp_window_scaling __read_mostly = 1;
int sysctl_tcp_sack = 1; int sysctl_tcp_sack __read_mostly = 1;
int sysctl_tcp_fack = 1; int sysctl_tcp_fack __read_mostly = 1;
int sysctl_tcp_reordering = TCP_FASTRETRANS_THRESH; int sysctl_tcp_reordering __read_mostly = TCP_FASTRETRANS_THRESH;
int sysctl_tcp_ecn; int sysctl_tcp_ecn __read_mostly;
int sysctl_tcp_dsack = 1; int sysctl_tcp_dsack __read_mostly = 1;
int sysctl_tcp_app_win = 31; int sysctl_tcp_app_win __read_mostly = 31;
int sysctl_tcp_adv_win_scale = 2; int sysctl_tcp_adv_win_scale __read_mostly = 2;
int sysctl_tcp_stdurg; int sysctl_tcp_stdurg __read_mostly;
int sysctl_tcp_rfc1337; int sysctl_tcp_rfc1337 __read_mostly;
int sysctl_tcp_max_orphans = NR_FILE; int sysctl_tcp_max_orphans __read_mostly = NR_FILE;
int sysctl_tcp_frto; int sysctl_tcp_frto __read_mostly;
int sysctl_tcp_nometrics_save; int sysctl_tcp_nometrics_save __read_mostly;
int sysctl_tcp_moderate_rcvbuf = 1; int sysctl_tcp_moderate_rcvbuf __read_mostly = 1;
int sysctl_tcp_abc; int sysctl_tcp_abc __read_mostly;
#define FLAG_DATA 0x01 /* Incoming frame contained data. */ #define FLAG_DATA 0x01 /* Incoming frame contained data. */
#define FLAG_WIN_UPDATE 0x02 /* Incoming ACK was a window update. */ #define FLAG_WIN_UPDATE 0x02 /* Incoming ACK was a window update. */
......
...@@ -78,8 +78,8 @@ ...@@ -78,8 +78,8 @@
#include <linux/proc_fs.h> #include <linux/proc_fs.h>
#include <linux/seq_file.h> #include <linux/seq_file.h>
int sysctl_tcp_tw_reuse; int sysctl_tcp_tw_reuse __read_mostly;
int sysctl_tcp_low_latency; int sysctl_tcp_low_latency __read_mostly;
/* Check TCP sequence numbers in ICMP packets. */ /* Check TCP sequence numbers in ICMP packets. */
#define ICMP_MIN_LENGTH 8 #define ICMP_MIN_LENGTH 8
......
...@@ -34,8 +34,8 @@ ...@@ -34,8 +34,8 @@
#define SYNC_INIT 1 #define SYNC_INIT 1
#endif #endif
int sysctl_tcp_syncookies = SYNC_INIT; int sysctl_tcp_syncookies __read_mostly = SYNC_INIT;
int sysctl_tcp_abort_on_overflow; int sysctl_tcp_abort_on_overflow __read_mostly;
struct inet_timewait_death_row tcp_death_row = { struct inet_timewait_death_row tcp_death_row = {
.sysctl_max_tw_buckets = NR_FILE * 2, .sysctl_max_tw_buckets = NR_FILE * 2,
......
...@@ -43,24 +43,24 @@ ...@@ -43,24 +43,24 @@
#include <linux/smp_lock.h> #include <linux/smp_lock.h>
/* People can turn this off for buggy TCP's found in printers etc. */ /* People can turn this off for buggy TCP's found in printers etc. */
int sysctl_tcp_retrans_collapse = 1; int sysctl_tcp_retrans_collapse __read_mostly = 1;
/* People can turn this on to work with those rare, broken TCPs that /* People can turn this on to work with those rare, broken TCPs that
* interpret the window field as a signed quantity. * interpret the window field as a signed quantity.
*/ */
int sysctl_tcp_workaround_signed_windows = 0; int sysctl_tcp_workaround_signed_windows __read_mostly = 0;
/* This limits the percentage of the congestion window which we /* This limits the percentage of the congestion window which we
* will allow a single TSO frame to consume. Building TSO frames * will allow a single TSO frame to consume. Building TSO frames
* which are too large can cause TCP streams to be bursty. * which are too large can cause TCP streams to be bursty.
*/ */
int sysctl_tcp_tso_win_divisor = 3; int sysctl_tcp_tso_win_divisor __read_mostly = 3;
int sysctl_tcp_mtu_probing = 0; int sysctl_tcp_mtu_probing __read_mostly = 0;
int sysctl_tcp_base_mss = 512; int sysctl_tcp_base_mss __read_mostly = 512;
/* By default, RFC2861 behavior. */ /* By default, RFC2861 behavior. */
int sysctl_tcp_slow_start_after_idle = 1; int sysctl_tcp_slow_start_after_idle __read_mostly = 1;
static void update_send_head(struct sock *sk, struct tcp_sock *tp, static void update_send_head(struct sock *sk, struct tcp_sock *tp,
struct sk_buff *skb) struct sk_buff *skb)
......
...@@ -23,14 +23,14 @@ ...@@ -23,14 +23,14 @@
#include <linux/module.h> #include <linux/module.h>
#include <net/tcp.h> #include <net/tcp.h>
int sysctl_tcp_syn_retries = TCP_SYN_RETRIES; int sysctl_tcp_syn_retries __read_mostly = TCP_SYN_RETRIES;
int sysctl_tcp_synack_retries = TCP_SYNACK_RETRIES; int sysctl_tcp_synack_retries __read_mostly = TCP_SYNACK_RETRIES;
int sysctl_tcp_keepalive_time = TCP_KEEPALIVE_TIME; int sysctl_tcp_keepalive_time __read_mostly = TCP_KEEPALIVE_TIME;
int sysctl_tcp_keepalive_probes = TCP_KEEPALIVE_PROBES; int sysctl_tcp_keepalive_probes __read_mostly = TCP_KEEPALIVE_PROBES;
int sysctl_tcp_keepalive_intvl = TCP_KEEPALIVE_INTVL; int sysctl_tcp_keepalive_intvl __read_mostly = TCP_KEEPALIVE_INTVL;
int sysctl_tcp_retries1 = TCP_RETR1; int sysctl_tcp_retries1 __read_mostly = TCP_RETR1;
int sysctl_tcp_retries2 = TCP_RETR2; int sysctl_tcp_retries2 __read_mostly = TCP_RETR2;
int sysctl_tcp_orphan_retries; int sysctl_tcp_orphan_retries __read_mostly;
static void tcp_write_timer(unsigned long); static void tcp_write_timer(unsigned long);
static void tcp_delack_timer(unsigned long); static void tcp_delack_timer(unsigned long);
......
...@@ -146,7 +146,7 @@ static int ipv6_chk_same_addr(const struct in6_addr *addr, struct net_device *de ...@@ -146,7 +146,7 @@ static int ipv6_chk_same_addr(const struct in6_addr *addr, struct net_device *de
static ATOMIC_NOTIFIER_HEAD(inet6addr_chain); static ATOMIC_NOTIFIER_HEAD(inet6addr_chain);
struct ipv6_devconf ipv6_devconf = { struct ipv6_devconf ipv6_devconf __read_mostly = {
.forwarding = 0, .forwarding = 0,
.hop_limit = IPV6_DEFAULT_HOPLIMIT, .hop_limit = IPV6_DEFAULT_HOPLIMIT,
.mtu6 = IPV6_MIN_MTU, .mtu6 = IPV6_MIN_MTU,
...@@ -177,7 +177,7 @@ struct ipv6_devconf ipv6_devconf = { ...@@ -177,7 +177,7 @@ struct ipv6_devconf ipv6_devconf = {
#endif #endif
}; };
static struct ipv6_devconf ipv6_devconf_dflt = { static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = {
.forwarding = 0, .forwarding = 0,
.hop_limit = IPV6_DEFAULT_HOPLIMIT, .hop_limit = IPV6_DEFAULT_HOPLIMIT,
.mtu6 = IPV6_MIN_MTU, .mtu6 = IPV6_MIN_MTU,
...@@ -3665,7 +3665,7 @@ static struct addrconf_sysctl_table ...@@ -3665,7 +3665,7 @@ static struct addrconf_sysctl_table
ctl_table addrconf_conf_dir[2]; ctl_table addrconf_conf_dir[2];
ctl_table addrconf_proto_dir[2]; ctl_table addrconf_proto_dir[2];
ctl_table addrconf_root_dir[2]; ctl_table addrconf_root_dir[2];
} addrconf_sysctl = { } addrconf_sysctl __read_mostly = {
.sysctl_header = NULL, .sysctl_header = NULL,
.addrconf_vars = { .addrconf_vars = {
{ {
......
...@@ -67,7 +67,7 @@ MODULE_AUTHOR("Cast of dozens"); ...@@ -67,7 +67,7 @@ MODULE_AUTHOR("Cast of dozens");
MODULE_DESCRIPTION("IPv6 protocol stack for Linux"); MODULE_DESCRIPTION("IPv6 protocol stack for Linux");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
int sysctl_ipv6_bindv6only; int sysctl_ipv6_bindv6only __read_mostly;
/* The inetsw table contains everything that inet_create needs to /* The inetsw table contains everything that inet_create needs to
* build a new socket. * build a new socket.
......
...@@ -151,7 +151,7 @@ static int is_ineligible(struct sk_buff *skb) ...@@ -151,7 +151,7 @@ static int is_ineligible(struct sk_buff *skb)
return 0; return 0;
} }
static int sysctl_icmpv6_time = 1*HZ; static int sysctl_icmpv6_time __read_mostly = 1*HZ;
/* /*
* Check the ICMP output rate limit * Check the ICMP output rate limit
......
...@@ -171,7 +171,7 @@ static int ip6_mc_leave_src(struct sock *sk, struct ipv6_mc_socklist *iml, ...@@ -171,7 +171,7 @@ static int ip6_mc_leave_src(struct sock *sk, struct ipv6_mc_socklist *iml,
#define IPV6_MLD_MAX_MSF 64 #define IPV6_MLD_MAX_MSF 64
int sysctl_mld_max_msf = IPV6_MLD_MAX_MSF; int sysctl_mld_max_msf __read_mostly = IPV6_MLD_MAX_MSF;
/* /*
* socket join on multicast group * socket join on multicast group
......
...@@ -53,10 +53,10 @@ ...@@ -53,10 +53,10 @@
#include <net/ndisc.h> #include <net/ndisc.h>
#include <net/addrconf.h> #include <net/addrconf.h>
int sysctl_ip6frag_high_thresh = 256*1024; int sysctl_ip6frag_high_thresh __read_mostly = 256*1024;
int sysctl_ip6frag_low_thresh = 192*1024; int sysctl_ip6frag_low_thresh __read_mostly = 192*1024;
int sysctl_ip6frag_time = IPV6_FRAG_TIMEOUT; int sysctl_ip6frag_time __read_mostly = IPV6_FRAG_TIMEOUT;
struct ip6frag_skb_cb struct ip6frag_skb_cb
{ {
...@@ -152,7 +152,7 @@ static unsigned int ip6qhashfn(u32 id, struct in6_addr *saddr, ...@@ -152,7 +152,7 @@ static unsigned int ip6qhashfn(u32 id, struct in6_addr *saddr,
} }
static struct timer_list ip6_frag_secret_timer; static struct timer_list ip6_frag_secret_timer;
int sysctl_ip6frag_secret_interval = 10 * 60 * HZ; int sysctl_ip6frag_secret_interval __read_mostly = 10 * 60 * HZ;
static void ip6_frag_secret_rebuild(unsigned long dummy) static void ip6_frag_secret_rebuild(unsigned long dummy)
{ {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册