Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Only getting 30% performance with games, can't determine bottleneck

Featured Replies

Hello all,

 

I recently just built a brand new rig to use as both a NAS and a gaming machine. All drivers are installed correctly, but in-game, I'm seeing maybe 30% of the FPS I should be seeing. For instance, I expect Dead Rising 3 to run at near 60FPS (it runs at 15-20FPS) and Doom 3 BFG Edition to run at 200+FPS (it runs at 40-70FPS). What's odd is that my CPU reports around 30-50% under full load and my GPU is only at 30% usage under load. I can't determine whats causing the slowdown.

 

Build:

Windows 10 Pro x64

ASUS Sabertooth 990FX R2.0

AMD FX-8350 8-Core

nVidia GeForce GTX 1070

24GB DDR3 RAM 1600

480GB SanDisk Ultra 2 - OS Drive

960GB SanDisk Ultra 2 - Game Drive

 

In my boot settings, I have isolcpus set to 2-7, so the last 6 cores arent being used by unraid. Then, in my emulator settings, i have the vcpus pinned to cores 2-7 and the emulator pinned to cores 0-1. Despite some tweaking, I have only managed to get FPS to increase by around 10 in the menus, but during actual gameplay performance remains unchanged.

 

Here's my XML:

<domain type='kvm' id='3'>
  <name>RJ-SERVER</name>
  <uuid>8ff5d4a9-c1c6-2984-7f20-ed326ae893ad</uuid>
  <metadata>
    <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/>
  </metadata>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <memoryBacking>
    <nosharepages/>
    <locked/>
  </memoryBacking>
  <vcpu placement='static'>6</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='2'/>
    <vcpupin vcpu='1' cpuset='3'/>
    <vcpupin vcpu='2' cpuset='4'/>
    <vcpupin vcpu='3' cpuset='5'/>
    <vcpupin vcpu='4' cpuset='6'/>
    <vcpupin vcpu='5' cpuset='7'/>
    <emulatorpin cpuset="0-1"/>
  </cputune>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.5'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
    <nvram>/etc/libvirt/qemu/nvram/8ff5d4a9-c1c6-2984-7f20-ed326ae893ad_VARS-pure-efi.fd</nvram>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <vendor id='none'/>
    </hyperv>
  </features>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='3' threads='2'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='hypervclock' present='yes'/>
    <timer name='hpet' present='no'/>
  </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='file' device='disk'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <source file='/mnt/disks/SanDisk_Ultra_II_480GB_161002806635/Windows10/RJ-SERVER/vdisk1.img'/>
      <backingStore/>
      <target dev='hdc' bus='virtio'/>
      <boot order='1'/>
      <alias name='virtio-disk2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    <controller type='usb' index='0' model='nec-xhci'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:7b:19:ba'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target port='0'/>
      <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-RJ-SERVER/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>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x07' slot='0x00' function='0x1'/>
      </source>
      <alias name='hostdev1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x045e'/>
        <product id='0x028e'/>
        <address bus='5' device='2'/>
      </source>
      <alias name='hostdev2'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x05ac'/>
        <product id='0x020b'/>
        <address bus='12' device='4'/>
      </source>
      <alias name='hostdev3'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x1b1c'/>
        <product id='0x0c0a'/>
        <address bus='7' device='2'/>
      </source>
      <alias name='hostdev4'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x046d'/>
        <product id='0xc537'/>
        <address bus='12' device='6'/>
      </source>
      <alias name='hostdev5'/>
    </hostdev>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </memballoon>
  </devices>
</domain>

AMD has a strange concept of "core" vs "module" but  for 8 cores, there are 4 modules. Have you checked if core 0 and 1 are on the same module?

Your core paring seems strange - pardon me since I'm not too familiar with AMD chips.

 

On Intel, the thread paring is 0-4, 1-5, 2-6, 3-7. Maybe try 0-4 on emulator and the rest for VM and see how it goes?

 

Also, assuming you had achieved such performance in the past.

AMD has a strange concept of "core" vs "module" but  for 8 cores, there are 4 modules. Have you checked if core 0 and 1 are on the same module?

Your core paring seems strange - pardon me since I'm not too familiar with AMD chips.

 

On Intel, the thread paring is 0-4, 1-5, 2-6, 3-7. Maybe try 0-4 on emulator and the rest for VM and see how it goes?

 

Also, assuming you had achieved such performance in the past.

 

you can check your cpu pairings in the gui Tools    System Devices  CPU Thread Pairings then as testdasi says try emulatorpin on the first module (core) of your cpu pairing then pin the other cores to the vm

  • Author

I checked the pairing. Its 0<==>1, 2<==>3, and so on. So now, my flash is set to run unraid on 0 and 1, the emulator is pinned to 0-3, and the vm is pinned to 4-7, with the cpu topology set to 4 cores and 1 thread. Is this how it should be mapped? The framerate has not changed.

 

Also, the VM seems to have issues with mouse hitching and stuttering, so it must be something with the CPU.

I checked the pairing. Its 0<==>1, 2<==>3, and so on. So now, my flash is set to run unraid on 0 and 1, the emulator is pinned to 0-3, and the vm is pinned to 4-7, with the cpu topology set to 4 cores and 1 thread. Is this how it should be mapped? The framerate has not changed.

 

Also, the VM seems to have issues with mouse hitching and stuttering, so it must be something with the CPU.

 

you dont need to emuatorpin  0,1,2,3    just 0,1 should be fine. Put 2 and 3 back in the vm as you had it before. You are pinning correctly as you are using the paired cores.

 

The cpu topology set to 4 cores and 1 thread (should have been 2 cores and 2 threads) change that back to 3 cores and 2 threads when you put 2 and 3 back in the vm.

 

You could try isolating the cpus

 

add this to your syslinux.config file,  goto main tab  then click on flash to edit it.

 

the part that looks like this

 

label unRAID OS
  menu default
  kernel /bzimage
  append  initrd=/bzroot
label unRAID OS GUI Mode

 

add  'isolcpus=2,3,4,5,6,7'  between 'append' and 'initrd=/bzroot'

 

so the above would then look like

 

label unRAID OS
  menu default
  kernel /bzimage
  append  isolcpus=2,3,4,5,6,7 initrd=/bzroot
label unRAID OS GUI Mode

 

this isolates 3 of your 4 cores from the host unraid os.

 

After doing this edit you must reboot server. See if that makes any difference to the performace of the vm. Also i would stop all dockers when you run your vm

 

Try this and report back

Archived

This topic is now archived and is closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.