Re: [RFC][PATCH] flexible array implementation

From: Paul Menage
Date: Tue Jul 21 2009 - 16:29:03 EST


On Tue, Jul 21, 2009 at 9:03 AM, Dave Hansen<dave@xxxxxxxxxxxxxxxxxx> wrote:
>
> Once a structure goes over PAGE_SIZE*2, we see occasional
> allocation failures.  Some people have chosen to switch
> over to things like vmalloc() that will let them keep
> array-like access to such a large structures.  But,
> vmalloc() has plenty of downsides.
>
> Here's an alternative.  I think it's what Andrew was
> suggesting  here:
>
>        http://lkml.org/lkml/2009/7/2/518

Looks like a useful library abstraction.

As far as using it for the cgroups tasks files, it would be possible,
although I was leaning towards an approach that I expressed in the
thread on Ben's patch to add the "procs" file:

- make css_set and its various linked lists RCU-safe
- make it possible for the cgroup iterator to pause/resume scanning by
leaving a cursor at the relevant point in the css_set lists.

Then we can avoid any memory allocations at all.

The downside is that we lose the current sorted output for the tasks
file; http://www.google.com/codesearch?q=cpuset+tasks suggests that
current users of the tasks file don't expect it to be sorted (and in
fact libcpuset explicitly sorts it after reading) so it's not clear if
this would be a problem. I don't think I can see a plausible scenario
where userspace would be relying on sorted output, but maybe others
can.

Paul
--
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/