How to differentiate between KVM CPU models and select appropiately?

Jul 6, 2020
5
1
23
40
We've recently discovered the performance improvements for choosing a CPU model which most closely matches our cluster. I want to work out the best way to determine the correct 'lowest' cpu model for the cluster. We have both:

Intel(R) Xeon(R) Gold 6140 CPU
and
Intel(R) Xeon(R) Gold 6330N CPU

In the cluster, I believe (from Googling) the 6140 is the Skylake generation and the 6330 is the Ice lake. Is there a better way to find this out examining /proc or something?

Also how would one determine between the different 'Skylake' models to use? I went for Skylake-Server-v5 because it was the highest version no, but I don't quite understand the difference. I'd also like to know about the variants like Skylake-Server-noTSX-IBRS?
 
What PVE version do you use? In PVE 8, there is already an improved KVM Processor available (v2, which is the default now) with a better feature set. An overview can be seen here. Best performance will always be HOST, yet also not recommended in mixed CPU clusters.
 
  • Like
Reactions: herzkerl
What PVE version do you use? In PVE 8, there is already an improved KVM Processor available (v2, which is the default now) with a better feature set. An overview can be seen here. Best performance will always be HOST, yet also not recommended in mixed CPU clusters.

I'm on 8.1 and don't see a new KVM processor:

Screenshot 2024-03-28 at 06.26.55.png
Ah, but I see in the CPU docs:

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.

So I think on my one of my clusters, I can go higher than that and I just discovered this tool:
GitHub - HenrikBengtsson/x86-64-level: x86-64-level - Get the x86-64 Microarchitecture Level on the Current Machine

Which indeed says level 4:

Bash:
$ ./x86-64-level
4

Found the migration docs helped clarify this for myself:
if some nodes in the cluster have different CPU models, or you plan to extend the cluster using different CPUs in the future, we recommend using one of the generic x86-64-v<X> models.
 
Last edited:
  • Like
Reactions: herzkerl