Configure CPU models
Esc
Start typing to search...
On this page

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.
Note

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

  1. Open the HyperConverged CR by running the following command:
    terminal
    $ oc edit hyperconvergeds.v1beta1.hco.kubevirt.io kubevirt-hyperconverged -n openshift-cnv
  2. Add the defaultCPUModel field to the CR and set the value to the name of a CPU model that exists in the cluster:
    yaml
    apiVersion: hco.kubevirt.io/v1beta1
    kind: HyperConverged
    metadata:
     name: kubevirt-hyperconverged
     namespace: openshift-cnv
    spec:
      defaultCPUModel: "EPYC-IBPB"

    where:

    EPYC-IBPB

    Specifies a CPU model that is supported by nodes in your cluster.

  3. 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 defaultCPUModel is 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

  1. To configure a named CPU model for a specific VM, edit the VirtualMachine custom resource (CR):
    yaml
    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: myvm
    spec:
      template:
        spec:
          domain:
            cpu:
              model: Conroe
    • spec.template.spec.domain.cpu.model defines the named CPU model for the VM.
  2. Apply the CR to your cluster.