Configure CPU models
You can configure CPU models for your virtual machines at both the cluster level and individual VM level. Set a cluster-wide default CPU model to automatically apply to all new VMs, or configure a specific CPU model for individual VMs to override the cluster default.
Configure the default CPU model
Use the defaultCPUModel setting in the HyperConverged custom resource (CR) to define a cluster-wide default CPU model.
When you set a cluster-wide default CPU model:
- Every new virtual machine (VM) that does not have an explicit CPU model defined receives a node selector for the chosen CPU model.
- Only nodes labeled with
cpu-model.node.kubevirt.io/<cpuModel>are eligible to run VMs using the default model. - Nodes that do not support the selected CPU model are not considered during VM scheduling.
The defaultCPUModel is case sensitive and must match a CPU model supported by nodes in your cluster.
A CPU model configured at the VM level always takes precedence over the cluster-wide default CPU model.
Prerequisites
- Install the OpenShift CLI (
oc).
Procedure
-
Open the
HyperConvergedCR by running the following command:$ oc edit hyperconvergeds.v1beta1.hco.kubevirt.io kubevirt-hyperconverged -n openshift-cnv -
Add the
defaultCPUModelfield to the CR and set the value to the name of a CPU model that exists in the cluster:apiVersion: hco.kubevirt.io/v1beta1kind: HyperConvergedmetadata:name: kubevirt-hyperconvergednamespace: openshift-cnvspec:defaultCPUModel: "EPYC-IBPB"where:
EPYC-IBPB- Specifies a CPU model that is supported by nodes in your cluster.
-
Apply the YAML file to your cluster.
Configure a CPU model per-VM
You can specify a named CPU model in the virtual machine (VM) specification. This per-VM configuration takes precedence over any cluster-wide default CPU model.
The VM CPU model depends on the availability of CPU models within the VM and the cluster.
- If the VM does not have a defined CPU model, the
defaultCPUModelis automatically set using the CPU model defined at the cluster-wide level. - If both the VM and the cluster have a defined CPU model, the VM’s CPU model takes precedence.
- If neither the VM nor the cluster have a defined CPU model, the host-model is automatically set using the CPU model defined at the host level.
Prerequisites
- Install the OpenShift CLI (
oc).
Procedure
-
To configure a named CPU model for a specific VM, edit the
VirtualMachinecustom resource (CR):apiVersion: kubevirt.io/v1kind: VirtualMachinemetadata:name: myvmspec:template:spec:domain:cpu:model: Conroespec.template.spec.domain.cpu.modeldefines the named CPU model for the VM.
-
Apply the CR to your cluster.