-
Notifications
You must be signed in to change notification settings - Fork 182
Home
This software package provides support for Intel(R) Resource Director Technology: Cache Monitoring Technology (CMT), Memory Bandwidth Monitoring (MBM), Cache Allocation Technology (CAT), Code and Data Prioritization (CDP) and Memory Bandwidth Allocation (MBA).
Intel(R) RDT provides the hardware framework to monitor and manage shared CPU resources, like cache and memory bandwidth. An increase in the number of workloads running simultaneously on a system increases pressure on shared CPU resources resulting in lower performance determinism. Intel(R) RDT technologies can monitor and control the allocation of key shared system resources to help improve determinism.
Linux is the primary supported operating system at the moment. There is a FreeBSD port of the software but due to limited validation scope it is rather experimental at this stage.
Although most modern Linux kernels include support for Intel(R) RDT, the intel-cmt-cat software package predates these extensions and can operate with and without kernel support. The intel-cmt-cat software can detect and leverage these kernel extensions when available to add functionality, but is also compatible with legacy kernels.
Linux kernel support for Intel(R) RDT was originally introduced with Linux perf system call extensions for CMT and MBM. More recently, the Resctrl interface added support for CAT, CDP and MBA. On modern Linux kernels, it is advised to use the kernel/OS interface when available. Details about these interfaces can be found in intel_rdt_ui.txt. This software package, intel-cmt-cat, remains to work seamlessly in all Linux kernel versions.
The intel-cmt-cat software library and utilities offer two interfaces to program Intel(R) RDT technologies, these are the MSR & OS interfaces.
The MSR interface is used to configure the platform by programming the hardware (MSR's) directly. This is the legacy interface and requires no kernel support but is limited to monitoring and managing resources on a per core basis.
The OS interface was later added to the package and when selected, the library will leverage Linux kernel extensions to program these technologies. This allows monitoring and managing resources on a per core/process basis and should be used when available.
Please see the tables below for more information on when Intel(R) RDT feature (MSR & OS) support was added to the package.
intel-cmt-cat version | RDT feature enabled | Kernel version required |
---|---|---|
0.1.3 | L3 CAT, CMT, MBM | Any |
0.1.4 | L3 CDP | Any |
0.1.5 | L2 CAT | Any |
1.2.0 | MBA | Any |
2.0.0 | L2 CDP | Any |
intel-cmt-cat version | RDT feature enabled | Kernel version required | Recommended interface |
---|---|---|---|
0.1.4 | CMT (Perf) | 4.1 | MSR (1) |
1.0.0 | MBM (Perf) | 4.7 | MSR (1) |
1.1.0 | L3 CAT, L3 CDP, L2 CAT (Resctrl) | 4.10 | OS for allocation only (with the exception of MBA) MSR for allocation + monitoring (2) |
1.2.0 | MBA (Resctrl) | 4.12 | OS for allocation only MSR for allocation + monitoring (2) |
2.0.0 | CMT, MBM (Resctrl) | 4.14 | OS |
2.0.0 | L2 CDP | 4.16 | OS |
- Monitoring with Perf on a per core basis is not supported and returns invalid results.
- The MSR and OS interfaces are not compatible. MSR interface is recommended if monitoring and allocation is to be used.
The only dependencies of intel-cmt-cat is access to C and pthreads libraries and:
- without kernel extensions - 'msr' kernel module
- with kernel extensions - Intel(R) RDT extended Perf system call and Resctrl filesystem
Intel(R) RDT kernel support can be enabled using kernel configuration options.
For example:
- enable kernel v4.10 - v4.13 with configuration option CONFIG_INTEL_RDT_A
- enable kernel v4.14+ with configuration option CONFIG_INTEL_RDT
- Note: no kernel configuration options required before v4.10.
Individual Intel(R) RDT features can be enabled/disabled by passing kernel command line parameters at boot.
For example, to turn on CMT and turn off MBA, add the following to your kernel command line:
rdt=cmt,!mba
The full list of parameters is:
cmt, mbmtotal, mbmlocal, l3cat, l3cdp, l2cat, l2cdp, mba
For more information, visit our other wiki pages: