同時マルチスレッド化

同時マルチスレッド化は、単一の物理プロセッサーが、複数のハードウェア・スレッド・コンテキスト から同時に命令をディスパッチする能力です。 物理プロセッサーごとにハードウェア・スレッドは 2 つあるので、 同時に追加の命令を実行することができます。

同時マルチスレッド化により、2 つのアプリケーションを同一のプロセッサーに 同時にスケジュールすることによって、プロセッサーのスーパースカラーの性質を利用することができます。1 つのアプリケーションでは、 このプロセッサーを完全に飽和させることはできません。

同時マルチスレッド化による利点

主として商業環境で利点を発揮します。この環境では、個々のトランザクションの速度は、実行される合計トランザクション数ほどは重要ではありません。 同時マルチスレッド化によって、データベース・サーバーや Web サーバーのように作業セットが大きいか、作業セットが頻繁に変化するワークロードのスループットが高まることが期待できます。

同時マルチスレッド化の利点が最大に生かされるワークロードは、 命令当たりのサイクル (CPI) 数が大きいワークロードです。 これらのワークロードでは、プロセッサーおよびメモリーのリソースは 少ししか使用されない傾向にあります。 大きな CPI は、通常、大きな作業セットでの高いキャッシュ・ミス率に起因します。 大きな商業ワークロードは、2 つのハードウェア・スレッドが命令またはデータ を共有しているか、あるいはハードウェア・スレッドが完全に分離しているかに 多少なりとも依存します。 大きな商業ワークロードには、特にこの特性があります。 命令またはデータを共有するワークロードは、オペレーティング・システムで 大規模に実行されるものも単一アプリケーション内で実行されるものも、同時マルチスレッド化から 大きな恩恵を受けることができます。

同時マルチスレッド化の恩恵をあまり受けないワークロードは、個々のソフトウェア・スレッドの 大多数がプロセッサーまたはメモリーで大量のリソースを使用するものです。 例えば、浮動小数点を多用するワークロードは、同時マルチスレッド化から得る利点が ほとんどないことが多く、パフォーマンスが低下するものになりがちです。 これらのワークロードは、メモリーの帯域幅または浮動小数点装置を多用しています。 CPI が小さく、キャッシュ・ミス率が低いワークロードは、恩恵もやや小さくなります。

商業ワークロードの専用区画で測定したところ、スループットが 25% から 40% ほど上昇しました。 同時マルチスレッド化は、 共有プロセッサーの区画処理を支援するものになるはずです。 同時マルチスレッド化がディスパッチされた後は、追加スレッドが区画を 加速します。 これは、区画がその作業セットをより速くリカバリーするからです。 その後、スレッドは、専用区画にあるかのように実行します。 直感とはやや相容れないかもしれませんが、同時マルチスレッド化は、キャッシュ・パフォーマンスが最低のときに、最もよく機能するのです。

smtctl コマンドによるモードの設定

AIX® では、同時マルチスレッド化のために区画のモードを smtctl コマンドで制御することができます。このコマンドを使用すると、即時に、または次にシステムがブートするときに、 システム全体に対して同時マルチスレッド化をオンまたはオフにできます。 同時マルチスレッド化モードは、システム・ブートを超えて保持されます。 デフォルトでは、AIX同時マルチスレッド化を使用可能にします。

smtctl コマンドの構文は次のとおりです。
smtctl [ -m { off  | on } [ { -boot | -now } ] ]

同時マルチスレッド化用の ハードウェア管理コンソール 構成

ハードウェア管理コンソール (HMC) で共有プロセッサー区画を構成するときは、 仮想プロセッサーの最低数、希望数、最大数を指定します。 専用区画では、同じ種類のパラメーターを指定しますが、 プロセッサーの用語は異なります。 専用区画では、 プロセッサーは常にプロセッサーと呼ばれます。

どちらの区画モデルの場合も、ブートを制御するプロセッサーの範囲と、 実行時のプロセッサーの区画への割り当てを指定する必要があります。 システムの起動時に、可能ならば、要求したプロセッサーの設定が認可されます。 可能でない場合は、POWER Hypervisor が最小値以上の使用可能なリソースのセットに基づいて、それぞれの値を選択します。

HMC で指定されたプロセッサー数は、AIX が割り振る論理プロセッサー数に影響します。区画が同時マルチスレッド化に対応している場合、AIX は最大プロセッサー値の 2 倍の論理プロセッサーを割り当てます。これは、プロセッサーごとに 2 つのハードウェア・スレッドがあり、AIX は各ハードウェア・スレッドを独立した論理プロセッサーとして構成するためです。 このため、AIX では区画をリブートしなくても同時マルチスレッド化を使用可能または使用不可にすることができます。

同時マルチスレッド化用の 動的論理区画化

区画の実行中に、区画に割り当てられている プロセッサー数を、HMC で動的論理区画化 (DLPAR) の手順によって変更することができます。 その区画に定義されているプロセッサー数の範囲の制約内でプロセッサーを追加したり除去したりできます。 同時マルチスレッド化が使用可能になっている区画にプロセッサーが追加されると、AIX は両方のハードウェア・スレッドを起動し、2 つの論理プロセッサーがオンラインになります。 同時マルチスレッド化が使用可能になっている区画からプロセッサーが除去されると、AIX は両方のハードウェア・スレッドを停止し、2 つの論理プロセッサーがオフラインになります。

同時マルチスレッド化が使用可能になると、2 つの DLPAR イベントが生成されます。 追加または除去される論理プロセッサーのそれぞれについて 1 つのイベントが生成されます。 DLPAR スクリプトのための API は論理プロセッサーに基づいているので、DLPAR イベント数は、論理プロセッサーの追加と除去に対応します。 区画で同時マルチスレッド化が使用可能になっていなければ、DLPAR イベントは 1 つだけです。 AIX は、HMC から送られる DLPAR 要求を、DLPAR 認識アプリケーションに提示される適切な数の DLPAR イベントに自動的に変換します。

Micro-Partitioning® および 同時マルチスレッド化

POWER Hypervisor™ は、仮想プロセッサーを優先使用またはディスパッチングするときに、すべての必要なプロセッサーの状態を保管し、復元します。 同時マルチスレッド化を使用可能なプロセッサーでは、これは 2 つのアクティブ・スレッド・コンテキストがあることを意味します。 各ハードウェア・スレッドは、個別の論理プロセッサーとして AIX によりサポートされます。このため、1 つの物理プロセッサーで作成された専用区画は、AIX で論理 2-way プロセッサーとして構成されます。 これは区画タイプには依存しないため、2 つの仮想プロセッサーを持つ共有区画は AIX で論理 4-way プロセッサーとして構成され、4 つの仮想プロセッサーを持つ共有区画は AIX で論理 8-way プロセッサーとして構成されます。 ペアになったスレッドは、同じ区画で常に同時に一緒にスケジュールされます。

共有プロセッサーのキャパシティーは、 常に全体の物理プロセッサーを考慮した上で割り当てられます。 同時マルチスレッド化がなければ、AIX は 200 台のプロセッサー資格を持つ 4-way 仮想プロセッサー区画を、それぞれの論理プロセッサーが物理プロセッサーの 50% の能力を持つ 4-way 論理プロセッサー区画として構成します。 同時マルチスレッド化が使用できる場合は、この 4-way 論理プ ロセッサー区画は、8-way 論理プロセッサー区画となります。ここでは、 各論理プロセッサーが物理プロセッサーのおよそ 25% の能力を持ちます。 ただし、同時マルチスレッド化の場合、仮想プロセッサーの部分的なキャパシティーに 通常関連する待ち時間問題は、スレッドには直線的にはあてはまりません。 両方のスレッドが一緒にディスパッチされるため、スレッドは、50% ディスパッチ・ウィンドウ の持続中はアクティブになっており、下層の物理プロセッサーを共有して、 論理プロセッサーの 25% を達成します。 これは、論理プロセッサーが、個々のキャパシティーの許す 2 倍の割り込みに対処できることを意味します。

ハードウェア・スレッド優先順位

プロセッサーでは、ハードウェア・スレッドに 優先順位を割り当てることができます。兄弟スレッド間の優先順位の相違によって、各スレッドに割り当てられる 物理プロセッサー・デコード・スロットの比率が決まります。 スロットが多ければ多いほど、スレッドのパフォーマンスはよくなります。 通常 AIX は、兄弟スレッドを同じ優先順位に維持しますが、パフォーマンスを最適化するために、重要な個所ではスレッド優先順位を上げたり下げたりします。 例えば、スレッドがアイドル・ループまたはカーネル・ロックで非生産的な作業を繰り返している場合は、AIX はそのスレッド優先順位を下げます。 スレッド優先順位は、スレッドが重要なカーネル・ロックを保持しているときには、上げられます。 これらの優先順位の調整は、 ユーザー・モードでは持続しません。 AIX は、ハードウェアのスレッド優先順位を選択するときは、ソフトウェアのスレッドのディスパッチング優先順位は考慮しません。

作業は、まずすべての基本スレッドにディスパッチされた後、 セカンダリー・スレッドにディスパッチされます。 スレッドのパフォーマンスは、ペアのスレッドがアイドルしているときが 最も大きくなります。 アイドル・スチーリングおよび 周期的な実行キュー・ロード・バランシングでは、スレッドの親和性も考慮されます。