All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Luck, Tony" <tony.luck@intel.com>
To: Reinette Chatre <reinette.chatre@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>,
	Peter Newman <peternewman@google.com>,
	Jonathan Corbet <corbet@lwn.net>,
	x86@kernel.org, James Morse <james.morse@arm.com>,
	Jamie Iles <quic_jiles@quicinc.com>,
	Babu Moger <babu.moger@amd.com>,
	Randy Dunlap <rdunlap@infradead.org>,
	"Shaopeng Tan (Fujitsu)" <tan.shaopeng@fujitsu.com>,
	linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
	patches@lists.linux.dev
Subject: Re: [PATCH v9 4/9] x86/resctrl: Compute memory bandwidth for all supported events
Date: Thu, 21 Nov 2024 09:36:26 -0800	[thread overview]
Message-ID: <Zz9vmuv6JoyYKSwo@agluck-desk3> (raw)
In-Reply-To: <6fada5bb-7ca2-4f6b-9174-109c429e8d68@intel.com>

On Tue, Nov 19, 2024 at 07:45:01PM -0800, Reinette Chatre wrote:
> Hi Tony,
> 
> On 11/13/24 4:17 PM, Tony Luck wrote:
> > Computing the bandwidth for an event is cheap, and only done once
> > per second. Doing so simplifies switching between events and allows
> > choosing different events per ctrl_mon group.
> 
> This just reads like some a general statement. There surely can be
> some context, problem and *some* description about how this patch goes
> about addressing the problem?

I've rewritten this in the problem ... solution format.

> > 
> > Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
> > Signed-off-by: Tony Luck <tony.luck@intel.com>
> > ---
> >  arch/x86/kernel/cpu/resctrl/monitor.c | 72 ++++++++++++---------------
> >  1 file changed, 33 insertions(+), 39 deletions(-)
> > 
> > diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c
> > index 2176e355e864..da4ae21350c8 100644
> > --- a/arch/x86/kernel/cpu/resctrl/monitor.c
> > +++ b/arch/x86/kernel/cpu/resctrl/monitor.c
> > @@ -663,9 +663,12 @@ static int __mon_event_count(u32 closid, u32 rmid, struct rmid_read *rr)
> >   */
> >  static void mbm_bw_count(u32 closid, u32 rmid, struct rmid_read *rr)
> >  {
> > -	u32 idx = resctrl_arch_rmid_idx_encode(closid, rmid);
> > -	struct mbm_state *m = &rr->d->mbm_local[idx];
> >  	u64 cur_bw, bytes, cur_bytes;
> > +	struct mbm_state *m;
> > +
> > +	m = get_mbm_state(rr->d, closid, rmid, rr->evtid);
> > +	if (WARN_ON_ONCE(!m))
> > +		return;
> >  
> >  	cur_bytes = rr->val;
> >  	bytes = cur_bytes - m->prev_bw_bytes;
> > @@ -826,54 +829,45 @@ static void update_mba_bw(struct rdtgroup *rgrp, struct rdt_mon_domain *dom_mbm)
> >  	resctrl_arch_update_one(r_mba, dom_mba, closid, CDP_NONE, new_msr_val);
> >  }
> >  
> > -static void mbm_update(struct rdt_resource *r, struct rdt_mon_domain *d,
> > -		       u32 closid, u32 rmid)
> > +static void mbm_update_one_event(struct rdt_resource *r, struct rdt_mon_domain *d,
> > +				 u32 closid, u32 rmid, enum resctrl_event_id evtid)
> >  {
> >  	struct rmid_read rr = {0};
> >  
> >  	rr.r = r;
> >  	rr.d = d;
> > +	rr.evtid = evtid;
> > +	rr.arch_mon_ctx = resctrl_arch_mon_ctx_alloc(rr.r, rr.evtid);
> > +	if (IS_ERR(rr.arch_mon_ctx)) {
> > +		pr_warn_ratelimited("Failed to allocate monitor context: %ld",
> > +				    PTR_ERR(rr.arch_mon_ctx));
> > +		return;
> > +	}
> > +
> > +	__mon_event_count(closid, rmid, &rr);
> >  
> >  	/*
> > -	 * This is protected from concurrent reads from user
> > -	 * as both the user and we hold the global mutex.
> > +	 * If the software controller is enabled, compute the
> > +	 * bandwidth for this event id.
> >  	 */
> > -	if (is_mbm_total_enabled()) {
> > -		rr.evtid = QOS_L3_MBM_TOTAL_EVENT_ID;
> > -		rr.val = 0;
> > -		rr.arch_mon_ctx = resctrl_arch_mon_ctx_alloc(rr.r, rr.evtid);
> > -		if (IS_ERR(rr.arch_mon_ctx)) {
> > -			pr_warn_ratelimited("Failed to allocate monitor context: %ld",
> > -					    PTR_ERR(rr.arch_mon_ctx));
> > -			return;
> > -		}
> > -
> > -		__mon_event_count(closid, rmid, &rr);
> > +	if (is_mba_sc(NULL))
> > +		mbm_bw_count(closid, rmid, &rr);
> >  
> > -		resctrl_arch_mon_ctx_free(rr.r, rr.evtid, rr.arch_mon_ctx);
> > -	}
> > -	if (is_mbm_local_enabled()) {
> > -		rr.evtid = QOS_L3_MBM_LOCAL_EVENT_ID;
> > -		rr.val = 0;
> > -		rr.arch_mon_ctx = resctrl_arch_mon_ctx_alloc(rr.r, rr.evtid);
> > -		if (IS_ERR(rr.arch_mon_ctx)) {
> > -			pr_warn_ratelimited("Failed to allocate monitor context: %ld",
> > -					    PTR_ERR(rr.arch_mon_ctx));
> > -			return;
> > -		}
> > -
> > -		__mon_event_count(closid, rmid, &rr);
> > +	resctrl_arch_mon_ctx_free(rr.r, rr.evtid, rr.arch_mon_ctx);
> > +}
> >  
> > -		/*
> > -		 * Call the MBA software controller only for the
> > -		 * control groups and when user has enabled
> > -		 * the software controller explicitly.
> > -		 */
> > -		if (is_mba_sc(NULL))
> > -			mbm_bw_count(closid, rmid, &rr);
> > +static void mbm_update(struct rdt_resource *r, struct rdt_mon_domain *d,
> > +		       u32 closid, u32 rmid)
> > +{
> > +	/*
> > +	 * This is protected from concurrent reads from user
> > +	 * as both the user and we hold the global mutex.
> 
> I understand that you are just copy&pasting a comment here but could you please
> help to avoid any obstacles by removing the code impersonation? Perhaps something like:
> 
> 	 * This is protected from concurrent reads from user
> 	 * as both the user and overflow handler hold the global mutex.
> 
> (please feel free to improve)

No improvement to the text needed. But I did move some words from 2nd
line to the first to look better (IMHO).

> > +	 */
> > +	if (is_mbm_total_enabled())
> > +		mbm_update_one_event(r, d, closid, rmid, QOS_L3_MBM_TOTAL_EVENT_ID);
> >  
> > -		resctrl_arch_mon_ctx_free(rr.r, rr.evtid, rr.arch_mon_ctx);
> > -	}
> > +	if (is_mbm_local_enabled())
> > +		mbm_update_one_event(r, d, closid, rmid, QOS_L3_MBM_LOCAL_EVENT_ID);
> >  }
> >  
> >  /*
> 
> Reinette

-Tony

  reply	other threads:[~2024-11-21 17:36 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-14  0:17 [PATCH v9 0/9] x86/resctrl: mba_MBps enhancement Tony Luck
2024-11-14  0:17 ` [PATCH v9 1/9] x86/resctrl: Introduce resctrl_file_fflags_init() to initialize fflags Tony Luck
2024-11-15 16:19   ` Moger, Babu
2024-11-20  0:38   ` Reinette Chatre
2024-11-21 17:21     ` Luck, Tony
2024-11-14  0:17 ` [PATCH v9 2/9] x86/resctrl: Prepare for per-ctrl_mon group mba_MBps control Tony Luck
2024-11-15 16:20   ` Moger, Babu
2024-11-18 23:47     ` Luck, Tony
2024-11-20  1:08   ` Reinette Chatre
2024-11-21 17:33     ` Luck, Tony
2024-11-22 21:33       ` Reinette Chatre
2024-11-14  0:17 ` [PATCH v9 3/9] x86/resctrl: Modify update_mba_bw() to use per ctrl_mon group event Tony Luck
2024-11-15 16:21   ` Moger, Babu
2024-11-19  0:01     ` Luck, Tony
2024-11-19  0:51       ` Reinette Chatre
2024-11-19  1:44         ` Luck, Tony
2024-11-19 17:36           ` Reinette Chatre
2024-11-20  3:39   ` Reinette Chatre
2024-11-14  0:17 ` [PATCH v9 4/9] x86/resctrl: Compute memory bandwidth for all supported events Tony Luck
2024-11-15 13:53   ` Peter Newman
2024-11-15 16:59     ` Luck, Tony
2024-11-20  3:45   ` Reinette Chatre
2024-11-21 17:36     ` Luck, Tony [this message]
2024-11-14  0:17 ` [PATCH v9 5/9] x86/resctrl: Relax checks for mba_MBps mount option Tony Luck
2024-11-20  3:54   ` Reinette Chatre
2024-11-21 17:39     ` Luck, Tony
2024-11-14  0:17 ` [PATCH v9 6/9] x86/resctrl: Add "mba_MBps_event" file to ctrl_mon directories Tony Luck
2024-11-20  4:03   ` Reinette Chatre
2024-11-21 17:42     ` Luck, Tony
2024-11-14  0:17 ` [PATCH v9 7/9] x86/resctrl: Add write option to "mba_MBps_event" file Tony Luck
2024-11-14  0:17 ` [PATCH v9 8/9] x86/resctrl: Make mba_sc use total bandwidth if local is not supported Tony Luck
2024-11-14  0:17 ` [PATCH v9 9/9] x86/resctrl: Document the new "mba_MBps_event" file 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=Zz9vmuv6JoyYKSwo@agluck-desk3 \
    --to=tony.luck@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=reinette.chatre@intel.com \
    --cc=tan.shaopeng@fujitsu.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.