On Tue, 3 Mar 2026, Reinette Chatre wrote:
> The L3 CAT test loads a buffer into cache that is proportional to the L3
> size allocated for the workload and measures cache misses when accessing
> the buffer as a test of L3 occupancy. When loading the buffer it can be
> assumed that a portion of the buffer will be loaded into the L2 cache and
> depending on cache design may not be present in L3. It is thus possible
> for data to not be in L3 but also not trigger an L3 cache miss when
> accessed.
>
> Reduce impact of L2 on the L3 CAT test by, if L2 allocation is supported,
> minimizing the portion of L2 that the workload can allocate into. This
> encourages most of buffer to be loaded into L3 and support better
> comparison between buffer size, cache portion, and cache misses when
> accessing the buffer.
>
> Signed-off-by: Reinette Chatre <[email protected]>
> ---
> tools/testing/selftests/resctrl/cat_test.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/tools/testing/selftests/resctrl/cat_test.c
> b/tools/testing/selftests/resctrl/cat_test.c
> index 6aac03147d41..26062684a9f4 100644
> --- a/tools/testing/selftests/resctrl/cat_test.c
> +++ b/tools/testing/selftests/resctrl/cat_test.c
> @@ -157,6 +157,12 @@ static int cat_test(const struct resctrl_test *test,
> if (ret)
> goto reset_affinity;
>
> + if (!strcmp(test->resource, "L3") && resctrl_resource_exists("L2")) {
> + ret = write_schemata(param->ctrlgrp, "0x1", uparams->cpu, "L2");
> + if (ret)
> + goto reset_affinity;
> + }
This looks similar to what you did in the CMT test. Maybe add a common
function for minimizing L2 cache size so it doesn't have to duplicated to
all L3 related tests.
> +
> perf_event_attr_initialize(&pea, PERF_COUNT_HW_CACHE_MISSES);
> pe_fd = perf_open(&pea, bm_pid, uparams->cpu);
> if (pe_fd < 0) {
>
--
i.