All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.