aboutsummaryrefslogtreecommitdiffstats
path: root/mm/slab.c
diff options
context:
space:
mode:
authorChristoph Lameter <clameter@sgi.com>2007-05-09 05:35:12 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-09 15:30:56 -0400
commitd1187ed21026fd512b87851d0ca26d9ae16f9059 (patch)
tree35d77758f134f3b69d3e00ca042a5d5ca6a59373 /mm/slab.c
parent455c017ae3934797653549704c286e7bcc3a9397 (diff)
vmstat: use our own timer events
vmstat is currently using the cache reaper to periodically bring the statistics up to date. The cache reaper does only exists in SLUB as a way to provide compatibility with SLAB. This patch removes the vmstat calls from the slab allocators and provides its own handling. The advantage is also that we can use a different frequency for the updates. Refreshing vm stats is a pretty fast job so we can run this every second and stagger this by only one tick. This will lead to some overlap in large systems. F.e a system running at 250 HZ with 1024 processors will have 4 vm updates occurring at once. However, the vm stats update only accesses per node information. It is only necessary to stagger the vm statistics updates per processor in each node. Vm counter updates occurring on distant nodes will not cause cacheline contention. We could implement an alternate approach that runs the first processor on each node at the second and then each of the other processor on a node on a subsequent tick. That may be useful to keep a large amount of the second free of timer activity. Maybe the timer folks will have some feedback on this one? [jirislaby@gmail.com: add missing break] Cc: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Jiri Slaby <jirislaby@gmail.com> Cc: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/slab.c')
-rw-r--r--mm/slab.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/mm/slab.c b/mm/slab.c
index 6f3d6e240c61..e50908b2bfac 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -4156,7 +4156,6 @@ next:
4156 check_irq_on(); 4156 check_irq_on();
4157 mutex_unlock(&cache_chain_mutex); 4157 mutex_unlock(&cache_chain_mutex);
4158 next_reap_node(); 4158 next_reap_node();
4159 refresh_cpu_vm_stats(smp_processor_id());
4160out: 4159out:
4161 /* Set up the next iteration */ 4160 /* Set up the next iteration */
4162 schedule_delayed_work(work, round_jiffies_relative(REAPTIMEOUT_CPUC)); 4161 schedule_delayed_work(work, round_jiffies_relative(REAPTIMEOUT_CPUC));