我正在开发一个性能至关重要的高端服务器应用程序。考虑到服务器通常采用NUMA体系结构,服务器应用程序也使用NUMA感知的内存分配策略来提高内存访问性能。
基准测试表明,当线程和内存位于不同的NUMA节点上时,访问内存的速度比线程和内存位于同一个NUMA节点时慢约30%。
我的问题是:当服务器使用NUMA-体系结构时,所有内存都是专用于特定处理器的,或者can服务器有一种混合方法,除了NUMA-内存之外,还有非NUMA-内存。在这种情况下,如何比较本地-NUMA-内存、非本地-NUMA-内存和非NUMA-内存的性能?
编辑:服务器硬件正在运行Windows (Windows 2012或2012R2是合理的最低要求)。
发布于 2016-05-31 15:02:46
不,NUMA系统是NUMA系统,有节点(通常是CPU),每个节点都有自己的内存--大多数现代操作系统都会试图确保进程的所有内存分配都在进程运行的同一个节点上。如果这种情况不可能发生,那么是的,您已经看到一个节点实际上是另一个节点的内存控制器,这并不理想。但是没有,我所知道的主流系统上没有混合功能--首先,什么能管理这些内存?
发布于 2016-07-29 21:31:47
既然我还不能评论..。
所有内存都是NUMA内存,但是您可以黑代码以利用内存中的局部性,也就是说,您可以将一些应用程序钉在CPU上,这些CPU具有运行这些应用程序所需的内存,这些应用程序可以提供更好的性能结果。特别是如果您正在使用虚拟化,这是非常重要的。看看这个链接http://redhatstackblog.redhat.com/2015/05/05/cpu-pinning-and-numa-topology-awareness-in-openstack-compute/。希望这能帮上忙。
https://serverfault.com/questions/780040
复制相似问题