[RFC][PATCH] flexible array implementation

Paul Menage menage at google.com
Tue Jul 21 13:28:50 PDT 2009


On Tue, Jul 21, 2009 at 9:03 AM, Dave Hansen<dave at linux.vnet.ibm.com> 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


More information about the Containers mailing list