So I started to investigate, and quickly discovered that there is no good
source for finding this sort of information on line. At least not that I
could find. Nearly every piece of information I found conflicted in at
least some small way with another piece of information I found.
So I ask here in the hopes of a definitive answer.
* What is the maximum amount of RAM that a *single* process can address
under a 2.4 kernel, with PAE enabled? Without?
* And, what (if any) paramaters can effect this (recompiling the app
etc)?
What I think I know so far is listed below. I welcome being flamed, told
that I'm stupid and that I should have looked "here" so long as said
messages also contain pointers to definitive information :-)
Linux 2.4 does support greater then 4GB of RAM with these caveats ...
* It does this by supporting Intel's PAE (Physical Address Extension)
features which are in all Pentium Pro and newer CPU's.
* The PAE extensions allow up to a maximum of 64GB of RAM that the OS
(not a process) can address.
* It does this via indirect pointers to the higher memory locations, so
there is a CPU and RAM hit for using this.
* Benchmarks seem to indicated around 3-6% CPU hit just for using the PAE
extensions (ie. it applies regardless of whether you are actually
accessing memory locations greater then 4GB).
* If the kernel is compiled to use PAE, Linux will not boot on a computer
whose hardware doesn't support PAE.
* PAE does not increase Linux's ability for *single* processes to see
greater then 3GB of RAM (see below).
So what are the limits without using PAE? Here I'm still having a little
problem finding definitive answers but ...
* With PAE compiled into the kernel the OS can address a maximum of 4GB
of RAM.
* With 2.4 kernels (with a large memory configuration) a single process
can address up to the total amount of RAM in the machine minus 1GB
(reserved for the kernel), to a maximum 3GB.
* By default the kernel reserves 1GB for it's own use, however I think
that this is a tunable parameter so if we have 4GB of RAM in a box we
can tune it so that most of that should be available to the processes
(?).
I have documented the below information on my web site, and will post
whatever answers I recieve there:
http://www.spack.org/index.cgi/LinuxRamLimits
Thanks,
Adam.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/