mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-05-01 21:23:59 +00:00
doc: update rdt config tutorial
Add some clarification and updates for 3.1 Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
This commit is contained in:
parent
785ce3346c
commit
cb91722dd5
@ -7,59 +7,57 @@ About Intel Resource Director Technology (RDT)
|
|||||||
**********************************************
|
**********************************************
|
||||||
|
|
||||||
On x86 platforms that support Intel Resource Director Technology (RDT)
|
On x86 platforms that support Intel Resource Director Technology (RDT)
|
||||||
allocation features, the ACRN hypervisor can partition the shared cache among
|
allocation features, the ACRN hypervisor can help minimize cache misses by
|
||||||
VMs to minimize performance impacts on higher-priority VMs, such as real-time
|
partitioning the shared cache among VMs. “Shared cache” refers to cache that is
|
||||||
VMs (RTVMs). “Shared cache” refers to cache that is shared among multiple CPU
|
shared among multiple CPU cores. By default, VMs running on these cores are
|
||||||
cores. By default, VMs running on these cores are configured to use the entire
|
configured to use the entire cache, effectively sharing the cache among all VMs
|
||||||
cache, effectively sharing the cache among all VMs without any partitions. This
|
and without any partitioning. This design choice may cause too many cache misses
|
||||||
design may cause too many cache misses for applications running in
|
for applications running in higher-priority VMs, such as real-time VMs (RTVM),
|
||||||
higher-priority VMs, negatively affecting their performance. The ACRN hypervisor
|
negatively affecting their performance. The ACRN hypervisor can help minimize
|
||||||
can help minimize cache misses by isolating a portion of the shared cache for
|
cache misses and improve performance by isolating a portion of the shared cache
|
||||||
a specific VM.
|
for a specific VM.
|
||||||
|
|
||||||
ACRN supports the following features:
|
ACRN supports the following features:
|
||||||
|
|
||||||
* Cache Allocation Technology (CAT)
|
Cache Allocation Technology (CAT)
|
||||||
* Code and Data Prioritization (CDP)
|
The CAT support in the hypervisor isolates a portion of the cache for a VM from
|
||||||
* Virtual Cache Allocation Technology (vCAT)
|
other VMs. Generally, certain cache resources are allocated for the RTVMs to
|
||||||
|
reduce performance interference by other VMs attempting to use the same cache.
|
||||||
|
|
||||||
The CAT support in the hypervisor isolates a portion of the cache for a VM from
|
|
||||||
other VMs. Generally, certain cache resources are allocated for the RTVMs to
|
|
||||||
reduce performance interference by other VMs attempting to use the same cache.
|
|
||||||
|
|
||||||
The CDP feature in RDT is an extension of CAT that enables separate control over
|
Code and Data Prioritization (CDP)
|
||||||
code and data placement in the cache. The CDP support in the hypervisor isolates
|
The CDP feature in RDT is an extension of CAT that enables separate control over
|
||||||
a portion of the cache for code and another portion for data for the same VM.
|
code and data placement in the cache. The CDP support in the hypervisor isolates
|
||||||
|
a portion of the cache for code and another portion for data for the same VM.
|
||||||
|
|
||||||
ACRN also supports the virtualization of CAT, referred to as vCAT. With
|
|
||||||
vCAT enabled, the hypervisor presents CAT to a selected set of VMs to allow the
|
Virtual Cache Allocation Technology (vCAT)
|
||||||
guest OSes to further isolate the cache used by higher-priority processes in
|
ACRN also supports virtualizing CAT, referred to as vCAT. With
|
||||||
those VMs.
|
vCAT enabled, the hypervisor presents CAT to a selected set of VMs, allowing the
|
||||||
|
guest OSs to further isolate the cache used by higher-priority processes in
|
||||||
|
those VMs.
|
||||||
|
|
||||||
Dependencies and Constraints
|
Dependencies and Constraints
|
||||||
*****************************
|
*****************************
|
||||||
|
|
||||||
Consider the following dependencies and constraints:
|
Consider the following dependencies and constraints:
|
||||||
|
|
||||||
* The hardware must support RDT in order for ACRN to enable RDT support in the
|
* The hardware must support RDT for ACRN to enable RDT support in the
|
||||||
hypervisor.
|
hypervisor.
|
||||||
|
|
||||||
* The cache must be shared cache (cache shared across multiple CPU cores), as
|
* The cache must be shared cache (cache shared across multiple CPU cores) and
|
||||||
opposed to private cache (cache that is owned by only one CPU core). If the
|
not private cache (cache that is owned by only one CPU core). If the
|
||||||
cache is private, CAT, CDP, and vCAT have no benefit because the cache is
|
cache is private, CAT, CDP, and vCAT have no benefit because the cache is
|
||||||
already exclusively used by one core. For this reason, the ACRN Configurator
|
already exclusively used by one core. For this reason, the ACRN Configurator
|
||||||
will not allow you to configure private cache.
|
will not allow you to configure private cache.
|
||||||
|
|
||||||
* The ACRN Configurator relies on the board configuration file to provide CAT
|
* The ACRN Configurator displays CAT configuration parameters based on data
|
||||||
information that it can use to display configuration parameters. On Tiger Lake
|
reported in the board configuration file. Some Intel platforms are known to
|
||||||
systems, L3 CAT, also known as LLC CAT, is model specific and
|
have L3 CAT even though it's not reported via the architectural CPUID
|
||||||
non-architectural. For these reasons, the Board Inspector doesn't detect LLC
|
interface. In this situation, the board inspector detects availability of L3
|
||||||
CAT, and therefore doesn't provide LLC CAT information in the board
|
CAT by trying to access the CAT MSRs directly. Versions of the board inspector
|
||||||
configuration file even if the board has LLC CAT capabilities. The Board
|
before v3.1 only used the CPUID interface and would indicate L3 CAT wasn't
|
||||||
Inspector offers a way to manually add LLC CAT information to the board
|
supported in this circumstance.
|
||||||
configuration file via a command-line option described in
|
|
||||||
:ref:`board_inspector_tool`. Run the Board Inspector with the command-line
|
|
||||||
option, then import the board configuration file into the ACRN Configurator.
|
|
||||||
|
|
||||||
* The guest OS in a VM with vCAT enabled requires utilities in that OS for
|
* The guest OS in a VM with vCAT enabled requires utilities in that OS for
|
||||||
further cache allocation configurations. An example is the `resctrl
|
further cache allocation configurations. An example is the `resctrl
|
||||||
@ -159,7 +157,7 @@ The table title shows important information:
|
|||||||
The above example shows an L2 cache table. VMs assigned to any CPU cores 2-6 can
|
The above example shows an L2 cache table. VMs assigned to any CPU cores 2-6 can
|
||||||
have cache allocated to them.
|
have cache allocated to them.
|
||||||
|
|
||||||
The table's y-axis shows the names of all VMs that are assigned to the CPU cores
|
The table's columns show the names of all VMs that are assigned to the CPU cores
|
||||||
noted in the table title, as well as their vCPU IDs. The table categorizes the
|
noted in the table title, as well as their vCPU IDs. The table categorizes the
|
||||||
vCPUs as either standard or real-time. The real-time vCPUs are those that are
|
vCPUs as either standard or real-time. The real-time vCPUs are those that are
|
||||||
set as real-time in the VM's parameters. All other vCPUs are considered
|
set as real-time in the VM's parameters. All other vCPUs are considered
|
||||||
@ -170,7 +168,7 @@ standard vCPUs (VM0 vCPU 2 and 6).
|
|||||||
|
|
||||||
The Service VM is automatically assigned to all CPUs, so it appears in the standard category in all cache tables.
|
The Service VM is automatically assigned to all CPUs, so it appears in the standard category in all cache tables.
|
||||||
|
|
||||||
The table's x-axis shows the number of available cache chunks. You can see the
|
The table's rows show the number of available cache chunks. You can see the
|
||||||
size of each cache chunk in the note below the table. In the above example, 20
|
size of each cache chunk in the note below the table. In the above example, 20
|
||||||
cache chunks are available to allocate to the VMs, and each cache chunk is 64KB.
|
cache chunks are available to allocate to the VMs, and each cache chunk is 64KB.
|
||||||
All cache chunks are yellow, which means all of them are allocated to all VMs.
|
All cache chunks are yellow, which means all of them are allocated to all VMs.
|
||||||
|
Loading…
Reference in New Issue
Block a user