linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: James Morse <james.morse@arm.com>
To: Peter Newman <peternewman@google.com>
Cc: x86@kernel.org, linux-kernel@vger.kernel.org,
	Fenghua Yu <fenghua.yu@intel.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	H Peter Anvin <hpa@zytor.com>, Babu Moger <Babu.Moger@amd.com>,
	shameerali.kolothum.thodi@huawei.com,
	D Scott Phillips OS <scott@os.amperecomputing.com>,
	carl@os.amperecomputing.com, lcherian@marvell.com,
	bobo.shaobowang@huawei.com, tan.shaopeng@fujitsu.com,
	baolin.wang@linux.alibaba.com,
	Jamie Iles <quic_jiles@quicinc.com>,
	Xin Hao <xhao@linux.alibaba.com>,
	dfustini@baylibre.com, amitsinght@marvell.com
Subject: Re: [PATCH v8 08/24] x86/resctrl: Track the number of dirty RMID a CLOSID has
Date: Mon, 22 Jan 2024 18:05:40 +0000	[thread overview]
Message-ID: <6eecc051-8e8c-fae9-0889-af6998e10be4@arm.com> (raw)
In-Reply-To: <CALPaoCi_3aPQ1cebtJLtnNEGjiAX8WjJcHP008wAOh0h+O=trQ@mail.gmail.com>

Hi Peter,

On 04/01/2024 19:13, Peter Newman wrote:
> On Fri, Dec 15, 2023 at 9:44 AM James Morse <james.morse@arm.com> wrote:
>>  void free_rmid(u32 closid, u32 rmid)
>> @@ -792,13 +813,33 @@ void mbm_setup_overflow_handler(struct rdt_domain *dom, unsigned long delay_ms)
>>  static int dom_data_init(struct rdt_resource *r)
>>  {
>>         u32 idx_limit = resctrl_arch_system_num_rmid_idx();
>> +       u32 num_closid = resctrl_arch_get_num_closid(r);

> Which resource is this again? Surely the one with the smallest number
> of CLOSIDs?

Today it's implicitly L3 because that is the only one resctrl supports monitoring on


> It's not much harm if the array is bigger than it needs to be, but

Heh, this use of this variable is behind those IS_ENABLED(), which means it gets removed
unless you are on an MPAM system. MPAM always has to sanitise these fields as not all the
hardware is exposed to resctrl.
(e.g. L3 and MB might support 16 CLOSID, but if there is an invisible system-cache in
between them that only supports 8 CLOSID, the system-wide value has to be 8, regardless of
what the hardware supports.)

The MPAM driver finds the system wide value here:
https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git/tree/drivers/platform/mpam/mpam_devices.c?h=mpam/snapshot/v6.7-rc2#n757

And regardless of which resource you select, returns that value here:
https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git/tree/drivers/platform/mpam/mpam_resctrl.c?h=mpam/snapshot/v6.7-rc2#n128

On x86 the helper returns the hardware num CLOSID so that the resctrl sanitisation does
the right thing.

I'll add a comment that this may over-allocate if the architecture isn't pre-sanitising
this field:
|                /*
|                 * If the architecture hasn't provided a sanitised value here,
|                 * this may result in larger arrays than necessary. Resctrl will
|                 * use a smaller system wide value based on the resources in
|                 * use.
|                 */


> I've become curious about how The Monitoring Resource is used in the
> code when there are later changes[1] which would cause this function
> to be called on RDT_RESOURCE_L3, RDT_RESOURCE_MBA, or both.

I need to digest Tony's series. Today the event names all have L3 in them - the MPAM
driver is ignoring both this and the resources, and relying on heuristics to pick
something to back these counters with. Something is better than nothing,.
I agree it can be improved as resctrl allows more things to be exposed.


> Given that we have hardware with event counters residing at different
> levels of the topology and possibly being associated with different
> rdt_resources, more attention needs to be paid to how these parameters
> are used in code related to monitoring.

Certainly there are likely to be weirdness in what the MPAM driver picks here. Those
patches are marked untested for a reason! I have nothing I can test the bandwidth counters on.

My intention here is that 'things that look like a Xeon' should behave equivalently as far
as resctrl can see. That gets any existing software working. Beyond that we can talk about
extending what we have to better cover the hardware people have built.

I'm coming to the conclusion that results vary depending on {ingress,egress} of {L3, SLC,
Memory-Side-Cache, Memory-Controller} - even when only one is implemented, and that hiding
this in resctrl isn't helpful. Using perf's platform-specific json files to identify
counters may be a better approach.


Thanks,

James

  reply	other threads:[~2024-01-22 18:05 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-15 17:43 [PATCH v8 00/24] x86/resctrl: monitored closid+rmid together, separate arch/fs locking James Morse
2023-12-15 17:43 ` [PATCH v8 01/24] tick/nohz: Move tick_nohz_full_mask declaration outside the #ifdef James Morse
2023-12-15 20:31   ` Thomas Gleixner
2024-01-22 18:05     ` James Morse
2023-12-15 17:43 ` [PATCH v8 02/24] x86/resctrl: kfree() rmid_ptrs from resctrl_exit() James Morse
2023-12-16  4:57   ` Reinette Chatre
2023-12-15 17:43 ` [PATCH v8 03/24] x86/resctrl: Create helper for RMID allocation and mondata dir creation James Morse
2023-12-15 17:43 ` [PATCH v8 04/24] x86/resctrl: Move rmid allocation out of mkdir_rdt_prepare() James Morse
2023-12-15 17:43 ` [PATCH v8 05/24] x86/resctrl: Track the closid with the rmid James Morse
2023-12-16  4:58   ` Reinette Chatre
2024-01-22 18:05     ` James Morse
2023-12-15 17:43 ` [PATCH v8 06/24] x86/resctrl: Access per-rmid structures by index James Morse
2023-12-16  4:58   ` Reinette Chatre
2024-01-22 18:05     ` James Morse
2023-12-15 17:43 ` [PATCH v8 07/24] x86/resctrl: Allow RMID allocation to be scoped by CLOSID James Morse
2023-12-15 17:43 ` [PATCH v8 08/24] x86/resctrl: Track the number of dirty RMID a CLOSID has James Morse
2024-01-03 19:43   ` Moger, Babu
2024-01-22 18:05     ` James Morse
2024-01-04 19:13   ` Peter Newman
2024-01-22 18:05     ` James Morse [this message]
2023-12-15 17:43 ` [PATCH v8 09/24] x86/resctrl: Use __set_bit()/__clear_bit() instead of open coding James Morse
2023-12-15 17:43 ` [PATCH v8 10/24] x86/resctrl: Allocate the cleanest CLOSID by searching closid_num_dirty_rmid James Morse
2023-12-16  5:01   ` Reinette Chatre
2024-01-22 18:06     ` James Morse
2023-12-15 17:43 ` [PATCH v8 11/24] x86/resctrl: Move CLOSID/RMID matching and setting to use helpers James Morse
2023-12-15 17:43 ` [PATCH v8 12/24] x86/resctrl: Add cpumask_any_housekeeping() for limbo/overflow James Morse
2023-12-15 17:43 ` [PATCH v8 13/24] x86/resctrl: Queue mon_event_read() instead of sending an IPI James Morse
2024-01-03 19:43   ` Moger, Babu
2024-01-22 18:06     ` James Morse
2023-12-15 17:43 ` [PATCH v8 14/24] x86/resctrl: Allow resctrl_arch_rmid_read() to sleep James Morse
2024-01-03 19:43   ` Moger, Babu
2024-01-22 18:06     ` James Morse
2023-12-15 17:43 ` [PATCH v8 15/24] x86/resctrl: Allow arch to allocate memory needed in resctrl_arch_rmid_read() James Morse
2023-12-15 17:43 ` [PATCH v8 16/24] x86/resctrl: Make resctrl_mounted checks explicit James Morse
2023-12-15 17:43 ` [PATCH v8 17/24] x86/resctrl: Move alloc/mon static keys into helpers James Morse
2023-12-15 17:43 ` [PATCH v8 18/24] x86/resctrl: Make rdt_enable_key the arch's decision to switch James Morse
2023-12-15 17:43 ` [PATCH v8 19/24] x86/resctrl: Add helpers for system wide mon/alloc capable James Morse
2024-01-03 19:43   ` Moger, Babu
2024-01-22 18:06     ` James Morse
2023-12-15 17:43 ` [PATCH v8 20/24] x86/resctrl: Add CPU online callback for resctrl work James Morse
2023-12-15 17:43 ` [PATCH v8 21/24] x86/resctrl: Allow overflow/limbo handlers to be scheduled on any-but cpu James Morse
2023-12-16  5:02   ` Reinette Chatre
2024-01-22 18:06     ` James Morse
2023-12-15 17:43 ` [PATCH v8 22/24] x86/resctrl: Add CPU offline callback for resctrl work James Morse
2023-12-15 17:43 ` [PATCH v8 23/24] x86/resctrl: Move domain helper migration into resctrl_offline_cpu() James Morse
2023-12-15 17:43 ` [PATCH v8 24/24] x86/resctrl: Separate arch and fs resctrl locks James Morse
2023-12-22 22:43 ` [PATCH v8 00/24] x86/resctrl: monitored closid+rmid together, separate arch/fs locking Carl Worth
2024-01-22 18:06   ` James Morse
2024-01-03 19:42 ` Moger, Babu
2024-01-22 18:06   ` James Morse

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=6eecc051-8e8c-fae9-0889-af6998e10be4@arm.com \
    --to=james.morse@arm.com \
    --cc=Babu.Moger@amd.com \
    --cc=amitsinght@marvell.com \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=bobo.shaobowang@huawei.com \
    --cc=bp@alien8.de \
    --cc=carl@os.amperecomputing.com \
    --cc=dfustini@baylibre.com \
    --cc=fenghua.yu@intel.com \
    --cc=hpa@zytor.com \
    --cc=lcherian@marvell.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peternewman@google.com \
    --cc=quic_jiles@quicinc.com \
    --cc=reinette.chatre@intel.com \
    --cc=scott@os.amperecomputing.com \
    --cc=shameerali.kolothum.thodi@huawei.com \
    --cc=tan.shaopeng@fujitsu.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=xhao@linux.alibaba.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).