为什么 NUMA 节点数量会影响处理器分组

为什么 NUMA 节点数量会影响处理器分组

在配备 2 个 Xeon(R) Gold 6246R(32 个物理核心,64 个日志,带 HT)的 HPE DL380 G10 服务器上,在 BIOS 中使用以下设置:

系统配置 > BIOS/平台配置 (RBSU) > 性能选项 > 高级性能调整选项 > NUMA 组大小优化

我们可以从以下两个选项中选择:

  1. 群集— 沿 NUMA 边界优化组,提供更好的性能。
  2. 平坦的- 使尚未优化的应用程序能够利用跨多个组的处理器来利用更合乎逻辑的处理器。

“集群”选项将强制 Windows 仅报告一个 NUMA 节点,但报告 2 个处理器组,每个处理器组有 32 个核心。另一方面,“平面”选项显示 2 个 NUMA 节点和仅 1 个处理器组,每个处理器组有 64 个逻辑核心。

当然,我已经对 NUMA 和处理器组了解很多,所以我真的不是在寻求任何关于最适合我的用例的设置的建议。相反,问题是:当只有一个 NUMA 节点时,为什么 Windows 决定使用 2 个处理器组是合理的,反之亦然?此外,我从未找到任何文档表明 Windows (Server 2019) 将 64 个核心分成 2 个组,这是预期的行为吗?

答案1

您找到的文章是 2008 年的。当时,Windows 面临着拥有超过 64 个处理器的 NUMA 计算机,而其处理器组实现却限制为 64 个。当时的解决方案是自动创建多个这样的组,每个组不超过 64 个处理器。

2014 年底引入了一个更灵活的解决方案。我找到的最早的参考资料是 HP 咨询说明 关于 HP Gen9 服务器,自 2015-04-24 开始:

在 Gen9 服务器的系统 ROM 版本 1.30(2014 年 12 月 24 日)及更高版本中,新的基于 ROM 的设置实用程序,“NUMA 组大小优化”,已添加允许用户更改向操作系统报告处理器的行为。如果逻辑处理器数量为 64 个或更少(“平面”),此选项将允许操作系统将所有逻辑处理器放入单个组中。

集群选项会为每个 CPU 的核心创建一个处理器组。平面选项旨在让应用程序使用所有计算机核心,因为在 Windows 中,默认情况下应用程序仅限于一个组,因此只能看到和使用其一个组。

关于您的问题:

为什么当只有一个 NUMA 节点时,Windows 决定采用 2 个处理器组是有意义的,反之亦然?

这是由 Clustered 选项决定的,这对于应用程序及其所有进程和线程在附近的内存上执行所有进程和线程以提高性能是有意义的。

如果您的应用程序需要超过 32 个核心,您应该使用 Flat 选项,以使所有核心都可用。

我从未找到任何关于 Windows(Server 2019)将 64 个核心分成 2 个组的文档,这是预期的行为吗?

是的,这是预期的行为。它没有很好的文档记录,但有关于此行为的参考资料,例如 交换性能:HP NUMA BIOS 设置

相关内容