1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 12:46:18 +01:00
Files
openshift-docs/modules/virt-CPU-manager-policy.adoc
2025-12-05 17:18:18 +00:00

76 lines
2.7 KiB
Plaintext

// Module included in the following assemblies:
//
// * virt/post_installation_configuration/virt-perf-optimization.adoc
:_mod-docs-content-type: PROCEDURE
[id="virt-CPU-manager-policy_{context}"]
= Configuring full physical cores for virtual machines
[role="_abstract"]
As a cluster administrator, you can allocate a full physical core to a specific virtual machine (VM), instead of allowing different VMs to share the same physical core.
Configuring your VMs to use only full physical cores can optimize performance for high-throughput or latency-critical VMs.
Allocating only full physical cores is important on simultaneous multi-threading (SMT) enabled systems because it offers the following benefits:
* Prevents noisy neighbors and resource contention
* Mitigates performance degradation
* Offers predictable latency
* Guarantees exclusive CPU resources
You can configure full physical core allocation by modifying the `cpuManagerPolicy` and `cpuManagerPolicyOptions` settings in the `KubeletConfig` custom resource (CR).
.Prerequisites
* You have cluster administrator access to a {product-title} cluster with {VirtProductName} installed.
* You have installed the {oc-first}.
* You have enabled CPU Manager on the node where your VM runs.
.Procedure
. Edit the `KubeletConfig` CR to add the required `cpuManagerPolicy` and `cpuManagerPolicyOptions` configurations:
+
[source,yaml]
----
apiVersion: machineconfiguration.openshift.io/v1
kind: KubeletConfig
# ...
cpuManagerPolicy: static
cpuManagerPolicyOptions:
full-pcpus-only: true
kubeReserved:
cpu: "1"
# ...
----
+
* You must set the `cpuManagerPolicy: static` policy to enable exclusive CPU allocation. This setting is a prerequisite for configuring the `cpuManagerPolicyOptions` settings.
* You must set the `full-pcpus-only: true` policy option so that the static CPU Manager policy only allocates full physical cores.
* You must reserve 1 CPU for the system by setting `cpu: "1"` in the `kubeReserved` settings. This ensures that the cluster remains stable, by requiring that the system's core functions always have access to the CPU that they need to work correctly.
. Run the following command to apply the changes to the `KubeletConfig` CR:
+
[source,terminal]
----
$ oc apply -f <filename>.yaml
----
.Verification
* Inspect the kubelet configuration on a node where the change you applied the change, by running the following command and inspecting the output:
+
[source,terminal]
----
$ oc debug node/<node_name> -- chroot /host cat /etc/kubernetes/kubelet.conf | grep -E -A 2 'cpuManagerPolicy|kubeReserved'
----
+
Example output:
+
[source,YAML]
----
cpuManagerPolicy: static
cpuManagerPolicyOptions:
full-pcpus-only: true
--
kubeReserved:
cpu: "1"
----