From: Ingo Molnar on

* Avi Kivity <avi(a)redhat.com> wrote:

> > Consider the _other_ examples that are a lot more clear:
> >
> > ' If you expose paravirt spilocks via KVM please also make sure the KVM
> > tooling can make use of it, has an option for it to configure it, and
> > that it has sufficient efficiency statistics displayed in the tool for
> > admins to monitor.'
> >
> > ' If you create this new paravirt driver then please also make sure it can
> > be configured in the tooling. '
> >
> > ' Please also add a testcase for this bug to tools/kvm/testcases/ so we dont
> > repeat this same mistake in the future. '
>
> All three happen quite commonly in qemu/kvm development. Of course someone
> who develops a feature also develops a patch that exposes it in qemu. There
> are several test cases in qemu-kvm.git/kvm/user/test.

If that is the theory then it has failed to trickle through in practice. As
you know i have reported a long list of usability problems with hardly a look.
That list could be created by pretty much anyone spending a few minutes of
getting a first impression with qemu-kvm.

So something is seriously wrong in KVM land, to pretty much anyone trying it
for the first time. I have explained how i see the root cause of that, while
you seem to suggest that there's nothing wrong to begin with. I guess we'll
have to agree to disagree on that.

Thanks,

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Anthony Liguori on
On 03/21/2010 02:17 PM, Ingo Molnar wrote:
>
>> If you want to improve this, you need to do the following:
>>
>> 1) Add a userspace daemon that uses vmchannel that runs in the guest and can
>> fetch kallsyms and arbitrary modules. If that daemon lives in
>> tools/perf, that's fine.
>>
> Adding any new daemon to an existing guest is a deployment and usability
> nightmare.
>
> The basic rule of good instrumentation is to be transparent. The moment we
> have to modify the user-space of a guest just to monitor it, the purpose of
> transparent instrumentation is defeated.
>
> That was one of the fundamental usability mistakes of Oprofile.
>
> There is no 'perf' daemon - all the perf functionality is _built in_, and for
> very good reasons. It is one of the main reasons for perf's success as well.
>

The solution should be a long lived piece of code that runs without
kernel privileges. How the code is delivered to the user is a separate
problem.

If you want to argue that the kernel should build an initramfs that
contains some things that always should be shipped with the kernel but
don't need to be within the kernel, I think that's something that's long
over due.

We could make it a kernel thread, but what's the point? It's much safer
for it to be a userspace thread and it doesn't need to interact with the
kernel in an intimate way.

Regards,

Anthony Liguori

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Anthony Liguori on
On 03/21/2010 04:00 PM, Ingo Molnar wrote:
> * Avi Kivity<avi(a)redhat.com> wrote:
>
>
>> On 03/21/2010 09:59 PM, Ingo Molnar wrote:
>>
>>> Frankly, i was surprised (and taken slightly off base) by both Avi and Anthony
>>> suggesting such a clearly inferior "add a demon to the guest space" solution.
>>> It's a usability and deployment non-starter.
>>>
>> It's only clearly inferior if you ignore every consideration against it.
>> It's definitely not a deployment non-starter, see the tons of daemons that
>> come with any Linux system. [...]
>>
> Avi, please dont put arguments into my mouth that i never made.
>
> My (clearly expressed) argument was that:
>
> _a new guest-side demon is a transparent instrumentation non-starter_
>

FWIW, there's no reason you couldn't consume a vmchannel port from
within the kernel. I don't think the code needs to be in the kernel and
from a security PoV, that suggests that it should be in userspace IMHO.

But if you want to make a kernel thread, knock yourself out. I have no
objection to that from a qemu perspective. I can't see why Avi would
mind either. I think it's papering around another problem (the kernel
should control initrds IMHO) but that's a different topic.

Regards,

Anthony Liguori

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Anthony Liguori on
On 03/21/2010 05:00 PM, Ingo Molnar wrote:
> If that is the theory then it has failed to trickle through in practice. As
> you know i have reported a long list of usability problems with hardly a look.
> That list could be created by pretty much anyone spending a few minutes of
> getting a first impression with qemu-kvm.
>

I think the point you're missing is that your list was from the
perspective of someone looking at a desktop virtualization solution that
had was graphically oriented.

As Avi has repeatedly mentioned, so far, that has not been the target
audience of QEMU. The target audience tends to be: 1) people looking to
do server virtualization and 2) people looking to do command line based
development.

Usually, both (1) and (2) are working on machines that are remotely
located. What's important to these users is that VMs be easily
launchable from the command line, that there is a lot of flexibility in
defining machine types, and that there is a programmatic way to interact
with a given instance of QEMU. Those are the things that we've been
focusing on recently.

The reason we don't have better desktop virtualization support is
simple. No one is volunteering to do it and no company is funding
development for it.

When you look at something like VirtualBox, what you're looking at is a
long ago forked version of QEMU with a GUI added focusing on desktop
virtualization.

There is no magic behind adding a better, more usable GUI to QEMU. It
just takes resources.

I understand that you're trying to make the point that without catering
to the desktop virtualization use case, we won't get as many developers
as we could. Personally, I don't think that argument is accurate. If
you look at VirtualBox, it's performance is terrible. Having a nice GUI
hasn't gotten them the type of developers that can improve their
performance.

No one is arguing that we wouldn't like to have a nicer UI. I'd love to
merge any patch like that.

Regards,

Anthony Liguori

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Anthony Liguori on
On 03/21/2010 04:54 PM, Ingo Molnar wrote:
> * Avi Kivity<avi(a)redhat.com> wrote:
>
>
>> On 03/21/2010 10:55 PM, Ingo Molnar wrote:
>>
>>> Of course you could say the following:
>>>
>>> ' Thanks, I'll mark this for v2.6.36 integration. Note that we are not
>>> able to add this to the v2.6.35 kernel queue anymore as the ongoing
>>> usability work already takes up all of the project's maintainer and
>>> testing bandwidth. If you want the feature to be merged sooner than that
>>> then please help us cut down on the TODO and BUGS list that can be found
>>> at XYZ. There's quite a few low hanging fruits there. '
>>>
>> That would be shooting at my own foot as well as the contributor's since I
>> badly want that RCU stuff, and while a GUI would be nice, that itch isn't on
>> my back.
>>
> I think this sums up the root cause of all the problems i see with KVM pretty
> well.
>

A good maintainer has to strike a balance between asking more of people
than what they initially volunteer and getting people to implement the
less fun things that are nonetheless required. The kernel can take this
to an extreme because at the end of the day, it's the only game in town
and there is an unending number of potential volunteers. Most other
projects are not quite as fortunate.

When someone submits a patch set to QEMU implementing a new network
backend for raw sockets, we can push back about how it fits into the
entire stack wrt security, usability, etc. Ultimately, we can arrive at
a different, more user friendly solution (networking helpers) and along
with some time investment on my part, we can create a much nicer, more
user friendly solution. Still command line based though.

Responding to such a patch set with, replace the SDL front end with a
GTK one that lets you graphically configure networking, is not
reasonable and the result would be one less QEMU contributor in the long
run.

Overtime, we can, and are, pushing people to focus more on usability.
But that doesn't get you a first class GTK GUI overnight. The only way
you're going to get that is by having a contributor be specifically
interesting in building such a thing.

We simply haven't had that in the past 5 years that I've been involved
in the project. If someone stepped up to build this, I'd certainly
support it in every way possible and there are probably some steps we
could take to even further encourage this.

Regards,

Anthony Liguori

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/