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
--
-------------------------------------------------------------------------------
Eric Anderson [email protected] Centaur Technology (512)
418-5700
For every complex problem, there is a solution that is simple, neat, and
wrong.
-------------------------------------------------------------------------------
> 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
Eric Anderson wrote:
>
> 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
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.
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
Alan Cox wrote:
>
> > 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
--
-------------------------------------------------------------------------------
Eric Anderson [email protected] Centaur Technology (512)
418-5792
For every complex problem, there is a solution that is simple, neat, and
wrong.
-------------------------------------------------------------------------------
On Fri, 6 Jul 2001, Eric Anderson wrote:
> 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/
> 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)
> 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 ?
Machines like this require a special SMP HAL to get them to work. You could
try the experimental kernels from http://www.hansenpartnership.com/voyager
which contain the SMP HAL for the voyager systems (which is what a 3525 is).
James Bottomley