[vfio-users] Brutal DPC Latency - how is yours? check it please and report back

Bronek Kozicki brok at spamcop.net
Mon Feb 29 09:10:07 UTC 2016


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]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/vfio-users/attachments/20160229/64784928/attachment.htm>


More information about the vfio-users mailing list