Re: java/old_mmap allocation problems...

Aaron Denney (wnoise@ugcs.caltech.edu)
18 May 2001 22:09:05 GMT


On Fri, 18 May 2001 08:33:05 +0200, firenza@gmx.net <firenza@gmx.net> wrote:
> i'm having problems to convince java (1.3.1) to allocate more
> than 1.9gb of memory on 2.4.2-ac2 (SMP/6gb phys mem) or more
> than 1.1gb on 2.2.18 (SMP/2gb phys mem)...
>
> modifing /proc/sys/vm parameters didn't help either... the fact
> that i can allocate more memory under 2.4 than under 2.2 lets
> me hope that there is some possible kernel/vm tweaking that
> would increase those limits...

Part of it is the way the kernel set's up the processes VM space. mmaps
that don't ask for a specific address get mapped starting at 0x40000000,
and the stack bottom is at 0xC0000000 - 1 page, and 0xC0000000-0xFFFFFFFF
is reserved for kernel pointers. This only leaves 2 GB (- mapped in
shared libraries, - stack space) for your mmapping. Both lowering the
0x40000000, and raising the 0xC000000 are fairly easy to do though.
(I would suggest 0x1000000, and 0xE0000000. Note that ELF executables
get mapped in around 0x08000000, and that shrinking the kernel address
space too much will make it unhappy.)

In include/asm-i386/page.h, change __PAGE_OFFSET, which also changes
PAGE_OFFSET, and TASK_SIZE
In include/asm-i386/processor.h
TASK_UNMAPPED_BASE
In arch/i386/vmlinux.lds, the def'n of _start (or . in recent kernels) should
be changed to __PAGE_OFFSET + 0x100000.

Part of it is undoubtedly the Java implementation. I haven't run across
one that will let me use more than 2 GB, even with the above kernel
tweaks, (or on solaris / UltraSparc).

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