[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20241119135104.595630-1-zengheng4@huawei.com>
Date: Tue, 19 Nov 2024 21:50:58 +0800
From: Zeng Heng <zengheng4@...wei.com>
To: <james.morse@....com>, <Dave.Martin@....com>
CC: <linux-kernel@...r.kernel.org>, <jonathan.cameron@...wei.com>,
<xiexiuqi@...wei.com>, <linux-arm-kernel@...ts.infradead.org>
Subject: [RFC PATCH mpam mpam/snapshot/v6.12-rc1 v2 0/6] arm_mpam: Introduce the Narrow-PARTID feature for MPAM driver
The patch set is applied for mpam/snapshot/v6.12-rc1 branch of
https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git
repository.
This patch set is fully compatible with x86 RDT functionality.
The narrow-partid feature in MPAM allows for a more efficient use of
PARTIDs by enabling a many-to-one mapping of reqpartids (requested PARTIDs)
to intpartids (internal PARTIDs). This mapping reduces the number of unique
PARTIDs needed, thus allowing more tasks or processes to be monitored and
managed with the available resources.
Intpartid(Internal PARTID) is an internal identifier used by the hardware
to represent a specific resource partition. It is a low-level identifier
that the hardware uses to track and manage resource allocation and
monitoring.
Reqpartid(Request PARTID) is an identifier provided by the software when
requesting resources from the memory system. It indicates the desired
partition for resource monitoring. By using reqpartids, software can
monitor specific resources or allow the system to subdivide smaller
granularity partitions within existing partitions to serve as monitoring
partitions.
For the new rmid allocation strategy, it will check whether there is an
available rmid of any reqPARTID which belongs to the input intPARTID.
The MPAM driver statically assigns all reqPARTIDs to respective intPARTIDs,
with a specific illustration as follows:
m - Indicates the number of reqPARTIDs per intPARTID
n - Indicates the total number of intPARTIDs
(m * n) - Represents the total number of reqPARTIDs
intPARTID_1 = 0
├── reqPARTID_1_1 = 0
├── reqPARTID_1_2 = 0 + n
├── ...
└── reqPARTID_1_m = 0 + n * (m - 1)
intPARTID_2 = 1
├── reqPARTID_2_1 = 1
├── reqPARTID_2_2 = 1 + n
├── ...
└── reqPARTID_2_m = 1 + n * (m - 1)
...
intPARTID_n = (n - 1)
Each intPARTID has m reqPARTIDs, which are used to expand the number of
monitoring groups under the control group. Therefore, the number of
monitoring groups is no longer limited by the range of MPAM PMG, which
enhances the extensibility of the system's monitoring capabilities.
---
compared with v1:
- Rebase this patch set on latest MPAM driver of the v6.12-rc1 branch.
---
Dave Martin (1):
arm_mpam: Set INTERNAL as needed when setting MSC controls
Zeng Heng (5):
arm_mpam: Introduce the definitions of intPARTID and reqPARTID
arm_mpam: Create reqPARTIDs resource bitmap
arm_mpam: Enhance the rmid allocation strategy
arm_mpam: Call resctrl_sync_config() when allocate new reqPARTID
fs/resctrl: Add the helper to check if the task exists in the target
group
arch/x86/kernel/cpu/resctrl/core.c | 20 +++
drivers/platform/arm64/mpam/mpam_devices.c | 80 +++++++++--
drivers/platform/arm64/mpam/mpam_internal.h | 6 +
drivers/platform/arm64/mpam/mpam_resctrl.c | 145 +++++++++++++++++++-
fs/resctrl/internal.h | 4 -
fs/resctrl/monitor.c | 16 ++-
fs/resctrl/pseudo_lock.c | 7 +-
fs/resctrl/rdtgroup.c | 84 ++++++++----
include/linux/resctrl.h | 30 ++++
9 files changed, 342 insertions(+), 50 deletions(-)
--
2.25.1
Powered by blists - more mailing lists