NUMA シナリオ
多くの CPU が搭載されたコンピュータでは、専用メモリと CPU を組み合わせることで、NUMA (nonuniform memory access) ハードウェアはパフォーマンスを大幅に向上できます。このトピックでは、特定のシナリオでパフォーマンスがさらに向上する NUMA、CPU 関係、および接続関係の構成についていくつか説明します。次に、このような構成に影響を与える設定を示します。
NUMA ハードウェアは、コンピュータの製造元により提供されます。
ソフト NUMA は、レジストリを使用して設定されます。ソフト NUMA の構成の詳細については、「ソフト NUMA を使用するように SQL Server を構成する方法」を参照してください。
CPU 関係は、affinity mask オプションを使用して設定されます。
NUMA 関係に対するポートは、SQL Server 構成マネージャを使用してサーバー設定として構成されます。詳細については、「NUMA ノードに TCP/IP ポートをマッピングする方法」を参照してください。
効果的なシナリオ
NUMA を使用すると、次のシナリオが頻繁に検出されます。
A. NUMA 関係に対してポートがありません。
これは、ハードウェア NUMA と SQL Server の単一インスタンスが存在するコンピュータでは既定の状況です。すべてのトラフィックは、1 つのポートを経由して入り、使用可能なすべての NUMA ノードにラウンド ロビン方式で分散されます。NUMA を使用すると、メモリと CPU アクセスの局所性が向上し、I/O スレッドとレイジー ライタ スレッドの数が増加します。一度確立された接続の範囲は、そのノードに設定されます。これにより、NUMA ノード間で自動的に負荷が分散されます。クライアント アプリケーションは 1 つのポートだけに接続でき、簡単に配置できます。
B. 優先度の高いアプリケーションのパフォーマンスを向上させるため、1 つのポートを複数のノードに関連付けます。
1 つのポートを複数のハードウェア NUMA ノードに関係付けて、優先度の高い主要アプリケーションにサービスを提供します。2 つ目のポートは別のハードウェア NUMA ノードに関係付けて、2 つ目の補助アプリケーションにサービスを提供します。2 つのアプリケーションのメモリと CPU リソースは不均衡な状態で固定されます。主要アプリケーションには、補助アプリケーションの 3 倍のローカル メモリと CPU リソースが割り当てられます。データベース エンジンの 2 つ目のインスタンスを補助アプリケーションにし、同じデータベース エンジンのインスタンス (または同じデータベース) の重要度の低い機能を実行させることができます。この結果、優先される接続に追加のリソースを割り当てることにより、優先スレッド実行の形式が実現します。
C. 複数のポートを複数のノードに関連付けます。
複数のポートを、同じ NUMA ノードにマッピングできます。これにより、さまざまなポートに異なる権限を構成できるようになります。たとえば、対応する TCP エンドポイントでの権限を制御することにより、ポート経由で行われるアクセスを厳密に制限できます。この例の場合、ポート 1450 はイントラネットで広範囲に使用可能です。ポート 1433 は、ファイアウォール経由でインターネットに開かれていますが、アクセスは厳密に制限されています。どちらのポートも、NUMA の利点を同じくらい最大限に活用しています。