[vfio-users] "System Interrupts" high cpu usage for iommu-gfx windows 10

Taiidan at gmx.com Taiidan at gmx.com
Thu Feb 9 22:00:20 UTC 2017


I have:

coreboot v4.5
asus kgpe-d16
opteron 6274 (around 30C at load with fans nearly off, not overheated at 
all)
geforce gtx 780

More than enough juice to play games at high settings, however I can 
barely play even older ones at low, even watching a movie results in 
massive cpu usage on the VMM (but only hardly any on the QEMU VM)

System Interrupts uses 30% of the 12 cores I assigned to the VM.


I used to be able to play games at high settings with no trouble so I 
know it is possible, but now something changed and I don't know what it is.

I enabled hyperv enlightenment and the MSI registry option for the 
graphics card and its awudio function but it made it only slightly better.

There are also weird timer problems in some games, like procedural 
loading not working properly or cars/npcs not spawning when they should 
or at all.

Frequency scaling doesn't show to the windows VM, the cpu frequency in 
the VM shows around 100mhz above turbo 1 and it never changes so I 
assume turbo won't work.

DPC latency has various spikes, although when I use a cpu stress program 
they go away.

The slightest VMM activity results in audio skipping even though the VM 
is on isolated cpus, and I have a passed-through HBA card with a hdd for 
the game installs.


Here is my xml file

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
   <name>W10_GM</name>
   <currentMemory unit='GiB'>14</currentMemory>
   <memory unit='GiB'>14</memory>

   <os>
     <type>hvm</type>
     <bootmenu enable='yes'/>
   </os>
   <features>
     <acpi/>
     <apic/>
     <pae/>
     <kvm>
       <hidden state='on'/>
     </kvm>
     <hyperv>
       <relaxed state='on'/>
       <vapic state='on'/>
       <spinlocks state='on' retries='8191'/>
       <vendor_id state='on' value='whatever'/>
     </hyperv>
   </features>

<numatune>
   <memory mode="strict" placement="auto"/>
</numatune>

<memoryBacking>
<hugepages/>
</memoryBacking>


<vcpu placement='static' cpuset='0-11'>12</vcpu>
<cputune>
   <vcpupin vcpu='0' cpuset='0'/>
   <vcpupin vcpu='1' cpuset='1'/>
   <vcpupin vcpu='2' cpuset='2'/>
   <vcpupin vcpu='3' cpuset='3'/>
   <vcpupin vcpu='4' cpuset='4'/>
   <vcpupin vcpu='5' cpuset='5'/>
   <vcpupin vcpu='6' cpuset='8'/>
   <vcpupin vcpu='7' cpuset='9'/>
   <vcpupin vcpu='8' cpuset='10'/>
   <vcpupin vcpu='9' cpuset='11'/>
   <vcpupin vcpu='10' cpuset='12'/>
   <vcpupin vcpu='11' cpuset='13'/>
</cputune>

<cpu mode='host-passthrough'>
   <topology sockets='1' cores='12' threads='1'/>
   <feature policy='disable' name='hypervisor'/>
       <pages unit='KiB' size='4'/>
       <pages unit='KiB' size='2048'/>
       <pages unit='KiB' size='1048576'/>
</cpu>

<cpu>
         <numa>
                 <cell id="0" cpus="0-5" memory="7" unit="GiB"/>
                 <cell id="1" cpus="6-11" memory="7" unit="GiB"/>
         </numa>
</cpu>

   <clock>
     <timer name='hypervclock' present='yes'/>
     <timer name='hpet' present='no'/>
   </clock>

   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
   <on_crash>destroy</on_crash>
   <pm>
     <suspend-to-mem enabled='yes'/>
     <suspend-to-disk enabled='no'/>
   </pm>
   <devices>

<emulator>/usr/libexec/qemu-kvm.vga</emulator>
     <disk type='file' device='cdrom'>
       <driver name='qemu' type='raw'/>
       <target dev='hda' bus='ide'/>
       <boot order='1'/>
       <readonly/>
       <address type='drive' controller='0' bus='0' target='0' unit='0'/>
     </disk>

     <disk type='file' device='disk'>
       <driver name='qemu' io='threads' type='raw' cache='none'/>
       <source file='/virt/wingames.raw'/>
       <target dev='sda' bus='scsi'/>
       <boot order='2'/>
       <address type='drive' controller='0' bus='0' target='0' unit='0'/>
     </disk>

     <controller type='scsi' index='0' model='virtio-scsi'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x06' 
function='0x0'/>
     </controller>

     <controller type='pci' index='0' model='pci-root'/>

     <controller type='ide' index='0'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 
function='0x1'/>
     </controller>

     <controller type='virtio-serial' index='0'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x07' 
function='0x0'/>
     </controller>
     <serial type='pty'>
       <target port='0'/>
     </serial>
     <console type='pty'>
       <target type='serial' port='0'/>
     </console>

     <hostdev mode='subsystem' type='pci' managed='yes'>
       <source>
         <address domain='0x0000' bus='0x05' slot='0x00' function='0x0' 
multifunction='on'/>
       </source>
       <address type='pci' domain='0x0000' bus='0x05' slot='0x09' 
function='0x0' node='0' multifunction='on'/>
     </hostdev>
     <hostdev mode='subsystem' type='pci' managed='yes'>
       <source>
         <address domain='0x0000' bus='0x05' slot='0x00' function='0x1'/>
       </source>
       <address type='pci' domain='0x0000' bus='0x05' slot='0x09' 
function='0x1' node='0'/>
     </hostdev>

     <hostdev mode='subsystem' type='pci' managed='yes'>
       <source>
         <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
       </source>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x10' 
function='0x0' node='0'/>
     </hostdev>


     <hostdev mode='subsystem' type='pci' managed='yes'>
       <source>
         <address domain='0x0000' bus='0x00' slot='0x13' function='0x0' 
multifunction='on'/>
       </source>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x0' 
function='0x0' multifunction='on'/>
     </hostdev>
     <hostdev mode='subsystem' type='pci' managed='yes'>
       <source>
         <address domain='0x0000' bus='0x00' slot='0x13' function='0x1'/>
       </source>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x0' 
function='0x1'/>
     </hostdev>
     <hostdev mode='subsystem' type='pci' managed='yes'>
       <source>
         <address domain='0x0000' bus='0x00' slot='0x13' function='0x2'/>
       </source>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x0' 
function='0x2'/>
     </hostdev>

  </devices>
</domain>




More information about the vfio-users mailing list