On 06/09/21(Mon) 17:30, Martin Pieuchot wrote:
> [...]    
> 3) 2ytHD+make-j17+kqpoll_unlocked_arm64.svg
> ===========================================

This should be:

3) 2ytHD+googlemap_arm64.svg
============================

> The intend of this test is to expose where the contention is for heavy
> multi-threaded process workload.  We didn't care much about idle time,
> it is much more about low latency, how "smooth" can run desktop apps in
> other words what happens in the kernel.
> 
>   - UVM fault unlocking is "good enough" for such workload and all the
>     contention is due to syscalls
> 
>   - If we look at time spent in kernel, 37% is spent spinning on the
>     KERNEL_LOCK() and 12% on the SCHED_LOCK().  So almost half of %sys
>     time is spinning.
> 
>     . futex(2) for FUTEX_WAIT exposes most of it.  It spins on the
>       KERNEL_LOCK() because sleeping with PCATCH requires it, then it
>       spins on the SCHED_LOCK() to put itself on the sleep queue.
> 
>     . kevent(2), poll(2), and DRM ioctl(2) are responsible for a lot
>       of KERNEL_LOCK() contention in this workload 
> 
>     . NET_LOCK() contention in poll(2) and kqueue(2) generate a lot of
>       sleeps which, together with a lot of futex(2) make the SCHED_LOCK()
>       contention bad.

Reply via email to