Piss poor gaming performance on RTX 3080 (did a full format of unraid, still)


sonuyos

Recommended Posts

For past 1yr, i am struggling to get stable frames in game. If i boot windows directly then it works flawlessly i get steady locked frame but when playing in Unraid, it goes for the toss.

 

In Windows bare metal

When i start the game i get 59 fps locked (i have locked fps at 59) and it works great and smooth,

 

In Windows - Unraid VM

It all goes for a toss, the game starts with 20-40fps range, flactuating a lot, then going upto 59fps but when i move the game it stutters like crazy, the average frame rate remains 60 only but my 1% Low & Framrate Minimum suffers like crazy and gives bad experience.

 

I was so fed up that i formatted the whole unraid usb and started afresh.

 

Followed this guide - https://mathiashueber.com/performance-tweaks-gaming-on-virtual-machines/

 

But it still sucks.

 

Screenshots of Guardians of the Galaxy (I have tested in multiple games over past yr, all same issue).

 

I just don't get it whats wrong. I have tried 16 thread setup, 14thread, 12threads and now i am at 8 threads. My GPU is clearly not being used fully and the fact that it works fine in bare metal is screwing with me so bad. Pleas help.

 

All i want is stable performance and working game.

 

I reset the framee counter before the first screenshot.

 

 

7PEJlkF.jpg

0ViXRR8.jpg

YDgKicN.png

 

 

 

<?xml version='1.0' encoding='UTF-8'?>
<domain type='kvm' id='2'>
  <name>Windows 10 - Gaming Optimized</name>
  <uuid>b6006252-1871-b460-d058-ff42f823ef65</uuid>
  <metadata>
    <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/>
  </metadata>
  <memory unit='KiB'>20971520</memory>
  <currentMemory unit='KiB'>20971520</currentMemory>
  <memoryBacking>
    <hugepages/>
  </memoryBacking>
  <vcpu placement='static'>8</vcpu>
  <iothreads>2</iothreads>
  <cputune>
    <vcpupin vcpu='0' cpuset='4'/>
    <vcpupin vcpu='1' cpuset='12'/>
    <vcpupin vcpu='2' cpuset='5'/>
    <vcpupin vcpu='3' cpuset='13'/>
    <vcpupin vcpu='4' cpuset='6'/>
    <vcpupin vcpu='5' cpuset='14'/>
    <vcpupin vcpu='6' cpuset='7'/>
    <vcpupin vcpu='7' cpuset='15'/>
    <emulatorpin cpuset='0-3'/>
    <iothreadpin iothread='1' cpuset='0-1'/>
    <iothreadpin iothread='2' cpuset='2-3'/>
  </cputune>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-5.1'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
    <nvram>/etc/libvirt/qemu/nvram/b6006252-1871-b460-d058-ff42f823ef65_VARS-pure-efi.fd</nvram>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <vpindex state='on'/>
      <synic state='on'/>
      <stimer state='on'/>
      <reset state='on'/>
      <vendor_id state='on' value='1234567890ab'/>
      <frequencies state='on'/>
    </hyperv>
  </features>
  <cpu mode='host-passthrough' check='none' migratable='on'>
    <topology sockets='1' dies='1' cores='4' threads='2'/>
    <cache mode='passthrough'/>
    <feature policy='require' name='topoext'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='rtc' present='no' tickpolicy='catchup'/>
    <timer name='pit' present='no' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
    <timer name='hypervclock' present='yes'/>
    <timer name='tsc' present='yes' mode='native'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/local/sbin/qemu</emulator>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <source dev='/dev/disk/by-id/ata-Samsung_SSD_860_EVO_500GB_S4FNNF0NB21554M' index='2'/>
      <backingStore/>
      <target dev='hdc' bus='sata'/>
      <boot order='1'/>
      <alias name='sata0-0-2'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <source dev='/dev/disk/by-id/ata-WDC_WD1002FAEX-00Z3A0_WD-WCATRC635557' index='1'/>
      <backingStore/>
      <target dev='hdd' bus='sata'/>
      <alias name='sata0-0-3'/>
      <address type='drive' controller='0' bus='0' target='0' unit='3'/>
    </disk>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='sata' index='0'>
      <alias name='sata0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </controller>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <alias name='usb'/>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <alias name='usb'/>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <alias name='usb'/>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:06:6b:3e'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio-net'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </interface>
    <interface type='bridge'>
      <mac address='52:54:00:22:8f:ec'/>
      <source bridge='br1'/>
      <target dev='vnet1'/>
      <model type='virtio-net'/>
      <alias name='net1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <interface type='bridge'>
      <mac address='52:54:00:93:8d:da'/>
      <source bridge='virbr1'/>
      <target dev='vnet2'/>
      <model type='virtio-net'/>
      <alias name='net2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-2-Windows 10 - Gaming /org.qemu.guest_agent.0'/>
      <target type='virtio' name='org.qemu.guest_agent.0' state='disconnected'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='mouse' bus='ps2'>
      <alias name='input0'/>
    </input>
    <input type='keyboard' bus='ps2'>
      <alias name='input1'/>
    </input>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x0b' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <rom file='/mnt/disk1/NVIDIA.RTX3080.10240.210304.rom'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x0b' slot='0x00' function='0x1'/>
      </source>
      <alias name='hostdev1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev3'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x08' slot='0x00' function='0x1'/>
      </source>
      <alias name='hostdev5'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0d' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x08' slot='0x00' function='0x3'/>
      </source>
      <alias name='hostdev6'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0e' function='0x0'/>
    </hostdev>
    <memballoon model='none'/>
  </devices>
  <seclabel type='dynamic' model='dac' relabel='yes'>
    <label>+0:+100</label>
    <imagelabel>+0:+100</imagelabel>
  </seclabel>
</domain>

 

tower-diagnostics-20211031-0153.zip

Link to comment

Unfortunately we do not have any 30-series GPUs for testing here, but we do see other users reporting success with this combination.  I don't think your issue is the GPU.  I think it is more likely tied to your Ryzen CPU.  AMD CPUs have been notorious for causing weird performance oddities on random setups.  Some users report everything working great, others have issues like you've described.  The big things you need to try:

 

1)  Disable all dockers, plugins, or any other custom 3rd party add-ons you have installed on your system and retest.

2)  Did you properly isolate your CPUs for your VM?  You can do this from Settings -> CPU Pinning page.

 

If you've already done those exact things and are still having poor performance, I'm not sure what else to suggest other than changing the CPU/mobo.

Link to comment
On 11/2/2021 at 12:29 AM, jonp said:

Unfortunately we do not have any 30-series GPUs for testing here, but we do see other users reporting success with this combination.  I don't think your issue is the GPU.  I think it is more likely tied to your Ryzen CPU.  AMD CPUs have been notorious for causing weird performance oddities on random setups.  Some users report everything working great, others have issues like you've described.  The big things you need to try:

 

1)  Disable all dockers, plugins, or any other custom 3rd party add-ons you have installed on your system and retest.

2)  Did you properly isolate your CPUs for your VM?  You can do this from Settings -> CPU Pinning page.

 

If you've already done those exact things and are still having poor performance, I'm not sure what else to suggest other than changing the CPU/mobo.

1 - Already done, i have formatted my whole unraid, and ran just my VM and it worked flawlessly.

2 - Yes, my last 6 cores are isolated and last 4 are alloted to VM.

 

I am so sick and tired of this whole experience for past 1yr. :(

Link to comment
12 hours ago, ghost82 said:

I would also suggest to check latency inside the vm: check latencymon software.

You can then play with msi util (v2 or v3) and correct any possible irq conflict.

I already optimized the VM for latency.

https://prnt.sc/1y74r4h

 

Today i went ahead and did more optimization, it worked great for the first few hours, but then after like 4-5hrs, i start another game, and its a stutter mess, all over again.

Link to comment
14 hours ago, jonp said:

Curious if you try a different game if you have the same or different results.

For now the game is working fine....

 

However after u said it could be CPU issue.

The CPU usage in mhz in VM is so low, however on main server it is 4.3ghz locked (i have set it in bios).

 

Even at 100% CPU usage, the mhz is low, is it showing wrong reading? 

 

PS: Core 0 does go upto 4.3ghz. but thats the only one.

I noticed something - image.thumb.png.8c09b97af22a66fed5b63e93312ad11a.png

Link to comment
1 hour ago, jonp said:

I'm confused.  The issue has resolved itself?  The game is performing fine now?  If so, there's no way that those clock speeds could be accurate while you're getting good in-game performance.  Its likely a reporting error in the VM.

No, not itself i took some advice from reddit, i dumped my own vbios and then removed all the cores from the 1st CCX and just kept the VM on 2nd CCX with 1st CCX cores using as emulator pin and iothread and then i re did the whole VM configuration.

 

I am still monitoring, it is def better than before. But i do not want to pull the trigger so fast.

  • Like 1
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.