Re: [patch v5] mm: vmstat_kunit: add synthetic benchmark for mm stats
From: David Rientjes
Date: Fri Oct 16 2026 - 18:35:40 EST
On Fri, 9 Oct 2026, David Rientjes wrote:
> From: Christoph Lameter <cl@xxxxxxxxxx>
>
> Add a synthetic benchmark that can be used to measure performance of MM
> statistics. This is used to analyze any improvements or regressions in
> functions that are frequently used in hot code paths.
>
> This is the first of three tests that measure the execution times of
> critical MM functions anticipated to be used by developers to measure the
> impact of any core changes that would end up causing workload performance
> issues. Vmstats are embedded into MM hotpaths, so any regression can
> cause performance and scalability impact for users. Google has carried
> these tests internally and kept them updated since Christoph posted them
> back in 2009 for this purpose.
>
> This can also be used to detect regressions over time, from kernel
> version to kernel version, independent of development use cases.
>
> The test is run by KUnit or doing modprobe vmstat_kunit directly.
>
> Sample output:
> KTAP version 1
> 1..1
> KTAP version 1
> # Subtest: vmstat
> # module: vmstat_kunit
> 1..3
> # vmstat_test_inc_dec_zone_page_state: 10000 ops: inc_zone_page_state -> 8 cycles (4 ns/op), dec_zone_page_state -> 9 cycles (4 ns/op)
> ok 1 vmstat_test_inc_dec_zone_page_state
> # vmstat_test_interleaved_zone_page_state: 10000 ops: inc/dec pair -> 17 cycles (8 ns/op)
> ok 2 vmstat_test_interleaved_zone_page_state
> # vmstat_test_count_vm_event: 10000 ops: count_vm_event -> 4 cycles (2 ns/op)
> ok 3 vmstat_test_count_vm_event
> # vmstat: pass:3 fail:0 skip:0 total:3
> # Totals: pass:3 fail:0 skip:0 total:3
> ok 1 vmstat
>
> Assisted-by: Gemini:gemini-3.8-flash
> Signed-off-by: Christoph Lameter <cl@xxxxxxxxxx>
> Signed-off-by: David Rientjes <rientjes@xxxxxxxxxx>
> ---
> v5:
> - added dependency on CONFIG_VM_EVENT_COUNTERS
> - expanded commit description
>
> Once we're happy with this change, I'll apply the same treatment to the
> proposed pgalloc and slab tests.
>
I've added the rationale for the change to the commit description as
primairly being used by developers to benchmark and monitor any
regressions in functions that are known to be super hot and impact
workload performance.
This is the simplest of the three tests that Christoph provided back in
2009, the others are pgalloc and slab tests, see
https://marc.info/?l=linux-mm&m=178547194364290 and
https://marc.info/?l=linux-mm&m=178547193264283 for those. Based on the
feedback to move to kunit, I forked this one off independently because it
was the simplest to address all the feedback and pave the way for the
other two to be upstreamed afterwards.
Is this acceptable for merge? If we're happy with this, I'll move onto
the pgalloc and slab variants.