Re: [git pull] m68k SLUB fix for 2.6.39

David Rientjes
2011-05-03T22:40:47Z

On Fri, 29 Apr 2011, Geert Uytterhoeven wrote:

> My ARAnyM instance has
>
> System Memory: 276480K
> 14 MB at 0x00000000 (ST-RAM)
> 256 MB at 0x01000000 (alternate RAM)
>
> and 137800KIB of swap, and survived the following program just fine:
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
>
> int main(int argc, char *argv[])
> {
> size_t size = 1048576;
> size_t total = 0;
> void *p;
>
> while (size) {
> p = malloc(size);
> if (!p) {
> printf("Failed to allocate %zu bytes\n", size);
> size /= 2;
> }
> memset(p, 0xaa, size);
> total += size;
> printf("Using %zu / 0x%zx bytes of memory\n", total, total);
> }
>
> printf("Finished!\n");
> return 0;
> }
>
> i.e. the OOM-killer just killed the program after it consumed all
> available virtual
> memory:
>
> Out of memory: Kill process 1727 (malloctest) score 854 or sacrifice child
> Killed process 1727 (malloctest) total-vm:361160kB, anon-rss:224164kB,
> file-rss:0kB
> malloctest: page allocation failure. order:0, mode:0x84d0
>
> So SLUB really seems to work now.
>

So we're in the unfortunate position where slub works fine for some
architectures with DISCONTIGMEM and not with others. It seems like the
problems originating on James' hppa aren't related to slab allocation at
all, though, so I'm wondering if we should rethink disallowing SLUB as it
sits in Linus' tree right now for everything that uses DISCONTINGMEM
without NUMA and not force them to enable CONFIG_BROKEN?

Perhaps change the kconfig entry to only block slub for parisc instead?