From: Avi Kivity on
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. The basic ones are installed
and enabled automatically during system installation.

> Furthermore, allowing a guest to integrate/mount its files into the host VFS
> space (which was my suggestion) has many other uses and advantages as well,
> beyond the instrumentation/symbol-lookup purpose.
>

Yes. I'm just not sure about the auto-enabling part.

> So can we please have some resolution here and move on: the KVM maintainers
> should either suggest a different transparent approach, or should retract the
> NAK for the solution we suggested.
>

So long as you define 'transparent' as in 'only the guest kernel is
involved' or even 'only the guest and host kernels are involved' we
aren't going to make a lot of progress. I oppose shoving random bits of
functionality into the kernel, especially things that are in daily use.
While us developers do and will use profiling extensively, it doesn't
need sit in every guest's non-swappable .text.

> We very much want to make progress and want to write code, but obviously we
> cannot code against a maintainer NAK, nor can we code up an inferior solution
> either.
>

You haven't heard any NAKs, only objections. If we discuss things
perhaps we can achieve something that works for everyone. If we keep
turning the flames higher that's unlikely.

--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.

--
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: Antoine Martin on
On 03/22/2010 03:11 AM, Avi Kivity wrote:
> On 03/21/2010 10:08 PM, Olivier Galibert wrote:
>> On Sun, Mar 21, 2010 at 10:01:51PM +0200, Avi Kivity wrote:
>>> On 03/21/2010 09:17 PM, Ingo Molnar wrote:
>>>> Adding any new daemon to an existing guest is a deployment and
>>>> usability
>>>> nightmare.
>>>>
>>> The logical conclusion of that is that everything should be built into
>>> the kernel. Where a failure brings the system down or worse. Where
>>> you
>>> have to bear the memory footprint whether you ever use the
>>> functionality
>>> or not. Where to update the functionality you need to deploy a new
>>> kernel (possibly introducing unrelated bugs) and reboot.
>>>
>>> If userspace daemons are such a deployment and usability nightmare,
>>> maybe we should fix that instead.
>> Which userspace? Deploying *anything* in the guest can be a
>> nightmare, including paravirt drivers if you don't have a natively
>> supported in the OS virtual hardware backoff.
>
> That includes the guest kernel. If you can deploy a new kernel in the
> guest, presumably you can deploy a userspace package.
That's not always true.
The host admin can control the guest kernel via "kvm -kernel" easily
enough, but he may or may not have access to the disk that is used in
the guest. (think encrypted disks, service agreements, etc)

Antoine
>> Deploying things in the
>> host OTOH is business as usual.
>
> True.
>
>> And you're smart enough to know that.
>
> Thanks.
>

--
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: Avi Kivity on
On 03/21/2010 10:18 PM, Antoine Martin wrote:
>> That includes the guest kernel. If you can deploy a new kernel in
>> the guest, presumably you can deploy a userspace package.
>
> That's not always true.
> The host admin can control the guest kernel via "kvm -kernel" easily
> enough, but he may or may not have access to the disk that is used in
> the guest. (think encrypted disks, service agreements, etc)

There is a matching -initrd argument that you can use to launch a
daemon. I believe that -kernel use will be rare, though. It's a lot
easier to keep everything in one filesystem.

--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.

--
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: Avi Kivity on
On 03/21/2010 09:06 PM, Ingo Molnar wrote:
> * Avi Kivity<avi(a)redhat.com> wrote:
>
>
>>>> [...] Second, from my point of view all contributors are volunteers
>>>> (perhaps their employer volunteered them, but there's no difference from
>>>> my perspective). Asking them to repaint my apartment as a condition to
>>>> get a patch applied is abuse. If a patch is good, it gets applied.
>>>>
>>> This is one of the weirdest arguments i've seen in this thread. Almost all
>>> the time do we make contributions conditional on the general shape of the
>>> project. Developers dont get to do just the fun stuff.
>>>
>> So, do you think a reply to a patch along the lines of
>>
>> NAK. Improving scalability is pointless while we don't have a decent GUI.
>> I'll review you RCU patches
>> _after_ you've contributed a usable GUI.
>>
>> ?
>>
> What does this have to do with RCU?
>

The example was rcuifying kvm which took place a bit ago. Sorry, it
wasn't clear.

> I'm talking about KVM, which is a Linux kernel feature that is useless without
> a proper, KVM-specific app making use of it.
>
> RCU is a general kernel performance feature that works across the board. It
> helps KVM indirectly, and it helps many other kernel subsystems as well. It
> needs no user-space tool to be useful.
>

Correct. So should I tell someone that has sent a patch that rcu-ified
kvm in order to scale it, that I won't accept the patch unless they do
some usability userspace work? say, implementing an eject button.
That's what I understood you to mean.

> KVM on the other hand is useless without a user-space tool.
>
> [ Theoretically you might have a fair point if it were a critical feature of
> RCU for it to have a GUI, and if the main tool that made use of it sucked.
> But it isnt and you should know that. ]
>
> Had you suggested the following 'NAK', applied to a different, relevant
> subsystem:
>
> | NAK. Improving scalability is pointless while we don't have a usable
> | tool. I'll review you perf patches _after_ you've contributed a usable
> | tool.
>

That might hold, but the tool is usable at least for some people - it
runs in production. The people running it won't benefit from an eject
button or any usability improvement since they run it through a
centralized management tool that hides everything. They will benefit
from the scalability patches. Should I still make those patches
conditional on scalability work that is of no interest to the submitter?

>
>>> This is a basic quid pro quo: new features introduce risks and create
>>> additional workload not just to the originating developer but on the rest
>>> of the community as well. You should check how Linus has pulled new
>>> features in the past 15 years: he very much requires the existing code to
>>> first be top-notch before he accepts new features for a given area of
>>> functionality.
>>>
>> For a given area, yes. [...]
>>
> That is my precise point.
>
> KVM is a specific subsystem or "area" that makes no sense without the
> user-space tooling it relates to. You seem to argue that you have no 'right'
> to insist on good quality of that tooling - and IMO you are fundamentally
> wrong with that.
>

kvm contains many sub-areas. I'm not going to tie unrelated things
together like the GUI and sclability, configuration file format and
emulator correctness, nested virtualization and qcow2 asynchronity, or
other crazy combinations. People either leave en mass or become
frustrated if they can't. I do reject patches touching a sub-area that
I think need to be done in userspace, for example.

That's not to say kvm development is random. We have a weekly
conference call where regular contributors and maintainers of both qemu
and kvm participate and where we decide where to focus. Sadly the issue
of a qemu GUI is not raised often. Perhaps you can participate and
voice your concerns.

--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.

--
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: Ingo Molnar on

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

> On 03/21/2010 09:17 PM, Ingo Molnar wrote:
> >
> > Adding any new daemon to an existing guest is a deployment and usability
> > nightmare.
>
> The logical conclusion of that is that everything should be built into the
> kernel. [...]

Only if you apply it as a totalitarian rule.

Furthermore, the logical conclusion of _your_ line of argument (applied in a
totalitarian manner) is that 'nothing should be built into the kernel'.

I.e. you are arguing for microkernel Linux, while you see me as arguing for a
monolithic kernel.

Reality is that we are somewhere inbetween, we are neither black nor white:
it's shades of grey.

If we want to do a good job with all this then we observe subsystems, we see
how they relate to the physical world and decide about how to shape them. We
identify long-term changes and re-design modularization boundaries in
hindsight - when we got them wrong initially. We dont try to rationalize the
status-quo.

Lets see one example of that thought process in action: Oprofile.

We saw that the modularization of oprofile was a total nightmare: a separate
kernel-space and a separate user-space component, which was in constant
version friction. The ABI between them was stiffling: it was hard to change it
(you needed to trickle that through the tool as well which was on a different
release schedule, etc.e tc.)

The result was sucky usability that never went beyond some basic 'you can do
profiling' threshold. The subsystem worked well within that design box, and it
was worked on by highly competent people - but it was still far, far away from
the potential it could have achieved.

So we observed those problems and decided to do something about it:

- We unified the two parts into a single maintenance domain. There's
the kernel-side in kernel/perf_event.c and arch/*/*/perf_event.c,
plus the user-side in tools/perf/. The two are connected by a very
flexible, forwards and backwards compatible ABI.

- We moved much more code into the kernel, realizing that transparent
and robust instrumentation should be offered instead of punting
abstractions into user-space (which is in a disadvantaged position
to implement system-wide abstractions).

- We created a no-bullsh*t approach to usability. perf is by no means
perfect, but it's written by developers for developers and if you report a
bug to us we'll act on it before anything else. Furthermore the kernel
developers do the user-space coding as well, so there's no chinese
wall separating them. Kernel-space becomes aware of the intricacies of
user-space and user-space developers become aware of the difficulties of
kernel-space as well. It's a good mix in our experience.

The thing is (and i doubt you are surprised that i say that), i see a similar
situation with KVM. The basic parameters are comparable to Oprofile: it has a
kernel-space component and a KVM-specific user-space. By all practical means
the two are one and the same, but are maintained as different projects.

I have followed KVM since its inception with great interest. I saw its good
initial design, i tried it early on and even wrote various patches for it. So
i care more about KVM than a random observer would, but this preference and
passion for KVM's good technical sides does not cloud my judgement when it
comes to its weaknesses.

In fact the weaknesses are far more important to identify and express
publicly, so i tend to concentrate on them. Dont take this as me blasting KVM,
we both know the many good aspects of KVM.

So, as i explained it earlier in greater detail the modularization of KVM into
a separate kernel-space and user-space component is one of its worst current
weaknesses, and it has become the main stiffling force in the way of a better
KVM experience to users.

That, IMO, is the 'weakest link' of KVM today and no matter how well the rest
of KVM gets improved those nice bits all get unfairly ignored when the user
cannot have a usable and good desktop experience and thinks that KVM is
crappy.

I think you should think outside the initial design box you have created 4
years ago, you should consider iterating the model and you should consider the
alternative i suggested: move (or create) KVM tooling to tools/kvm/ and treat
it as a single project from there on.

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/