Ask a Question related to Linux Setup, Configuration & Administration, Design and Development.
-
Helge Preuss #1
2 GB Memory Limit
Hi all,
i read that Linux enables a process to use 3 GB of user space memory.
But on my (redhat 8.0, 2.4.18-14bigmem) box it seems impossible to use
more than 2 GB. Have I forgot anything to set up my system to use the
full 3 GB?
Any help appreciated
Helge
PS demo program:
#include <iostream>
using namespace std;
int main () {
int ** dummy = new int * [8];
// this loop should run min. 5, maybe 6 times, but it doesn't:
for (int i = 0; i < 8; i++) {
cout << i+1 << "*512 MB ";
dummy[i] = (int *)malloc (1024*1024*512); // alloc 512 MB
if (dummy[i]) {
dummy[i][1024*1024*127] = 0; // access mem
cout << "ok" << endl; // success
}
else {
cout << "failed!" << endl;
return 0;
}
}
return 0;
}
Its output is:
1*512 MB ok
2*512 MB ok
3*512 MB ok
4*512 MB ok
5*512 MB failed!
Helge Preuss Guest
-
#25127 [Asn->Csd]: error with memory limit
ID: 25127 Updated by: iliaa@php.net Reported By: henrik dot gebauer at web dot de -Status: Assigned +Status: ... -
#25127 [Com]: error with memory limit
ID: 25127 Comment by: mpaesold at gmx dot at Reported By: henrik dot gebauer at web dot de Status: Assigned... -
#25127 [Opn->Ver]: error with memory limit
ID: 25127 Updated by: sniper@php.net Reported By: henrik dot gebauer at web dot de -Status: Open +Status: ... -
#25127 [Fbk->Opn]: error with memory limit
ID: 25127 User updated by: henrik dot gebauer at web dot de Reported By: henrik dot gebauer at web dot de -Status: ... -
#25127 [Opn->Fbk]: error with memory limit
ID: 25127 Updated by: sniper@php.net Reported By: henrik dot gebauer at web dot de -Status: Open +Status: ... -
Helge Preuss #2
2 GB memory limit
Hi all,
i read that Linux enables a process to use 3 GB of user space memory.
But on my (redhat 8.0, 2.4.18-14bigmem) box it seems impossible to use
more than 2 GB. Have I forgot anything to set up my system to use the
full 3 GB?
Any help appreciated
Helge
PS demo program:
#include <iostream>
using namespace std;
int main () {
int ** dummy = new int * [8];
// this loop should run min. 5, maybe 6 times, but it doesn't:
for (int i = 0; i < 8; i++) {
cout << i+1 << "*512 MB ";
dummy[i] = (int *)malloc (1024*1024*512); // alloc 512 MB
if (dummy[i]) {
dummy[i][1024*1024*127] = 0; // access mem
cout << "ok" << endl; // success
}
else {
cout << "failed!" << endl;
return 0;
}
}
return 0;
}
Its output is:
1*512 MB ok
2*512 MB ok
3*512 MB ok
4*512 MB ok
5*512 MB failed!
Helge Preuss Guest
-
Peter T. Breuer #3
Re: 2 GB memory limit
Helge Preuss <spam.preuss@fhi-berlin.mpg.de> wrote:
Yes, you have. Recompile your kernel appropriately. I believe a 1+3> i read that Linux enables a process to use 3 GB of user space memory.
> But on my (redhat 8.0, 2.4.18-14bigmem) box it seems impossible to use
> more than 2 GB. Have I forgot anything to set up my system to use the
> full 3 GB?
split is an option.
Peter
Peter T. Breuer Guest
-
Helge Preuss #4
Re: 2 GB memory limit
Peter T. Breuer wrote:
Can you point me to the configuration option? I did not find it in any> Helge Preuss <spam.preuss@fhi-berlin.mpg.de> wrote:
>>>>i read that Linux enables a process to use 3 GB of user space memory.
>>But on my (redhat 8.0, 2.4.18-14bigmem) box it seems impossible to use
>>more than 2 GB. Have I forgot anything to set up my system to use the
>>full 3 GB?
>
> Yes, you have. Recompile your kernel appropriately. I believe a 1+3
> split is an option.
>
> Peter
of the categories which I think are appropriate (Processor type &
features, General setup - and some more which don't look appropriate)
TIA
Helge
Helge Preuss Guest
-
David #5
Re: 2 GB memory limit
Helge Preuss wrote:
# Processor type and features> Peter T. Breuer wrote:
>>>> Helge Preuss <spam.preuss@fhi-berlin.mpg.de> wrote:
>>>>>>> i read that Linux enables a process to use 3 GB of user space memory.
>>> But on my (redhat 8.0, 2.4.18-14bigmem) box it seems impossible to
>>> use more than 2 GB. Have I forgot anything to set up my system to use
>>> the full 3 GB?
>>
>>
>> Yes, you have. Recompile your kernel appropriately. I believe a 1+3
>> split is an option.
>>
>> Peter
>
> Can you point me to the configuration option? I did not find it in any
> of the categories which I think are appropriate (Processor type &
> features, General setup - and some more which don't look appropriate)
> TIA
> Helge
>
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y <--- Upto 4GB memory
# CONFIG_HIGHMEM64G is not set <--- more than 4GB memory
CONFIG_HIGHMEM=y
CONFIG_HIGHIO=y
--
Confucius: He who play in root, eventually kill tree.
Registered with The Linux Counter. [url]http://counter.li.org/[/url]
Slackware 9.0 Kernel 2.4.22 i686 (GCC) 3.3
Uptime: 6 days, 13:49, 1 user, load average: 0.10, 0.22, 0.20
David Guest
-
Helge Preuss #6
Re: 2 GB memory limit
> # Processor type and features
I don't want to play stupid, but: are you sure this works? I'd like to> # CONFIG_NOHIGHMEM is not set
> CONFIG_HIGHMEM4G=y <--- Upto 4GB memory
> # CONFIG_HIGHMEM64G is not set <--- more than 4GB memory
> CONFIG_HIGHMEM=y
> CONFIG_HIGHIO=y
be certain before I reboot the system, because it is already in use. The
documentation is not explicit about CONFIG_HIGHMEM - it just says that
CONFIG_NOHIGHMEM results in a 3GB/1GB split. CONFIG_HIGHMEM is not
documented at all, only CONFIG_HIGHMEM4G/64G. It's not documented how
the memory is divided with those. I use CONFIG_HIGHMEM64G. But apart
from CONFIG_HIGHMEM=y, which is missing on my box, it seems the
configuration is exactly the same on my system. So what does
CONFIG_HIGHMEM=y do? Or, for that matter, CONFIG_HIGHMEM64G?
Helge
Helge Preuss Guest
-
Peter T. Breuer #7
Re: 2 GB memory limit
Helge Preuss <spam.preuss@fhi-berlin.mpg.de> wrote:
> Peter T. Breuer wrote:>> Helge Preuss <spam.preuss@fhi-berlin.mpg.de> wrote:
>>>>>>>i read that Linux enables a process to use 3 GB of user space memory.
>>>But on my (redhat 8.0, 2.4.18-14bigmem) box it seems impossible to use
>>>more than 2 GB. Have I forgot anything to set up my system to use the
>>>full 3 GB?
>>
>> Yes, you have. Recompile your kernel appropriately. I believe a 1+3
>> split is an option.Not unless I go look. Do you want me to? All I will do is grep through> Can you point me to the configuration option? I did not find it in any
Configure.help for "memory".
nbd:/usr/oboe/ptb% grep -i memory /usr/local/src/linux-2.4.20-xfs/Documentation/Configure.help
marketed by the Digital Equipment Corporation of blessed memory, now
High Memory support
Linux can use up to 64 Gigabytes of physical memory on x86 systems.
physical memory, not all of it can be "permanently mapped" by the
kernel. The physical memory that's not permanently mapped is called
"high memory".
split: 3GB are mapped so that each process sees a 3GB virtual memory
space and the remaining part of the 4GB virtual memory space is used
by the kernel to permanently map as much physical memory as
The actual amount of total physical memory will either be auto
...
There you are. Look for that. "split: 3GB".
Peter> of the categories which I think are appropriate (Processor type &
> features, General setup - and some more which don't look appropriate)
Peter T. Breuer Guest
-
Helge Preuss #8
Re: 2 GB memory limit
Nice one :-)> nbd:/usr/oboe/ptb% grep -i memory /usr/local/src/linux-2.4.20-xfs/Documentation/Configure.help
> marketed by the Digital Equipment Corporation of blessed memory, nowFound that already. To ask you the same question as I asked David: can> Linux can use up to 64 Gigabytes of physical memory on x86 systems.
> physical memory, not all of it can be "permanently mapped" by the
> kernel. The physical memory that's not permanently mapped is called
> "high memory".
> split: 3GB are mapped so that each process sees a 3GB virtual memory
> space and the remaining part of the 4GB virtual memory space is used
> by the kernel to permanently map as much physical memory as
> The actual amount of total physical memory will either be auto
you confirm it really works for you? I.e., did you ever successfully
allocate >2 GB in one process? The docs are ambiguous on that topic.
Helge
Helge Preuss Guest
-
David #9
Re: 2 GB memory limit
Helge Preuss wrote:
I don't have any systems with more than 2GB of RAM so I haven't>
> I don't want to play stupid, but: are you sure this works? I'd like to
> be certain before I reboot the system, because it is already in use. The
> documentation is not explicit about CONFIG_HIGHMEM - it just says that
> CONFIG_NOHIGHMEM results in a 3GB/1GB split. CONFIG_HIGHMEM is not
> documented at all, only CONFIG_HIGHMEM4G/64G. It's not documented how
> the memory is divided with those. I use CONFIG_HIGHMEM64G. But apart
> from CONFIG_HIGHMEM=y, which is missing on my box, it seems the
> configuration is exactly the same on my system. So what does
> CONFIG_HIGHMEM=y do? Or, for that matter, CONFIG_HIGHMEM64G?
had any need to test any larger RAM configurations.
--
Confucius: He who play in root, eventually kill tree.
Registered with The Linux Counter. [url]http://counter.li.org/[/url]
Slackware 9.0 Kernel 2.4.22 i686 (GCC) 3.3
Uptime: 6 days, 16:19, 1 user, load average: 0.42, 0.32, 0.22
David Guest
-
TCS #10
Re: 2 GB memory limit
On Fri, 05 Sep 2003 19:19:40 +0200, Helge Preuss <spam.preuss@fhi-berlin.mpg.de> wrote:
IIRC, support for >4GB is only for the total system.>> Nice one :-)>> nbd:/usr/oboe/ptb% grep -i memory /usr/local/src/linux-2.4.20-xfs/Documentation/Configure.help
>> marketed by the Digital Equipment Corporation of blessed memory, now> Found that already. To ask you the same question as I asked David: can>> Linux can use up to 64 Gigabytes of physical memory on x86 systems.
>> physical memory, not all of it can be "permanently mapped" by the
>> kernel. The physical memory that's not permanently mapped is called
>> "high memory".
>> split: 3GB are mapped so that each process sees a 3GB virtual memory
>> space and the remaining part of the 4GB virtual memory space is used
>> by the kernel to permanently map as much physical memory as
>> The actual amount of total physical memory will either be auto
> you confirm it really works for you? I.e., did you ever successfully
> allocate >2 GB in one process? The docs are ambiguous on that topic.
You'll never address more than 4GB on a processor with 32 bit addressing
such as the intel x86 familly. Less (like 2GB) if the high address bit
is attached meaning like "system vs. user".
TCS Guest
-
Helge Preuss #11
Re: 2 GB memory limit
> IIRC, support for >4GB is only for the total system.
That's correct. I just want to maximize the amount of memory the user> You'll never address more than 4GB on a processor with 32 bit addressing
> such as the intel x86 familly. Less (like 2GB) if the high address bit
> is attached meaning like "system vs. user".
processes get. And i had the impression, reading previous postings and
the kernel docs, that it is possible to divide the memory 3GB:1GB, (even
a patch enabling a 3.5:0.5 GB split was mentioned). Now it seems that
the 3GB:1GB split is only possible for machines with <1GB of RAM, which
seems ridiculous to me. But it seems I have to live with it.
Helge Preuss Guest



Reply With Quote

