From: Anthony Liguori <anthony@codemonkey.ws>
To: Ingo Molnar <mingo@elte.hu>
Cc: Zachary Amsden <zamsden@redhat.com>, Avi Kivity <avi@redhat.com>,
"Zhang, Yanmin" <yanmin_zhang@linux.intel.com>,
Peter Zijlstra <peterz@infradead.org>,
ming.m.lin@intel.com, sheng.yang@intel.com,
Jes Sorensen <Jes.Sorensen@redhat.com>,
KVM General <kvm@vger.kernel.org>, Gleb Natapov <gleb@redhat.com>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Fr??d??ric Weisbecker <fweisbec@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Arjan van de Ven <arjan@infradead.org>
Subject: Re: KVM usability
Date: Mon, 01 Mar 2010 09:33:47 -0600 [thread overview]
Message-ID: <4B8BDE5B.8090201@codemonkey.ws> (raw)
In-Reply-To: <20100227172546.GA31472@elte.hu>
On 02/27/2010 11:25 AM, Ingo Molnar wrote:
> * Zachary Amsden<zamsden@redhat.com> wrote:
>
> [...]
>
>> Second, it's not over-modularized. The modules are the individual
>> components of the architecture. How would you propose to put it
>> differently. They really can't naturally combine. And with the
>> code quality of qemu in general being problematic by Linux kernel
>> standards, it's not natural to move the device emulation directly
>> into the kernel module. So this is why we are where we are today.
>>
> I'm not talking about moving it into a kernel _module_ - albeit that
> alone is a worthwile thing to do for any performance sensitive hw
> component.
>
> I was talking about the option of a clean, stripped down Qemu base
> hosted in the kernel proper, in linux/tools/kvm/ or so. If i were
> running a virtualization effort it would be the first place i'd
> consider to put my tooling into.
>
Let's ignore the suggestion of hosting it in the kernel. There's no
reason it couldn't be as successful hosted as a separate project.
Let's consider what you would strip of out qemu. You would obviously
pull out TCG and the device emulation that isn't useful for KVM. You
can't compile out TCG today but you actually can compile out most device
emulation so this doesn't actually buy you much. It certainly doesn't
fix any of the problems you outlined.
The GUI wouldn't change at all. You still have the same fundamental
problem that whatever this userspace executable is, is not the place
where you need to implement a user friendly GUI. That has to be a
separate process. Maybe you could integrate that separate process into
the same repository as the core process but we can still do this with qemu.
> It would be a no-brainer: most of the devs come from the KVM side, and
> KVM itself makes little sense without Qemu, and Qemu makes little sense
> without KVM these days. (and i know about the non-KVM and non-x86
> roots of Qemu - still, it's not a significant piece of usage today)
>
Do you have statistics to back this up? You would probably be surprised
at how many people use TCG.
To be honest, every KVM developer including myself has considered and
even prototyped exactly what you described. We've all independently
come to the same conclusion: it's easier to incrementally improve qemu
than it is to split the code base and try to maintain the fork.
And a lot of the other vendors who have decided to fork qemu in the past
have learned the hard way that it's more difficult to maintain a fork
and are now merging back to upstream qemu.
We could certainly make the same argument about forking the kernel to
make it optimized for virtualization. If we took Linux and added it to
the qemu git tree, we would instantly have transparent large page
support for users instead of having to wait years to get it properly
integrated. We could also add gang scheduling and hard scheduler limits
to the kernel. But we know better and even though the process is more
painful and drawn out, we end up with a much better solution in the long
run by including the input and feedback from people like you.
Xen clearly made a different decision and is still suffering the
consequences. They've done the same thing with qemu as you describe and
have now realized it was a mistake and are working to merge their
changes into upstream qemu.
There are *plenty* of usability issues (like transparent large pages)
that need to be addressed at the KVM/kernel level. Today, a user has to
choose between a ~30% decrease in performance on Java workloads or the
ability to overcommit memory. It's a pretty significant problem and
there's been a lot of resistance within the kernel community to fix it.
Likewise, I'm seeing a good number of people hit problems with lock
holder pre-emption in the field. It's absolutely a usability problem
when a user sees catastrophically bad performance running an 8-VCPU
virtual machine on a 2 socket host. Whether it's gang scheduling or
directed yields + pause loop detection, we definitely need some
scheduler changes to fix this problem.
Not having an option enabled by default is an annoyance that a user
eventually overcomes with the help of documentation. Performance
problems are deal breakers that lead users to switch to another
virtualization technology.
Just stripping down qemu and putting the result in the kernel source
tree doesn't fix anything. We have plenty of hard problems to solve
already.
Regards,
Anthony Liguori
next prev parent reply other threads:[~2010-03-01 15:33 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1267068445.1726.25.camel@localhost>
[not found] ` <1267089644.12790.74.camel@laptop>
2010-02-26 2:49 ` Enhance perf to support KVM Zhang, Yanmin
2010-02-26 9:01 ` Ingo Molnar
2010-02-26 9:53 ` Avi Kivity
2010-02-26 10:35 ` Ingo Molnar
2010-02-26 10:47 ` Avi Kivity
2010-02-26 11:17 ` Ingo Molnar
2010-02-26 11:44 ` Avi Kivity
2010-02-26 12:46 ` Ingo Molnar
2010-02-26 12:54 ` Avi Kivity
2010-02-26 13:16 ` Ingo Molnar
2010-02-26 13:57 ` Jes Sorensen
2010-02-26 14:04 ` Avi Kivity
2010-02-26 14:23 ` Ingo Molnar
2010-02-26 15:06 ` Avi Kivity
2010-03-02 16:46 ` Paolo Bonzini
2010-03-02 17:12 ` Arnaldo Carvalho de Melo
2010-03-02 17:20 ` Paolo Bonzini
2010-03-02 17:24 ` Ingo Molnar
2010-03-02 17:17 ` Ingo Molnar
2010-03-07 14:17 ` Avi Kivity
2010-02-26 18:33 ` Avi Kivity
2010-02-27 10:56 ` KVM usability Ingo Molnar
2010-02-27 13:30 ` Jan Kiszka
2010-02-27 13:30 ` [Qemu-devel] " Jan Kiszka
2010-02-27 14:48 ` Ian Kirk
2010-02-27 15:32 ` Zachary Amsden
2010-02-27 17:25 ` Ingo Molnar
2010-03-01 15:33 ` Anthony Liguori [this message]
2010-03-01 16:48 ` Zachary Amsden
2010-03-01 17:41 ` Arnaldo Carvalho de Melo
2010-03-01 18:29 ` Zachary Amsden
2010-03-01 20:56 ` Ingo Molnar
2010-03-01 21:45 ` Anthony Liguori
2010-03-01 22:06 ` Zachary Amsden
2010-03-02 0:33 ` Ingo Molnar
2010-03-02 0:30 ` Ingo Molnar
2010-03-02 2:34 ` Anthony Liguori
2010-03-02 8:39 ` Chris Webb
2010-03-07 18:42 ` Avi Kivity
2010-03-02 10:30 ` Ingo Molnar
2010-03-07 9:35 ` Avi Kivity
2010-03-07 9:56 ` Pekka Enberg
2010-03-07 10:11 ` Avi Kivity
2010-03-07 18:42 ` Ingo Molnar
2010-03-07 15:14 ` Luca Barbieri
2010-03-07 18:16 ` Avi Kivity
2010-03-07 18:01 ` Arnaldo Carvalho de Melo
2010-03-07 18:15 ` Avi Kivity
2010-03-07 18:53 ` Arnaldo Carvalho de Melo
2010-03-07 19:05 ` Avi Kivity
2010-03-07 18:25 ` Avi Kivity
2010-03-01 9:25 ` Ingo Molnar
2010-03-01 15:36 ` Anthony Liguori
2010-03-01 15:14 ` Anthony Liguori
2010-03-01 15:42 ` Daniel P. Berrange
2010-03-02 1:12 ` Dustin Kirkland
2010-03-02 10:11 ` Peter Zijlstra
2010-03-02 13:37 ` Nikolai K. Bochev
2010-03-02 14:22 ` Gerd Hoffmann
2010-03-02 14:29 ` Ingo Molnar
2010-03-07 9:22 ` Avi Kivity
2010-03-02 14:37 ` Daniel P. Berrange
2010-03-02 14:52 ` Gerd Hoffmann
2010-03-02 14:56 ` Daniel P. Berrange
2010-03-02 15:13 ` Gerd Hoffmann
2010-03-04 20:00 ` Lucas Meneghel Rodrigues
2010-03-04 20:13 ` Zachary Amsden
2010-03-04 20:34 ` Anthony Liguori
2010-03-04 22:23 ` H. Peter Anvin
2010-03-05 7:44 ` Markus Armbruster
2010-03-07 11:25 ` Avi Kivity
2010-03-01 21:12 ` Dustin Kirkland
2010-03-01 21:59 ` Anthony Liguori
2010-03-02 2:34 ` Alexander Graf
2010-03-02 2:36 ` Anthony Liguori
2010-03-09 13:32 ` Avi Kivity
2010-03-09 14:32 ` Dustin Kirkland
2010-03-09 14:38 ` Alexander Graf
2010-03-09 14:50 ` Anthony Liguori
2010-03-09 14:52 ` Avi Kivity
2010-03-09 14:57 ` Anthony Liguori
2010-03-09 17:11 ` Avi Kivity
2010-03-09 17:27 ` Anthony Liguori
2010-03-09 17:30 ` Avi Kivity
2010-03-09 14:49 ` Anthony Liguori
2010-03-09 14:54 ` Avi Kivity
2010-03-02 3:02 ` Dustin Kirkland
2010-03-02 8:21 ` Chris Webb
2010-03-02 14:54 ` Dustin Kirkland
[not found] ` <428008581.20100302103400@eternallybored.org>
2010-03-07 11:35 ` Avi Kivity
2010-04-04 12:31 ` High CPU use of -usbdevice tablet (was Re: KVM usability) Chris Webb
2010-04-04 12:31 ` [Qemu-devel] " Chris Webb
2010-04-04 14:25 ` Paul Brook
2010-04-04 14:25 ` Paul Brook
2010-04-04 16:58 ` Avi Kivity
2010-04-04 16:58 ` Avi Kivity
2010-04-04 21:03 ` Paul Brook
2010-04-04 21:03 ` Paul Brook
2010-04-04 21:53 ` Paul Brook
2010-04-04 21:53 ` Paul Brook
2010-04-05 8:22 ` Avi Kivity
2010-04-05 8:22 ` Avi Kivity
2010-03-03 2:57 ` KVM usability Ross Boylan
2010-03-03 8:55 ` Daniel P. Berrange
2010-03-03 15:42 ` Ross Boylan
2010-03-07 14:29 ` Avi Kivity
2010-02-26 11:48 ` Enhance perf to support KVM Peter Zijlstra
2010-02-26 11:53 ` Avi Kivity
2010-02-26 20:17 ` Anthony Liguori
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=4B8BDE5B.8090201@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=Jes.Sorensen@redhat.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@redhat.com \
--cc=arjan@infradead.org \
--cc=avi@redhat.com \
--cc=fweisbec@gmail.com \
--cc=gleb@redhat.com \
--cc=hpa@zytor.com \
--cc=kvm@vger.kernel.org \
--cc=ming.m.lin@intel.com \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=sheng.yang@intel.com \
--cc=tglx@linutronix.de \
--cc=yanmin_zhang@linux.intel.com \
--cc=zamsden@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.