From: Anthony Liguori <anthony@codemonkey.ws>
To: Avi Kivity <avi@redhat.com>
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: Thu, 25 Feb 2010 13:55:08 -0600 [thread overview]
Message-ID: <4B86D59C.3000300@codemonkey.ws> (raw)
In-Reply-To: <4B86B45B.5020507@redhat.com>
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.
>>
>> It's very difficult to mix concepts.
>
> We're complicated enough to have conflicting requirements and a large
> code base with its own inertia, so no choice really.
>
>> I personally don't anticipate per-device threading but rather
>> anticipate re-entrant device models. I would expect all I/O to be
>> dispatched within the I/O thread and the VCPU threads to be able to
>> execute device models simultaneously with the I/O thread.
>
> That means long-running operations on the iothread can lock out other
> completions.
>
> Candidates for own threads are:
> - live migration
> - block format drivers (except linux-aio, perhaps have a thread for
> the aio completion handler)
> - vnc
> - sdl
> - sound?
> - hotplug, esp. memory
>
> 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? 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.
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.
For host services though, it's much more difficult to isolate them like
this. 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.
Regards,
Anthony Liguori
next prev parent reply other threads:[~2010-02-25 19:55 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 [this message]
2010-02-26 8:47 ` Avi Kivity
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=4B86D59C.3000300@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=avi@redhat.com \
--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).