Jim Crilly wrote:
On 07/06/07 10:40:11PM -0500, Neil Gunton wrote:
Adam Stiles wrote:
You won't be able to use all of your 4GB RAM with a 32-bit kernel. A
32-bit processor only has 4GB of addressing space, and that has to be
shared between memory and peripherals.
Really? I thought that the only limitation was on individual processes
not having more than 4GB available, but the entire system as a whole
could address a lot more than that. But I could be wrong.
For 32-bit systems only if the kernel is compiled with CONFIG_HIGHMEM64G
enabled so you need one of the "bigmem" kernels. And the BIOS on the machine
has to support remapping the lost memory above the 4G mark, if it won't do
that for you there's nothing you can do to get access to that memory.
The per-process limit will be 3G since 4G is the max addressable and 1G of
that space is reserved for the kernel. And part of the 3G will be used for
the binary itself, shared libraries, mmap'd files, etc so you'll never even
get the full 3G out of a single process.
Ok, here's another thought: It's easy to get into a purist frame of mind
with this where you end up obsessing over numbers like 3 GB or 4 GB or
64 GB. But taking a step back, does any real world process, especially
in the LAMP stack, actually need that amount of memory? I know MySQL can
probably use whatever you want to throw at it, for index buffer caching
particularly, but I can only envisage giving MySQL 3 GB if the total
system RAM was a lot more than that - probably at least 6 GB, and I
don't plan on doing that soon with this server.
I'm not sure if this was mentioned but another option would be to install
the 32-bit i386 distribution but run a 64-bit kernel, that way each 32-bit
process would have 4G of VM since the kernel wouldn't have to share their
address space and you would also have the option of running some select
64-bit binaries if you find that something needs more VM.
I didn't even know you could do that! Sounds interesting, though. Seems
a little weird mixing the two modes, because I would have thought that
processes talking to the kernel would need to be using the same
underlying libs and agree on what size an integer is, for example. But
evidently it's possible, so thanks for the idea.
/Neil
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]