If I search on Internet for minimum requirements to install a 64-bit operating system, Microsoft and allied forums recommend 4 GB RAM as the minimum criteria. On the other hand, when I look at Linux communities and say I have Dual Core Processor and 2 GB of RAM they say it's a 64-bit processor and you can go for 64-bit OS for efficiency. Now my question is what matters to install a 64-bit OS? Just RAM or anything more?
Whether 64-bit is good or bad for performance depends a lot on the application. Generally speaking:
- Numerical computations (integer or floating point) are faster in 64 bits, and take about the same amount of memory.
- Symbolic computations (manipulating structured data) are slower and can take twice as much memory in 64 bits.
- Text manipulation is roughly the same (a little slower and more memory-hungry in 64-bits).
However these are only very rough guidelines, there are a lot of exceptions.
Windows guidelines tend to steer people away from a 64-bit operating system because there are more incompatible applications. Linux was ready for amd64 earlier; the few remaining incompatible applications are mostly closed-source and run fine as 32-bit executables on a 64-bit kernel with the appropriate 32-bit libraries.
On Linux, here are some guidelines:
- If you have specific applications that require or would benefit from 64 bits, you need a 64-bit kernel. Note that you can have an amd64 kernel with an ix86 userland, but not the opposite. If these applications don't require many libraries, you could run an amd64 kernel with a 32-bit distribution.
- If you need more than 3GB of address space in a single process, it must be 64-bit kernel; for more than 4GB then 64-bit for kernel and applications.
- If you have 4GB of RAM or more, get a 64-bit distribution. Linux can use up to 64GB with a 32-bit kernel, but it needs to be PAE-enabled (most distributions include a PAE kernel but it might not be the default one).
- If you have less than 1GB of RAM, go 32-bit.
- From 1GB to 3GB, go either way, with a slight preference for 64-bit, but perhaps keeping a few applications 32-bit. (For example, I measured more than twice the memory usage with an amd64 binary of Firefox 3.0 than with an ix86 binary of the same version. I haven't repeated the measures for later versions.)
The 4G minimum has nothing to do with the requirements of the OS, it is about efficiency. 32 bit systems, by nature the address values needed to talk to the memory being shorter, are actually more efficient up to a point.
32 bit systems can only address up to 4G of memory at a time. On modern linux kernels, this limitation is per process, so even a 32 bit OS can use more RAM but it accomplishes this by having each application only address up to some 4G block partitioned off from the whole stash.
Where 64 bit comes in is that it can offer processes the ability to address the entire system memory at once, allowing memory hungry things more than 4G if they need it. However it comes with a trade off. Since it uses more bits to save and handle addresses, the machine code gets bigger and runs just a tad slower.
Hence you can run a 64bit OS on 2G just fine, but it doesn't really make sense to because a 32bit OS is likely to be faster on the same system. Even when you cross the line into larger RAM, it is still possible that a 32 bit system will be faster because it is rare for any individual process to need that much RAM, more often you want to run lots of processes that all use some piece of the RAM.