Re: [Lhms-devel] [PATCH 0/7] Fragmentation Avoidance V19

Gerrit Huizenga
2005-11-02T15:02:38Z

On Wed, 02 Nov 2005 13:00:48 +0100, Ingo Molnar wrote:
>
> * Gerrit Huizenga <gh@us.ibm.com> wrote:
>
> >
> > On Wed, 02 Nov 2005 11:41:31 +0100, Ingo Molnar wrote:
> > >
> > > * Gerrit Huizenga <gh@us.ibm.com> wrote:
> > >
> > > > > generic unpluggable kernel RAM _will not work_.
> > > >
> > > > Actually, it will. Well, depending on terminology.
> > >
> > > 'generic unpluggable kernel RAM' means what it says: any RAM seen by the
> > > kernel can be unplugged, always. (as long as the unplug request is
> > > reasonable and there is enough free space to migrate in-use pages to).
> >
> > Okay, I understand your terminology. Yes, I can not point to any
> > particular piece of memory and say "I want *that* one" and have that
> > request succeed. However, I can say "find me 50 chunks of memory
> > of your choosing" and have a very good chance of finding enough
> > memory to satisfy my request.
>
> but that's obviously not 'generic unpluggable kernel RAM'. It's very
> special RAM: RAM that is free or easily freeable. I never argued that
> such RAM is not returnable to the hypervisor.

Okay - and 'generic unpluggable kernel RAM' has not been a goal for
the hypervisor based environments. I believe it is closer to being
a goal for those machines which want to hot-remove DIMMs or physical
memory, e.g. those with IA64 machines wishing to remove entire nodes.

> > > reliable unmapping of "generic kernel RAM" is not possible even in a
> > > virtualized environment. Think of the 'live pointers' problem i outlined
> > > in an earlier mail in this thread today.
> >
> > Yeah - and that isn't what is being proposed here. The goal is to
> > ask the kernel to identify some memory which can be legitimately
> > freed and hasten the freeing of that memory.
>
> but that's very easy to identify: check the free list or the clean
> list(s). No defragmentation necessary. [unless the unit of RAM mapping
> between hypervisor and guest is too coarse (i.e. not 4K pages).]

Ah, but the hypervisor often manages large page sizes, e.g. 64 MB.
It doesn't manage page rights for each guest OS at the 4 K granularity.
Hypervisors are theoretically light in terms of memory needs and
general footprint. Picture the overhead of tracking rights/permissions
of each page of memory and its assignment to any of, say, 256 different
guest operating systems. For a machine of any size, that would be
a huge amount of state for a hypervisor to maintain. Would you
really want a hypervisor to keep that much state? Or is it more
reasonably for a hypervisor to track, say, 64 MB chunks and the
rights of that memory for a number of guest operating systems? Even
if the number of guests is small, the data structures for fast
memory management would grow quickly.

gerrit