From: Reinette Chatre <reinette.chatre@intel.com>
To: Tony Luck <tony.luck@intel.com>
Cc: Peter Newman <peternewman@google.com>,
Fenghua Yu <fenghua.yu@intel.com>,
Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>, <x86@kernel.org>,
Shaopeng Tan <tan.shaopeng@fujitsu.com>,
James Morse <james.morse@arm.com>,
Jamie Iles <quic_jiles@quicinc.com>,
Babu Moger <babu.moger@amd.com>,
Randy Dunlap <rdunlap@infradead.org>,
<linux-kernel@vger.kernel.org>, <linux-doc@vger.kernel.org>,
<patches@lists.linux.dev>
Subject: Re: [PATCH v6 1/3] x86/resctrl: Add mount option "mba_MBps_event"
Date: Tue, 12 Dec 2023 13:42:51 -0800 [thread overview]
Message-ID: <5215fe1e-52e1-4ca4-8bd2-a42152f3e0e3@intel.com> (raw)
In-Reply-To: <ZXi8Rj3znA6lmjE9@agluck-desk3>
Hi Tony,
On 12/12/2023 12:02 PM, Tony Luck wrote:
> On Tue, Dec 12, 2023 at 09:54:38AM -0800, Reinette Chatre wrote:
>>
>> On 12/8/2023 2:09 PM, Peter Newman wrote:
>>> On Fri, Dec 8, 2023 at 1:57 PM Tony Luck <tony.luck@intel.com> wrote:
>>>>
>>>> On Fri, Dec 08, 2023 at 10:17:08AM -0800, Peter Newman wrote:
>>>>> Hi Tony,
>>>>>
>>>>> On Thu, Dec 7, 2023 at 11:56 AM Tony Luck <tony.luck@intel.com> wrote:
>>>>>> @@ -2715,7 +2723,25 @@ static int rdt_parse_param(struct fs_context *fc, struct fs_parameter *param)
>>>>>> case Opt_mba_mbps:
>>>>>> if (!supports_mba_mbps())
>>>>>> return -EINVAL;
>>>>>> - ctx->enable_mba_mbps = true;
>>>>>> + if (is_mbm_local_enabled())
>>>>>> + ctx->enable_mba_mbps_local = true;
>>>>>> + else
>>>>>> + return -EINVAL;
>>>>>> + return 0;
>>>>>> + case Opt_mba_mbps_event:
>>>>>> + if (!supports_mba_mbps())
>>>>>> + return -EINVAL;
>>>>>> + if (!strcmp("mbm_local_bytes", param->string)) {
>>>>>> + if (!is_mbm_local_enabled())
>>>>>> + return -EINVAL;
>>>>>> + ctx->enable_mba_mbps_local = true;
>>>>>> + } else if (!strcmp("mbm_total_bytes", param->string)) {
>>>>>> + if (!is_mbm_total_enabled())
>>>>>> + return -EINVAL;
>>>>>> + ctx->enable_mba_mbps_total = true;
>>>>>> + } else {
>>>>>> + return -EINVAL;
>>>>>
>>>>> It looks like if I pass
>>>>> "mba_MBps_event=mbm_total_bytes,mba_MBps_event=mbm_local_bytes" I can
>>>>> set both flags true.
>>>>
>>>> That's going to be confusing. I'll add code to stop the user from
>>>> passing both options.
>>>
>>> Also kind of confusing, after reading the second patch, I realized
>>> "mba_MBps_event=mbm_total_bytes,mba_MBps" also results in both being
>>> set. If you're able to fail the mount operation if both flags somehow
>>> get set, that would address this one too.
>>
>> Are two separate flags required? All existing options within struct rdt_fs_context
>> are of type bool but that does not imply that it is the required type for
>> all.
>
> Reinette,
>
> Maybe a flag and a value? The structure becomes:
>
> struct rdt_fs_context {
> struct kernfs_fs_context kfc;
> bool enable_cdpl2;
> bool enable_cdpl3;
> bool enable_mba_mbps;
> enum resctrl_event_id mba_mbps_event;
> bool enable_debug;
> };
A flag and value would work. This brings the implementation close
to the resource properties. Something that is confusing to me with
this change is the inconsistent naming:
struct rdt_fs_context:
bool enable_mba_mbps
enum resctrl event_id mba_mbps_event
struct resctrl_membw:
bool mba_sc
enum resctrl_event_id mba_mbps_event
The intention with the above naming is not obvious to me. How are
these intended to be viewed?
One option could be to view these as separately representing user
space (struct rdt_fs_context) and kernel space (struct resctrl_membw).
If this is the case then the following naming may be more intuitive:
struct rdt_fs_context:
bool enable_mba_mbps
enum resctrl event_id mba_mbps_event
struct resctrl_membw:
bool mba_sc
enum resctrl_event_id mba_sc_event
>
> Mount option parsing (including blocking user from setting the options
> multiple times):
>
> case Opt_mba_mbps:
> if (!supports_mba_mbps() || ctx->enable_mba_mbps)
> return -EINVAL;
I am not familiar with the API but it seems that invalfc() is available
to communicate a more useful message to user space than the default one
shown in changelog of patch #2.
> if (is_mbm_local_enabled())
> ctx->mba_mbps_event = QOS_L3_MBM_LOCAL_EVENT_ID;
> else if (is_mbm_total_enabled())
> ctx->mba_mbps_event = QOS_L3_MBM_TOTAL_EVENT_ID;
> else
> return -EINVAL;
> ctx->enable_mba_mbps = true;
> return 0;
> case Opt_mba_mbps_event:
> if (!supports_mba_mbps() || ctx->enable_mba_mbps)
> return -EINVAL;
> if (!strcmp("mbm_local_bytes", param->string))
> ctx->mba_mbps_event = QOS_L3_MBM_LOCAL_EVENT_ID;
> else if (!strcmp("mbm_total_bytes", param->string))
> ctx->mba_mbps_event = QOS_L3_MBM_TOTAL_EVENT_ID;
> else
> return -EINVAL;
> ctx->enable_mba_mbps = true;
> return 0;
>
>
> and use of the options to enable the feature:
>
> if (ctx->enable_mba_mbps) {
> r->membw.mba_mbps_event = ctx->mba_mbps_event;
> ret = set_mba_sc(true);
> if (ret)
> goto out_cdpl3;
> }
Since 0 will not be used for an unset/invalid value I expect mba_mbps_event
will not (cannot) be cleared by rdt_disable_ctx(). If this is the case I think
future changes can be supported by expanding the kerneldoc of struct resctrl_membw
to document that "@mba_mbps_event (or @mba_sc_event?) is invalid if @mba_sc
is false".
Reinette
next prev parent reply other threads:[~2023-12-12 21:43 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-24 18:16 [PATCH] x86/resctrl: mba_MBps: Fall back to total b/w if local b/w unavailable Tony Luck
2023-10-24 18:24 ` Luck, Tony
2023-10-24 23:20 ` Moger, Babu
2023-10-24 23:43 ` Luck, Tony
2023-10-25 16:01 ` Moger, Babu
2023-10-25 12:46 ` Peter Newman
2023-10-25 19:38 ` Tony Luck
2023-10-25 20:39 ` Moger, Babu
2023-10-25 20:42 ` Moger, Babu
2023-10-25 20:52 ` Tony Luck
2023-10-25 23:41 ` Moger, Babu
2023-10-26 0:07 ` Luck, Tony
2023-10-25 21:06 ` Peter Newman
2023-10-26 13:55 ` Moger, Babu
2023-10-26 16:09 ` Luck, Tony
2023-10-26 17:19 ` Moger, Babu
2023-10-26 19:54 ` Tony Luck
2023-10-25 23:50 ` [PATCH v2] " Tony Luck
2023-10-26 20:02 ` [PATCH v3] " Tony Luck
2023-10-26 22:40 ` Moger, Babu
2023-10-26 22:59 ` Luck, Tony
2023-11-03 21:43 ` Reinette Chatre
2023-11-03 21:50 ` Reinette Chatre
2023-11-07 21:15 ` Tony Luck
2023-11-08 21:49 ` Reinette Chatre
2023-11-09 21:27 ` Luck, Tony
2023-11-15 16:09 ` Reinette Chatre
2023-11-15 21:54 ` Tony Luck
2023-11-16 19:48 ` Reinette Chatre
2023-11-28 23:14 ` [PATCH v4] x86/resctrl: Add mount option to pick total MBM event Tony Luck
2023-11-29 23:48 ` Reinette Chatre
2023-12-01 20:45 ` Tony Luck
2023-12-01 21:47 ` [PATCH v5] x86/resctrl: Add event choices for mba_MBps Tony Luck
2023-12-04 16:24 ` Moger, Babu
2023-12-04 18:16 ` Tony Luck
2023-12-04 19:04 ` Moger, Babu
2023-12-04 19:45 ` Luck, Tony
2023-12-04 20:03 ` Reinette Chatre
2023-12-04 21:08 ` Tony Luck
2023-12-04 22:15 ` Reinette Chatre
2023-12-04 22:51 ` Reinette Chatre
2023-12-07 19:56 ` [PATCH v6 0/3] x86/resctrl: mba_MBps enhancements Tony Luck
2023-12-07 19:56 ` [PATCH v6 1/3] x86/resctrl: Add mount option "mba_MBps_event" Tony Luck
2023-12-08 18:17 ` Peter Newman
2023-12-08 21:57 ` Tony Luck
2023-12-08 22:09 ` Peter Newman
2023-12-08 22:37 ` Luck, Tony
2023-12-12 17:54 ` Reinette Chatre
2023-12-12 20:02 ` Tony Luck
2023-12-12 21:42 ` Reinette Chatre [this message]
2023-12-13 1:07 ` Luck, Tony
2023-12-08 18:29 ` Moger, Babu
2023-12-08 21:50 ` Tony Luck
2023-12-12 18:59 ` Reinette Chatre
2023-12-07 19:56 ` [PATCH v6 2/3] x86/resctrl: Use total bandwidth for mba_MBps option when local isn't present Tony Luck
2023-12-08 18:26 ` Peter Newman
2023-12-07 19:56 ` [PATCH v6 3/3] x86/resctrl: Add new "mba_MBps_event" mount option to documentation Tony Luck
2023-12-08 19:22 ` Peter Newman
2023-12-12 18:59 ` Reinette Chatre
2024-01-09 22:00 ` [PATCH] x86/resctrl: Implement new MBA_mbps throttling heuristic Tony Luck
2024-01-16 19:55 ` Reinette Chatre
2024-01-17 3:36 ` Xiaochen Shen
2024-01-17 3:40 ` Xiaochen Shen
2024-01-18 0:26 ` Reinette Chatre
2024-01-18 21:42 ` [PATCH v2] x86/resctrl: Implement new mba_MBps " Tony Luck
2024-01-22 17:34 ` Reinette Chatre
2024-01-22 18:07 ` Luck, Tony
2024-01-22 18:18 ` Reinette Chatre
2024-01-22 18:21 ` Borislav Petkov
2024-01-22 18:41 ` Reinette Chatre
2024-01-22 18:47 ` Borislav Petkov
2024-01-22 20:58 ` Luck, Tony
2024-01-23 12:12 ` James Morse
2024-01-23 17:07 ` Luck, Tony
2024-01-24 0:29 ` Tony Luck
2024-01-25 17:29 ` Tony Luck
2024-01-22 18:08 ` [PATCH v3] " Tony Luck
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=5215fe1e-52e1-4ca4-8bd2-a42152f3e0e3@intel.com \
--to=reinette.chatre@intel.com \
--cc=babu.moger@amd.com \
--cc=corbet@lwn.net \
--cc=fenghua.yu@intel.com \
--cc=james.morse@arm.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=patches@lists.linux.dev \
--cc=peternewman@google.com \
--cc=quic_jiles@quicinc.com \
--cc=rdunlap@infradead.org \
--cc=skhan@linuxfoundation.org \
--cc=tan.shaopeng@fujitsu.com \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
/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).