
In recent times, there have been reports from users experiencing high host CPU load and decreased Virtual Machine (VM) responsiveness after upgrading their Windows 10 VM to version 1803 in a Kernel-based Virtual Machine (KVM) environment. This article will provide a detailed guide on how to solve this issue using two primary methods.
Enabling High Precision Event Timer (HPET) or Hyper-V enlightenments in the VM’s XML configuration file can help solve the high host CPU load issue after upgrading Windows 10 1803 in KVM virtualization. Alternatively, keeping the Windows 10 Task Manager open may serve as a temporary workaround.
Understanding the Problem
After upgrading Windows 10 to version 1803 in a KVM virtualized environment, users have reported a significant increase in host CPU load. This not only affects the performance of the host machine but also leads to decreased responsiveness in the VM.
Solution 1: Enabling High Precision Event Timer (HPET)
One possible solution is to enable the High Precision Event Timer (HPET) in the VM’s XML configuration file. HPET is a hardware timer used in personal computers. It was developed jointly by Intel and Microsoft to replace the four system timers with a single, more accurate and higher frequency timer.
To enable HPET, you need to set <timer name='hpet' present='yes'/>
in the <clock>
section of the XML configuration file. This can be done using libvirt or by directly editing the XML file.
Here’s an example of how to do this:
<clock offset='utc'>
<timer name='hpet' present='yes'/>
</clock>
In the above code, name='hpet'
specifies the name of the timer, which in this case is HPET. present='yes'
means that the HPET timer is present in the VM.
Solution 2: Enabling Hyper-V Enlightenments
Another solution is to enable Hyper-V enlightenments in the VM’s XML configuration file. Hyper-V enlightenments are special settings that improve the performance of VMs on Hyper-V hosts.
To enable Hyper-V enlightenments, you need to add <synic state='on'/>
and <stimer state='on'/>
in the <hyperv>
section of the <features>
section. Additionally, <hv_time>
and <hv_vpindex>
enlightenments may need to be added as well.
Here’s an example of how to do this:
<features>
<hyperv>
<synic state='on'/>
<stimer state='on'/>
</hyperv>
</features>
In the above code, synic state='on'
enables the synthetic interrupt controller, which improves the efficiency of interrupt processing. stimer state='on'
enables the synthetic timer, which provides a high-resolution timer that can be used for time-sensitive operations.
Workaround: Keeping the Windows 10 Task Manager Open
If none of the above solutions work, a workaround that has been suggested is to keep the Windows 10 Task Manager open. This seems to alleviate the high CPU usage temporarily, but may not be a suitable solution for non-interactive sessions.
Conclusion
The high host CPU load issue after upgrading Windows 10 to version 1803 in a KVM environment can be challenging. However, enabling HPET or Hyper-V enlightenments in the VM’s XML configuration file may provide a solution. If these methods do not work, keeping the Windows 10 Task Manager open could serve as a temporary workaround. Always remember to backup your VMs and test these solutions in a controlled environment before applying them to production systems.
To check the version of Windows 10 running on your VM, you can go to "Settings" > "System" > "About". Under the "Windows specifications" section, you will find the version number.
The XML configuration file of your Windows 10 VM can be accessed through the libvirt management tool or by directly editing the XML file located in the virtual machine’s directory. The exact location of the file may vary depending on your KVM setup.
Yes, it is possible to enable both HPET and Hyper-V enlightenments in the XML configuration file of your Windows 10 VM. You can include the necessary settings for both in their respective sections of the file.
Enabling HPET or Hyper-V enlightenments is generally recommended to improve the performance of VMs in a KVM virtualized environment. However, the impact on performance may vary depending on the specific workload and hardware configuration. It is advisable to test these changes in a controlled environment before applying them to production systems.
To backup your VMs, you can use various methods such as creating snapshots, cloning the VMs, or exporting them to an external storage device. The specific backup process may depend on the virtualization platform or management tool you are using. It is always important to have proper backups in case any issues arise during the configuration changes.