2P Opteron 上的 Linux 中进程的最大可寻址 RAM 是多少

2P Opteron 上的 Linux 中进程的最大可寻址 RAM 是多少

我正在做一些生物信息学工作,其中的限制是内存量(即该过程不可并行化)。我看到像 Dell R715 这样的服务器有两个用于 Opteron 6100 CPU 的插槽和 128GB 的​​ RAM,可能配有 16 个 8GB DIMM。

每个 CPU 都有一组与之关联的 DIMM。

我的问题是,如果我在这样的机器上安装 Linux,每个 CPU 只能访问一半的 RAM 吗?换句话说,如果我在 Linux 下运行单线程程序,该进程可以访问 128GB RAM 还是只能访问 64GB RAM?

答案1

严格来说,该单线程进程将可以访问服务器可用的所有内存。您不必担心这一点。

该进程将有权访问全部RAM 中的内存,但访问一半内存(理论上)会比访问另一半内存慢。我知道 VMWare-ESX 知道内存局部性,因为它会尝试将特定 VM 的所有内存保留在与进程执行相同的内存节点上,以保持良好的性能。

该技术称为非统一内存访问 (NUMA)。您的 Linux 机器很可能已经拥有了它的位(numastat应该返回数据)。该numactl程序为您的进程分配内存策略,如果您正在编写自己的代码并希望优化内存速度,这将非常有用。CPU 本地内存的获取速度将快于另一个 CPU 内存节点中的内存,这可能对您有用,具体取决于您使用它来做什么。

答案2

Linux 是一个按需分页系统,在 64 位系统上提供 2^64 -1 的虚拟地址空间。VMM 将访问机箱中的所有 RAM。Linux 内核负责创建页表,而不是进程。

相关内容