diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2011-05-19 01:14:23 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-05-19 16:21:22 -0400 |
commit | be281e554e2a4cf2478df7a8b8926c89454bccfa (patch) | |
tree | 7e80e5eb0aa76efcdb39a06413ff9e0ae73de35a /include/net/if_inet6.h | |
parent | 75e308c894c4a5e47c005b8e821ae5f539ad2ef3 (diff) | |
download | linux-be281e554e2a4cf2478df7a8b8926c89454bccfa.tar.gz linux-be281e554e2a4cf2478df7a8b8926c89454bccfa.tar.bz2 linux-be281e554e2a4cf2478df7a8b8926c89454bccfa.zip |
ipv6: reduce per device ICMP mib sizes
ipv6 has per device ICMP SNMP counters, taking too much space because
they use percpu storage.
needed size per device is :
(512+4)*sizeof(long)*number_of_possible_cpus*2
On a 32bit kernel, 16 possible cpus, this wastes more than 64kbytes of
memory per ipv6 enabled network device, taken in vmalloc pool.
Since ICMP messages are rare, just use shared counters (atomic_long_t)
Per network space ICMP counters are still using percpu memory, we might
also convert them to shared counters in a future patch.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: Denys Fedoryshchenko <denys@visp.net.lb>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/if_inet6.h')
-rw-r--r-- | include/net/if_inet6.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/net/if_inet6.h b/include/net/if_inet6.h index 0c603fe65377..11cf373970a9 100644 --- a/include/net/if_inet6.h +++ b/include/net/if_inet6.h @@ -154,8 +154,8 @@ struct ifacaddr6 { struct ipv6_devstat { struct proc_dir_entry *proc_dir_entry; DEFINE_SNMP_STAT(struct ipstats_mib, ipv6); - DEFINE_SNMP_STAT(struct icmpv6_mib, icmpv6); - DEFINE_SNMP_STAT(struct icmpv6msg_mib, icmpv6msg); + DEFINE_SNMP_STAT_ATOMIC(struct icmpv6_mib_device, icmpv6dev); + DEFINE_SNMP_STAT_ATOMIC(struct icmpv6msg_mib_device, icmpv6msgdev); }; struct inet6_dev { |