qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Paul Brook <paul@codesourcery.com>
Cc: Vadim Rozenfeld <vrozenfe@redhat.com>,
	Avi Kivity <avi@redhat.com>, Dor Laor <dlaor@redhat.com>,
	qemu-devel@nongnu.org, Christoph Hellwig <hch@lst.de>
Subject: Re: [Qemu-devel] Re: [RFC][PATCH] performance improvement for windows guests, running on top of virtio block device
Date: Wed, 24 Feb 2010 08:59:31 -0600	[thread overview]
Message-ID: <4B853ED3.3060707@codemonkey.ws> (raw)
In-Reply-To: <201002240258.19045.paul@codesourcery.com>

On 02/23/2010 08:58 PM, Paul Brook wrote:
>> Bottom halves are run at the very end of the event loop which means that
>> they're guaranteed to be the last thing run.  idle bottom halves can be
>> rescheduled without causing an infinite loop and do not affect the
>> select timeout (which normal bottom halves do).
>>      
> Idle bottom halves (i.e. qemu_bh_schedule_idle) are just bugs waiting to
> happen, and should never be used for anything.
>    

Idle bottom halves make considerable more sense than the normal bottom 
halves.

The fact that rescheduling a bottom half within a bottom half results in 
an infinite loop is absurd.  It is equally absurd that bottoms halves 
alter the select timeout.  The result of that is that if a bottom half 
schedules another bottom half, and that bottom half schedules the 
previous, you get a tight infinite loop.  Since bottom halves are used 
often times deep within functions, the result is very subtle infinite 
loops (that we've absolutely encountered in the past).

A main loop should have only a few characteristics.  It should enable 
timeouts (based on select), it should enable fd event dispatch, and it 
should allow for idle functions to be registered.  There should be no 
guarantees on when idle functions are executed other than they'll 
eventually be executed.

The way we use "bottom halves" today should be implemented in terms of a 
relative timeout of 0 or an absolute timeout of now.  The fact that we 
can't do that in our main loop is due to the very strange dependencies 
deep within various devices on io dispatch ordering.  I would love to 
eliminate this but I've not been able to spend any time on this recently.

Regards,

Anthony Liguori

> Paul
>    

  reply	other threads:[~2010-02-24 14:59 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 [this message]
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
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=4B853ED3.3060707@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).