IIS 10.0 プロセッサ アフィニティ機能が NUMA ハードウェアで動作しない

この記事では、IIS スレッド プールの理想的な CPU 最適化が有効になっている場合に、インターネット インフォメーション サービス (IIS) 10.0 プロセッサ アフィニティが非均一メモリ アクセス (NUMA) ハードウェアで機能しない問題を解決する方法について説明します。

元の製品バージョン: インターネット インフォメーション サービス 10.0
元の KB 番号: 4041818

現象

プロセッサ アフィニティ機能は、IIS 10.0 のすぐに使用できない NUMA ハードウェアでは機能しません。

アプリケーション プールに割り当てられている特定のワーカー プロセスを特定の CPU に割り当てるかどうかを指定できます。 これを行うには、アプリケーション プールの設定をsmpAffinitized、 および指定されたアフィニティ マスクとsmpProcessorAffinityMask2smpProcessorAffinityMaskに使用できます。

ただし、NUMA サーバーで実行されている IIS 10.0 では、プロセッサ アフィニティを有効にし、アフィニティ マスクを CPU のサブセットのみを示すように設定した場合でも、ワーカー プロセスは使用可能なすべてのプロセッサに割り当てられます。

注:

  • この問題は、NUMA 以外のハードウェアには適用されません。
  • タスク マネージャーから各ワーカー プロセスのプロセッサ アフィニティをチェックできます。 これを行うには、次の手順を実行します。
    1. [詳細] を選択します。
    2. [w3wp.exe] を選択します。
    3. アフィニティを設定します

原因

この問題は、IIS 10.0 で新しい機能である IIS スレッド プールの NUMA ハードウェアの理想的な CPU 最適化が有効になっているために発生します。

既定では、この機能は有効になっています。 この機能は、すべての NUMA ノードのすべての CPU に負荷を均等に分散することで、IIS のパフォーマンスを最適化します。 ただし、この設定は指定されたプロセッサ アフィニティと競合します。

回避策

この問題を回避するには、プロセッサ アフィニティを指定する場合は、NUMA サーバーで IIS スレッド プールの理想的な CPU 最適化 を無効にします。 これを行うには、次のレジストリの値を 1 から 0 に更新します。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\InetInfo\Parameters\ThreadPoolUseIdealCpu

解決方法

この問題を解決するには、IIS を IIS 10.0 RS3 などの新しいバージョン (使用可能な場合) にアップグレードします。

関連情報