Each page allocation updates a set of per-zone statistics with a call to zone_statistics(). As discussed in 2017 MM summit. A link to the MM summit slides: http://people.netfilter.org/hawk/presentations/MM-summit2017/MM-summit2017 -JesperBrouer.pdf This is the second step for optimizing zone statistics, the first patch introduces a tunable interface that allow VM statistics configurable(see the first patch for details): if vmstat_mode = auto, automatic detection of VM statistics if vmstat_mode = strict, keep all the VM statistics if vmstat_mode = coarse, ignore unimportant VM statistics As suggested by Dave Hansen and Ying Huang. With this interface, the second patch handles numa counters distinctively according to different vmstat mode, and the test result shows about 4.8% (185->176) drop of cpu cycles with single thread and 8.1% (343->315) drop of of cpu cycles with 88 threads for single page allocation. The third patch updates ABI document accordingly. Kemi Wang (3): mm, sysctl: make VM stats configurable mm: Handle numa statistics distinctively based-on different VM stats modes sysctl/vm.txt: Update document Documentation/sysctl/vm.txt | 26 ++++++++++ drivers/base/node.c | 2 + include/linux/vmstat.h | 20 +++++++ kernel/sysctl.c | 7 +++ mm/page_alloc.c | 13 +++++ mm/vmstat.c | 124 ++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 192 insertions(+) -- 2.7.4