HELP

Mark Hahn hahn at physics.mcmaster.ca
Sat Aug 25 16:23:27 PDT 2001


>   I ran into this problem as well - the basic problem seems to be that
> linux maps the shared libraries at around the 1GB mark, so you need to
> change this location in the kernel source code.

more generally, mmaps start at 1G by default (not just shlibs).
it's pretty cool that you can just "cat /proc/self/maps" to see this.

and you can indeed hack the kernel to change the 1G; there's actually 
a somewhat more involved patch to make the mmap arena grow *down*,
so you can fix the max size of the stack instead of the heap.
it's conceivable this might get into 2.5.

it's also true that you can use a modern glibc whose malloc 
will use both heap and mmap arenas; that doesn't give you a 
big contig allocation, though.

you can also avoid the problem *entirely* by avoiding mmaps!
I posted a proof-of-concept of this here or linux-kernel
sometime in the past year - just avoid using stdio and any dynlibs ;)
(stdio seems to want to mmap a single page for an internal buffer,
even if you statically link...)

>   addr = TASK_UNMAPPED_BASE;

note also that some Linux ports have this configurable -
I think it's ia64 that has it set in /proc...
otoh, it's sort of moot on big-address hardware ;)

regards, mark hahn.





More information about the Beowulf mailing list