# CPU Model

## What is a CPU Model

In <code class="expression">space.vars.product\_name</code>, a CPU model refers to the set of CPU features and flags exposed to a virtual machine. This is how <code class="expression">space.vars.product\_name</code> compute service manages the CPU architecture presented to a virtual machine guest operating system, allowing for flexibility and control over performance, compatibility, and migration capabilities.

## Use Cases for CPU Model

* **Performance:** Exposing specific CPU features can maximize the performance of workloads running inside the virtual machines.
* **Compatibility:** Ensuring consistent behavior across different hypervisor hosts in a virtualized cluster, regardless of the underlying host CPU, can be achieved by specifying a CPU model.
* **Migration:** CPU models play an important role in [Live Migration](/private-cloud-director/2026.1/virtualized-clusters/virtualmachine/vm-migration.md#live-migration) and [Dynamic Resource Rebalancing Drr ](/private-cloud-director/2026.1/virtualized-clusters/virtualized-cluster/dynamic-resource-rebalancing-drr.md). Matching CPU models on source and destination hosts is crucial for successful live migration and for [Dynamic Resource Rebalancing Drr ](/private-cloud-director/2026.1/virtualized-clusters/virtualized-cluster/dynamic-resource-rebalancing-drr.md)to operate with full efficiency.

## Locating CPU Models Supported By Your Host

The libvirt KVM driver that comes built in as part of your Ubuntu installation on your hypervisor host provides a number of standard CPU model names.

These models are defined in `/usr/share/libvirt/cpu_map/*.xml`. You can inspect these files to determine which models are supported by your server.

Each file located under this directory contains information about the **feature set provided by the CPU model.**

For example, here the file `x86_SandyBridge-IBRS.xml`describes the CPU vendor, family, model and features supported by the SandyBridge-IBRS CPU Model.

{% tabs %}
{% tab title="Bash" %}

```bash
$ cat /usr/share/libvirt/cpu_map/x86_SandyBridge-IBRS.xml
<cpus>
  <model name='SandyBridge-IBRS'>
    <decode host='on' guest='on'/>
    <signature family='6' model='42'/> <!-- 0206a0 -->
    <signature family='6' model='45'/> <!-- 0206d0 -->
    <vendor name='Intel'/>
    <feature name='aes'/>
    <feature name='apic'/>
    ...
  </model>
</cpus>
```

{% endtab %}
{% endtabs %}

You can also locate the supported CPU models by running `virsh cpu-models <ARCH>` command:

{% tabs %}
{% tab title="Bash" %}

```bash
$ virsh cpu-models x86_64
...
SandyBridge
SandyBridge-IBRS
IvyBridge
IvyBridge-IBRS
Haswell-noTSX
Haswell-noTSX-IBRS
Haswell
Haswell-IBRS
```

{% endtab %}
{% endtabs %}

## Supported CPU Models

<code class="expression">space.vars.product\_name</code> currently supports following list of [Supported Cpu Models List](/private-cloud-director/2026.1/virtualized-clusters/add-hosts-virtualized-cluster/cpu-model/supported-cpu-models-list.md).

## CPU Model Configuration Per Host

When you configure a host with 'hypervisor' role, here are the steps followed by the compute service to configure the CPU model on the host:

1. It starts by checking the [list of approved models](/private-cloud-director/2026.1/virtualized-clusters/add-hosts-virtualized-cluster/cpu-model/supported-cpu-models-list.md), beginning with the newest models based on the CPU vendor for your host.
2. For each model, it verifies compatibility by checking if the model is marked as **usable** in the `virsh -c qemu:///system domcapabilities` output.
3. The first approved model marked as usable is selected.
4. If no approved models are usable, the system falls back to a generic model.

## CPU Model Pre-requisites for Hypervisor Hosts

* Each host that you authorize in your <code class="expression">space.vars.product\_name</code> setup with 'hypervisor' role must support at least one CPU Model that is part of the [Supported Cpu Models List](/private-cloud-director/2026.1/virtualized-clusters/add-hosts-virtualized-cluster/cpu-model/supported-cpu-models-list.md) list.
  * Failing this requirement may result in unexpected errors such as the host going to offline state, or virtual machines failing to provision, etc.

## CPU Model Pre-requisites for Migration

Following CPU model prerequisites must be met by all hosts within a virtualized cluster, so that operations like live migration, cold migration, VM evacuation can work smoothly, and services like [Dynamic Resource Rebalancing Drr ](/private-cloud-director/2026.1/virtualized-clusters/virtualized-cluster/dynamic-resource-rebalancing-drr.md), [Virtual Machine High Availability Vm Ha ](/private-cloud-director/2026.1/virtualized-clusters/virtualized-cluster/virtual-machine-high-availability-vm-ha.md)can operate efficiently.

* All hosts in the cluster must have the exact same value for the most recent CPU model supported. Read here for how [system configures CPU model per host](#cpu-model-configuration-per-host).
* This value must be part of the list of [Supported Cpu Models List](/private-cloud-director/2026.1/virtualized-clusters/add-hosts-virtualized-cluster/cpu-model/supported-cpu-models-list.md).
* If the hosts do not all report the same most-recent supported CPU model, or if a host’s CPU model is missing from the supported models list above, then you can set the [CPU Mode and Model](/private-cloud-director/2026.1/virtualized-clusters/virtualized-cluster.md#cpu-mode-and-model)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.platform9.com/private-cloud-director/2026.1/virtualized-clusters/add-hosts-virtualized-cluster/cpu-model.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
