vmstat: create separate function to fold per cpu diffs into local counters
authorChristoph Lameter <[email protected]>
Wed, 11 Sep 2013 21:21:30 +0000 (14:21 -0700)
committerLinus Torvalds <[email protected]>
Wed, 11 Sep 2013 22:57:31 +0000 (15:57 -0700)
commit2bb921e526656556e68f99f5f15a4a1bf2691844
tree91b009a59938d7713de0781df9d5c0c2eacfc51f
parentd2cf5ad6312ca9913464fac40fb47ba47ad945c4
vmstat: create separate function to fold per cpu diffs into local counters

The main idea behind this patchset is to reduce the vmstat update overhead
by avoiding interrupt enable/disable and the use of per cpu atomics.

This patch (of 3):

It is better to have a separate folding function because
refresh_cpu_vm_stats() also does other things like expire pages in the
page allocator caches.

If we have a separate function then refresh_cpu_vm_stats() is only called
from the local cpu which allows additional optimizations.

The folding function is only called when a cpu is being downed and
therefore no other processor will be accessing the counters.  Also
simplifies synchronization.

[[email protected]: fix UP build]
Signed-off-by: Christoph Lameter <[email protected]>
Cc: KOSAKI Motohiro <[email protected]>
CC: Tejun Heo <[email protected]>
Cc: Joonsoo Kim <[email protected]>
Cc: Alexey Dobriyan <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
include/linux/vmstat.h
mm/page_alloc.c
mm/vmstat.c