NUMA总是完全NUMA还是还有混合系统?

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

基准testing显示,当线程和内存位于不同的NUMA节点上时,访问内存的速度比线程和内存在同一个NUMA节点上要慢30%左右。

我的问题是:当一个服务器使用NUMA架构,所有的内存专用于特定的处理器,或者服务器可以采用混合的方式,除了NUMA内存外,还有非NUMA内存。 而这种情况下,关于性能,本地NUMA内存,非本地NUMA内存和非NUMA内存如何比较?

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

不,NUMA系统是一个NUMA系统,有节点(通常是CPU),每个节点都有它自己的内存 – 大多数现代操作系统都会尝试确保所有分配给进程的内存与进程运行在同一个节点上。 如果这不可能发生,那么你会得到内存减速,你看到一个节点本质上就像另一个节点的内存控制器,不理想。 但是,不,我不知道现在在主stream系统上有没有混合使用 – 首先,pipe理内存的是什么?

由于我还不能评论…

所有的内存都是NUMA内存,但是你可以破解你的代码来利用内存中的局部性,你可以把一些应用程序放在有内存需求的CPU上来运行这些应用程序,从而在性能方面给你更好的结果。 特别是如果你使用虚拟化,这是非常重要的。 看看这个链接http://redhatstackblog.redhat.com/2015/05/05/cpu-pinning-and-numa-topology-awareness-in-openstack-compute/ 。 希望有所帮助。