[PATCH v11 09/23] fs/resctrl: Remove redundant calls to resctrl_mon_capable()

From: Tony Luck

Date: Mon Aug 31 2026 - 16:30:07 EST


resctrl_mon_capable() indicates whether any monitoring resources
are enabled on the system. It does this by scanning all resources.

Redundant calls to resctrl_arch_mon_capable() in hot code paths should
be eliminated. There are two prime examples:

1) mbm_handle_overflow()
This function is called once per second from worker threads running on
each L3 domain. The call is clearly redundant because worker threads are
only created if the MBM monitoring feature is enabled.

2) is_rmid_match()
This is called for every task on the system so making it less expensive is
appealing. The call is redundant because the function also checks "r->type
== RDTMON_GROUP" and this type of group can only be created on systems that
support monitoring.

Remove the call to resctrl_mon_capable() from both of these
functions.

Signed-off-by: Tony Luck <tony.luck@xxxxxxxxx>
---
v11:
Update commit message with performace impact justifying the is_rmid_match() case.

fs/resctrl/monitor.c | 2 +-
fs/resctrl/rdtgroup.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/resctrl/monitor.c b/fs/resctrl/monitor.c
index 362737e13cd3..02e81fc82b14 100644
--- a/fs/resctrl/monitor.c
+++ b/fs/resctrl/monitor.c
@@ -888,7 +888,7 @@ void mbm_handle_overflow(struct work_struct *work)
* If the filesystem has been unmounted this work no longer needs to
* run.
*/
- if (!resctrl_mounted || !resctrl_mon_capable())
+ if (!resctrl_mounted)
goto out_unlock;

/*
diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c
index 79977200b1a0..4f8a510be8ec 100644
--- a/fs/resctrl/rdtgroup.c
+++ b/fs/resctrl/rdtgroup.c
@@ -691,7 +691,7 @@ static bool is_closid_match(struct task_struct *t, struct rdtgroup *r)

static bool is_rmid_match(struct task_struct *t, struct rdtgroup *r)
{
- return (resctrl_mon_capable() && (r->type == RDTMON_GROUP) &&
+ return ((r->type == RDTMON_GROUP) &&
resctrl_arch_match_rmid(t, r->mon.parent->closid,
r->mon.rmid));
}
--
2.55.0