qemu-devel
[Top][All Lists]
Advanced

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

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


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH v2] posix-aio-compat: fix latency issues
Date: Mon, 22 Aug 2011 19:22:06 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20110707 Thunderbird/5.0

Am 14.08.2011 06:04, schrieb Avi Kivity:
> 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.
> 
> Signed-off-by: Avi Kivity <address@hidden>
> ---
> v2: simplify do_spawn_thread() locking

Thanks, applied to the block branch.

Kevin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]