Re: [PATCH v6 2/2] x86,fs/resctrl: Keep mbm_assign_mode in default mode at boot
From: Reinette Chatre
Date: Fri Oct 30 2026 - 18:08:33 EST
Hi Babu,
On 10/30/26 1:28 PM, Babu Moger wrote:
> The mbm_event mode assigns hardware MBM counters to RMID/event pairs.
> It is intended for deployments that need to manage counter assignment
> on platforms where the number of monitoring groups exceeds the available
> hardware counters. Hardware counters are scarce on these platforms, so
> mbm_event mode suits workflows that monitor a subset of groups at a time
> and rotate assignments as needed.
>
> x86 resctrl enables the mbm_event mode by default on hardware that supports
> it. This breaks the pqos tool [1], which assumes the historical default
> mode. It creates 16 or more monitoring groups and uses two counters per
> group. On a platform with 32 counters per domain, that exhausts the
> mbm_event counters pool, causing additional groups to read "Unassigned".
> pqos interprets a non-numeric event read as zero bandwidth and reports 0
> MB/s for those groups:
>
> $ sudo pqos -m all:0-4
> CORE IPC MISSES LLC[KB] MBL[MB/s] MBR[MB/s]
> 0 0.69 16k 192.0 0.0 0.0
> 1 0.40 3k 0.0 0.0 0.0
> 2 0.44 1k 64.0 0.0 0.0
> 3 0.39 1k 64.0 0.0 0.0
> 4 0.43 1k 0.0 0.0 0.0
>
> Leave mbm_assign_mode in default mode during initialization. Default mode
> uses one counter per monitoring group. On existing AMD platforms, the
> default active counters pool is 64 and may be larger on newer hardware.
> The active counters pool is the number of counters that the hardware can
> actively track in default mode.
>
> Deployments within the active counters pool receive accurate bandwidth
> measurements in the default mode. Users can create more monitoring groups
> (for example, 4096 on current hardware) than there are active counters in
> the pool. Beyond that pool, readings may be misleading or report as
> "Unavailable", with no user-visible indication.
>
> Default mode is still limited once the number of monitoring groups exceeds
> that active counters pool. After hardware re-allocates a counter, a read
> may return "Unavailable". pqos still treats "Unavailable" as zero.
> Successive reads can be a count, "Unavailable", then another count. pqos
> treats those jumps as wraparound and can report an inconsistent rate:
>
> $ sudo pqos -m all:0-4
> CORE IPC MISSES LLC[KB] MBL[MB/s] MBR[MB/s]
> 0 0.76 60k 32.0 0.0 0.0
> 1 0.45 1k 32.0 0.0 0.0
> 2 1.57 107k 64.0 0.0 17592186044184.9
> 3 1.62 276k 4928.0 3.2 0.5
>
> Users that need stable measurements beyond the active counters pool should
> use mbm_event mode and rotate assignments as needed. Enable it with:
>
> # echo mbm_event > /sys/fs/resctrl/info/L3_MON/mbm_assign_mode
>
> Fixes: 0f1576e43adc ("x86/resctrl: Configure mbm_event mode if supported")
> Closes: https://github.com/intel/intel-cmt-cat/issues/311
> Signed-off-by: Babu Moger <babu.moger@xxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx
> Link: https://github.com/intel/intel-cmt-cat # [1]
> ---
To help future readers understand how we landed on this I think it may be useful
to add a link to the decision that resulted in this fix. For example:
...
Leave mbm_assign_mode in default mode during initialization as decided in [2].
...
Link: https://lore.kernel.org/20260804191608.GDanI6eK2Q07w6pNcb@fat_crate.local # [2]
| Reviewed-by: Reinette Chatre <reinette.chatre@xxxxxxxxx>
Reinette