Hello all! About 2 years ago my gaming desktop was running Ubuntu with a Windows gaming VM, however I was having trouble getting good performance in Microsoft Flight Simulator specifically. Around that time I decided to switch back to Windows running on the bare metal due to several other reasons. However, I recently switched back to a Linux OS, this time Proxmox, and I still appear to be having the same issue despite the OS change. Other games seem to run fine with performance that is similar to running them on bare metal, however MSFS is the most intensive game I play, so it could just be that the performance difference was never big enough for me to notice.
A similar issue was reported on Reddit, however the solution the author found seems to be AMD specific and would not work for me: https://www.reddit.com/r/MicrosoftFlightSim/comments/ig1mwz/running_msfs2020_under_qemu_utilizes_cpu_poorly/
While in a flight with the a320 in a VM, the game averages around 15 fps with the ‘high-end’ preset, DX12, and Motion Blur off. Changing the graphics settings does not appear to affect performance. When I was running Windows 10 on bare metal, I was averaging 50fps most of the time with the same graphics settings. CPU usage never went past 40%, the GPU never went past 30%, and there was plenty of RAM available to the VM. These tests were with a monitor connected directly to the GPU and on a completely fresh installation of Windows 10 with only steam, the game, and GPU drivers installed.
I tried changing a bunch of settings the Proxmox GUI has options for, but the above numbers were the best I got. I am not very familiar with the KVM CPU arguments that are available, so I was looking for some advice when it comes to performance tuning in Proxmox/KVM. I understand I probably won’t be able to get 100% of the bare-metal performance in a VM, but my goal is to get a steady 30fps at a minimum. Any help is greatly appreciated, and if you need any more info just let me know!
-Dell Precision 5820
-Xeon W-2140B (8c16t, if unfamiliar the benchmarks online show it to be very similar in performance to an r5-3600)
-64GB total host RAM
Proxmox VM Configuration (/etc/pve/qemu-server/101.conf):
gent: 1 balloon: 0 bios: ovmf boot: order=scsi0;ide2;net0 cores: 4 cpu: host,flags=+pdpe1gb;+hv-tlbflush;+aes efidisk0: local-lvm:vm-101-disk-0,efitype=4m,pre-enrolled-keys=1,size=4M hostpci0: 0000:65:00,pcie=1,x-vga=1 ide2: local:iso/virtio-win-0.1.221.iso,media=cdrom,size=519030K machine: q35 memory: 32768 meta: creation-qemu=6.2.0,ctime=1660431967 name: Windows net0: virtio=[REDACTED],bridge=vmbr0 numa: 1 ostype: win10 scsi0: local-lvm:vm-101-disk-1,cache=writethrough,size=128G,ssd=1 scsi2: /dev/disk/by-id/ata-WDC_WD10EZEX-00WN4A0_WD-WCC6Y0ZYY37E,size=976762584K scsihw: virtio-scsi-pci smbios1: uuid=10761cfd-a9a0-4dc6-ac0a-90ab79a53a2b sockets: 4 tablet: 0 tpmstate0: local-lvm:vm-101-disk-2,size=4M,version=v2.0 usb0: host=046d:c539,usb3=1 usb1: host=06a3:0c2d,usb3=1 usb2: host=046d:c215,usb3=1 vmgenid: 544df9ed-4e9a-4ac7-a184-479c372575a8
NOTE: While the config file shows 4 cores were allocated to the VM, I am using 4 sockets with the NUMA option selected (shown later in the config file), for a total of 16 vCPUs…