Re: [Qemu-devel] [PATCH] posix-aio-compat: fix latency issues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/08/2011 03:34 PM, Anthony Liguori wrote:
On 08/08/2011 06:37 AM, Avi Kivity wrote:
In certain circumstances, posix-aio-compat can incur a lot of latency:
  - threads are created by vcpu threads, so if vcpu affinity is set,
    aio threads inherit vcpu affinity.  This can cause many aio threads
    to compete for one cpu.
  - we can create up to max_threads (64) aio threads in one go; since a
    pthread_create can take around 30μs, we have up to 2ms of cpu time
    under a global lock.

Fix by:
  - moving thread creation to the main thread, so we inherit the main
    thread's affinity instead of the vcpu thread's affinity.
  - if a thread is currently being created, and we need to create yet
another thread, let thread being born create the new thread, reducing
    the amount of time we spend under the main thread.
  - drop the local lock while creating a thread (we may still hold the
    global mutex, though)

Note this doesn't eliminate latency completely; scheduler artifacts or
lack of host cpu resources can still cause it. We may want pre-allocated
threads when this cannot be tolerated.

Thanks to Uli Obergfell of Red Hat for his excellent analysis and suggestions.

Do you have a scenario where you can measure the benefits of this change?

It's a customer scenario, so I can't share it. Not that I know exactly what happened there in terms of workload.

The idle time in the thread pool is rather large, it surprises me that it'd be an issue in practice.


Just starting up a virtio guest will fill the queue with > max_threads requests, and if the vcpu is pinned, all 64 thread creations and executions will have to run on the same cpu, and will likely preempt the vcpu since it's classified as a "cpu hog" by some schedulers.

--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux