Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm studying for RHCSA and am confused by a statement I came across in some training material:

There is no practical maximum RAM, as theoretically, you could run 128 TB of RAM on RHEL 6. But that's just theory. The maximum RAM supported by Red Hat on RHEL 6 is 16 GB on 32-bit systems and 2 TB on 64-bit systems.

Can someone please explain where the 128 TB theoretical limit is coming from? I'm confused on how the author knows the theoretical limit exists if RHEL 6 clearly defines other maximum limits. Is this just factoring in the theoretical limits of 64-bit architecture? Or is there some other reason here?

share|improve this question
Here is the answer. You can rewrite it and insert as a answer – dchirikov Jan 12 '13 at 21:26
@dchirkov thanks. – Mike B Jan 12 '13 at 21:36

From the kernel documentation, in Documentation/x86/x86_64/mm.txt:

Virtual memory map with 4 level page tables:

0000000000000000 - 00007fffffffffff (=47 bits) user space, different per mm

247 bytes = 128TiB

share|improve this answer
2^48 = 256 TiB ;-) – Huygens Mar 14 '13 at 9:31

Short answer

Each Linux process can address at most 128 TB of virtual memory. However, this is more than the Linux kernel can handle physically. Hence, this limit is theoretical.

It has probably been chosen arbitrarily, based on a supposed forseable "worst-case" usage scenario.

Elaborated answer

You cannot actually use more RAM than your hardware allows (48 bits = 256 TB is common these days), and then you will be limited by the amount of physical memory the Linux kernel can handle.

For example, on the Intel x86 64-bit architecture, Linux cannot use more than 64 TB of physical memory (since version 2.6.30, but it was 16 TB just before). Note that RHEL 6 uses a 2.6.32 kernel.

On the 64-bit s390 architecture, the same limit applies (since 2.6.28). If you use 32-bit however, the limit is 4 GB, but using a strange trick called PAE, you may go up to 64 GB (often used on x86).

I think other 64-bit architectures have lower limits.

See Red Hat limits table for more information (thanks Huygens).

share|improve this answer
The 48-bit limit on x86-64 is very much a hardware limit at this point. en.wikipedia.org/wiki/X86-64#Virtual_address_space_details – Mat Mar 14 '13 at 6:43
Sure, but this is implementation dependant and can change in the future. The question is about a theoretical limit. I updated my answer though. – Totor Mar 14 '13 at 8:55
This is hardware implementation dependent. AMD and Intel x86_64 today's architecture support only 48 bit of address space. This architecture could evolve in the future. – Huygens Mar 14 '13 at 9:33

One should not mix up virtual memory and physical volatile memory. The former is CPU architecture specific and will be mapped to volatile and non-volatile memory. The latter, aka RAM, should be independent of CPU architecture from the kernel point of view.

Today's AMD and Intel x86_64 implementation only support 48 bit of addressable virtual memory. Which means that the kernel can address 2^48 = 256 TiB per process VM.
Linux kernel on x86_64 architecture split the addressable VM space in 2, 128 TiB for user space and 128 TiB for kernel space. So a process can theoretically address a total of 128 TiB of virtual memory.

The maximum of volatile physical memory that the kernel can handle is a different aspect, but I do not know this information.

Regarding the RHCSA author statement

The author of the statement "There is no practical maximum RAM, as theoretically, you could run 128 TB of RAM on RHEL 6." is using wrong or misunderstood terminology. Here are the table from Red Hat web site summarizing the capabilities of RHEL 3, 4, 5 and 6. And they clearly state "Maximum x86_64 per-process virtual address space [...] 128TB [for RHEL 6]"

The same page states that RHEL 6 supports a maximum of 2TB/64TB RAM (physical volatile memory). I guess it means that it is certified for a 2TB max RAM, and theoretically could go up to 64TB. SLES is much clearer in this respect.

share|improve this answer
You say a process can address 128 TB, but the whole system (several processes) may have and use more, so the sentence "you could run 128 TB of RAM on RHEL 6" seems awkward to me, especially given the fact that the official Linux kernel cannot... – Totor Mar 14 '13 at 12:02
Could you provide the pointer to where you found the statement "you could run 128 TB of RAM on RHEL 6"? I doubt it is from Red Hat them selves! The author is confusing physical memory and virtual memory. – Huygens Mar 14 '13 at 12:06
@Totor I just updated my answer with a link to Red Hat's web site which does not confirm the RHCSA statement. – Huygens Mar 14 '13 at 12:17
@Totor: On the Linux kernel, HIGHMEM has not be ported to 64-bit. Without HIGHMEM, all of the RAM is mapped into kernel address space, which is 128 TB, hence the limit. – Yuhong Bao Jan 25 '15 at 3:29

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.