BIGMEM kernel question
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. -------------------------------------------------------------------------------
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_linuxand 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
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_linuxand other programs). What do I need to do to get Linux to allow allocation of all available memoryA 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. -------------------------------------------------------------------------------
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/
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)
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_linuxand 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
NCR 35XXXX MCA bus and SMP
In reply to Eric AndersonHello 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.