Windows VM performance improvements

wmsmckay

New Member
Apr 28, 2021
10
1
3
28
I have been trying to optimize my Windows 10 VM, mostly for gaming but also just to improve my experience overall while using the vm. I finally got my GPU passthrough to work and after doing some benchmarking on the hardware things were looking great. After I started my first game though, I knew something was off. While playing games, I saw that the framerate was up above 60fps more of the time for all of the games I tried, but the video was VERY choppy on my screen. I tried using RDP, I tried NoMachine, and even Parsec (although I'm going to need some HDMI dummy plugs because my display is virtualized so more testing will have to be conducted after Prime sends those to me). All of those game me the same response and visuals.

I have determined that the the issue (probably) isn't:
  • the hardware I'm using, because it's pretty similar to what this guy is using in his post although less RAM and a different Poweredge model.
  • the remote desktop software. I tried using them from my MacBook to my other laptop and everything worked seamlessly.
  • the network. My server is plugged into ethernet and so is the device I am trying to use as a client. Also, when I did my test with the remote software one device was over wifi and I had zero latency.
I'm assuming there are some configurations that I can use to optimize my windows VM or maybe there are some drivers that can help speed things up. I'm not really sure. I do know that is is possible because I have seen posts about people doing this exact thing so hopefully I can make it work.


Some of the things I have tried already:
  • Following some of the tips from the post linked above (mostly about editing the config file for the VM. My current file is listed below)
  • Removed the ballooning from the RAM. This link said is can affect the performance of Windows VMs. I don't know by how much because my experience is pretty bad either way so far.
  • I even downgraded how many cores and how much RAM the server was dedicating to this VM. It used to be 64gbs and all 24 cores but I adjusted it to only be 16gbs and 12 cores because I was willing to try anything. I have no sources to prove is this would do anything.


I have added my current configuration for my Windows VM below. If there is any more information about my setup please let me know where to find it an I'll post it here as well. Any suggestions to improve my performance would be welcome. Thank you.



Code:
agent: 1
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=NV43FIX,kvm=off'
balloon: 0
bios: ovmf
boot: order=scsi0;ide2;net0
cores: 12
cpu: host,hidden=1,flags=+md-clear;+pcid;+spec-ctrl;+ssbd;+pdpe1gb;+hv-tlbflush;+aes
efidisk0: local-lvm:vm-100-disk-1,size=4M
hostpci0: 42:00,pcie=1,x-vga=1
ide2: local:iso/Windows.iso,media=cdrom
machine: q35
memory: 16384
name: Jupiter
net0: virtio=32:5D:12:E9:B0:60,bridge=vmbr0,firewall=1
numa: 1
numa0: cpus=0-11,hostnodes=1,memory=16384,policy=bind
ostype: win10
sata0: local:iso/virtio-win-0.1.190.iso,media=cdrom,size=489986K
scsi0: local-lvm:vm-100-disk-0,cache=writeback,discard=on,iothread=1,replicate=0,size=500G,ssd=1
scsihw: virtio-scsi-single
smbios1: uuid=e9f0ec7b-d5c0-4f46-8dc2-9c7ef5ad33f4
sockets: 1
vga: none
vmgenid: d1768df7-25b8-433d-9b52-ac04e1132d3d
 
Try to connect a display to the GPU. If its still choppy its not the remote desktop software.
 
Try to connect a display to the GPU. If its still choppy its not the remote desktop software.
So I connected a display to my GPU and then used Remote Desktop and Parsec to test mouse and keyboard input. The screen was smooth and playable the whole time. The issue must be the virtual display driver. I'm going to get some HDMI dummy plugs soon and do another text. Hopefully that will allow me to get the same performance without plugging in a display.

What is strange is that plugging in the display make everything better, but I still played on my remote machine. The monitor was only used so that the computer would do it's job so hopefully I can replicate this with the dummy plug.
 
Dummy plug would be the answer. I keep one plugged into my GPU since it eliminates all issues with blank screens and other oddities when I stream with Steam to my tablet or TV.

Also just a note, as of a week or two ago, you don't need these extra arguments anymore because NVIDIA now officially allows GeForce cards to be passed through to a VM with the latest video drivers.

Code:
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=NV43FIX,kvm=off'
 
Also just a note, as of a week or two ago, you don't need these extra arguments anymore because NVIDIA now officially allows GeForce cards to be passed through to a VM with the latest video drivers.

Code:
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=NV43FIX,kvm=off'
That's good to know. Thank you.
 

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!