Last week we had a customer with a Proxmox hyper-converged cluster to run their virtual machines who had notable performance problems. If you are not familiar with Proxmox just think of it as a free version of VMware, or Hyper-V with SCCM VM Manager.
The fundamental issue was that even though a number of their Windows VM’s didn’t do very much and had 4 CPU cores that several times a day the CPU would spike to or near 100%. The client thought that adding more CPU cores would help and of course it would but it didn’t seem to be the root problem given that they already have a fair number of cores and weren’t doing very much.
Upon a deeper inspection we found two notable issues:
- The VirtIO Win Guest Tools (think of this a WMware Tools, client drivers) was at version 0.1.220, which is from 2019
- The VM’s CPU’s were showing as COMMON KVM PROCESSOR, which is something we had not seen before
What is Common KVM Processor?
A “Common KVM Processor” is a generic CPU model used in virtual machines (VMs) running on Kernel-based Virtual Machine (KVM) hypervisors, like Proxmox.
This generic model ensures compatibility and stability across different hardware platforms, but it does not leverage the advanced features (and often even the common features) of the host CPU. For better performance, you can configure the VM to use the “host” CPU model, which passes through the host’s CPU features to the VM.
If you’re using Proxmox or another virtualization platform, you can change the CPU type in the VM settings to match the host platforms underlying CPU’s to improve performance. However, IF the nodes in your cluster are not running the same physical CPU’s and are not at the same firmware version it is possible live migrations from one host node to another may be problematic. It is not common to have different nodes with different CPU’s or firmware, so this is not likely a problem for you… but it is certainly possible.
How Much Improvement To Matching CPU to the Host?
In our clients case, they had Xeon E5-2650 v2 CPU’s. Switching from a generic “Common KVM Processor” to the actual underlying Intel Xeon E5-2650 v2 CPUs will result in a noticeable performance improvements because:
- Utilization of Advanced Features: The Intel Xeon E5-2650 v2 has several advanced features such as Intel Turbo Boost Technology, which can increase the clock speed up to 3.4 GHz. These features are not fully utilized by the generic KVM processor model.
- Better Performance: The Xeon E5-2650 v2 has 8 cores and 16 threads, with a base clock speed of 2.6 GHz and a turbo boost up to 3.4 GHz. This can significantly enhance the performance of your VMs, especially for multi-threaded applications2.
- Improved Efficiency: The Xeon E5-2650 v2 supports up to 768 GB of DDR3 memory and has a TDP of 95W. This means it can handle more intensive workloads more efficiently compared to a generic KVM processor model.
- Enhanced Compatibility: Using the actual CPU model can improve compatibility with certain software that may require specific CPU features or instructions
How To Change CPU’s Specification in ProxMox
To change the CPU type of a Proxmox VM from the generic KVM processor to the actual Intel CPU, you can either set it to “HOST” or you can specify the codename Intel used for your CPU. In our clients case, they had E5-2650 v2’s which Intel code named IvyBridge… so we needed to set the VM’s CPU’s to be “IvyBridge”
- Open Proxmox VE Web Interface:
- Log in to your Proxmox VE web interface.
- Select the VM:
- In the left-hand pane, select the VM you want to modify.
- Stop the VM:
- Ensure the VM is stopped. You can do this by selecting the VM, then clicking on Stop in the top menu.
- Edit VM Hardware:
- Go to the Hardware tab of the selected VM.
- Double-click on Processor.
- Change CPU Type:
- In the Edit Processor dialog, change the Type to
HOST
. This setting will pass through the host CPU features to the VM, effectively using the Intel E5 CPU features. - Click OK to save the changes.
- In the Edit Processor dialog, change the Type to
- Start the VM:
- Start the VM by selecting it and clicking on Start in the top menu.
How To Update ProxMox VirtIO Win Guest Tools
We also wanted to get the clients VirtIO Tools (just virtualization drivers for all the devices, like VMware Tools), updated so we downloaded the latest build from https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/virtio-win-pkg-scripts-input/?C=M;O=A .
These two changes made a massive improvement in the performance of our clients VM’s and so we expect this will work for you too.
0 Comments