From: Reinette Chatre <reinette.chatre@intel.com>
To: "Luck, Tony" <tony.luck@intel.com>
Cc: "Yu, Fenghua" <fenghua.yu@intel.com>,
"Wieczor-Retman, Maciej" <maciej.wieczor-retman@intel.com>,
Peter Newman <peternewman@google.com>,
James Morse <james.morse@arm.com>,
Babu Moger <babu.moger@amd.com>,
"Drew Fustini" <dfustini@baylibre.com>,
Dave Martin <Dave.Martin@arm.com>,
"x86@kernel.org" <x86@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"patches@lists.linux.dev" <patches@lists.linux.dev>
Subject: Re: [PATCH v19 16/20] x86/resctrl: Make resctrl_arch_rmid_read() handle sum over domains
Date: Fri, 7 Jun 2024 14:08:36 -0700 [thread overview]
Message-ID: <0e6ab67e-bdff-440a-8772-8d462b71cb42@intel.com> (raw)
In-Reply-To: <SJ1PR11MB6083EE537A820BB7CD42D2BEFCFB2@SJ1PR11MB6083.namprd11.prod.outlook.com>
Hi Tony,
On 6/7/24 12:51 PM, Luck, Tony wrote:
>> Hi Tony,
>>
>> On 6/3/24 4:15 PM, Tony Luck wrote:
>>> On Thu, May 30, 2024 at 01:24:57PM -0700, Reinette Chatre wrote:
>>>> On 5/28/24 3:20 PM, Tony Luck wrote:
>> ...
>>
>>>>> +
>>>>> + return 0;
>>>>> +}
>>>>> +
>>>>> +int resctrl_arch_rmid_read(struct rdt_resource *r, struct rdt_mon_domain *d,
>>>>> + u32 unused, u32 rmid, enum resctrl_event_id eventid,
>>>>> + u64 *val, bool sum, struct cacheinfo *ci, void *ignored)
>>>>
>>>> This is not architecture specific code.
>>>
>>> Can you explain further? I've dropped the "sum" argument. As you pointed
>>> out elsewhere this can be inferred from "d == NULL". But I do need the
>>> cacheinfo information in resctrl_arch_rmid_read() to:
>>> 1) determine which domains to sum (those that match ci->id).
>>> 2) sanity check code is executing on a CPU in ci->shared_cpu_map.
>>>
>>
>> "resctrl_arch_*" is the prefix of functions needed to be implemented
>> by every architecture. As I understand there is nothing architecture
>> specific about what this function does and every architecture's function
>> would thus end up looking identical. I expected the cacheinfo
>> information to be available from all architectures. If this is not
>> the case then it does not belong in struct rdt_mon_domain but should
>> instead be moved to struct rdt_hw_mon_domain ... but since cacheinfo
>> has already made its way into the filesystem code it is not clear
>> to me how you envision the arch/fs split.
>
> Hi Reinette,
>
> Files in resctrl that sum over resources are going to be a necessary feature
Sum over resources? That is something entirely different from SNC, no?
> for backwards compatibility. I'm doing it for the first time here for SNC, but
> I know of another platform topology change on the horizon that could also
> benefit from this.
>
> Looking at the end-point of the James Morse/Dave Martin patch series to
> split out the arch independent layer to fs/resctrl/ I see that fs/monitor.c
> makes calls to resctrl_arch_rmid_read(). The x86 version of this remains
> in arch/x86/kernel/cpu/resctrl/monitor.c (I don't see an MPAM version).
>
> James already added two arguments that MPAM needs and x86 doesn't
> (hence "u32 unused" and "void *ignored" in the argument list). I confess
> that my thought had been "If he can pad out the argument list for MPAM,
> then I can do it too for x86". But that leads to madness, so time to reconsider.
>
> I can see a couple of paths.
>
> 1) MPAM/others will also want to have files that sum things, so maybe they want
> an extra argument that shows what to add up. Though even if they do, their
> requirement may not be met by a "cacheinfo" pointer.
>
> 2) Only x86 (Intel) will use this. Maybe in this case the answer is to do some
> renaming so the "void *unused" argument can be used to pass architecture
> specific information.
By creating the new "sub" monitor files the sum of data has become a feature
of resctrl fs.
By including a pointer to struct cacheinfo in struct rdt_mon_domain as well as
struct rmid_read it surely is not just for Intel. If you want to make this just for
Intel then the whole solution needs to be changed.
>
> Sketch for option #2. Currently the code does:
> ---------------------
>
> That void *argument is currently supplied by a call. E.g.
>
> void *arch_mon_ctx;
>
> arch_mon_ctx = resctrl_arch_mon_ctx_alloc(r, QOS_L3_OCCUP_EVENT_ID);
>
>
> resctrl_arch_rmid_read(r, d, entry->closid, entry->rmid,
> QOS_L3_OCCUP_EVENT_ID, &val,
> arch_mon_ctx);
>
> resctrl_arch_mon_ctx_free(r, QOS_L3_OCCUP_EVENT_ID, arch_mon_ctx);
>
> The x86 version of resctrl_arch_mon_ctx_alloc() just does "might_sleep(); return NULL;"
> and resctrl_arch_mon_ctx_free() does nothing.
>
> New version makes these changes:
> ---------------------
>
> Add rdt_mon_domain * as a new argument to resctrl_arch_mon_ctx_alloc() (which MPAM can
> ignore).
>
> x86 alloc function becomes:
>
> void *resctrl_arch_mon_ctx_alloc(struct rdt_resource *r, struct rdt_mon_domain *d, int evtid)
> {
> might_sleep();
>
> return d->ci;
> }
>
> resctrl_arch_mon_ctx_free() remains an empty stub.
>
>
> Is this a reasonable way to split the independent fs layer code from the architecture specific?
Why is this necessary at all? The new variant of resctrl_arch_rmid_read() introduced in this
patch does not contain anything that is architecture specific and thus it is filesystem code.
It is this code that uses the information in struct cacheinfo to set the correct domain, if
needed. In this patch you rewrite resctrl_arch_rmid_read() as something architecture specific
but I cannot see what is architecture specific about it at all. Why not just call this new
function resctrl_rmid_read() that stays in filesystem code and then what you have in this
patch as resctrl_arch_rmid_read_one() should be what is already known as the architecture
specific resctrl_arch_rmid_read(). It is the architecture specific RMID read function that
does not need struct cacheinfo.
Reinette
next prev parent reply other threads:[~2024-06-07 21:08 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-28 22:19 [PATCH v19 00/20] Add support for Sub-NUMA cluster (SNC) systems Tony Luck
2024-05-28 22:19 ` [PATCH v19 01/20] x86/resctrl: Prepare for new domain scope Tony Luck
2024-05-28 22:19 ` [PATCH v19 02/20] x86/resctrl: Prepare to split rdt_domain structure Tony Luck
2024-05-28 22:19 ` [PATCH v19 03/20] x86/resctrl: Prepare for different scope for control/monitor operations Tony Luck
2024-05-28 22:19 ` [PATCH v19 04/20] x86/resctrl: Split the rdt_domain and rdt_hw_domain structures Tony Luck
2024-05-28 22:19 ` [PATCH v19 05/20] x86/resctrl: Add node-scope to the options for feature scope Tony Luck
2024-05-28 22:19 ` [PATCH v19 06/20] x86/resctrl: Introduce snc_nodes_per_l3_cache Tony Luck
2024-05-30 20:20 ` Reinette Chatre
2024-05-31 18:17 ` Tony Luck
2024-06-07 16:49 ` Reinette Chatre
2024-05-28 22:19 ` [PATCH v19 07/20] x86/resctrl: Block use of mba_MBps mount option on Sub-NUMA Cluster (SNC) systems Tony Luck
2024-05-28 22:19 ` [PATCH v19 08/20] x86/resctrl: Prepare for new Sub-NUMA Cluster (SNC) monitor files Tony Luck
2024-05-30 20:21 ` Reinette Chatre
2024-05-31 0:26 ` Tony Luck
2024-05-31 16:01 ` Reinette Chatre
2024-05-28 22:19 ` [PATCH v19 09/20] x86/resctrl: Add new fields to struct rmid_read for summation of domains Tony Luck
2024-05-30 20:21 ` Reinette Chatre
2024-05-28 22:19 ` [PATCH v19 10/20] x86/resctrl: Refactor mkdir_mondata_subdir() with a helper function Tony Luck
2024-05-28 22:19 ` [PATCH v19 11/20] x86/resctrl: Allocate a new bit in union mon_data_bits Tony Luck
2024-05-30 20:21 ` Reinette Chatre
2024-05-28 22:19 ` [PATCH v19 12/20] x86/resctrl: Create Sub-NUMA Cluster (SNC) monitor files Tony Luck
2024-05-30 20:22 ` Reinette Chatre
2024-05-28 22:19 ` [PATCH v19 13/20] x86/resctrl: Handle removing directories in Sub-NUMA Cluster (SNC) mode Tony Luck
2024-05-28 22:19 ` [PATCH v19 14/20] x86/resctrl: Fill out rmid_read structure for smp_call*() to read a counter Tony Luck
2024-05-30 20:23 ` Reinette Chatre
2024-05-28 22:20 ` [PATCH v19 15/20] x86/resctrl: Pass two extra arguments to resctrl_arch_rmid_read() Tony Luck
2024-05-30 20:24 ` Reinette Chatre
2024-05-28 22:20 ` [PATCH v19 16/20] x86/resctrl: Make resctrl_arch_rmid_read() handle sum over domains Tony Luck
2024-05-30 20:24 ` Reinette Chatre
2024-06-03 23:15 ` Tony Luck
2024-06-07 16:49 ` Reinette Chatre
2024-06-07 19:51 ` Luck, Tony
2024-06-07 21:08 ` Reinette Chatre [this message]
2024-05-28 22:20 ` [PATCH v19 17/20] x86/resctrl: Update CPU sanity checks when reading RMID counters Tony Luck
2024-05-28 22:20 ` [PATCH v19 18/20] x86/resctrl: Enable RMID shared RMID mode on Sub-NUMA Cluster (SNC) systems Tony Luck
2024-05-30 20:27 ` Reinette Chatre
2024-05-28 22:20 ` [PATCH v19 19/20] x86/resctrl: Sub-NUMA Cluster (SNC) detection and enabling Tony Luck
2024-05-30 20:28 ` Reinette Chatre
2024-05-28 22:20 ` [PATCH v19 20/20] x86/resctrl: Update documentation with Sub-NUMA cluster changes Tony Luck
2024-05-30 20:29 ` Reinette Chatre
2024-05-28 22:55 ` [PATCH v19 00/20] Add support for Sub-NUMA cluster (SNC) systems Reinette Chatre
2024-05-29 20:20 ` Tony Luck
2024-05-30 2:46 ` Reinette Chatre
2024-05-30 16:36 ` Tony Luck
2024-05-30 17:55 ` Reinette Chatre
2024-05-30 22:49 ` Luck, Tony
2024-05-30 23:10 ` 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=0e6ab67e-bdff-440a-8772-8d462b71cb42@intel.com \
--to=reinette.chatre@intel.com \
--cc=Dave.Martin@arm.com \
--cc=babu.moger@amd.com \
--cc=dfustini@baylibre.com \
--cc=fenghua.yu@intel.com \
--cc=james.morse@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maciej.wieczor-retman@intel.com \
--cc=patches@lists.linux.dev \
--cc=peternewman@google.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