VMs using "CPU Model" that matches the installed chips. Should we move to x86-64-v2-AES for performance?


Dec 14, 2020

I'm curious about this - with the new update to the default CPU type when creating via GUI, and the note about performance efficiency, should we be changing over from using the most-closest-matching one from the list, instead to using x86-64-v2-AES to reap these rewards?

Or are there benefits from staying on the matching option? Either way I'd imagine we could add other flags like IBRS.

I am not sure if you are aware of this, hopefully it answers your question.
Usually you should select for your VM a processor type which closely matches the CPU of the host system, as it means that the host CPU features (also called CPU flags ) will be available in your VMs. If you want an exact match, you can set the CPU type to host in which case the VM will have exactly the same CPU flags as your host system.

This has a downside though. If you want to do a live migration of VMs between different hosts, your VM might end up on a new system with a different CPU type or a different microcode version. If the CPU flags passed to the guest are missing, the QEMU process will stop. To remedy this QEMU has also its own virtual CPU types, that Proxmox VE uses by default.

The backend default is kvm64 which works on essentially all x86_64 host CPUs and the UI default when creating a new VM is x86-64-v2-AES, which requires a host CPU starting from Westmere for Intel or at least a fourth generation Opteron for AMD.

In short:

If you don’t care about live migration or have a homogeneous cluster where all nodes have the same CPU and same microcode version, set the CPU type to host, as in theory this will give your guests maximum performance.

If you care about live migration and security, and you have only Intel CPUs or only AMD CPUs, choose the lowest generation CPU model of your cluster.

If you care about live migration without security, or have mixed Intel/AMD cluster, choose the lowest compatible virtual QEMU CPU type.
if the vCPU type is compatible with all cluster nodes, using the matching option should give you best performance and most CPU features. The new default was introduced, because the old default kvm64 was pretty outdated/limited and most CPUs released in the last decade can support more.

For more, please see the CPU Type section in the documentation: https://pve.proxmox.com/pve-docs/chapter-qm.html#qm_cpu
Thank you both, this gives a new perspective - we have exact series configured per-guest right now, this seems wise so will retain it.

We are leveraging some of the flags available, and each cluster only has nodes with the same silicon model exactly, so no issue there.


The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!