Windows 10 Guest = High Host CPU Load / Usage

glauco.lins

New Member
Sep 9, 2021
7
0
1
35
Hello world!

In the past months I have built two home servers to host a few VDI guests.
I chose Proxmox due its easy to use interface, but I have to say I not an expert on the matter.

These are my Hosts:
  • Proxmox 7.0
  • AMD Threadripper 3970x (32c/64t)
  • Asus Prime TRX4-Pro S
  • 128GB Ram
  • 1x NVME (proxmox boot + ZFS Log + ZFS Cache)
  • 6x SATA ZFS Raidz2 (VM Disks)

  • Proxmox 7.0
  • Intel i7-11700 (8c/16t)
  • Asus Prime Z590-A
  • 128GB Ram
  • 1x NVME (proxmox boot + ZFS Log + ZFS Cache)
  • 6x SATA ZFS Raidz2 (VM Disks)

On both hosts I am noticing a single Windows 10 guest "misbehaving".
On idle, when the VM starts and the user does not login, the CPU Load on host varies between 3~7%, in order with all other Windows 10 guests.

After login, when the Win10 guest is idling, the CPU Load on host varies between 15~35%.
This issue happens on both AMD and Intel.
The method used for login is irrelevant. (Proxmox VNC; GPU Passtrough; or RDP)

The AMD host have two Win10 guests, just one misbehave. (All AMD RX550)
The Intel host have three Win10 guests, just one misbehave. (All Nvidia GTX 1070)
All are up-to-date, and have very similar configurations.

I have faced this issue trying to fine-tune the Intel host, when this misbehaved guest would induce lag on the others VM's when running some CPU intensive task.
Out of curiosity I went to look at the AMD host, and saw the same issue with CPU load.

From what I have read online, it could be an issue with clock configuration.
However Proxmox staff mentions this issue was solved with a former update.
Other posts online mentions about editing Libvirt XML (which I am unable to find in Proxmox), but results varies (some people says it works, some doesn't).

I also have read that it cloud be caused for excessive interruptions generated by the Host on the Guest.
However I don't know where to begin with to track this path...

I noticed the misbehaved guests have a visible "kernel time" in the task manager, ranging 3~5%.
Good guests shows a flat line for "kernel time", which leads me to believe this is an issue with excessive interruptions (wake/sleep).
I wouldn't know if it is related to the clock issue mentioned.

Assuming that all VM's were created following the same steps, I don't understand why just a couple of them misbehaves.
I am trying to benchmark the effect on the host when the guest is under load.
Generally I am seeing a higher load on host from these bad guests.

Effect on Host is a higher CPU load and power consuption.
I noticed sometimes input lag (mouse freezing, dropped frames), but don't know if it is related.

Somewhere else I have read that enabling Message Signaled Interruptions could help.
On the AMD guest I have tried to enable it on all PCI devices.
Tried to pass through the GPU ROM as a line parameter, and hide it from guest.
Tried to play with "localtime" and "OS type" option in Proxmox GUI.
Tried to change q35 machine versions.
My last attempt was the "args: -no-hpet".

AMD HOST
Code:
~# qm config 101
acpi: 1
agent: 1
args: -no-hpet
balloon: 0
bios: ovmf
boot: order=scsi0;ide0;net0
cores: 8
cpu: host
efidisk0: hdd:vm-101-disk-0,size=1M
hostpci0: 0000:01:00,pcie=1,x-vga=1
hotplug: disk,network,usb
hugepages: 1024
ide0: none,media=cdrom
ide2: none,media=cdrom
localtime: 1
machine: pc-q35-6.0
memory: 8192
name: VM-Glauco
net0: virtio=9A:7B:24:FF:57:5C,bridge=vmbr0,firewall=1
numa: 1
onboot: 1
ostype: win10
parent: gerenciador
scsi0: hdd:vm-101-disk-1,cache=writeback,discard=on,iothread=1,size=1T,ssd=1
scsihw: virtio-scsi-single
smbios1: uuid=05604224-4150-4c97-b39e-3a9ba8702d2c
sockets: 1
usb0: host=7-2.1
usb1: host=7-2.2
usb2: host=7-2.3
usb3: host=7-2.4
vga: none
vmgenid: 4b0ac261-ea9c-46fa-9722-1a3544a07796

INTEL HOST
Code:
~# qm config 102
agent: 1
balloon: 0
bios: ovmf
boot: order=scsi0;ide2;net0
cores: 8
cpu: host
efidisk0: hdd:vm-102-disk-0,size=1M
hostpci0: 0000:02:00,pcie=1,x-vga=1
hugepages: 1024
ide2: local:iso/virtio-win-0.1.204.iso,media=cdrom,size=543272K
localtime: 1
machine: pc-q35-6.0
memory: 24576
name: Win10-GPU2
net0: virtio=8E:DC:C5:6A:57:78,bridge=vmbr0,firewall=1
numa: 1
onboot: 1
ostype: win10
parent: MSI1
scsi0: hdd:vm-102-disk-1,cache=writeback,discard=on,iothread=1,size=1T,ssd=1
scsihw: virtio-scsi-single
smbios1: uuid=d61e4b65-ef7c-4d3e-b64c-70a2dba82bbf
sockets: 1
startup: order=2
tablet: 1
usb0: host=1-11
usb1: host=1-13
vga: none
vmgenid: 9affe86a-7568-4216-8fb2-22298a59e5ef
vmstatestorage: hdd
 
I have this issue as well. I can run Linux hosts just fine and their CPU usage at idle time is around 0.7% each. When I run any kind of Windows VMs, however, my CPU upon booting goes to about 80% usage, then it settles down to about 2-3%. However, if I even move the cursor slightly in the VM for a split second, the CPU ramps up to about 120% usage, then settles back down a bit. Load averages sit between 1.0 and 3.0 when a Windows VM is powered on. I have tried nearly every fix out there, including the "tablet pointer" fix, the "hpet" fix, and the "cpuFlags" fix, but have not had any luck with any of them. The VM itself shows excellent idle stats, where CPU and RAM use hardly anything. When I use "top" on the actual PVE host, however, this is where I get those percentages listed above.

Also, even though I have the ballooning driver installed as part of the VirtIO drivers, the PVE host still shows that each Windows VM uses the entire percentage of RAM that I allocated it.
 
The high load during boot is expected.

I noticed too the load spikes when we simple move a window around.
However my VM does show high load while idle (2~5% kernel time in Windows task manager = 15~30% load on host)

I have disabled baloon in all windows VM's, because was causing some application errors (page faults).
 
Last edited:
Hello Team,
Can we get a proxmox engineer to answer this question? I have exactly this issue.
I have tried everything the orignal poster has mentioned, but with no success
These are new windows 10 VM's with 22H2 Update.
Using HOST or KVM does not make a difference.
Using i440fx or q35 does not make a difference.
Using OVMF or SeaBios does not make a difference.
Using Virtual TPM or none does not make a difference.
Stopping The Virtual Machine make's no difference in the 20-30% consumed CPU load, and must restart the host to return the CPU to idle. This is not normal.
My HP Proliant DL360 is screaming with 30% host CPU consumption under a load of 20.
meanwhile The VM sits at 1.04% use
It is now 2023-02-31, PVE 7.3.6
 
Hi, same here:
1687947010797.png

Code:
root@vm-box-2:~# qm config 122
agent: 1
bootdisk: virtio0
cores: 2
description: windows
ide2: trendy-images:iso/virtio-win-0.1.229.iso,media=cdrom,size=522284K
memory: 5000
name: vm-wsus19
net0: virtio=9E:6A:4B:42:42:F3,bridge=vmbr0,firewall=1
numa: 0
onboot: 1
ostype: win10
scsihw: virtio-scsi-pci
serial0: /dev/ttyS0
smbios1: uuid=40cab2ca-59a9-4d77-96e2-fc185a768c22
sockets: 1
tablet: 0
usb0: host=0403:6001
virtio0: LVM-Storage:122/vm-122-disk-0.qcow2,size=52G
virtio2: LVM-Storage:122/vm-122-disk-2.qcow2,size=10G
virtio3: LVM-Storage:122/vm-122-disk-4.qcow2,backup=0,size=10G
vmgenid: 4aac0a50-73e7-4af7-95e5-4775c826b536

root@vm-box-2:~# pveversion
pve-manager/7.4-3/9002ab8a (running kernel: 5.15.104-1-pve)
 

About

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!