WORKERTHREADS
WORKERTHREADS構成設定では、並列のEssbase操作のスレッド・プール内で使用可能なスレッド数を増減できます。
構文
WORKERTHREADS [appname] value
-
appname (オプション)—アプリケーション名。アプリケーションを指定しない場合、指定した数のスレッドがすべてのアプリケーションに適用されます。
-
value—スレッド・プールで使用可能にするスレッド数。最小値は5です。最大値は2048です。WORKERTHREADS設定が存在しない場合、デフォルト値はSERVERTHREADS値の半分です。
説明
従来、Essbaseでは、並列計算、並列データ・ロードおよび並列再構築などの並列操作に対して動的にスレッドを作成していました。ただし、リリース11.1.2.4.000以降では、次の並列操作でスレッドを動的に作成しません。かわりに、設定した数のスレッドを、スレッドの事前作成プールから使用します:
-
CALCPARALLELまたはFIXPARALLELを使用した並列計算
-
集約ストレージ・キューブおよびブロック・ストレージ・キューブの並列データ・ロード
-
ブロック・ストレージ・キューブの並列エクスポート
-
並列の再構築
スレッド操作のガイドライン
システム・アーキテクチャに応じて、次の設定をお薦めします。
表2-1 スレッド操作のガイドライン
パラメータ | 64ビット(16コア) | 64ビット(32コア) | 64ビット(16コア)および2つのキューブ | Oracle Exalytics In-Memory Machine、40コア、X2-4 | Oracle Exalytics In-Memory Machine、SPARC 128コア | Oracle Exalytics In-Memory Machine、60コア、X4-4 |
---|---|---|---|---|---|---|
SERVERTHREADS | 100脚注 1 | 100脚注 1 | 100脚注 1 | 100脚注 1 | 200脚注1 | 120脚注1 |
WORKERTHREADS | 50 | 50 | 50 | 50 | 100 | 60 |
AGENTTHREADS | 30脚注1 | 30脚注1 | 30脚注1 | 30脚注1 | 30脚注1 | 30脚注1 |
DLTHREADSPREPARE | 2 | 2 | 2 | 2脚注 2 | 2脚注 2 | 2脚注 2 |
DLTHREADSWRITE | 2脚注 3 | 2脚注 3 | 2脚注 3 | 2脚注 3 | 2脚注 3 | 2脚注 3 |
EXPORTTHREADS脚注 4 | 8 | 8 | 8 | 40 | 40 | 40 |
RESTRUCTURETHREADS | 4 | 4 | 4 | 8 | 8 | 8 |
CALCPARALLEL maximum脚注 5 | 8 | 8 | 8 | 32脚注 6 | 32 | 32脚注 6 |
FIXPARALLEL maximum脚注 7 | 8 | 8 | 8 | 32脚注 6 | 32 | 32脚注 6 |
脚注 1
パーティショニングおよび同時実行性に基づいて調整が必要になる場合があります
脚注 2
集約ストレージの場合、24
脚注 3
.txtのロードを使用した場合、1
脚注 4
設定EXPORTTHREADSに加えて、データ・エクスポートで複数のデータ・ファイルを指定する必要があります
脚注 5
SET CALCPARALLELを計算スクリプトで設定する必要があります
脚注 6
3個以上のキューブが同時計算を実行している場合、16
脚注 7
FIXPARALLELを計算スクリプトで設定する必要があります
ノート
-
WORKERTHREADSは、スレッド・プールで使用可能なスレッド数を操作するための構成設定です。この可用性のしきい値を構成で明示的に設定するか、
SERVERTHREADS/2
のデフォルト値のままにするかに関係なく、実際の設定が要求された並列操作で必要なものより小さい場合、Essbaseは、スレッド・プールのパラメータに合うように、要求された操作の並列度を暗黙的に低くします。たとえば、データをロードする場合について考えます:
パイプラインの概念は、Essbaseデータ・ロードに関連しています。パイプラインは、シリアルまたは並列で実行できる、メモリー内の一連のデータ処理要素です。Essbaseデータ・ロード操作では、5つのステージで構成されるパイプラインが使用されます。したがって、すべてのデータ・ロード操作には、最低5つのスレッドが必要です。
DLTHREADSPREPAREまたはDLTHREADSWRITEを使用する場合、必要なデータ・ロード・スレッドの最小数を増やします。たとえば、DLTHREADSPREPAREを4に設定してDLTHREADSWRITEを2に設定する場合、9個(最小の5個と増分用の4個)のスレッドが必要です。
前述の場合のように、すべてのパイプラインに要求されたスレッド数が9で、WORKERTHREADSを8しか設定しない場合、Essbaseは暗黙的にDLTHREADSPREPAREおよびDLTHREADSWRITEを1に設定し、データ・ロードは合計スレッドの必要数が5 (最小およびデフォルト)で実行されます。
-
同様に、並列計算、並列エクスポートまたは並列再構築を実行する場合、これらの操作は使用可能なスレッド数を超えない並列度で実行されます。
次に例を示します。
-
WORKERTHREADSを8に設定してCALCPARALLEL 16を試みた場合、並列計算はCALCPARALLEL 8として実行されます。
-
WORKERTHREADSを5に設定してEXPORTTHREADS 12を試みた場合、並列エクスポートはEXPORTTHREADS 5として実行されます。
-
WORKERTHREADSを16に設定してRESTRUCTURETHREADS 32を試みた場合、並列再構築はRESTRUCTURETHREADS 16として実行されます。
-
-
同じアプリケーションで同時並列操作を実行する場合、合計の並列度はスレッド・プールのスレッド数によって制限されます。たとえば、WORKERTHREADSを16に設定して、2つの同時要求のCALCPARALLEL 16を実行する場合、2つの計算要求は16個のスレッドを共有します。計算は最大16個のスレッドを使用して実行されますが、16個のスレッド・プールを共有するため、要求された容量の約半分で実行されます。
-
1つのアプリケーション内に複数のキューブがある場合、WORKERTHREADSを1つのキューブで必要な並列スレッドより少し大きく設定することをお薦めします。たとえば、WORKERTHREADSを16に設定して、システムのCPU数が16の場合、CALCPARALLEL値を16未満に設定する必要があります。
-
異なるサーバーのキューブが@XREFまたは@XWRITEを使用して相互に参照している場合、相互参照のソース・キューブでは、並列計算スレッド(CALCPARALLELまたはFIXPARALLEL)の数よりSERVERTHREADSの数が大きくなるようにします。
-
並列操作に対するスレッド・プールにより、Essbaseアプリケーションの開始にリソースの増加が必要です。起動時にエラー
「サーバー・スレッドを要求できません」
が生じた場合、プロセスごとのスレッド数とシステム内の総スレッド数を制御するオペレーティング・システム設定を調整します(たとえば、Linuxの場合、ulimitを使用してnprocをチューニングします)。
例
WORKERTHREADS Sample 32