From: Avi Kivity <avi@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org
Subject: Re: [Qemu-devel] [PATCH] posix-aio-compat: fix latency issues
Date: Mon, 08 Aug 2011 15:42:11 +0300 [thread overview]
Message-ID: <4E3FD9A3.9010109@redhat.com> (raw)
In-Reply-To: <4E3FD7E7.4090509@codemonkey.ws>
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
next prev parent reply other threads:[~2011-08-08 12:42 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-08 11:37 [Qemu-devel] [PATCH] posix-aio-compat: fix latency issues Avi Kivity
2011-08-08 12:34 ` Anthony Liguori
2011-08-08 12:42 ` Avi Kivity [this message]
2011-08-08 12:49 ` Frediano Ziglio
2011-08-08 12:54 ` Avi Kivity
2011-08-08 13:21 ` Frediano Ziglio
2011-08-08 13:26 ` Avi Kivity
2011-08-12 13:24 ` Anthony Liguori
2011-08-14 3:43 ` Avi Kivity
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E3FD9A3.9010109@redhat.com \
--to=avi@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=kvm@vger.kernel.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).