[SOLVED] Windows 10 slow graphics performance (desktop)

asartor

New Member
Jul 4, 2025
5
1
3
Hi there! i have been googling and searching about this weird behavior but could not find a final solution. I running a proxmox on a consumer hw .
Asrock B650 reptide
64GB DDR5
2x 2TB Flash nvme
Using RDP and SSH to connect to vms.
Most of the time all the vms runs just fine. Sometimes i had the windows vms showing some slow down during window operation (like alt-tab), sometimes they freeze for a couple of seconds and them return, just to freeze again on the next alt-tab or windows scrolling. Everything points out to a lack of graphics hardware acceleration. Sometimes i managed to fix it by selecting a different video card under hardware - > display. VirtGL was a solid choice. After a while i noticed that even using virtgl i got the same problem.
I managed to find a workaround, i start the vm, connect to it using SPICE (log in into windows) and them i connect to the vm using RDP, and every time the vm got way better performance, no more freeze during windows switching or scrolls.
here it is the vm configuration:
**************
agent: 1
balloon: 0
boot: order=scsi0;ide0;ide2;net0
cores: 8
cpu: x86-64-v4
ide0: local:iso/virtio-win.iso,media=cdrom,size=707456K
ide2: none,media=cdrom
machine: pc-i440fx-9.0
memory: 16256
meta: creation-qemu=9.0.2,ctime=1737665163
name: ES10
net0: virtio=BC:24:11:B6:6B:A6,bridge=vmbrTbus,firewall=1,tag=301
net1: virtio=BC:24:11:83:F4:D3,bridge=vmbrPltbus,firewall=1,tag=302
numa: 1
ostype: win10
scsi0: P3_SSD:vm-501-disk-0,discard=on,iothread=1,size=60G,ssd=1
scsi1: P3_SSD:vm-501-disk-1,discard=on,iothread=1,size=60G,ssd=1
scsihw: virtio-scsi-single
smbios1: uuid=e72ef1c1-3d3a-4ce1-8059-914c1f7713fc
sockets: 1
vga: virtio-gl,memory=512
vmgenid: 7139595b-270c-45bb-9b2e-c87cac428f50
*************

Here it is my pve version :
proxmox-ve: 8.4.0 (running kernel: 6.8.12-11-pve)pve-manager: 8.4.1 (running version: 8.4.1/2a5fa54a8503f96d)proxmox-kernel-helper: 8.1.1proxmox-kernel-6.8.12-11-pve-signed: 6.8.12-11proxmox-kernel-6.8: 6.8.12-11proxmox-kernel-6.8.12-10-pve-signed: 6.8.12-10proxmox-kernel-6.8.12-9-pve-signed: 6.8.12-9proxmox-kernel-6.8.12-4-pve-signed: 6.8.12-4ceph-fuse: 17.2.7-pve3corosync: 3.1.9-pve1criu: 3.17.1-2+deb12u1glusterfs-client: 10.3-5ifupdown2: 3.2.0-1+pmx11ksm-control-daemon: 1.5-1libjs-extjs: 7.0.0-5libknet1: 1.30-pve2libproxmox-acme-perl: 1.6.0libproxmox-backup-qemu0: 1.5.1libproxmox-rs-perl: 0.3.5libpve-access-control: 8.2.2libpve-apiclient-perl: 3.3.2libpve-cluster-api-perl: 8.1.1libpve-cluster-perl: 8.1.1libpve-common-perl: 8.3.1libpve-guest-common-perl: 5.2.2libpve-http-server-perl: 5.2.2libpve-network-perl: 0.11.2libpve-rs-perl: 0.9.4libpve-storage-perl: 8.3.6libspice-server1: 0.15.1-1lvm2: 2.03.16-2lxc-pve: 6.0.0-1lxcfs: 6.0.0-pve2novnc-pve: 1.6.0-2proxmox-backup-client: 3.4.2-1proxmox-backup-file-restore: 3.4.2-1proxmox-firewall: 0.7.1proxmox-kernel-helper: 8.1.1proxmox-mail-forward: 0.3.3proxmox-mini-journalreader: 1.5proxmox-offline-mirror-helper: 0.6.7proxmox-widget-toolkit: 4.3.11pve-cluster: 8.1.1pve-container: 5.2.6pve-docs: 8.4.0pve-edk2-firmware: 4.2025.02-3pve-esxi-import-tools: 0.7.4pve-firewall: 5.1.1pve-firmware: 3.15-4pve-ha-manager: 4.0.7pve-i18n: 3.4.5pve-qemu-kvm: 9.2.0-5pve-xtermjs: 5.5.0-2qemu-server: 8.3.13smartmontools: 7.3-pve1spiceterm: 3.3.0swtpm: 0.8.0+pve1vncterm: 1.8.0zfsutils-linux: 2.2.7-pve2

Anyone having the same issue with a different solution ? Any help is much appreciated.
 
3D performance or desktop acceleration without a dedicated (passthrough) GPU is always a problem, if you run programs in the VM which need more punch. A video stream for example, CAD, etc. For the common desktop app like office or simple webbrowsing, SPICE or VirtIO GPU is usually sufficient.

What can be a bottleneck are other aspects.

Running Windows VMs on ZFS with consumer drives can lead to I/O delays. Consumer drives (without PLP) have a much smaller cache which is essential for running smooth ZFS operations. If your setup consists of the above mentioned 2x2TB nvme with a ZFS mirror and your PVE install „sits“ on the same mirror as your VM storage (rpool) you‘ll run very quick in delays. Especially when more than one VM is running. Another thing within ZFS is the volblocksize. If it’s larger than 64k and Windows is installed as a VM it creates write overhead. Many „little“ things that have severe impact on the performance.

Other aspects are network related. Are the VMs running in VLANs? Did you change anything in Windows regarding RDP protocols?
 
3D performance or desktop acceleration without a dedicated (passthrough) GPU is always a problem, if you run programs in the VM which need more punch. A video stream for example, CAD, etc. For the common desktop app like office or simple webbrowsing, SPICE or VirtIO GPU is usually sufficient.

What can be a bottleneck are other aspects.

Running Windows VMs on ZFS with consumer drives can lead to I/O delays. Consumer drives (without PLP) have a much smaller cache which is essential for running smooth ZFS operations. If your setup consists of the above mentioned 2x2TB nvme with a ZFS mirror and your PVE install „sits“ on the same mirror as your VM storage (rpool) you‘ll run very quick in delays. Especially when more than one VM is running. Another thing within ZFS is the volblocksize. If it’s larger than 64k and Windows is installed as a VM it creates write overhead. Many „little“ things that have severe impact on the performance.

Other aspects are network related. Are the VMs running in VLANs? Did you change anything in Windows regarding RDP protocols?
Hi! thanks for you reply! i understand that consumer hw is not optimal, but i don't have several machines running at same time.
Always running:
1 LXC Debian 12 - Runs docker with a handful of containers
1 HomeAssistant VM
1 Opnsense
on demand :
one or 2 windows vms.

Im not quite sure about the storage (still learning a lot ), im pretty sure its not mirrored as i have different storages on each nvme. LVM-thin does make any sense ? (i already noticed a great bottleneck when cloning vms, due to the lack of cache on the nmve drives, but i can live with it).
Here it is my actual storage :
pvesm status
Name Type Status Total Used Available %
KNV2_SSD lvmthin active 1919827968 237098754 1682729213 12.35%
P3_SSD lvmthin active 1919827968 717247728 1202580239 37.36%
PBS pbs active 618147980 194913916 391760456 31.53%
local dir active 98497780 76389728 17058504 77.55%
local-lvm lvmthin active 354275328 32983033 321292294 9.31%
smb cifs active 4015913960 2779164784 1236749176 69.20%


Windows Vms runs on their own VLAN and i use an opnsense vm to filter access from my existing network to the vms. I did not change any settings related to the RDP other than enable the connection.
I used iperf and i can get almost wire speeds between rdp client x windows vm, i can be wrong but since them i trying to focus a litte less on other topics than on the network itself. i will try to move the vm to the host bridge and see with does impact on its performance.

still it bugs me that every time after i login to the vm using SPICE it immediately becomes snappier and fluid.
 
3D performance or desktop acceleration without a dedicated (passthrough) GPU is always a problem, if you run programs in the VM which need more punch. A video stream for example, CAD, etc. For the common desktop app like office or simple webbrowsing, SPICE or VirtIO GPU is usually sufficient.

What can be a bottleneck are other aspects.

Running Windows VMs on ZFS with consumer drives can lead to I/O delays. Consumer drives (without PLP) have a much smaller cache which is essential for running smooth ZFS operations. If your setup consists of the above mentioned 2x2TB nvme with a ZFS mirror and your PVE install „sits“ on the same mirror as your VM storage (rpool) you‘ll run very quick in delays. Especially when more than one VM is running. Another thing within ZFS is the volblocksize. If it’s larger than 64k and Windows is installed as a VM it creates write overhead. Many „little“ things that have severe impact on the performance.

Other aspects are network related. Are the VMs running in VLANs? Did you change anything in Windows regarding RDP protocols?
I would like to thank you for pointing out some other alternatives. after that i ruled out network connection as culprit. as i tried to login with different RDP clients (windows 11 and guacamole), i noticed that i did not get the weird behavior or sluggish desktop. Finally something that always works is star RDP with /system (mstsc /system from cmd prompt), i tested it on every windows vm that i have and no more noticed any performance issue.

****** Editing here ***** Please Read /admin instead /system *******

Thanks for the help!
 
Last edited:
  • Like
Reactions: cwt