Skip to contentSkip to conversation

BIGMEM kernel question

DISCUSSION Eric Anderson 5 participants 7 messages Jul 6, 2001

lore
Share & tools
lore
#0 lore raw

I am currently running a RedHat 7.1 machine with the 2.4.3-12enterprise kernel. My machine has 4GB of RAM, and 6GB of swap. It appears that I can only allocate 2930 MB (using heapc_linux and other programs). What do I need to do to get Linux to allow allocation of all available memory (up to the 4GB)? All the FAQs I have seen so far explain only how to get Linux to recognize the 4GB, and not use it all in one process. Any help would be greatly appreciated.

Please CC this email address in any responses.

Thanks!
Eric Anderson

-------------------------
Here is my /proc/meminfo:
total: used: free: shared: buffers: cached:

Mem:  3824029696 69316608 3754713088        0  3624960 20070400
Swap: 2145296384     4096 2145292288
MemTotal:      3734404 kB
MemFree:       3666712 kB
MemShared:           0 kB
Buffers:          3540 kB
Cached:          19600 kB
Active:          22328 kB
Inact_dirty:       812 kB
Inact_clean:         0 kB
Inact_target:     4664 kB
HighTotal:     2883036 kB
HighFree:      2850584 kB
LowTotal:       851368 kB
LowFree:        816128 kB
SwapTotal:     6289320 kB
SwapFree:      6289316 kB
Signature · 6 lines
-------------------------------------------------------------------------------
Eric Anderson	 [email protected]    Centaur Technology    (512)
418-5700
For every complex problem, there is a solution that is simple, neat, and
wrong.
-------------------------------------------------------------------------------
#1 lore raw
Quoted 3 lines

kernel. My machine has 4GB of RAM, and 6GB of swap. It appears that I can only allocate 2930 MB (using heapc_linux and other programs). What do I need to do to get Linux to allow allocation of all available memory

A non x86 based computer. Its basically impractical to map more than 3Gb of memory to user space per process on x86. You can use mmap and shared memory to do DOS EMS like tricks with gig rather than 64K sized chunks but you want a real 64bit processor to go further

Alan

#2 lore raw

Ahh. That makes sense. So how can I change the chunk size from 64k to something higher (I assume I could set it to 128k to effectively double that 3GB to 6GB)?

Eric Anderson

Quoted 11 lines · Alan Cox
Quoted 4 lines

kernel. My machine has 4GB of RAM, and 6GB of swap. It appears that I can only allocate 2930 MB (using heapc_linux and other programs). What do I need to do to get Linux to allow allocation of all available memory

A non x86 based computer. Its basically impractical to map more than 3Gb of memory to user space per process on x86. You can use mmap and shared memory to do DOS EMS like tricks with gig rather than 64K sized chunks but you want a real 64bit processor to go further

Alan

Signature · 6 lines
-------------------------------------------------------------------------------
Eric Anderson	 [email protected]    Centaur Technology    (512)
418-5792
For every complex problem, there is a solution that is simple, neat, and
wrong.
-------------------------------------------------------------------------------
#3 lore raw
Quoted 3 lines · Eric Anderson

Ahh. That makes sense. So how can I change the chunk size from 64k to something higher (I assume I could set it to 128k to effectively double that 3GB to 6GB)?

That won't work. The address space limitation is a HARDWARE limitation.

What you _can_ do is put data in shared memory segments, which you map and unmap on demand. Moving memory management to user space is the only way to (more or less) get around the 4GB hardware limitation.

regards,

Rik
--
Executive summary of a recent Microsoft press release:
"we are concerned about the GNU General Public License (GPL)"

		http://www.surriel.com/

http://www.conectiva.com/ http://distro.conectiva.com/

#4 lore raw
In reply to Eric Anderson
Quoted 3 lines

Ahh. That makes sense. So how can I change the chunk size from 64k to something higher (I assume I could set it to 128k to effectively double that 3GB to 6GB)?

I think you misunderstand. If you want more than 3Gb you will have to map and unmap stuff yourself. You only have 3Gb of per process address space due to x86 weaknesses (lack of seperate kernel/user spaces without tlb flush overhead nightmares)

#5 lore raw
In reply to Eric Anderson
Quoted 8 lines · Eric Anderson

I am currently running a RedHat 7.1 machine with the 2.4.3-12enterprise kernel. My machine has 4GB of RAM, and 6GB of swap. It appears that I can only allocate 2930 MB (using heapc_linux and other programs). What do I need to do to get Linux to allow allocation of all available memory (up to the 4GB)? All the FAQs I have seen so far explain only how to get Linux to recognize the 4GB, and not use it all in one process. Any help would be greatly appreciated.

On a 32-bit architecture, Linux gives each user process 3GB of virtual address space. Into that 3GB address space you need to map your stack, exectuable images, shared libaries, etc. with the rest left for the heap. If you need more memory in a single process you're better off moving to a 64-bit architecture. Note that multiple processes, as well as the various caches can use the remaining memory.

--

Brian Gerst

#6 lore raw

NCR 35XXXX MCA bus and SMP

In reply to Eric Anderson

Hello Friends, my name is Paulo.
And i have a NCR 3525 with MCA bus and 8 processors and 512MB RAM , i tried Suse 6.4 and Red Hat 7.1 , but nome detected
my MCA bus , the 8 processors and more than 64MB ... i tried kernel parameter
mem=512m , but no results... only 64MB .... i recompiled the kernel (2.4.2) with MCA=y and SMP =y ... and no results...
somebody can help me ?

Paulo Mateiro.