2

运行 Windows Server 2008 R2 SP1。我正在运行的应用程序在设计时并未考虑到 NUMA。在我的双路系统上禁用 NUMA 会更好吗?我的猜测是肯定的,但我想确认一下。我的服务器是 Westmere 双路系统。

4

2 回答 2

1

如果我理解正确,打开 NUMA 不会损害性能。

如果您的应用程序不支持 NUMA,则访问将由操作系统管理,因此可能跨 NUMA 节点或可能位于同一个节点上 - 取决于操作系统的其他压力、您使用的内存/CPU 数量等. 操作系统将尝试快速获取您的数据。

如果您将其关闭,则操作系统甚至无法尝试使每个应用程序的执行 CPU 靠近其内存。

于 2013-06-13T10:50:18.137 回答
1

如果您的应用程序不是多线程的,或者是多线程的,但没有使用线程同时处理同一个问题(例如不是数据并行),那么您可以简单地将程序绑定到 NUMA 节点之一。这可以使用各种工具来完成,例如使用 Windows 任务管理器中的“设置关联...”上下文菜单命令。如果您的程序是并行的,那么您仍然可以使用一半的可用进程内核并绑定到一个 NUMA 节点。

请注意,Westmere 系统上的远程内存访问并不昂贵 - 延迟比本地访问高 1.6 倍,带宽几乎与本地访问相同,因此如果您对每个内存值进行大量处理,影响将是最小。另一方面,在此类系统上禁用 NUMA 会导致两个 NUMA 域的细网格交错,这使得所有应用程序的性能同样糟糕,因为大约 50% 的所有内存访问将是本地的,50% 将是远程的。

于 2013-05-24T12:34:34.867 回答