从 BIOS 禁用“numa interleave”是否会导致所有双 CPU 系统上的内存页出(当 CPU-1 没有可用内存时)到 HDD?

从 BIOS 禁用“numa interleave”是否会导致所有双 CPU 系统上的内存页出(当 CPU-1 没有可用内存时)到 HDD?

以戴尔双核 4114 银色系统为例,每个 CPU 有 24GB;如果我的应用程序一次分配 24 GB,它会如何工作?我是否应该因为页面文件的使用而担心 SSD 的写入寿命?

有关内存的说明:6x8GB 平均分配给两个 CPU(每个 CPU 上的单个内存控制器上可能有 3 个内存条)

答案1

在 BIOS 中禁用节点交错不会导致系统交换。

更准确的说法是,禁用此选项会使 NUMA 交错处于 OS 控制之下。此选项适用于运行不支持 NUMA 的旧操作系统的用户。启用此选项后,系统会将所有 CPU 核心呈现给 OS,就好像它们只占用一个 CPU 插槽一样,并自行执行 NUMA 交错。这通常是不是您可以使用现代 NUMA 感知操作系统(例如 Linux 或 Windows)来实现这一目标。

更详细的解释来自戴尔的BIOS 性能和电源调整指南

BIOS 内存设置屏幕中的另一个选项是节点交错。默认情况下,此选项处于禁用状态,这意味着启用了 NUMA 模式。相反,启用节点交错意味着内存在内存节点之间交错,并且操作系统没有 NUMA 呈现。大多数现代操作系统多年来一直支持 NUMA,并且调度程序已经过优化,以确保内存分配本地化到正确的(最近的)NUMA 节点。但是,这些调度程序并不完美,为了在给定的工作负载(尤其是基准测试)下实现最大性能,可能需要手动干预以将工作负载进程和线程“固定”到特定核心,确保内存始终分配给任何给定逻辑处理器的本地 NUMA 节点。

对于某些应用程序,其所需内存大于单个内存节点中可用的内存(例如非常大的数据库),内存分配也必须在远程节点上进行。在这种情况下,或者对于其他无法轻松定位到单个插槽/NUMA 节点组合的应用程序,启用节点交叉可能会产生积极的影响。几年前,当 NUMA 刚刚出现在 x86 服务器上并且操作系统还不具备 NUMA 感知能力时,启用节点交叉最为常见。然而,这种情况已经得到彻底改善,如今需要启用节点交叉的客户数量正在减少。请注意,4P E5-4600 配置不支持启用节点交叉。

对于当前的 NUMA 感知操作系统,应禁用此选项,并且应在操作系统内调整 NUMA。

相关内容