次の方法で共有


NUMA ハードウェアでの IIS 8.0 マルチコア スケーリング

作成者: Robert McMurray

互換性

バージョン メモ
IIS 8.0 IIS 8.0 で NUMA でのマルチコア スケーリングが導入されました。
IIS 7.5 IIS 7.5 では、NUMA でのマルチコア スケーリングはサポートされていませんでした。
IIS 7.0 IIS 7.0 では、NUMA でのマルチコア スケーリングはサポートされていませんでした。

問題

一般に、コアの数を増やすと、パフォーマンスが向上するはずです。 ただし、コア数を増やすと、メモリ同期のコストが追加のコアを備えた NUMA ハードウェアの利点を上回るため、パフォーマンスの低下につながる可能性があります。 IIS 8.0 では、Non-Uniform Memory Access (NUMA) ハードウェア上でプロセスをインテリジェントに分散およびアフィニタイズすることで、この問題に対処しています。

解決策

Windows Server 2012 のインターネット インフォメーション サービス (IIS) は NUMA 対応であり、IT 管理者に最適な構成を提供します。 次のセクションでは、NUMA ハードウェア上の IIS 8.0 で最高のパフォーマンスを実現するためのさまざまな構成オプションについて説明します。

IIS では、次の 2 つの方法でワークロードをパーティション分割できます。

  1. 1 つのアプリケーション プール (つまり Web ガーデン) で複数のワーカー プロセスを実行する: このモードを使用している場合、既定では、アプリケーション プールは 1 つのワーカー プロセスを実行するように構成されています。 パフォーマンスを最大化するために、ワーカー プロセスと NUMA ノードの間に 1 対 1 のアフィニティが存在するように、NUMA ノードと同じ数のワーカー プロセスを実行することを検討する必要があります。 これを行うには、[最大ワーカー プロセス数] AppPoolsetting を 0 に設定します。 この設定では、IIS によってハードウェアで使用可能な NUMA ノードの数が決定され、同じ数のワーカー プロセスが開始されます。
  2. 1 つのワークロード/サイトで複数のアプリケーション プールを実行する: この構成では、ワークロード/サイトは複数のアプリケーション プールに分割されます。 たとえば、サイトには、個別のアプリケーション プールで実行するように構成された複数のアプリケーションが含まれている場合があります。 実質的に、この構成により、ワークロード/サイトに対して複数の IIS ワーカー プロセスが実行され、IIS によって、パフォーマンスを最大化するためにインテリジェントに分散およびアフィニタイズされます。

さらに、IIS 8.0 では、IIS ワーカー プロセスが開始されようとしているときに最適な NUMA ノードを識別する方法が 2 つあります。

  1. 使用可能なメモリが最多 (既定): このアプローチの背後にあるのは、使用可能なメモリが最も多い NUMA ノードが、開始されようとしている追加の IIS ワーカー プロセスを実行するのに最適なノードであるという考え方です。 IIS には、各 NUMA ノードによるメモリ消費量に関する知識があり、この情報を使用して IIS ワーカー プロセスが "負荷分散" されます。
  2. Windows: IIS には、Windows OS でこの決定を行えるようにするオプションもあります。 Windows OS ではラウンド ロビンが使用されます。

最後に、IIS ワーカー プロセスから NUMA ノードへのスレッドをアフィニタイズするには、2 つの方法があります。

  1. ソフト アフィニティ (既定): ソフト アフィニティでは、他の NUMA ノードにサイクルがある場合、IIS ワーカー プロセスのスレッドがアフィニタイズされていない NUMA ノードにスケジュールされる可能性があります。 このアプローチは、システム全体で使用可能なすべてのリソースを最大化するのに役立ちます。
  2. ハード アフィニティ: ハード アフィニティでは、システム上の他の NUMA ノードでの負荷に関係なく、IIS ワーカー プロセスのすべてのスレッドは、上記の設計を使用してアフィニティ用に選択された NUMA ノードに割り当てられます。

ステップ バイ ステップの手順

前提条件

  • IIS が Windows Server 2012 にインストールされていること。
  • IIS プロセス モデルは、IIS アプリケーション プールの構成の一部です。 サーバー マネージャーからインストールする必要がある特定の IIS 機能はありません。

既知のバグの回避策

現時点では、この機能に関する既知のバグはありません。

構成手順

  1. IIS マネージャーを開きます。
  2. 左側のナビゲーション ウィンドウで [アプリケーション プール] を選びます。
    [アプリケーション プール] が選択されていることを示すスクリーンショット。
  3. [アプリ プール] を選択します。
    [アプリケーション プール] ウィンドウを示すスクリーンショット。[既定のアプリ プール] 行が強調表示されています。
  4. [操作] ウィンドウで、[詳細設定] を選びます。
    [詳細設定] が強調表示された [操作] ウィンドウを示すスクリーンショット。
  5. [プロセス モデル] グループで、[最大ワーカー プロセス数] 設定を見つけます。
    [プロセス モデル] グループを示すスクリーンショット。ワーカー プロセスの最大数とその値 1 が強調表示されます。
  6. この値は 0 に設定します。

最適な NUMA の選択ロジックとアフィニティの種類は、[詳細設定] にも表示されます。 ただし、これらは IIS が NUMA ハードウェアで実行されている場合にのみ表示されます。

シナリオ

Windows Server 2012 にアップグレードする前と後に、NUMA ハードウェアでパフォーマンス テストを実行します。 パフォーマンスの結果を比較して、改善点を確認します。

まとめ

Windows Server 2012 での NUMA ハードウェア機能の IIS マルチコア スケーリングについて調べることができました。