为什么 RHEL 6 128 TB 的理论 RAM 限制是多少?这是如何确定的?

Mik*_*e B 8 rhel memory virtual-memory linux-kernel ram

我正在为 RHCSA 学习,但对我在一些培训材料中遇到的声明感到困惑:

没有实际的最大 RAM,因为理论上,您可以在 RHEL 6 上运行 128 TB 的 RAM。但这只是理论。Red Hat 在 RHEL 6 上支持的最大 RAM 在 32 位系统上为 16 GB,在 64 位系统上为 2 TB。

有人可以解释一下 128 TB 的理论限制来自哪里吗?如果 RHEL 6 明确定义了其他最大限制,我对作者如何知道理论限制存在感到困惑。这只是考虑了 64 位架构的理论限制吗?还是这里有其他原因?

Ign*_*ams 8

从内核文档中,在Documentation/x86/x86_64/mm.txt

Virtual memory map with 4 level page tables:

0000000000000000 - 00007fffffffffff (=47 bits) user space, different per mm
Run Code Online (Sandbox Code Playgroud)

2 47字节 = 128TiB


Tot*_*tor 4

简短回答

每个 Linux 进程最多可以寻址 128 TB 的虚拟内存。然而,这超出了 Linux 内核的物理处理能力。因此,这个限制是理论上的。

它可能是基于假定的可预见的“最坏情况”使用场景而任意选择的。

详细解答

实际上,您使用的 RAM 不能超过硬件允许的数量(48 位 = 256 TB现在 很常见),然后您将受到 Linux 内核可以处理的物理内存量的限制。

例如,在 Intel x86 64 位架构上,Linux 不能使用超过64 TB的物理内存(从版本2.6.30开始,但之前 16 TB )。请注意,RHEL 6 使用2.6.32内核。

在 64 位s390 架构上,同样的限制适用(自2.6.28起)。然而,如果您使用 32 位,则限制为4 GB,但使用名为PAE的奇怪技巧,您可能会达到64 GB(通常在 x86 上使用)。

我认为其他 64 位架构的限制较低。

有关更多信息,请参阅红帽限制表(感谢Huygens)。

  • 这取决于硬件实现。AMD 和 Intel x86_64 当今的架构仅支持 48 位地址空间。这种架构未来可能会发展。 (2认同)