2Gb maximum per-process memory limit?
I've recently been surprised to find that I cannot seem
to allocate more than about 2Gb total of memory (allocated
in small chunks of a few Mb each) in my C++ program running
on an Octane2 (Irix 6.5.16m, compiler 7.3.1.3m) with 2Gb
of real memory and 14Gb of swap space.
Is this the maximum per-process memory available under this
configuration, or am I doing something stupid? The former
is apparently correct according to limit:
[color=blue]
> limit[/color]
cputime unlimited
filesize unlimited
datasize 2097152 kbytes
stacksize 65536 kbytes
coredumpsize unlimited
memoryuse 524288 kbytes
descriptors 200
vmemoryuse 2097152 kbytes
threads 1024
Is there any way to raise this? I tried compiling with -64
and it raised the ceiling very slightly (from 1792Mb to 2047Mb)
on a small chunk of test code in C using malloc. I expected
this to either do nothing or make a dramatic difference, and I'm
rather puzzled that it made a *slight* difference. Can anyone
explain this?
I can understand why a 32-bit system might be limited to a 2Gb
address space but why does a relatively new 64-bit Octane2
system have this limitation? The damn machine can hold up to 8Gb
of memory alone, forget about swap, so this seems to be an
unreasonable constraint. Am I just incredibly naive or uninformed
about some crucial aspect of memory addressing, and if so can
someone clue me in?
Thanks!
--
Roger Davis
University of Hawaii/SOEST
[email]rbd@NoSpamHere.hawaii.edu[/email]
Re: 2Gb maximum per-process memory limit?
On 9/6/2003 1:23 AM, Roger Davis wrote:[color=blue]
> I've recently been surprised to find that I cannot seem
> to allocate more than about 2Gb total of memory (allocated
> in small chunks of a few Mb each) in my C++ program running
> on an Octane2 (Irix 6.5.16m, compiler 7.3.1.3m) with 2Gb
> of real memory and 14Gb of swap space.
>
> Is this the maximum per-process memory available under this
> configuration, or am I doing something stupid? The former
> is apparently correct according to limit:
>
>[color=green]
>> limit[/color]
>
> cputime unlimited
> filesize unlimited
> datasize 2097152 kbytes
> stacksize 65536 kbytes
> coredumpsize unlimited
> memoryuse 524288 kbytes
> descriptors 200
> vmemoryuse 2097152 kbytes
> threads 1024
>
> Is there any way to raise this? I tried compiling with -64
> and it raised the ceiling very slightly (from 1792Mb to 2047Mb)
> on a small chunk of test code in C using malloc. I expected
> this to either do nothing or make a dramatic difference, and I'm
> rather puzzled that it made a *slight* difference. Can anyone
> explain this?
>
> I can understand why a 32-bit system might be limited to a 2Gb
> address space but why does a relatively new 64-bit Octane2
> system have this limitation? The damn machine can hold up to 8Gb
> of memory alone, forget about swap, so this seems to be an
> unreasonable constraint. Am I just incredibly naive or uninformed
> about some crucial aspect of memory addressing, and if so can
> someone clue me in?
>
> Thanks!
>[/color]
The default system configuration limits per-process data allocation to
2G. To adjust the parameters, use the 'systune' command.
IIRC, you need to increase the rlimit_data_max and rlimit_data_cur
values. You may also need to increase the rlimit_vmem_max and
rlimit_vmem_cur values.
After changing the values, reboot and your apps should be able to get
more memory.