Re: [patch v5] mm: vmstat_kunit: add synthetic benchmark for mm stats

From: David Hildenbrand (Arm)

Date: Tue Oct 20 2026 - 04:00:25 EST


On 10/17/26 00:35, David Rientjes wrote:
> 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.

Works for me. The tests are rather small and I see value in them.


--
Cheers,

David