マルチプロセッサーのスループットのスケーラビリティー

実際のワークロードは、SMP システムでは完全にはスケーリングしません。

完全なスケーリングを阻む要因には、次のものがあります。

  • プロセッサー数が増加すると同時に、バス/スイッチ・コンテンションが増加する。
  • メモリー・コンテンションが増加する (すべてのメモリーがすべてのプロセッサーによって共用される)。
  • メモリーがさらに少なくなるにつれて、キャッシュ・ミスのコストが増加する。
  • キャッシュの整合性を維持するための、キャッシュの相互無効化および別のキャッシュからの読み取り。
  • ディスパッチング率の上昇によるキャッシュ・ミスの増加 (システムでさらに多くのプロセス/スレッドをディスパッチする必要があるため)。
  • 同期命令のコストの増加。
  • オペレーティング・システムおよびアプリケーション・データ構造体の大型化によるキャッシュ・ミスの増加。
  • ロック・アンロックのためのオペレーティング・システムおよびアプリケーションのパス長さの増加。
  • ロック待ちのためのオペレーティング・システムおよびアプリケーションのパス長さの増加。

上記の要因はすべて、ワークロードのスケーラビリティー と呼ばれるものに寄与します。 スケーラビリティーとは、プロセッサーの追加によってワークロードのスループットが改善される度合いです。 これは通常、マルチプロセッサー上のワークロードのスループットを、同等のユニプロセッサー上のスループットで割った商で表されます。 例えば、ユニプロセッサーが所定のワークロードで 1 秒当たり 20 の要求を達成し、 4 台のプロセッサーからなるシステムが 1 秒当たり 58 の要求を達成した場合、スケール・ファクターは 2.9 になります。 このワークロードは非常にスケーラブルです。 ワークロードの中でも、長時間時実行され、入出力またはその他のカーネル・アクティビティーを無視してよく、共用データのない、 計算主体のプログラムのみからなるワークロードは、4 台のプロセッサーを使用するシステムでのスケール・ファクターはほぼ 3.2 から 3.9 になると考えられます。 しかし、現実にはワークロードの大部分はこの値に達しません。 スケーラビリティーの見積もりは非常に難しいので、スケーラビリティーを仮定する場合は、本当のワークロードの測定を基にして行うべきです。

次の図は、スケーリングの問題を示しています。 ワークロードは、仮定的な一連のコマンドからなっています。 各コマンドの 3 分の 1 は通常処理、3 分の 1 は入出力待ち、3 分の 1 はロック保留の処理です。 ユニプロセッサーでは、ロックが保留されているかどうかにかかわらず、実際に処理を行えるのは一度に 1 つのコマンドだけです。 示されている時間間隔 (コマンドの単体実行時の 5 倍) に、ユニプロセッサーは 7.67 のコマンドを処理します。

図 1. マルチプロセッサーのスケーリング. この図は、スケーリングの問題を示しています。 ワークロードは、仮定的な一連のコマンドからなっています。 各コマンドの 3 分の 1 は通常処理、3 分の 1 は入出力待ち、3 分の 1 はロック保留の処理です。 ユニプロセッサーでは、ロックが保留されているかどうかにかかわらず、実際に処理を行えるのは一度に 1 つのコマンドだけです。 同じ時間間隔に、ユニプロセッサーは 7.67 個のコマンドを処理しますが、 マルチプロセッサーは 14 のコマンドを処理するので、スケール・ファクターは 1.83 です。
マルチプロセッサー・スケーリング

マルチプロセッサーでは、2 台のプロセッサーがプログラム実行を処理しますが、ロックは 1 つしか存在しません。 簡単にするために、プロセッサー B に影響を及ぼすロック・コンテンションはすべて示されています。示されている期間内に、マルチプロセッサーは 14 のコマンドを処理します。 したがって、スケール・ファクターは 1.83 です。 それ以上の台数の例を示しても状態は変わらないので、ここでは 2 台のプロセッサーの例にとどめました。 ここで、ロックはその時間の 100% 使用中になっています。 4 台のプロセッサーを使用するマルチプロセッサーでは、スケール・ファクターは 1.83 以下です。

実際のプログラムが上の図のコマンドほど対称になることは、まずありません。 さらに、ここではコンテンションの 1 つの次元、つまり、ロックしか考慮に入れていません。 キャッシュ整合性およびプロセッサーとの親和性の影響を含めていれば、 スケール・ファクターはほぼ確実にこれより低い値になるでしょう。

この例では、単にプロセッサーを追加しただけで、高速に実行できなくなることがよくあるワークロードを図示しています。 さらに、スレッド間のコンテンションのソースを識別し、最小化することも必要です。

スケーリングはワークロードに依存します。 一部の公表されたベンチマーク結果は、高水準のスケーラビリティーが容易に達成されることを示しています。 この種のベンチマークの大部分は、カーネル・サービスをほとんど使用しない、 小さな CPU 集中プログラムを組み合わせて実行することにより作成されます。 これらのベンチマーク結果は、スケーラビリティーの現実的な予測ではなく、上限を表しています。

ベンチマークについて、もう 1 つ特筆すべき興味深い点は、一般に、1-way SMP は、 オペレーティング・システムの UP バージョンを実行する同等のユニプロセッサーより実行が遅い (約 5 から 15%) ことです。