NUMA 方案

在安装有多个 CPU 的计算机中,非一致性内存访问 (NUMA) 硬件可以通过将专用内存与 CPU 配对来显著提高性能。本主题针对特定方案介绍了可以进一步提高性能的 NUMA 配置、CPU 关联和连接关联。下列设置将影响这些配置:

实用方案

使用 NUMA 时,会经常遇到下面几种方案。

A. 没有端口到 NUMA 的关联

这是具有硬件 NUMA 和单个 SQL Server 实例的计算机中的默认设置。所有通信流量都通过一个单独的端口输入并采用循环方式分布到任何可用的 NUMA 节点。NUMA 增大了内存和 CPU 访问的区域并增加了 I/O 和惰性编写器线程的数量。在建立连接后会立即将其作用域限定为此节点。它提供了 NUMA 节点间的自动负载平衡。客户端应用程序可以连接到单个端口,而且可以轻松地进行部署。

连接使用任何 NUMA 节点。

B. 将单个端口关联到多个节点以提高主要应用程序的性能

将一个端口关联到多个用于主要应用程序的硬件 NUMA 节点。将第二个端口关联到另一个用于第二个次要应用程序的硬件 NUMA 节点。用于这两个应用程序的内存和 CPU 资源量非常不平衡,用于主要应用程序的本地内存和 CPU 资源量是用于次要应用程序的三倍。次要应用程序可以是数据库引擎的第二个实例,它在同一数据库引擎实例中,甚至在同一数据库中提供次要的功能。通过向优先使用的连接提供额外资源,它提供了一种线程优先执行的方式。

一个端口连接到多个 NUMA 节点。

C. 将多个端口关联到多个节点

可以将多个端口映射到同一 NUMA 节点。这样,您就可以为不同的端口配置不同的权限。例如,您可以通过控制对相应 TCP 端点的权限来严格限制由某个端口提供的访问。在此示例中,端口 1450 在 Intranet 上普遍可用。端口 1433 通过防火墙连接到 Internet,但对它的访问受到严格的限制。两个端口都可以充分、平等地利用 NUMA。

多个端口连接到所有可用的 NUMA 节点