From: Avi Kivity <avi@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: Vadim Rozenfeld <vrozenfe@redhat.com>,
Dor Laor <dlaor@redhat.com>, Christoph Hellwig <hch@lst.de>,
Paul Brook <paul@codesourcery.com>,
qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Re: [RFC][PATCH] performance improvement for windows guests, running on top of virtio block device
Date: Fri, 26 Feb 2010 10:47:19 +0200 [thread overview]
Message-ID: <4B878A97.2080405@redhat.com> (raw)
In-Reply-To: <4B86D59C.3000300@codemonkey.ws>
On 02/25/2010 09:55 PM, Anthony Liguori wrote:
> On 02/25/2010 11:33 AM, Avi Kivity wrote:
>> On 02/25/2010 07:15 PM, Anthony Liguori wrote:
>>>> I agree. Further, once we fine-grain device threading, the
>>>> iothread essentially disappears and is replaced by device-specific
>>>> threads. There's no "idle" anymore.
>>>
>>>
>>> That's a nice idea, but how is io dispatch handled? Is everything
>>> synchronous or do we continue to program asynchronously?
>>
>> Simple stuff can be kept asynchronous, complex stuff (like qcow2)
>> ought to be made synchronous (it uses threads anyway, so we don't
>> lose anything). Stuff like vnc can go either way.
>
> We've discussed this before and I still contend that threads do not
> make qcow2 any simpler.
qcow2 is still not fully asynchronous. All the other format drivers
(except raw) are fully synchronous. If we had a threaded
infrastructure, we could convert them all in a day. As it is, you can
only use the other block format drivers in 'qemu-img convert'.
>>
>> Each such thread could run the same loop as the iothread. Any
>> pollable fd or timer would be associated with a thread, so things
>> continue as normal more or less. Unassociated objects continue with
>> the main iothread.
>
> Is the point latency or increasing available CPU resources?
Yes.
> If the device models are re-entrant, that reduces a ton of the demand
> on the qemu_mutex which means that IO thread can run uncontended.
> While we have evidence that the VCPU threads and IO threads are
> competing with each other today, I don't think we have any evidence to
> suggest that the IO thread is self-starving itself with long running
> events.
I agree we have no evidence and that this is all speculation. But
consider a 64-vcpu guest, it has a 1:64 ratio of vcpu time (initiations)
to iothread time (completions). If each vcpu generates 5000 initiations
per second, the iothread needs to handle 320,000 completions per
second. At that rate you will see some internal competition. That
thread will also have a hard time shuffling data since every
completion's data will reside in the wrong cpu cache.
Note, an alternative to multiple iothreads is to move completion
handling back to vcpus, provided we can steer the handler close to the
guest completion handler.
>
> With the device model, I'd like to see us move toward a very well
> defined API for each device to use. Part of the reason for this is to
> limit the scope of the devices in such a way that we can enforce this
> at compile time. Then we can introduce locking within devices with
> some level of guarantee that we've covered the API devices are
> actually consuming.
Yes. On the other hand, the shape of the API will be influenced by the
locking model, so we'll have to take iterative steps, unless someone
comes out with a brilliant design.
>
> For host services though, it's much more difficult to isolate them
> like this.
What do you mean by host services?
> I'm not necessarily claiming that this will never be the right thing
> to do, but I don't think we really have the evidence today to suggest
> that we should focus on this in the short term.
Agreed. We will start to see evidence (one way or the other) as fully
loaded 64-vcpu guests are benchmarked. Another driver may be real-time
guests; if a timer can be deferred by some block device initiation or
completion, then we can say goodbye to any realtime guarantees we want
to make.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
next prev parent reply other threads:[~2010-02-26 8:47 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-11 7:40 [Qemu-devel] [RFC][PATCH] performance improvement for windows guests, running on top of virtio block device Vadim Rozenfeld
2010-01-11 8:30 ` [Qemu-devel] " Avi Kivity
[not found] ` <4B4AE95D.7080305@redhat.com>
2010-01-11 9:19 ` Dor Laor
2010-01-11 13:11 ` Christoph Hellwig
2010-01-11 13:13 ` Avi Kivity
2010-01-11 13:16 ` Christoph Hellwig
2010-01-11 13:47 ` Christoph Hellwig
2010-01-11 14:00 ` Anthony Liguori
2010-02-24 2:58 ` Paul Brook
2010-02-24 14:59 ` Anthony Liguori
2010-02-25 15:06 ` Paul Brook
2010-02-25 15:23 ` Anthony Liguori
2010-02-25 16:48 ` Paul Brook
2010-02-25 17:11 ` Avi Kivity
2010-02-25 17:15 ` Anthony Liguori
2010-02-25 17:33 ` Avi Kivity
2010-02-25 18:05 ` malc
2010-02-25 19:55 ` Anthony Liguori
2010-02-26 8:47 ` Avi Kivity [this message]
2010-02-26 14:36 ` Anthony Liguori
2010-02-26 15:39 ` Avi Kivity
2010-01-11 13:42 ` Christoph Hellwig
2010-01-11 13:49 ` Anthony Liguori
2010-01-11 14:29 ` Avi Kivity
2010-01-11 14:37 ` Anthony Liguori
2010-01-11 14:46 ` Avi Kivity
2010-01-11 15:13 ` Anthony Liguori
2010-01-11 15:19 ` Avi Kivity
2010-01-11 15:22 ` Anthony Liguori
2010-01-11 15:31 ` Avi Kivity
2010-01-11 15:32 ` Anthony Liguori
2010-01-11 15:35 ` Avi Kivity
2010-01-11 15:38 ` Anthony Liguori
2010-01-11 18:22 ` [Qemu-devel] " Michael S. Tsirkin
2010-01-11 18:20 ` Michael S. Tsirkin
2010-01-11 14:25 ` [Qemu-devel] " 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=4B878A97.2080405@redhat.com \
--to=avi@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=dlaor@redhat.com \
--cc=hch@lst.de \
--cc=paul@codesourcery.com \
--cc=qemu-devel@nongnu.org \
--cc=vrozenfe@redhat.com \
/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).