From: "Moger, Babu" <babu.moger@amd.com>
To: Reinette Chatre <reinette.chatre@intel.com>,
corbet@lwn.net, fenghua.yu@intel.com, tglx@linutronix.de,
mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com
Cc: x86@kernel.org, hpa@zytor.com, paulmck@kernel.org,
rdunlap@infradead.org, tj@kernel.org, peterz@infradead.org,
yanjiewtw@gmail.com, kim.phillips@amd.com,
lukas.bulwahn@gmail.com, seanjc@google.com, jmattson@google.com,
leitao@debian.org, jpoimboe@kernel.org,
rick.p.edgecombe@intel.com, kirill.shutemov@linux.intel.com,
jithu.joseph@intel.com, kai.huang@intel.com,
kan.liang@linux.intel.com, daniel.sneddon@linux.intel.com,
pbonzini@redhat.com, sandipan.das@amd.com,
ilpo.jarvinen@linux.intel.com, peternewman@google.com,
maciej.wieczor-retman@intel.com, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, eranian@google.com,
james.morse@arm.com
Subject: Re: [RFC PATCH v3 00/17] x86/resctrl : Support AMD Assignable Bandwidth Monitoring Counters (ABMC)
Date: Mon, 6 May 2024 12:18:19 -0500 [thread overview]
Message-ID: <2016b830-64c7-43bd-8116-bdfd239221e3@amd.com> (raw)
In-Reply-To: <48b595cc-5ffe-4507-bffd-335a60fdaab9@intel.com>
Hi Reinette,
On 5/3/24 18:24, Reinette Chatre wrote:
> Hi Babu,
>
> On 3/28/2024 6:06 PM, Babu Moger wrote:
>
>> a. Check if ABMC support is available
>> #mount -t resctrl resctrl /sys/fs/resctrl/
>>
>> #cat /sys/fs/resctrl/info/L3_MON/mbm_assign
>> [abmc]
>> legacy_mbm
>>
>> Linux kernel detected ABMC feature and it is enabled.
>
> Please note that this adds the "abmc" feature to the resctrl
> *filesystem* that supports more architectures than just AMD. Calling the
> resctrl filesystem feature "abmc" means that (a) AMD needs to be ok with
> other architectures calling their features that are
> similar-but-maybe-not-identical-to-AMD-ABMC "abmc", or (b) this needs
> a new generic name.
It should not a problem if other architecture calling abmc for similar
feature. But generic name is always better if there is a suggestion.
>
>> b. Check how many ABMC counters are available.
>>
>> #cat /sys/fs/resctrl/info/L3_MON/mbm_assign_cntrs
>> 32
>>
>> c. Create few resctrl groups.
>>
>> # mkdir /sys/fs/resctrl/mon_groups/default_mon1
>> # mkdir /sys/fs/resctrl/non_defult_group
>
> Can this be non_default_group instead? Seems like non_defult_group is used
> consistently but its spelling is unexpected.
Ok. Will correct it. Thanks
>
>> # mkdir /sys/fs/resctrl/non_defult_group/mon_groups/non_default_mon1
>>
>> d. This series adds a new interface file /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>> to list and modify the group's assignment states.
>>
>> The list follows the following format:
>>
>> * Default CTRL_MON group:
>> "//<domain_id>=<assignment_flags>"
>>
>> * Non-default CTRL_MON group:
>> "<CTRL_MON group>//<domain_id>=<assignment_flags>"
>>
>> * Child MON group of default CTRL_MON group:
>> "/<MON group>/<domain_id>=<assignment_flags>"
>>
>> * Child MON group of non-default CTRL_MON group:
>> "<CTRL_MON group>/<MON group>/<domain_id>=<assignment_flags>"
>>
>> Assignment flags can be one of the following:
>>
>> t MBM total event is assigned
>> l MBM local event is assigned
>> tl Both total and local MBM events are assigned
>> _ None of the MBM events are assigned
>>
>> Examples:
>>
>> # cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>> non_defult_group//0=tl;1=tl;2=tl;3=tl;4=tl;5=tl;6=tl;7=tl;
>> non_defult_group/non_default_mon1/0=tl;1=tl;2=tl;3=tl;4=tl;5=tl;6=tl;7=tl;
>> //0=tl;1=tl;2=tl;3=tl;4=tl;5=tl;6=tl;7=tl;
>> /default_mon1/0=tl;1=tl;2=tl;3=tl;4=tl;5=tl;6=tl;7=tl;
>>
>> There are four groups and all the groups have local and total event assigned.
>>
>> "//" - This is a default CONTROL MON group
>>
>> "non_defult_group//" - This is non default CONTROL MON group
>>
>> "/default_mon1/" - This is Child MON group of the defult group
>>
>> "non_defult_group/non_default_mon1/" - This is child MON group of the non default group
>>
>> =tl means both total and local events are assigned.
>>
>> e. Update the group assignment states using the interface file /sys/fs/resctrl/info/L3_MON/mbm_assign_control.
>>
>> The write format is similar to the above list format with addition of
>> op-code for the assignment operation.
>>
>> * Default CTRL_MON group:
>> "//<domain_id><op-code><assignment_flags>"
>>
>> * Non-default CTRL_MON group:
>> "<CTRL_MON group>//<domain_id><op-code><assignment_flags>"
>>
>> * Child MON group of default CTRL_MON group:
>> "/<MON group>/<domain_id><op-code><assignment_flags>"
>>
>> * Child MON group of non-default CTRL_MON group:
>> "<CTRL_MON group>/<MON group>/<domain_id><op-code><assignment_flags>"
>>
>> Op-code can be one of the following:
>>
>> = Update the assignment to match the flags
>> + Assign a new state
>> - Unassign a new state
>> _ Unassign all the states
>
> As mentioned in https://lore.kernel.org/lkml/ZjO9hpuLz%2FjJYqvT@e133380.arm.com/
> the "_" is not an operator but instead viewed as an part of <assignment_flags>.
> It is expected to be used with "=", to unset flags it will be used as below:
>
> echo "non_default_ctrl_mon_grp/child_non_default_mon_grp/0=_" ...
Oh.. ok.
Will correct it. I also need to verify the parshing..
>
>>
>>
>> Initial group status:
>>
>> # cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>> non_default_ctrl_mon_grp//0=tl;1=tl;
>> non_default_ctrl_mon_grp/child_non_default_mon_grp/0=tl;1=tl;
>> //0=tl;1=tl;
>> /child_default_mon_grp/0=tl;1=tl;
>>
>>
>> To update the default group to assign only total event.
>> # echo "//0=t" > /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>>
>> Assignment status after the update:
>> # cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>> non_default_ctrl_mon_grp//0=tl;1=tl;
>> non_default_ctrl_mon_grp/child_non_default_mon_grp/0=tl;1=tl;
>> //0=t;1=t;
>> /child_default_mon_grp/0=tl;1=tl;
>
> As mentioned in https://lore.kernel.org/lkml/330e3391-b917-4a88-bae3-bdcbb8cfd6f4@intel.com/
> using "0=t" is expected to only impact domain #0, not all domains. Similar for
> other examples below.
Ok. Sure
>
>>
>> To update the MON group child_default_mon_grp to remove local event:
>> # echo "/child_default_mon_grp/0-l" > /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>>
>> Assignment status after the update:
>> # cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>> //0=t;1=t;
>> /child_default_mon_grp/0=t;1=t;
>> non_default_ctrl_mon_grp//0=tl;1=tl;
>> non_default_ctrl_mon_grp/child_non_default_mon_grp/0=tl;1=tl;
>>
>> To update the MON group non_default_ctrl_mon_grp/child_non_default_mon_grp to
>> remove both local and total events:
>> # echo "non_default_ctrl_mon_grp/child_non_default_mon_grp/0_" >
>> /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>>
>> Assignment status after the update:
>> # cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control
>> //0=t;1=t;
>> /child_default_mon_grp/0=t;1=t;
>> non_default_ctrl_mon_grp//0=tl;1=tl;
>> non_default_ctrl_mon_grp/child_non_default_mon_grp/0=_;1=_;
>>
>>
>> f. Read the event mbm_total_bytes and mbm_local_bytes of the default group.
>> There is no change in reading the evetns with ABMC. If the event is unassigned
>
> evetns -> events
Sure.
>
>> when reading, then the read will come back as Unavailable.
>>
>> # cat /sys/fs/resctrl/mon_data/mon_L3_00/mbm_total_bytes
>> 779247936
>> # cat /sys/fs/resctrl/mon_data/mon_L3_00/mbm_local_bytes
>> 765207488
>>
>> g. Users will have the option to go back to legacy_mbm mode if required.
>> This can be done using the following command.
>>
>> # echo "legacy_mbm" > /sys/fs/resctrl/info/L3_MON/mbm_assign
>> # cat /sys/fs/resctrl/info/L3_MON/mbm_assign
>> abmc
>> [legacy_mbm]
>>
>
> This needs a mention about how state is impacted when a user makes this
> switch. For example, if switching from "legacy" to abmc ... if there
> are fewer than "num counters" monitor groups, will they get counters
> assigned dynamically? What happens to feature specific resctrl files?
> What happens to the counters themselves, are they reset? What else
> happens during this switch?
Sure. Will add the explanation.
When switching from "legacy" to abmc, events in already created resctrl
groups will be in Unassigned states. Users need to assign the monitors to
each group to read the events.
>
>>
>> h. Check the bandwidth configuration for the group. Note that bandwidth
>> configuration has a domain scope. Total event defaults to 0x7F (to
>> count all the events) and local event defaults to 0x15 (to count all
>> the local numa events). The event bitmap decoding is available at
>> https://www.kernel.org/doc/Documentation/x86/resctrl.rst
>> in section "mbm_total_bytes_config", "mbm_local_bytes_config":
>>
>> #cat /sys/fs/resctrl/info/L3_MON/mbm_total_bytes_config
>> 0=0x7f;1=0x7f
>>
>> #cat /sys/fs/resctrl/info/L3_MON/mbm_local_bytes_config
>> 0=0x15;1=0x15
>>
>> j. Change the bandwidth source for domain 0 for the total event to count only reads.
>> Note that this change effects total events on the domain 0.
>>
>> #echo 0=0x33 > /sys/fs/resctrl/info/L3_MON/mbm_total_bytes_config
>> #cat /sys/fs/resctrl/info/L3_MON/mbm_total_bytes_config
>> 0=0x33;1=0x7F
>>
>> k. Now read the total event again. The mbm_total_bytes should display
>> only the read events.
>>
>> #cat /sys/fs/resctrl/mon_data/mon_L3_00/mbm_total_bytes
>> 314101
>>
>> l. Unmount the resctrl
>>
>> #umount /sys/fs/resctrl/
>>
>> ---
>
> Reinette
--
Thanks
Babu Moger
next prev parent reply other threads:[~2024-05-06 17:18 UTC|newest]
Thread overview: 108+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-29 1:06 [RFC PATCH v3 00/17] x86/resctrl : Support AMD Assignable Bandwidth Monitoring Counters (ABMC) Babu Moger
2024-03-29 1:06 ` [RFC PATCH v3 01/17] x86/resctrl: Add support for " Babu Moger
2024-05-03 23:25 ` Reinette Chatre
2024-05-06 17:57 ` Moger, Babu
2024-03-29 1:06 ` [RFC PATCH v3 02/17] x86/resctrl: Add ABMC feature in the command line options Babu Moger
2024-03-29 1:06 ` [RFC PATCH v3 03/17] x86/resctrl: Detect Assignable Bandwidth Monitoring feature details Babu Moger
2024-05-03 23:26 ` Reinette Chatre
2024-05-06 19:09 ` Moger, Babu
2024-05-07 20:27 ` Reinette Chatre
2024-05-09 22:34 ` Moger, Babu
2024-05-10 3:18 ` Reinette Chatre
2024-05-10 17:01 ` Moger, Babu
2024-05-10 18:34 ` Reinette Chatre
2024-05-11 1:40 ` Moger, Babu
2024-03-29 1:06 ` [RFC PATCH v3 04/17] x86/resctrl: Introduce resctrl_file_fflags_init Babu Moger
2024-05-03 23:26 ` Reinette Chatre
2024-05-06 20:23 ` Moger, Babu
2024-05-07 20:27 ` Reinette Chatre
2024-05-10 0:23 ` Moger, Babu
2024-03-29 1:06 ` [RFC PATCH v3 05/17] x86/resctrl: Introduce the interface to display the assignment state Babu Moger
2024-05-03 23:28 ` Reinette Chatre
2024-05-07 16:28 ` Moger, Babu
2024-05-07 20:32 ` Reinette Chatre
2024-03-29 1:06 ` [RFC PATCH v3 06/17] x86/resctrl: Introduce interface to display number of ABMC counters Babu Moger
2024-03-29 1:06 ` [RFC PATCH v3 07/17] x86/resctrl: Add support to enable/disable ABMC feature Babu Moger
2024-04-04 0:30 ` Peter Newman
2024-04-04 15:16 ` Moger, Babu
2024-04-04 17:36 ` Peter Newman
2024-04-04 18:35 ` Moger, Babu
2024-04-04 18:43 ` Reinette Chatre
2024-04-04 19:01 ` Peter Newman
2024-05-16 20:03 ` Moger, Babu
2024-05-03 23:30 ` Reinette Chatre
2024-05-07 19:12 ` Moger, Babu
2024-05-07 20:32 ` Reinette Chatre
2024-05-09 21:45 ` Moger, Babu
2024-03-29 1:06 ` [RFC PATCH v3 08/17] x86/resctrl: Initialize assignable counters bitmap Babu Moger
2024-05-03 23:31 ` Reinette Chatre
2024-05-07 20:03 ` Moger, Babu
2024-03-29 1:06 ` [RFC PATCH v3 09/17] x86/resctrl: Introduce assign state for the mon group Babu Moger
2024-04-16 18:52 ` Peter Newman
2024-04-16 19:52 ` Moger, Babu
2024-03-29 1:06 ` [RFC PATCH v3 10/17] x86/resctrl: Add data structures for ABMC assignment Babu Moger
2024-05-03 23:32 ` Reinette Chatre
2024-05-07 20:40 ` Moger, Babu
2024-05-07 23:06 ` Reinette Chatre
2024-05-10 0:28 ` Moger, Babu
2024-03-29 1:06 ` [RFC PATCH v3 11/17] x86/resctrl: Introduce mbm_total_cfg and mbm_local_cfg Babu Moger
2024-05-03 23:33 ` Reinette Chatre
2024-05-08 15:57 ` Moger, Babu
2024-03-29 1:06 ` [RFC PATCH v3 12/17] x86/resctrl: Add the functionality to assign the RMID Babu Moger
2024-05-03 23:33 ` Reinette Chatre
2024-05-08 17:40 ` Moger, Babu
2024-03-29 1:06 ` [RFC PATCH v3 13/17] x86/resctrl: Add the functionality to unassign " Babu Moger
2024-03-29 1:06 ` [RFC PATCH v3 14/17] x86/resctrl: Enable ABMC by default on resctrl mount Babu Moger
2024-03-29 1:06 ` [RFC PATCH v3 15/17] x86/resctrl: Introduce the interface switch between ABMC and legacy_mbm Babu Moger
2024-03-29 1:06 ` [RFC PATCH v3 16/17] x86/resctrl: Introduce interface to list assignment states of all the groups Babu Moger
2024-03-29 1:06 ` [RFC PATCH v3 17/17] x86/resctrl: Introduce interface to modify assignment states of " Babu Moger
2024-04-17 17:45 ` Peter Newman
2024-04-17 19:39 ` Moger, Babu
2024-04-17 20:56 ` Peter Newman
2024-04-17 22:52 ` Moger, Babu
2024-05-02 23:00 ` Reinette Chatre
2024-05-03 16:14 ` Moger, Babu
2024-05-03 21:16 ` Reinette Chatre
2024-05-06 18:09 ` Moger, Babu
2024-05-02 16:21 ` Dave Martin
2024-05-02 17:52 ` Reinette Chatre
2024-05-02 18:11 ` Moger, Babu
2024-05-03 14:53 ` Dave Martin
2024-05-03 21:15 ` Reinette Chatre
2024-04-04 19:08 ` [RFC PATCH v3 00/17] x86/resctrl : Support AMD Assignable Bandwidth Monitoring Counters (ABMC) Peter Newman
2024-04-04 20:02 ` Moger, Babu
2024-04-22 16:34 ` Dave Martin
2024-04-22 20:44 ` Moger, Babu
2024-04-23 12:37 ` Dave Martin
2024-04-24 4:15 ` Reinette Chatre
2024-04-24 14:16 ` Dave Martin
2024-04-24 19:10 ` Moger, Babu
2024-04-22 16:33 ` Dave Martin
2024-04-22 18:23 ` Peter Newman
2024-04-23 12:38 ` Dave Martin
2024-04-23 15:43 ` Moger, Babu
2024-04-23 16:17 ` Dave Martin
2024-05-01 17:48 ` Peter Newman
2024-05-02 16:25 ` Moger, Babu
2024-05-02 17:50 ` Peter Newman
2024-05-02 20:14 ` Moger, Babu
2024-05-02 23:21 ` Reinette Chatre
2024-05-03 0:57 ` Peter Newman
2024-05-03 20:44 ` Moger, Babu
2024-05-03 21:00 ` Peter Newman
2024-05-03 21:15 ` Reinette Chatre
2024-05-17 21:51 ` Peter Newman
2024-05-20 14:25 ` Moger, Babu
2024-05-20 16:00 ` Peter Newman
2024-05-20 18:03 ` Moger, Babu
2024-05-10 0:57 ` Moger, Babu
2024-05-10 2:47 ` Reinette Chatre
2024-05-03 21:14 ` Reinette Chatre
2024-05-03 23:24 ` Reinette Chatre
2024-05-06 17:18 ` Moger, Babu [this message]
2024-05-07 20:26 ` Reinette Chatre
2024-05-08 20:07 ` Moger, Babu
2024-05-08 20:41 ` Reinette Chatre
2024-05-08 23:29 ` Moger, Babu
2024-05-09 18:07 ` Reinette Chatre
2024-05-09 20:34 ` Moger, Babu
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=2016b830-64c7-43bd-8116-bdfd239221e3@amd.com \
--to=babu.moger@amd.com \
--cc=bp@alien8.de \
--cc=corbet@lwn.net \
--cc=daniel.sneddon@linux.intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=eranian@google.com \
--cc=fenghua.yu@intel.com \
--cc=hpa@zytor.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=james.morse@arm.com \
--cc=jithu.joseph@intel.com \
--cc=jmattson@google.com \
--cc=jpoimboe@kernel.org \
--cc=kai.huang@intel.com \
--cc=kan.liang@linux.intel.com \
--cc=kim.phillips@amd.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=leitao@debian.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lukas.bulwahn@gmail.com \
--cc=maciej.wieczor-retman@intel.com \
--cc=mingo@redhat.com \
--cc=paulmck@kernel.org \
--cc=pbonzini@redhat.com \
--cc=peternewman@google.com \
--cc=peterz@infradead.org \
--cc=rdunlap@infradead.org \
--cc=reinette.chatre@intel.com \
--cc=rick.p.edgecombe@intel.com \
--cc=sandipan.das@amd.com \
--cc=seanjc@google.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=x86@kernel.org \
--cc=yanjiewtw@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).