Re: NUMA API for Linux

From: Andrew Morton
Date: Wed Apr 07 2004 - 19:00:56 EST


Andi Kleen <ak@xxxxxxx> wrote:
>
> On Wed, 7 Apr 2004 15:52:25 -0700
> Andrew Morton <akpm@xxxxxxxx> wrote:
>
> > Andi Kleen <ak@xxxxxxx> wrote:
> > >
> > > We can discuss changes when someone shows numbers that additional
> > > optimizations are needed. I haven't seen such numbers and I'm not convinced
> > > sharing is even a good idea from a design standpoint. For the first version
> > > I just aimed to get something working with straight forward code.
> > >
> > > To put it all in perspective: a policy is 12 bytes on a 32bit machine
> > > (assuming MAX_NUMNODES <= 32) and 16 bytes on a 64bit machine
> > > (with MAX_NUMNODES <= 64)
> >
> > sizeof(vm_area_struct) is a very sensitive thing on ia32. If you expect
> > that anyone is likely to actually use the numa API on 32-bit, sharing
> > will be important.
>
> I don't really believe that.

You better. VMA space exhaustion is one of the reasons for introducing
remap_file_pages(). It's an oracle-killer. Like everything else ;)

> If it was that way someone would have already
> done all the obvious space optimizations left on the table...
> (like using rb_next or merging the rb color into flags)

Nope, we're slack.

> NUMA API adds a new pointer, but all sharing in the world couldn't fix that.

> When you set a policy != default you will also pay the 12 or 16 bytes overhead
> for the object for each "policy region"

OK, that's not so bad. So if you don't use the feature the overhead is 4
bytes/vma.

If you _do_ use the feature, what is the overhead? 12 bytes for each and
every vma? Or just for the vma's which have a non-default policy?

Your patch takes the CONFIG_NUMA vma from 64 bytes to 68. It would be nice
to pull those 4 bytes back somehow.

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