linux-doc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/7] x86/resctrl: Add support for Sub-NUMA cluster (SNC) systems
@ 2023-06-21 17:39 Tony Luck
  2023-06-21 17:40 ` [PATCH v2 1/7] x86/resctrl: Refactor in preparation for node-scoped resources Tony Luck
                   ` (7 more replies)
  0 siblings, 8 replies; 26+ messages in thread
From: Tony Luck @ 2023-06-21 17:39 UTC (permalink / raw)
  To: Fenghua Yu, Reinette Chatre, Peter Newman, Jonathan Corbet, x86
  Cc: Shaopeng Tan, James Morse, Jamie Iles, Babu Moger, linux-kernel,
	linux-doc, patches, Tony Luck

There isn't a simple hardware enumeration to indicate to software that
a system is running with Sub-NUMA Clustering enabled.

Compare the number of NUMA nodes with the number of L3 caches to calculate
the number of Sub-NUMA nodes per L3 cache.

When Sub-NUMA clustering mode is enabled in BIOS setup, the RMID counters
are distributed equally between the SNC nodes within each socket.

E.g. if there are 400 RMID counters, and the system is configured with
two SNC nodes per socket, then RMID counter 0..199 are used on SNC node
0 on the socket, and RMID counter 200..399 on SNC node 1.

A model specific MSR (0xca0) can change the configuration of the RMIDs
when SNC mode is enabled.

The MSR controls the interpretation of the RMID field in the
IA32_PQR_ASSOC MSR so that the appropriate hardware counters
within the SNC node are updated. If reconfigured from default, RMIDs
 are divided evenly across clusters.
.  

Also initialize a per-cpu RMID offset value. Use this
to calculate the value to write to the IA32_QM_EVTSEL MSR when
reading RMID event values.

N.B. this works well for well-behaved NUMA applications that access
memory predominantly from the local memory node. For applications that
access memory across multiple nodes it may be necessary for the user
to read counters for all SNC nodes on a socket and add the values to
get the actual LLC occupancy or memory bandwidth. Perhaps this isn't
all that different from applications that span across multiple sockets
in a legacy system.

Signed-off-by: Tony Luck <tony.luck@intel.com>

---

Changes since v1:

Re-based to tip/master (on June 21, 2023)

Fenghua:
+ Better comment for l3_mon_evt_init()
+ Don't need .fflags = RFTYPE_RES_MB for node resource. Use .fflags = 0

James:
+ Add helper function to choose resource based on snc_ways
+ Drop the info/snc_ways file. No current justification for it.
+ Typos s/Suffices/Suffixes/, s/Sun-NUMA/Sub-NUMA/
+ Expand SNC acronym on first use in Documentation/x86/resctrl.rst

Peter:
+ Add checks for cpu-less nodes.

Tony Luck (7):
  x86/resctrl: Refactor in preparation for node-scoped resources
  x86/resctrl: Remove hard code of RDT_RESOURCE_L3 in monitor.c
  x86/resctrl: Add a new node-scoped resource to rdt_resources_all[]
  x86/resctrl: Add code to setup monitoring at L3 or NODE scope.
  x86/resctrl: Add package scoped resource
  x86/resctrl: Update documentation with Sub-NUMA cluster changes
  x86/resctrl: Determine if Sub-NUMA Cluster is enabled and initialize.

 Documentation/arch/x86/resctrl.rst        |  10 +-
 include/linux/resctrl.h                   |   5 +-
 arch/x86/include/asm/resctrl.h            |   2 +
 arch/x86/kernel/cpu/resctrl/internal.h    |  20 +++
 arch/x86/kernel/cpu/resctrl/core.c        | 154 ++++++++++++++++++++--
 arch/x86/kernel/cpu/resctrl/monitor.c     |  24 ++--
 arch/x86/kernel/cpu/resctrl/pseudo_lock.c |   2 +-
 arch/x86/kernel/cpu/resctrl/rdtgroup.c    |   4 +-
 8 files changed, 191 insertions(+), 30 deletions(-)


base-commit: 746d03317c1175666aad909ecc45384da42218aa
-- 
2.40.1


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

end of thread, other threads:[~2023-07-11 21:55 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-21 17:39 [PATCH v2 0/7] x86/resctrl: Add support for Sub-NUMA cluster (SNC) systems Tony Luck
2023-06-21 17:40 ` [PATCH v2 1/7] x86/resctrl: Refactor in preparation for node-scoped resources Tony Luck
2023-06-21 17:40 ` [PATCH v2 2/7] x86/resctrl: Remove hard code of RDT_RESOURCE_L3 in monitor.c Tony Luck
2023-06-21 17:40 ` [PATCH v2 3/7] x86/resctrl: Add a new node-scoped resource to rdt_resources_all[] Tony Luck
2023-06-21 17:40 ` [PATCH v2 4/7] x86/resctrl: Add code to setup monitoring at L3 or NODE scope Tony Luck
2023-06-21 17:40 ` [PATCH v2 5/7] x86/resctrl: Add package scoped resource Tony Luck
2023-06-29  7:38   ` Shaopeng Tan (Fujitsu)
2023-06-21 17:40 ` [PATCH v2 6/7] x86/resctrl: Update documentation with Sub-NUMA cluster changes Tony Luck
2023-06-21 17:52   ` Randy Dunlap
2023-06-21 17:40 ` [PATCH v2 7/7] x86/resctrl: Determine if Sub-NUMA Cluster is enabled and initialize Tony Luck
2023-06-22 14:25   ` Peter Newman
2023-06-22 16:01     ` Luck, Tony
2023-06-23 15:19       ` Peter Newman
2023-06-23 20:20         ` Tony Luck
2023-06-26 12:18           ` Peter Newman
2023-06-26 12:47   ` Peter Newman
2023-06-26 15:52     ` Luck, Tony
2023-06-26 16:20       ` Luck, Tony
2023-06-28 13:43       ` Peter Newman
2023-06-29  7:34   ` Shaopeng Tan (Fujitsu)
2023-06-29 15:56     ` Luck, Tony
2023-06-29  8:13 ` [PATCH v2 0/7] x86/resctrl: Add support for Sub-NUMA cluster (SNC) systems Shaopeng Tan (Fujitsu)
2023-06-29 16:05   ` Luck, Tony
2023-07-11 20:50     ` Reinette Chatre
2023-07-11 21:23       ` Tony Luck
2023-07-11 21:55         ` Reinette Chatre

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).