Re: [RFC PATCH 13/19] x86/resctrl: Add PLZA state tracking and context switch handling

From: Ben Horgan

Date: Thu Feb 12 2026 - 05:01:01 EST


Hi Babu,

On 1/28/26 16:01, Moger, Babu wrote:
> Hi Tony,
>
> Thanks for the comment.
>
> On 1/27/2026 4:30 PM, Luck, Tony wrote:
>> On Wed, Jan 21, 2026 at 03:12:51PM -0600, Babu Moger wrote:
>>> @@ -138,6 +143,20 @@ static inline void __resctrl_sched_in(struct
>>> task_struct *tsk)
>>>           state->cur_rmid = rmid;
>>>           wrmsr(MSR_IA32_PQR_ASSOC, rmid, closid);
>>>       }
>>> +
>>> +    if (static_branch_likely(&rdt_plza_enable_key)) {
>>> +        tmp = READ_ONCE(tsk->plza);
>>> +        if (tmp)
>>> +            plza = tmp;
>>> +
>>> +        if (plza != state->cur_plza) {
>>> +            state->cur_plza = plza;
>>> +            wrmsr(MSR_IA32_PQR_PLZA_ASSOC,
>>> +                  RMID_EN | state->plza_rmid,
>>> +                  (plza ? PLZA_EN : 0) | CLOSID_EN | state-
>>> >plza_closid);
>>> +        }
>>> +    }
>>> +
>>
>> Babu,
>>
>> This addition to the context switch code surprised me. After your talk
>> at LPC I had imagined that PLZA would be a single global setting so that
>> every syscall/page-fault/interrupt would run with a different CLOSID
>> (presumably one configured with more cache and memory bandwidth).
>>
>> But this patch series looks like things are more flexible with the
>> ability to set different values (of RMID as well as CLOSID) per group.
>
> Yes. this similar what we have with MSR_IA32_PQR_ASSOC. The association
> can be done either thru CPUs (just one MSR write) or task based
> association(more MSR write as task moves around).
>>
>> It looks like it is possible to have some resctrl group with very
>> limited resources just bump up a bit when in ring0, while other
>> groups may get some different amount.
>>
>> The additions for plza to the Documentation aren't helping me
>> understand how users will apply this.
>>
>> Do you have some more examples?
>
> Group creation is similar to what we have currently.
>
> 1. create a regular group and setup the limits.
>    # mkdir /sys/fs/resctrl/group
>
> 2. Assign tasks or CPUs.
>    # echo 1234 > /sys/fs/resctrl/group/tasks
>
>    This is a regular group.
>
> 3. Now you figured that you need to change things in CPL0 for this task.
>
> 4. Now create a PLZA group now and tweek the limits,
>
>    # mkdir /sys/fs/resctrl/group1
>
>    # echo 1 > /sys/fs/resctrl/group1/plza
>
>    # echo "MB:0=100" > /sys/fs/resctrl/group1/schemata
>
> 5. Assign the same task to the plza group.
>
>    # echo 1234 > /sys/fs/resctrl/group1/tasks

Reusing 'tasks' files for kernel configuration risks confusing existing
user space tools that don't know about the new plza option. E.g. this
may be a problem if the user manually set the plza and then tried to use
their existing tool for understanding or configuring resctrl settings.

>
>
> Now the task 1234 will be using the limits from group1 when running in
> CPL0.
>
> I will add few more details in my next revision.
>
> Thanks
> Babu
>

Thanks,

Ben