Re: [PATCH v2 1/9] selftests/resctrl: Improve accuracy of cache occupancy test

Ilpo Järvinen
2026-03-09T07:44:11Z

[-- Attachment #1: Type: text/plain, Size: 2897 bytes --]

On Fri, 6 Mar 2026, Reinette Chatre wrote:
> On 3/6/26 1:47 AM, Ilpo Järvinen wrote:
> > On Tue, 3 Mar 2026, Reinette Chatre wrote:
> >
> >> Dave Martin reported inconsistent CMT test failures. In one experiment
> >> the first run of the CMT test failed because of too large (24%) difference
> >> between measured and achievable cache occupancy while the second run passed
> >> with an acceptable 4% difference.
> >>
> >> The CMT test is susceptible to interference from the rest of the system.
> >> This can be demonstrated with a utility like stress-ng by running the CMT
> >> test while introducing cache misses using:
> >>
> >> stress-ng --matrix-3d 0 --matrix-3d-zyx
> >>
> >> Below shows an example of the CMT test failing because of a significant
> >> difference between measured and achievable cache occupancy when run with
> >> interference:
> >> # Starting CMT test ...
> >> # Mounting resctrl to "/sys/fs/resctrl"
> >> # Cache size :56623104
> >> # Writing benchmark parameters to resctrl FS
> >> # Benchmark PID: 3275
> >> # Checking for pass/fail
> >> # Fail: Check cache miss rate within 15%
> >> # Percent diff=97
> >> # Number of bits: 5
> >> # Average LLC val: 501350
> >> # Cache span (bytes): 23592960
> >> not ok 1 CMT: test
> >>
> >> The CMT test creates a new control group that is also capable of monitoring
> >> and assigns the workload to it. The workload allocates a buffer that by
> >> default fills a portion of the L3 and keeps reading from the buffer,
> >> measuring the L3 occupancy at intervals. The test passes if the workload's
> >> L3 occupancy is within 15% of the buffer size.
> >>
> >> By not adjusting any capacity bitmasks the workload shares the cache with
> >> the rest of the system. Any other task that may be running could evict
> >> the workload's data from the cache causing it to have low cache occupancy.
> >>
> >> Reduce interference from the rest of the system by ensuring that the
> >> workload's control group uses the capacity bitmask found in the user
> >> parameters for L3 and that the rest of the system can only allocate into
> >> the inverse of the workload's L3 cache portion. Other tasks can thus no
> >> longer evict the workload's data from L3.
> >>
> >> Take the L2 cache into account to further improve test accuracy.
> >> By default the buffer size is the same as the L3 portion that the workload
> >> can allocate into. This buffer size does not take into account that some
> >> of the workload's data may land in L2/L1. Address this in two ways:
> >> - Reduce the amount of L2 cache the workload can allocate into to the
> >
> > "into to the" sounds wrong.
>
> How about:
> "Reduce the workload's L2 cache allocation to the minimum on systems that
> support L2 cache allocation."

Works for me.

--
i.