Two things you can improve, IMO
* disable NO_HZ
* use isolcpus to dedicate your pinned CPUs to guest only - this will also ensure they are not used for guest IO.


B.


On 29/02/2016 08:45, Rokas Kupstys wrote:
Yesterday i figured out my latency problem. All things listed everywhere on internet failed. Last thing i tried was pinning one vcpu to two physical cores and it brought latency down. Now i have FX-8350 CPU which has shared FPU for each two cores so maybe thats why. With just this pinning latency now is most of the time just above 1000μs. However under load latency increases. I threw out iothreads and emulator pinning and it did not affect much. Superior latency could be achieved using isolcpus=2-7, however leaving just two cores to host is unacceptable. With that setting latency was around 500μs without load. Good part is that Battlefield3 no longer lags, although i observed increased loading times on textures compared to bare metal. Not so good part is that there still is minor sound skipping/cracking since latency is spiking up under load. That is very disappointing. I also tried performance with two VM cores pinned to 4 host cores - bf3 lagged enough to be unplayable. 3 vm cores pinned to 6 host cores was already playable but sound was still cracking. I noticed little difference between that and 4 vm cores pinned to 8 host cores. Be nice if sound could be cleaned up. If anyone have any ideas im all ears. Libvirt xml i use now:

  <vcpu placement='static'>4</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='0-1'/>
    <vcpupin vcpu='1' cpuset='2-3'/>
    <vcpupin vcpu='2' cpuset='4-5'/>
    <vcpupin vcpu='3' cpuset='6-7'/>
  </cputune>
  <features>
    <acpi/>
    <apic/>
    <pae/>
    <hap/>
    <viridian/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
    </hyperv>
    <kvm>
      <hidden state='on'/>
    </kvm>
    <pvspinlock state='on'/>
  </features>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='4' threads='1'/>
  </cpu>
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
    <timer name='hypervclock' present='yes'/>
  </clock>

Kernel configs
CONFIG_NO_HZ_FULL=y
CONFIG_RCU_NOCB_CPU_ALL=y
CONFIG_HZ_1000=y
CONFIG_HZ=1000
I am not convinced 1000 hz tickrate is needed. Default one (300) seems to perform equally as well from looking at latency charts. Did not get chance to test it with bf3 yet however.


On 2016.01.12 11:12, thibaut noah wrote:


[cut]

_______________________________________________
vfio-users mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/vfio-users

Reply via email to