July 11, 20169 yr 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>
July 11, 20169 yr 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.
July 11, 20169 yr 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
July 11, 20169 yr 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.
July 11, 20169 yr 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
July 11, 20169 yr You may also want to consider investigating the following Enable MSI for Interrupts wiki article: http://lime-technology.com/wiki/index.php/UnRAID_6/VM_Guest_Support#Enable_MSI_for_Interrupts_to_Fix_HDMI_Audio_Support
Archived
This topic is now archived and is closed to further replies.