Re: [PATCH v2 00/17] x86/resctrl : Support AMD Assignable Bandwidth Monitoring Counters (ABMC)

From: Reinette Chatre
Date: Thu Mar 07 2024 - 15:41:34 EST


Hi Peter,

On 3/7/2024 10:57 AM, Peter Newman wrote:
> Hi Babu,
>
> On Mon, Mar 4, 2024 at 2:24 PM Moger, Babu <bmoger@xxxxxxx> wrote:
>> Based on our discussion, I am listing few examples here. Let me know if
>> I missed something.
>>
>> mount -t resctrl resctrl /sys/fs/resctrl/
>>
>> 1. Assign both local and total counters to default group on domain 0 and 1.
>> $echo "//00=lt;01=lt" > /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>>
>> $cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>> //00=lt;01=lt
>>
>> 2. Assign a total event to mon group inside the default group for both
>> domain 0 and 1.
>>
>> $mkdir /sys/fs/resctrl/mon_groups/mon_a
>> $echo "/mon_a/00+t;01+t" >
>> /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>>
>> $cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>> //00=lt;01=lt
>> /mon_a/00=t;01=t
>>
>> 3. Assign a local event to non-default control mon group both domain 0
>> and 1.
>> $mkdir /sys/fs/resctrl/ctrl_a
>> $echo "/ctrl_a/00=l;01=l" >
>> /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>>
>> $cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>> //00=lt;01=lt
>> /mon_a/00=t;01=t
>> /ctrl_a/00=l;01=l
>>
>> 4. Assign a both counters to mon group inside another control
>> group(non-default).
>> $mkdir /sys/fs/resctrl/ctrl_a/mon_ab/
>> $echo "ctrl_a/mon_ab/00=lt;01=lt" >
>> /sys/fs/resctrl/nfo/L3_MON/mbm_assign_contro
>>
>> $cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>> //00=lt;01=lt
>> /mon_a/00=t;01=t
>> /ctrl_a/00=l;01=l
>> ctrl_a/mon_ab/00=lt;01=lt
>>
>> 5. Unassign a counter to mon group inside another control
>> group(non-default).
>> $echo "ctrl_a/mon_ab/00-l;01-l" >
>> /sys/fs/resctrl/nfo/L3_MON/mbm_assign_control
>>
>> $cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>> //00=lt;01=lt
>> /mon_a/00=t;01=t
>> /ctrl_a/00=l;01=l
>> ctrl_a/mon_ab/00=t;01=t
>>
>> 6. Unassign all the counters on a specific group.
>> $echo "ctrl_a/mon_ab/00=_" >
>> /sys/fs/resctrl/nfo/L3_MON/mbm_assign_control
>>
>> $cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>> //00=lt;01=lt
>> /mon_a/00=t;01=t
>> /ctrl_a/00=l;01=l
>> ctrl_a/mon_ab/00=_;01=_
>
> The use case I'm interested in is iterating 32 counters over 256
> groups[1]. If it's not possible to reassign 32 counters in a single
> write system call, with just one IPI per domain per batch reassignment
> operation, then I don't see any advantage over the original proposal
> with the assignment control file in every group directory. We already
> had fine-grained control placing assign/unassign nodes throughout the
> directory hierarchy, with the scope implicit in the directory
> location.

The intent of this interface is to support modification of several
groups with a single write. These examples only show impact to a single
group at a time, but multiple groups can be modified by separating
configurations with a "\n". I believe Babu was planning to add some
of these examples in his next iteration since it is not obvious yet.

>
> The interface I proposed in [1] aims to reduce the per-domain IPIs by
> a factor of the number of counters, rather than sending off 2 rounds
> of IPIs to each domain for each monitoring group.

I understood the proposed interface appeared to focus on one use case
while the goal is to find an interface to support all requirements.
With this proposed interface it it possible to make large scale changes
with a single sysfs write.

Reinette