All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86/resctrl: mba_MBps: Fall back to total b/w if local b/w unavailable
@ 2023-10-24 18:16 Tony Luck
  2023-10-24 18:24 ` Luck, Tony
                   ` (3 more replies)
  0 siblings, 4 replies; 78+ messages in thread
From: Tony Luck @ 2023-10-24 18:16 UTC (permalink / raw)
  To: Fenghua Yu, Reinette Chatre, Peter Newman, Jonathan Corbet,
	Shuah Khan, x86
  Cc: Shaopeng Tan, James Morse, Jamie Iles, Babu Moger, Randy Dunlap,
	linux-kernel, linux-doc, patches, Tony Luck

On Intel the various resource director technology (RDT) features are all
orthogonal and independently enumerated. Thus it is possible to have
a system that  provides "total" memory bandwidth measurements without
providing "local" bandwidth measurements.

If local bandwidth measurement is not available, do not give up on
providing the "mba_MBps" feedback option completely, make the code fall
back to using total bandwidth.

Signed-off-by: Tony Luck <tony.luck@intel.com>
---
 arch/x86/kernel/cpu/resctrl/monitor.c  | 34 ++++++++++++++++----------
 arch/x86/kernel/cpu/resctrl/rdtgroup.c |  2 +-
 2 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c
index f136ac046851..3b9531cce807 100644
--- a/arch/x86/kernel/cpu/resctrl/monitor.c
+++ b/arch/x86/kernel/cpu/resctrl/monitor.c
@@ -418,6 +418,14 @@ static int __mon_event_count(u32 rmid, struct rmid_read *rr)
 	return 0;
 }
 
+static struct mbm_state *get_mbm_data(struct rdt_domain *dom_mbm, int rmid)
+{
+	if (is_mbm_local_enabled())
+		return &dom_mbm->mbm_local[rmid];
+
+	return &dom_mbm->mbm_total[rmid];
+}
+
 /*
  * mbm_bw_count() - Update bw count from values previously read by
  *		    __mon_event_count().
@@ -431,7 +439,7 @@ static int __mon_event_count(u32 rmid, struct rmid_read *rr)
  */
 static void mbm_bw_count(u32 rmid, struct rmid_read *rr)
 {
-	struct mbm_state *m = &rr->d->mbm_local[rmid];
+	struct mbm_state *m = get_mbm_data(rr->d, rmid);
 	u64 cur_bw, bytes, cur_bytes;
 
 	cur_bytes = rr->val;
@@ -526,14 +534,14 @@ static void update_mba_bw(struct rdtgroup *rgrp, struct rdt_domain *dom_mbm)
 	struct list_head *head;
 	struct rdtgroup *entry;
 
-	if (!is_mbm_local_enabled())
+	if (!is_mbm_enabled())
 		return;
 
 	r_mba = &rdt_resources_all[RDT_RESOURCE_MBA].r_resctrl;
 
 	closid = rgrp->closid;
 	rmid = rgrp->mon.rmid;
-	pmbm_data = &dom_mbm->mbm_local[rmid];
+	pmbm_data = get_mbm_data(dom_mbm, rmid);
 
 	dom_mba = get_domain_from_cpu(smp_processor_id(), r_mba);
 	if (!dom_mba) {
@@ -553,7 +561,7 @@ static void update_mba_bw(struct rdtgroup *rgrp, struct rdt_domain *dom_mbm)
 	 */
 	head = &rgrp->mon.crdtgrp_list;
 	list_for_each_entry(entry, head, mon.crdtgrp_list) {
-		cmbm_data = &dom_mbm->mbm_local[entry->mon.rmid];
+		cmbm_data = get_mbm_data(dom_mbm, entry->mon.rmid);
 		cur_bw += cmbm_data->prev_bw;
 		delta_bw += cmbm_data->delta_bw;
 	}
@@ -595,7 +603,7 @@ static void update_mba_bw(struct rdtgroup *rgrp, struct rdt_domain *dom_mbm)
 	 */
 	pmbm_data->delta_comp = true;
 	list_for_each_entry(entry, head, mon.crdtgrp_list) {
-		cmbm_data = &dom_mbm->mbm_local[entry->mon.rmid];
+		cmbm_data = get_mbm_data(dom_mbm, entry->mon.rmid);
 		cmbm_data->delta_comp = true;
 	}
 }
@@ -621,15 +629,15 @@ static void mbm_update(struct rdt_resource *r, struct rdt_domain *d, int rmid)
 		rr.evtid = QOS_L3_MBM_LOCAL_EVENT_ID;
 		rr.val = 0;
 		__mon_event_count(rmid, &rr);
-
-		/*
-		 * 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(rmid, &rr);
 	}
+
+	/*
+	 * 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(rmid, &rr);
 }
 
 /*
diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
index 69a1de92384a..0c4f8a1b8df0 100644
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -2294,7 +2294,7 @@ static bool supports_mba_mbps(void)
 {
 	struct rdt_resource *r = &rdt_resources_all[RDT_RESOURCE_MBA].r_resctrl;
 
-	return (is_mbm_local_enabled() &&
+	return (is_mbm_enabled() &&
 		r->alloc_capable && is_mba_linear());
 }
 
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 78+ messages in thread

end of thread, other threads:[~2024-01-25 17:29 UTC | newest]

Thread overview: 78+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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
2024-01-24 10:42             ` [tip: x86/cache] " tip-bot2 for Tony Luck

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.