NUMA 总是完全 NUMA 还是也存在混合系统?

NUMA 总是完全 NUMA 还是也存在混合系统?

我正在开发一款高端服务器应用程序,性能至关重要。鉴于服务器通常采用 NUMA 架构,服务器应用程序还使用 NUMA 感知内存分配策略来提高内存访问性能。

基准测试表明,当线程和内存位于不同的 NUMA 节点时,访问内存比线程和内存位于同一个 NUMA 节点时慢约 30%。

我的问题是:当服务器使用 NUMA 架构时,所有内存是否都专用于特定处理器,或者服务器是否可以采用混合方法,即除了 NUMA 内存之外还有非 NUMA 内存。如果是这种情况,本地 NUMA 内存、非本地 NUMA 内存和非 NUMA 内存在性能方面如何比较?

编辑:服务器硬件运行的是 Windows(Windows Server 2012 或 2012R2 是合理的最低要求)。

答案1

不,NUMA 系统就是 NUMA 系统,它有节点(通常是 CPU),每个节点都有自己的内存 - 大多数现代操作系统都会尝试确保进程的所有内存分配都在进程正在运行的同一节点上。如果这无法实现,那么您就会看到内存减速,其中一个节点本质上充当另一个节点的内存控制器,这并不理想。但不,据我所知,目前主流系统上没有可用的混合系统 - 首先,什么可以管理这些内存?

答案2

由于我尚无法发表评论...

所有内存都是 NUMA 内存,但您可以破解代码以利用内存中的局部性,也就是说,您可以将一些应用程序固定在具有运行这些应用程序所需内存的 CPU 上,从而为您提供更好的性能结果。特别是如果您使用虚拟化,这一点非常重要。请查看此链接http://redhatstackblog.redhat.com/2015/05/05/cpu-pinning-and-numa-topology-awareness-in-openstack-compute/. 希望有帮助。

相关内容