From: Gleb Natapov <gleb@redhat.com>
To: Alexander Graf <agraf@suse.de>
Cc: kvm@vger.kernel.org, qemu-devel@nongnu.org,
"Richard W.M. Jones" <rjones@redhat.com>,
Avi Kivity <avi@redhat.com>, "David S. Ahern" <daahern@cisco.com>
Subject: Re: [Qemu-devel] Anyone seeing huge slowdown launching qemu with Linux 2.6.35?
Date: Wed, 4 Aug 2010 18:48:30 +0300 [thread overview]
Message-ID: <20100804154830.GC10499@redhat.com> (raw)
In-Reply-To: <D254D65D-8E8D-482B-8527-6E987AD6D738@suse.de>
On Wed, Aug 04, 2010 at 05:31:12PM +0200, Alexander Graf wrote:
>
> On 04.08.2010, at 17:25, Gleb Natapov wrote:
>
> > On Wed, Aug 04, 2010 at 09:57:17AM -0500, Anthony Liguori wrote:
> >> On 08/04/2010 09:51 AM, David S. Ahern wrote:
> >>>
> >>> On 08/03/10 12:43, Avi Kivity wrote:
> >>>> libguestfs does not depend on an x86 architectural feature.
> >>>> qemu-system-x86_64 emulates a PC, and PCs don't have -kernel. We should
> >>>> discourage people from depending on this interface for production use.
> >>> That is a feature of qemu - and an important one to me as well. Why
> >>> should it be discouraged? You end up at the same place -- a running
> >>> kernel and in-ram filesystem; why require going through a bootloader
> >>> just because the hardware case needs it?
> >>
> >> It's smoke and mirrors. We're still providing a boot loader it's
> >> just a little tiny one that we've written soley for this purpose.
> >>
> >> And it works fine for production use. The question is whether we
> >> ought to be aggressively optimizing it for large initrd sizes. To
> >> be honest, after a lot of discussion of possibilities, I've come to
> >> the conclusion that it's just not worth it.
> >>
> >> There are better ways like using string I/O and optimizing the PIO
> >> path in the kernel. That should cut down the 1s slow down with a
> >> 100MB initrd by a bit. But honestly, shaving a couple hundred ms
> >> further off the initrd load is just not worth it using the current
> >> model.
> >>
> > The slow down is not 1s any more. String PIO emulation had many bugs
> > that were fixed in 2.6.35. I verified how much time it took to load 100M
> > via fw_cfg interface on older kernel and on 2.6.35. On older kernels on
> > my machine it took ~2-3 second on 2.6.35 it took 26s. Some optimizations
> > that was already committed make it 20s. I have some code prototype that
> > makes it 11s. I don't see how we can get below that, surely not back to
> > ~2-3sec.
>
> What exactly is the reason for the slowdown? It can't be only boundary and permission checks, right?
>
>
The big part of slowdown right now is that write into memory is done
for each byte. It means for each byte we call kvm_write_guest() and
kvm_mmu_pte_write(). The second call is needed in case memory, instruction
is trying to write to, is shadowed. Previously we didn't checked for
that at all. This can be mitigated by introducing write cache and do
combined writes into the memory and unshadow the page if there is more
then one write into it. This optimization saves ~10secs. Currently string
emulation enter guest from time to time to check if event injection is
needed and read from userspace is done in 1K chunks, not 4K like it was,
but when I made reads to be 4K and disabled guest reentry I haven't seen
any speed improvements worth talking about.
--
Gleb.
next prev parent reply other threads:[~2010-08-04 15:48 UTC|newest]
Thread overview: 151+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-03 11:13 [Qemu-devel] Anyone seeing huge slowdown launching qemu with Linux 2.6.35? Richard W.M. Jones
2010-08-03 11:33 ` Gleb Natapov
2010-08-03 12:10 ` Richard W.M. Jones
2010-08-03 12:37 ` Gleb Natapov
2010-08-03 12:48 ` Richard W.M. Jones
2010-08-03 13:19 ` Avi Kivity
2010-08-03 14:05 ` Richard W.M. Jones
2010-08-03 14:38 ` Avi Kivity
2010-08-03 14:53 ` Richard W.M. Jones
2010-08-03 16:10 ` Avi Kivity
2010-08-03 16:28 ` Richard W.M. Jones
2010-08-03 16:44 ` Avi Kivity
2010-08-03 16:46 ` Anthony Liguori
2010-08-03 16:50 ` Avi Kivity
2010-08-03 16:53 ` Anthony Liguori
2010-08-03 17:01 ` Avi Kivity
2010-08-03 17:42 ` Anthony Liguori
2010-08-03 17:58 ` Avi Kivity
2010-08-03 18:11 ` Richard W.M. Jones
2010-08-03 18:26 ` Anthony Liguori
2010-08-03 18:43 ` Avi Kivity
2010-08-03 18:47 ` Avi Kivity
2010-08-03 18:55 ` Anthony Liguori
2010-08-03 19:00 ` Avi Kivity
2010-08-03 19:05 ` Gleb Natapov
2010-08-03 19:09 ` Avi Kivity
2010-08-03 19:15 ` Anthony Liguori
2010-08-03 19:24 ` Avi Kivity
2010-08-03 19:38 ` Anthony Liguori
2010-08-03 19:41 ` Avi Kivity
2010-08-03 19:47 ` Anthony Liguori
2010-08-04 5:47 ` Avi Kivity
2010-08-03 21:24 ` Gerd Hoffmann
2010-08-03 21:20 ` Gerd Hoffmann
2010-08-04 5:53 ` Avi Kivity
2010-08-04 7:56 ` Gerd Hoffmann
2010-08-04 8:17 ` Avi Kivity
2010-08-04 8:43 ` Gleb Natapov
2010-08-04 9:22 ` Gerd Hoffmann
2010-08-04 13:04 ` Anthony Liguori
2010-08-04 13:07 ` Gleb Natapov
2010-08-04 13:15 ` Anthony Liguori
2010-08-04 13:24 ` Richard W.M. Jones
2010-08-04 13:26 ` Gleb Natapov
2010-08-04 14:22 ` Anthony Liguori
2010-08-04 14:38 ` Gleb Natapov
2010-08-04 14:50 ` Anthony Liguori
2010-08-04 15:01 ` Gleb Natapov
2010-08-04 15:07 ` Anthony Liguori
2010-08-04 15:15 ` Gleb Natapov
2010-08-04 22:41 ` Kevin O'Connor
2010-08-04 16:26 ` Avi Kivity
2010-08-04 13:34 ` Gleb Natapov
2010-08-04 13:52 ` Anthony Liguori
2010-08-04 14:00 ` Gleb Natapov
2010-08-04 14:14 ` Anthony Liguori
2010-08-04 14:36 ` Gleb Natapov
2010-08-04 14:22 ` Paolo Bonzini
2010-08-04 14:39 ` Anthony Liguori
2010-08-04 16:33 ` Avi Kivity
2010-08-04 16:30 ` Avi Kivity
2010-08-04 16:36 ` Avi Kivity
2010-08-04 16:44 ` Anthony Liguori
2010-08-04 16:52 ` Avi Kivity
2010-08-04 17:37 ` Gleb Natapov
2010-08-05 7:28 ` Gerd Hoffmann
2010-08-05 7:34 ` Gleb Natapov
2010-08-05 7:56 ` Avi Kivity
2010-08-05 7:59 ` Gleb Natapov
2010-08-05 8:45 ` Avi Kivity
2010-08-05 8:48 ` Gleb Natapov
2010-08-05 13:43 ` Anthony Liguori
2010-08-04 16:45 ` Alexander Graf
2010-08-04 16:54 ` Avi Kivity
2010-08-04 17:01 ` Alexander Graf
2010-08-04 17:14 ` Avi Kivity
2010-08-04 17:27 ` Alexander Graf
2010-08-04 17:34 ` Avi Kivity
2010-08-04 20:06 ` David S. Ahern
2010-08-04 20:16 ` Richard W.M. Jones
2010-08-05 2:38 ` Avi Kivity
2010-08-04 17:26 ` Anthony Liguori
2010-08-04 17:31 ` Alexander Graf
2010-08-04 17:35 ` Avi Kivity
2010-08-04 17:36 ` Anthony Liguori
2010-08-04 17:36 ` Alexander Graf
2010-08-04 17:46 ` Richard W.M. Jones
2010-08-04 17:50 ` Avi Kivity
2010-08-04 18:13 ` Alexander Graf
2010-08-04 18:16 ` Anthony Liguori
2010-08-04 18:18 ` Alexander Graf
2010-08-04 18:19 ` Avi Kivity
2010-08-04 18:18 ` Avi Kivity
2010-08-04 16:42 ` Anthony Liguori
2010-08-04 13:22 ` Richard W.M. Jones
2010-08-04 13:29 ` Gleb Natapov
2010-08-04 16:25 ` Avi Kivity
2010-08-03 22:06 ` Richard W.M. Jones
2010-08-04 5:54 ` Avi Kivity
2010-08-04 9:24 ` Richard W.M. Jones
2010-08-04 9:27 ` Gleb Natapov
2010-08-04 9:52 ` Avi Kivity
2010-08-04 11:33 ` Richard W.M. Jones
2010-08-04 11:36 ` Avi Kivity
2010-08-04 12:07 ` Gleb Natapov
2010-08-04 12:59 ` Anthony Liguori
2010-08-03 19:26 ` Gleb Natapov
2010-08-03 19:13 ` Richard W.M. Jones
2010-08-03 19:17 ` Gleb Natapov
2010-08-03 19:19 ` Anthony Liguori
2010-08-03 19:22 ` Avi Kivity
2010-08-03 20:00 ` Richard W.M. Jones
2010-08-03 20:49 ` Anthony Liguori
2010-08-03 21:13 ` Paolo Bonzini
2010-08-03 21:34 ` Anthony Liguori
2010-08-04 7:57 ` Paolo Bonzini
2010-08-04 8:19 ` Avi Kivity
2010-08-04 12:53 ` Anthony Liguori
2010-08-04 16:44 ` Avi Kivity
2010-08-04 16:46 ` Anthony Liguori
2010-08-04 16:48 ` Alexander Graf
2010-08-04 16:49 ` Anthony Liguori
2010-08-04 16:51 ` Alexander Graf
2010-08-04 17:01 ` Paolo Bonzini
2010-08-04 17:19 ` Avi Kivity
2010-08-04 17:25 ` Alexander Graf
2010-08-04 17:27 ` Anthony Liguori
2010-08-04 17:37 ` Avi Kivity
2010-08-04 17:53 ` Anthony Liguori
2010-08-04 18:05 ` Alexander Graf
2010-08-04 5:56 ` Avi Kivity
2010-08-04 1:17 ` Jamie Lokier
2010-08-04 8:21 ` Avi Kivity
2010-08-04 14:51 ` David S. Ahern
2010-08-04 14:57 ` Anthony Liguori
2010-08-04 15:25 ` Gleb Natapov
2010-08-04 15:31 ` Alexander Graf
2010-08-04 15:48 ` Gleb Natapov [this message]
2010-08-04 15:59 ` Alexander Graf
2010-08-04 16:08 ` Gleb Natapov
2010-08-04 16:48 ` Avi Kivity
2010-08-04 23:17 ` Kevin O'Connor
2010-08-05 5:26 ` Gleb Natapov
2010-08-03 16:56 ` Anthony Liguori
2010-08-03 16:48 ` Avi Kivity
2010-08-03 17:00 ` Richard W.M. Jones
2010-08-03 17:05 ` Avi Kivity
2010-08-03 16:56 ` Richard W.M. Jones
2010-08-03 17:08 ` Avi Kivity
2010-08-03 16:39 ` Anthony Liguori
2010-08-03 16:43 ` Richard W.M. Jones
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=20100804154830.GC10499@redhat.com \
--to=gleb@redhat.com \
--cc=agraf@suse.de \
--cc=avi@redhat.com \
--cc=daahern@cisco.com \
--cc=kvm@vger.kernel.org \
--cc=qemu-devel@nongnu.org \
--cc=rjones@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).