Linux 内存限制

物理内存与虚拟内存

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.

kernel 限制

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.

RHCSA 的解释

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.