Originally Posted by fahdmirza
do you mean application or process?
He meant process.
In 32 bit Linux, each process gets up to 3GB of virtual address space (the 4GB he mentioned includes 1GB of virtual memory that belongs to the kernel, not to the process).
In 64 bit Linux, 32 bit processes get up to the full 4GB of virtual address space. The kernel virtual address space in elsewhere.
In 64 bit Linux, 64 bit processes can have far more
than 4GB of virtual address space.
Oracle runs it runs through many processes.
I don't know how Oracle divides its work. I don't know whether there are significant advantages or disadvantages to 64 bit mode for Oracle.
Will 4G memory be used for all the processes of Oracle?
In 32 bit Linux each process is limited to 3GB.
Some kinds of cooperating processes use primarily statically mapped shared memory, in which case that shared memory would be limited to fitting in each process's 3GB.
Other kinds of cooperating processes use dynamically mapped shared memory or private memory, so a 32 bit PAE Linux could run a set of cooperating processes that use far more than a total of 3GB.
For activities with a lot of file I/O (I expect Oracle is such) it is also helpful for a large amount of ram to be used for file caching. That is not included in the 3GB of ram that the individual processes are directly using.
I disagree with the implied claims (in posts above) that PAE has a performance overhead compared to 64 bit. The performance overhead of PAE compared to non PAE (32 bit) is usually trivial and 64 bit mode has that same (or slightly larger) performance overhead as compared to non PAE 32 bit.
64 bit mode might
have significant performance advantages over PAE for a variety of reasons. It depends on what applications you are running and I don't know if anyone here has stats for how Oracle performance varies between PAE and 64 bit. But the overhead of PAE compared to 32 bit non PAE is not a factor to consider at all when comparing PAE to 64 bit.
The kernel virtual memory limit might
be a significant problem for a PAE system with 16GB. With significantly less than 16GB it is unlikely that limit will matter. With significantly more than 16GB it is almost certain the kernel virtual memory limit would be a serious problem. But at 16GB, that issue is unclear.
Some versions of Red Hat made available a 32 bit kernel version with a kludge to work around the kernel virtual memory limits and decently utilize more than 16GB of ram. I don't recall which Red Hat versions, nor what they called that kernel. That kludge does have significant overhead compared to 64 bit mode and that kernel version would only make sense if you have a very good reason not to switch to 64 bit mode.
For your situation, the big advantage of PAE is that you can switch to PAE by changing just the kernel. You don't need to reinstall anything else.
But you might have good reason to reinstall anyway (You probably should switch from RedHat 4 to Centos 5.4). If you are reinstalling anyway, you probably should switch to 64 bit.
It is possible the kernel virtual memory limit will be a serious issue, so you would need 64 bit to get decent memory utilization.
It is possible (but I think unlikely) Oracle's cooperative processes can't make good use of multiple 3GB address spaces, so you would need 64 bit to get decent memory utilization.
On the opposite side, it is possible that the 64 bit pointers needed for 64 bit Oracle would result in higher L2 cache misses, so 64 bit Oracle would run slower than 32 bit Oracle. If that is true, then you would probably get best results by using 64 bit Centos but installing 32 bit Oracle.
I have investigated applications in which the 32 bit build of the application runs significantly faster than the 64 bit build and found that the 32 build of the application runs as well or better on a 64 bit OS as it does on a 32 bit OS.