P7 SMT1 P8 SMT1 P8 SMT2 P8 SMT4 P8 SMT8

Power Systems / IBM i の SMT(Simultaneous Multi-Threading) 機能
Power Systems での SMT(Simultaneous Multi-Threading:同時マルチ・スレッド)
Power Systems では、長年にわたって SMT をサポートしています。2004 年に発表された POWER5
プロセッサーで始めて SMT2 がサポートされ、POWER7 プロセッサーでは SMT4、2014 年に発表さ
れた POWER8 プロセッサーでは、SMT8 を実現しています。今回は、POWER8 プロセッサーの SMT
機能について説明します。
SMT 機能には、以下の特長があります。

システム全体でのトランザクション処理の高速化を実現

多くのワークロードを少ないコアで処理することによるコア課金のソフトウェア・ライセンスの削減
POWER8 プロセッサーでは、SMT1、SMT2、SMT4、SMT8 をサポートしています。これらの SMT モ
ードは、ワークロードの特徴に合わせて、LPAR 単位で動的に変更することができます。
4
3.5
3
2.5
2
1.5
1
0.5
0
P7
P8
P8
P8
P8
SMT1 SMT1 SMT2 SMT4 SMT8
グラフ 1. SMT(同時マルチ・スレッド)のイメージ
SMT(Simultaneous Multi-Threading) 機能概要
SMT とは、複数スレッドを 1 つのプロセッサーで同時実行させる技術です。スレッドとはプロセッサーか
ら見たプログラムの実行単位のことで、通常の 5250 アプリケーションでは、1 ジョブが 1 スレッドになる
と考えて差し支えありません。WebSphere Application Server 等の Java ベースのプログラムや Lotus
Domino 等のアプリケーションは、マルチスレッドを多用して稼動します。
POWER8 プロセッサーでは、実行ユニット数が向上され、ロード/ストアユニット、固定小数点演算ユニ
ット、浮動小数点演算ユニット、分岐ユニット、条件レジスター処理ユニットなど 16 の実行ユニットがあ
ります。プロセッサーの 1 サイクルでこれらのユニットは同時並行して処理を行うことができますが、通
常のスレッドは一度にこれらのユニットをすべて使うことはありません。SMT 機能のないシステムでは
1 サイクルでは 1 つのスレッドしか処理しないため、あるサイクルでスレッドによって使われない実行ユ
ニットは遊んでしまうことになります。
プロセッサーの 1 サイクルのうちにスレッドで使われないこれらのユニットを、同時実行可能な別のスレ
ッドから利用できるようにする仕組みが SMT です。
図 1 は、POWER8 プロセッサーにおいて、SMT 機能をそれぞれオフ/オンした時の 2 つのスレッドの
実行状態の例を示しています。図中の個々の■がそれぞれ実行ユニットで、プロセッサー・サイクルご
とに区切られている状態です。図 1 では、16 の実行ユニットを表現せず、簡略化しています。
スレッド 1~8 は処理の実行に合計 64 プロセッサー・サイクルかかります。
一方で、SMT 機能をオンにした状態での 8 つのスレッドの実行状態を見てみると、1 プロセッサー・サ
イクル内で、各実行ユニットが複数のスレッドの処理を同時実行していることが分かります。8 つのスレ
ッドの処理が完了するまでに要するプロセッサー・サイクルは、この例では 18 サイクルであり、かなり
極端な例ではありますが、大幅なスループット向上が見られます。
時間(プロセッサー・サイクル)
マルチ
スレッディング
なし
7サイクル
8サイクル
6サイクル
10サイクル
64サイクル
スレッド1
スレッド2
スレッド3
スレッド4
スレッド5
スレッド6
スレッド7
スレッド8
SMT8
18サイクル
図 1. Simultaneous Multi-threading 機能
が稼動中
が稼動中
が稼動中
が稼動中
が稼動中
が稼動中
が稼動中
が稼動中
SMT 機能のパフォーマンスへの影響
SMT 機能は 1 つのプロセッサーを複数スレッドで効率よく利用するための技術であり、個々のスレッド
の実行速度を上げるものではありません。そのため、1 スレッドからなる処理を 1 つだけ実行する場合
は、SMT の効果は得られません。SMT は、あくまでもシステム全体のスループットを向上させる機能
です。
例えば図 1 の SMT 機能オンの場合、スレッド 1 の処理に要した時間をみてみると、9 プロセッサー・
サイクルかかっており、SMT 機能を利用しない場合の 7 プロセッサー・サイクルよりも時間がかかって
います。
SMT 機能では、8 つのスレッドから取り出された命令を組み合わせて、効率の良い処理が可能となる
ようにスケジューリングされます。それでも、同一の演算ユニットを 8 つのスレッドが同時に利用しようと
するタイミングが発生する可能性はあります。SMT 機能を利用しない場合、実行中のスレッドから取り
出された命令は、即座に希望の実行ユニットを利用できますが、SMT 機能を利用した場合には、他の
スレッドから取り出された命令の実行のために、待ち時間が発生する可能性があります。
そのため、ワークロードの特徴に応じて、SMT モードを設定しましょう。例えば、夜間バッチ処理のよう
な 1 スレッドからなる処理は、シングル・スレッド・モードに設定し、マルチスレッド化されたアプリケーシ
ョンを実行する際は、SMT8 に設定し、応答時間を短縮させます。
IBM i での SMT の制御
IBM i では、LPAR 単位で SMT の制御を行うことができます。システム値 QPRCMLTTSK(プロセッサ
ー複数タスク処理)の設定によって、SMT を 3 通りに制御できます。
0=オフ
プロセッサー複数タスク処理(SMT 機能)は使用不可になります。これはシングル・スレッド・モードを
意味します。プロセッサーは、どの瞬間でも、1 つのタスクだけを処理します。
1=オン
プロセッサー複数タスク処理(SMT 機能)は使用可能になります。これはプロセッサー互換モード*が
POWER6/POWER6+の場合には、SMT2 で稼働することを意味しています。その他のプロセッサ
ー互換モードを持つ LPAR は最大の SMT レベルで稼働します。
2=システム制御
プロセッサー複数タスク処理(SMT 機能)はシステム制御になります。プロセッサー複数タスク処理
はシステム制御になります。これが省略時の値になります。POWER7/POWER8 の場合には、この
値は'1'と同様の動きになります。
*プロセッサー互換モードについては、以下の参考リンク先を参照してください。
参考リンク:Power Systems プロセッサー互換モード
http://www-01.ibm.com/support/knowledgecenter/9119-MME/p8hc3/p8hc3_pcm.htm?lang=ja
システム値変更
システム値 . . . . . . :
QPRCMLTTSK
記述 . . . . . . . . . :
プロセッサー複数タスク処理
選択項目を入力して,実行キーを押してください。
プロセッサー・マルチタスク
処理 . . . . . . . . . . .
2
0= オフ
1= オン
2= システム制御
図 2. WRKSYSVAL SYSVAL(QPRCMLTTSK)→2=変更の画面
参考リンク:IBM i 7.2 システム・デフォルトおよびユーザー・デフォルトのシステム値: プロセッサー・マ
ルチタスキング
http://www01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzakz/rzakzqprcmlttsk.htm?lang=ja
システム値 QPRCMLTTSK の変更は次の IPL まで有効になりません。そのため、LPAR を IPL する
ことなく、最大スレッド数を変更できる QWCCHGPR API が提供されています。QWCCHGPR API は
POWER7/POWER8 システムを使用する IBM i 7.1 TR5 以降でサポートされます。この API はシステ
ム値 QPRCMLTTSK が'0'以外の場合に有効であり、以下のように最大スレッド数をパラメーターで設
定することでスレッド数の最大値を変更することができます。
CALL PGM(QWCCHGPR) PARM(X'00000000') /* QPRCMLTTSK システム値の設定に従う(省略
時値)*/
CALL PGM(QWCCHGPR) PARM(X'00000001') /* SMT2 */
CALL PGM(QWCCHGPR) PARM(X'00000003') /* SMT4 */
CALL PGM(QWCCHGPR) PARM(X'00000007') /* SMT8 */
QWCCHGPR API についての詳細は以下リンク先を参照ください。
参考リンク:IBM i 7.2 Change Processor Multitasking Information (QWCCHGPR) API
http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/apis/qwcchgpr.htm?lang=ja
この API を使用しても表 1 で記載しているハードウェアでサポートされる SMT モード(最大スレッド数)
を越えることはできません。つまり、POWER7 プロセッサー搭載サーバーは SMT4、POWER8 プロセ
ッサー搭載サーバーは SMT8 が上限ということになります。
表 1.プロセッサー互換モードと SMT
プロセッサー互換モード
サポートされるSMTモード
省略時のSMTモード
IBM i 7.1
IBM i 7.2
POWER6
Single Thread, SMT2
SMT2
SMT2
POWER6+
Single Thread, SMT2
SMT2
SMT2
POWER7
Single Thread, SMT2, SMT4
SMT4
SMT4
POWER8
Single Thread, SMT2, SMT4,
SMT4
SMT8
SMT8
表 1 で注意が必要なのは、POWER8 プロセッサー搭載サーバーに IBM i 7.1 を導入した場合は、省
略時の SMT モードは SMT4 になるということです。これは POWER7 ベースもしくはそれ以前のプロ
セッサー・ベース・サーバーで IBM i 7.1 を使用しているお客様の POWER8 ベース・サーバーへの移
行をよりスムーズにするためにこのように設定されています。
また現在、QWCCHGPR API によって設定された値がどのようなのものかを確認するための API とし
て QWCRTVPR API があります。以下リンク先にはこの API を使用した CL プログラムのサンプルが
記載されておりますので、参考にしてください。
参考リンク:IBM i 7.2 Retrieve Processor Multitasking Information (QWCRTVPR) API
http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/apis/qwcrtvpr.htm?lang=ja
参考情報:
IBM i 7.2 and IBM POWER8 (英文)
https://www.ibm.com/developerworks/ibmi/library/i-ibmi-7_2-and-ibm-power8/