1

I have a linux machine with Redhat 32 bit SMP Kernel installed , the ram size of machine is 16 GB and processor architecture is 64 bit. Please clarify my doubts on this setup :

  1. Can OS use the 16GB memory completely ? ( i heard that in windows os if we are using 32 bit , maximum ram capacity is less than 4 GB )
  2. What is the specialities of SMP kernel compared to the normal one

The following are the redhat-installation details

[user@applicaton ~]$ uname -a
Linux applicaton 2.6.18-164.el5PAE #1 SMP Tue Aug 18 15:59:11 EDT 2009 i686 i686 i386 GNU/Linux
[user@applicaton ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
[user@applicaton ~]$ lsb_release
LSB Version:    :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
[user@applicaton ~]$

Can we use SMP along with PAE in linux ?

3 Answers3

3

Since there's a lot of confusion, let me give you the actual facts.

A 32-bit process is fundamentally limited to 4GB of virtual memory because a 32-bit process uses 32-bit pointers into its virtual memory space. Some 32-bit operating systems reduce this limit to 2GB or 3GB because they use some of this space for kernel memory.

A 32-bit operating system would normally be limited to 4GB of physical memory because the OS uses 32-bit pointers into RAM. PAE allows the operating system to use larger pointers and thus address more than 4GB of physical RAM. It has no effect on the virtual memory limitation.

32-bit processes running on 64-bit operating systems can use all the physical RAM in the system, however. They just can't use more than 4GB in the form of virtual memory mappings at a time. But that's far from the only way that processes use memory. (AWE is one way. Memory mapping chunks of a file in a RAM disk is another. There are lots more.)

Note that even if you have less than 4GB of RAM, on a 64-bit OS, processes can use more than 4GB of virtual memory. (For example, they can memory map huge files or use gigantic sparse arrays.)

The physical and virtual memory limits are frequently confused. They are limits on entirely different things and almost completely unrelated to each other. Physical memory (RAM) is not at all the same as virtual memory (address space).

David Schwartz
  • 31,215
  • 2
  • 53
  • 82
2

32bit kernels can utilize PAE (http://en.wikipedia.org/wiki/Physical_Address_Extension) to access more than 4GB of ram, but there's a catch: a single process is still limited to 4GB of memory, so if you need applications to use more than that (for example, application servers like tomcat), your only option is to go with 64bit kernels.

arachnist
  • 21
  • 1
  • This is false. A single process is limited to 4GB of *virtual* memory on a 32-bit OS. There is no limit to how much physical memory they can use. PAE raises the physical memory limit on a 32-bit OS. – David Schwartz Jan 31 '13 at 09:07
2

In general on a 32bit system you cannot address more than 4Gb of ram. This is because the memory locations are represented as 32 bit binary numbers (max 4294967296 bits). One workaround of this is using a PAE kernel but it is a hack as it pushes the addressing out to 36 bits and does extra mapping in the page tables. It expands (on linux after 2.3.23 w/ cpu support) the physical memory address range to 64Gb, but a normal processes will continue to use a 32-bit address space and will still be limited to 4Gb virtual memory. Applications that require more than 4Gb memory, the OS can offer special mechanisms besides PAE, e.g. AWE on Windows.

A way better solution is to switch to a 64bit distribution, the kernel alone is not enough to be 64bit, as certain libraries and modules are either 32bit or 64bit only, and switching is generally messy.

The SMP kernel means that is has Symmetric Multi Processing extensions, this allows the kernel to run multiple concurrent processes. If you have a multicore processor, this is a must to be able to use more than one core at a time.

psarossy
  • 266
  • 1
  • 10
  • @DavidSchwartz Thanks for the comment, I've indeed phrased it wrong, now corrected. Obviously I meant virtual memory (which in this case means physical memory as well from the applications point of view.) – psarossy Jan 31 '13 at 10:12