Memory Limits on Linux on x86
becker at scyld.com
Fri Jul 19 10:25:45 PDT 2002
On Fri, 19 Jul 2002, Mark Hahn wrote:
> > problem we have. I know that 32-bit x86 Linux has
> > a memory limit of 3 Gigs (3.5 with a patch) that it
> 3.75 is pretty trivial. don't let the "patch" scare you off -
> there's nothing exotic about it, it's been around for years,
> consists of just a couple lines of code change, and some dist/kernels
> come with it as a CONFIG_ option.
Yes, the patch just sets the boundary between kernel and user space.
You can change it to an arbitrary split, but I believe it's still
checked in some places using a binary mask.
See __PAGE_OFFSET in <asm/page.h>
> > can address. Is that 3 Gigs per user process or 3 Gigs
> > total?
With 2.2, either but not both. You are limited to
2G physical memory and 2G process space
3G physical memory, with 1G maximum processes
This make sense with multiple large processes (not common), or for
keeping lots of I/O buffers around.
1G physical memory, with 3G maximum processes (swap, swap, swap)
> the kernel can use up to ~64G physical ram.
...with the 2.4 kernel.
> note that doing lots of IO through highmem can be a performance problem
> as well, since not all IO hardware can deal with 64b addresses.
I claim that most PCI hardware does not support 64b addresses, and those
that do are used in 32b addressing mode for better performance.
But practically you only care about the single block I/O device you are
using: the IDE or SCSI controller and the bus bridges it talks through
must support 64b initiator addresses or you will be doing massive
You pretty much don't care about 64b target addresses: most PCI devices
have less than 1KB of register space. You care about the device being
able to generate 64b addresses when acting as a bus master.
Donald Becker becker at scyld.com
Scyld Computing Corporation http://www.scyld.com
410 Severn Ave. Suite 210 Second Generation Beowulf Clusters
Annapolis MD 21403 410-990-9993
More information about the Beowulf