From: Reinette Chatre <reinette.chatre@intel.com>
To: Babu Moger <babu.moger@amd.com>, "Moger, Babu" <bmoger@amd.com>,
"Luck, Tony" <tony.luck@intel.com>
Cc: Ben Horgan <ben.horgan@arm.com>,
James Morse <james.morse@arm.com>,
"Dave Martin" <Dave.Martin@arm.com>,
Drew Fustini <fustini@kernel.org>,
Fenghua Yu <fenghuay@nvidia.com>, Chen Yu <yu.c.chen@intel.com>,
Borislav Petkov <bp@alien8.de>,
Thomas Gleixner <tglx@linutronix.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
Peter Newman <peternewman@google.com>,
"x86@kernel.org" <x86@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [RFC v2] arm,x86,fs/resctrl: Generic schema description Proof of Concept
Date: Mon, 10 Aug 2026 21:06:12 -0700 [thread overview]
Message-ID: <2f371ddd-75ea-48ce-a472-59c4d8a7be97@intel.com> (raw)
In-Reply-To: <c553f28a-e499-44ee-a2ef-99e48a51d171@amd.com>
Hi Babu,
On 8/10/26 11:52 AM, Babu Moger wrote:
> On 8/7/26 17:53, Reinette Chatre wrote:
...
>>
>> Second, how to name these resources/controls needs to be decided. This is what prompted my question
>> about future considerations to you because my original proposal in
>> https://lore.kernel.org/lkml/f5b6cec4-03d8-4a11-884d-d4579dab6b22@intel.com/
>> was able to convey the resource and allocation scope via info hierarchy but it used the same
>> name in the schemata file that Ben highlighted could be problematic.
>>
>> I believe there is agreement that the resource should include the resource scope in its name. This
>> is currently done for L2 and L3, and planned to be done for MB_NODE (the "MB" resource does not have
>> "L3" in its name, this cannot be changed now, but "MB" resource is implicitly "L3" scope). The "NODE"
>> in MB_NODE is thus memory bandwidth allocation at NUMA node scope - "NODE" in MB_NODE is the *resource*
>> scope.
>>
>> Considering this I do not think that GLBE should use MB_NODE as you also state above. Since it does
>> not allocate memory bandwidth *resource* at node scope.
>>
>> We also discussed before (https://lore.kernel.org/lkml/c78169bc-e2d6-4583-96ec-09fa6dd6653a@intel.com/ )
>> of having the control's scope part of the control's name.
>>
>> We could have a rule of thumb to include both resource scope and control scope in the
>> control name but only one instance is displayed if they are the same.
>>
>> For example, what do you think of something like below as an alternate proposal of what I mentioned in
>> https://lore.kernel.org/lkml/f5b6cec4-03d8-4a11-884d-d4579dab6b22@intel.com/:
>>
>> GLBE (booted with NPS < 4):
>> info/
>> └── MB/ /* memory bandwidth allocation implicitly/legacy at L3 scope, think of this as "MB_L3" */
>> └── schemata/
>> ├── MB/ /* control scope = L3 */
>> └── MB_L3NODE/ /* control scope = node ("L3" resource scope + "node" control scope) */
>>
>> GLBE (booted with NPS = 4):
>> info/
>> └── MB/ /* memory bandwidth allocation implicitly/legacy at L3 scope, think of this as "MB_L3" */
>> └── schemata/
>> ├── MB/ /* control scope = L3 */
>> └── MB_L3SYSTEM/ /* control scope = system ("L3" resource scope + "system" control scope*/
>
>
> Can the names here MB_L3NODE and MB_L3SYSTEM be simplified to
> MB_NODE and MB_SYSTEM? The L3 scope is already implied by the higher-
> level hierarchy.
This would be the alternate proposal I mention above but Ben highlighted in
https://lore.kernel.org/lkml/1444b515-752e-4167-87f5-30ace189e05c@arm.com/ that such naming would result in
a conflict if GLBE is ever combined with some actual node based MBA that would result in two controllers named
"MB_NODE" that need to be accommodated by schemata file. This is what prompted my question to
you with the conclusion that we cannot predict the future. The above proposal prepares resctrl for some
hypothetical scenario where a GLBE style system also supports actual node MBA.
>> ii
>> MPAM MSC:
>> info/
>> ├── MB/ /* memory bandwidth allocation at L3 scope */
>> │ └── schemata/
>> │ └── MB/ /* control scope = L3 */
>> └── MB_NODE/ /* memory bandwidth allocation at node scope */
>> └── schemata/
>> └── MB_NODE/ /* control scope = node */
>>
>> The GLBE controls make it clear that the *same* resource is allocated using two
>> different controls that have different scope. This creates an implicit dependency
>> between the two that is not quite captured but having two controls for the same
>> resource would already give user space some insight that their control values
>> need to be considered with care.
>>
>> I'd appreciate your, Ben's, and anybody else's thoughts on this.
>
> Looks good to me.
>
>
> There is one more point I'd like to bring up regarding GLBE.
>
> Consider the following example with 16 CPUs, 2 NUMA domains, and 2 L3 domains per NUMA node:
>
> NUMA0
> ├─ L3_0: CPUs 0-3
> └─ L3_1: CPUs 4-7
>
> NUMA1
> ├─ L3_2: CPUs 8-11
> └─ L3_3: CPUs 12-15
>
>
> When updating NUMA0, we need to update one CPU from each L3 domain.
> However, this relationship is not currently represented in our
> domain data structure. The domain's hdr.cpumask simply contains
> CPUs 0-7 and does not provide any information about the underlying
> L3-domain boundaries.
I expect that the domain associated with a control that has node scope would include all
CPUs associated with that node in is cpumask. In your example I thus expect there to
only be two domains, domain ID 0 would have CPUs 0 - 7 in its cpumask and domain ID 1
would have CPUs 8 to 15 in its cpumask.
>
> This was the reason we needed additional processing while programming the MSRs:
>
> https://lore.kernel.org/lkml/a2a06bd290e68f902be9e7cc3ad35f0a2211b950.1776980182.git.babu.moger@amd.com/
>
> I'm wondering whether this relationship should be represented
> explicitly in the control data structure, or whether that would be
> exposing details that are too specific to a particular hardware
> implementation.
From what I understand this is already accommodated. What am I missing? Reinette
next prev parent reply other threads:[~2026-08-11 4:06 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-04 5:26 [RFC v2] arm,x86,fs/resctrl: Generic schema description Proof of Concept Reinette Chatre
2026-08-05 16:59 ` Ben Horgan
2026-08-05 23:57 ` Reinette Chatre
2026-08-06 17:04 ` Luck, Tony
2026-08-06 17:11 ` Reinette Chatre
2026-08-07 14:14 ` Moger, Babu
2026-08-07 15:35 ` Reinette Chatre
2026-08-07 18:33 ` Moger, Babu
2026-08-07 22:53 ` Reinette Chatre
2026-08-10 18:52 ` Babu Moger
2026-08-11 4:06 ` Reinette Chatre [this message]
2026-08-07 15:35 ` Chen, Yu C
2026-08-07 17:57 ` Moger, Babu
2026-08-10 2:05 ` Chen, Yu C
2026-08-10 15:53 ` Reinette Chatre
2026-08-10 17:23 ` Chen, Yu C
2026-08-10 18:09 ` Reinette Chatre
2026-08-11 3:49 ` Chen, Yu C
2026-08-10 2:55 ` Fenghua Yu
2026-08-10 3:02 ` Chen, Yu C
2026-08-10 3:25 ` Fenghua Yu
2026-08-10 5:24 ` Chen, Yu C
2026-08-10 15:53 ` Reinette Chatre
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2f371ddd-75ea-48ce-a472-59c4d8a7be97@intel.com \
--to=reinette.chatre@intel.com \
--cc=Dave.Martin@arm.com \
--cc=babu.moger@amd.com \
--cc=ben.horgan@arm.com \
--cc=bmoger@amd.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=fenghuay@nvidia.com \
--cc=fustini@kernel.org \
--cc=james.morse@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=peternewman@google.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
--cc=yu.c.chen@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.