[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: 32-bit vs AMD64 on Opteron for LAMP server



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



Reply to: