機械翻訳について

CALCPARALLELパラレル計算の使用

デフォルトのシリアル計算からCALCPARALLELパラレル計算に変更するには、1つまたは2つの構成設定を変更してサーバーを再起動するか、計算スクリプトに指示を追加します。

「CALCPARALLELパラレル計算の有効化」を参照してください。

次の各トピックでは、パラレル計算の詳細について説明します。

Essbase実行可能性分析

Essbaseは、パラレル計算を有効にした各計算パスの前に、パラレル計算の使用が可能かどうかを評価します。

Essbaseは、アウトラインおよび各計算パスに対してリクエストされた計算を分析します。 1つの計算で複数のパスが必要になる場合があることに注意してください。 状況によっては、動的計算、2パスとしてタグ付けされたメンバーの存在、特定の種類の相互依存性を作成する計算など、複数のパスが必要になることがあります。 「計算パス」を参照してください。

Essbaseでパラレル計算が可能であると判断された場合、Essbaseでは、相互に独立した小さいタスクに計算が分割されます。 計算中に、Essbaseは小さい方のタスクを同時に実行します。

ただし、パスに参加するformula間に複雑な相互依存関係がある場合でも、Essbaseではシリアル計算が使用されます。 このような相互依存関係は並列計算を実行できません。

CALCPARALLELパラレル計算のガイドライン

アウトライン構造とアプリケーション設計によって、並列計算を使用可能にすることで計算のパフォーマンスを向上できるかどうかが決まります。 CALCPARALLELのパラレル計算を有効にする前に、次のガイドラインを確認してください。これは、パラレル計算の利点を最大限に活用するのに役立ちます:

  • 計算に存在する1つ以上の計算式によっては、CALCPARALLELパラレル計算が有効になっていても、Essbaseで使用できない場合があります。 パラレル計算の設定に関係なくシリアル計算を強制するformulaの詳細は、「数式の制限」を参照してください。

  • 計算タスクは、アウトラインの最後のn疎ディメンションに沿って生成されます。 タスクの識別に使用されるこれらの疎ディメンションは、タスク・ディメンションと呼ばれます。 タスク・ディメンションの数であるnは、Essbaseによって動的に選択されるか、計算コマンドSET CALCTASKDIMS (またはアプリケーション構成設定CALCTASKDIMS)の値を指定して上書きできます。

    ディメンションの実際のサイズに基づいて、アウトラインの疎ディメンションを最小から最大の順に並べ替えます(「MaxL文」 query database DBS-NAME get dbstats dimensionでレポートされます)。 この順序付けの推奨事項は、計算機のキャッシュ・サイズを最適化するための推奨事項および他のアウトラインの推奨事項と一貫性があります。 追加のディメンション(最後の疎ディメンションを超えるディメンション)を使用する必要がある状況、および使用する疎ディメンションの数を増やす方法の詳細は、「パラレル計算の追加タスクの理解」を参照してください。

  • CALCPARALLELパラレル計算は、パーティション化されていないアプリケーションおよび次のパーティション化されたアプリケーションで有効です:

    • レプリケート・パーティション

    • ターゲット・データベースで計算が行われる場合は、透過パーティション。 計算スクリプトでSET CALCTASKDIMSによって指定される疎ディメンションの数は、1に設定する必要があります。 透過パーティションでのパラレル計算の使用による制限の詳細は、「透過パーティションの制限事項」を参照してください。SET CALCTASKDIMSの使用の詳細は、「パラレル計算の追加タスクの理解」を参照してください。

  • 計算やデータ更新などの更新トランザクションは、MDX問合せやレポート・スクリプトよりもリソース消費の多いリクエストです。

CALCPARALLELパラレル計算とその他のEssbase機能の関係

次の各トピックでは、CALCPARALLELパラレル計算と他のEssbase機能の関係について説明します。

取得パフォーマンス

最大の疎ディメンションをアウトラインの最後に配置して最大の並列計算パフォーマンスを得ると、取得パフォーマンスが低下する可能性があります。 「問合せパフォーマンスの最適化」を参照してください。

数式の制限

一部のフォーミュラが存在すると、シリアル計算が強制される場合があります。 次のフォーミュラの配置により、シリアル計算が強制される可能性があります:

  • 密メンバーの式。保管されているすべてのメンバーおよび保管されているメンバーが依存する動的計算メンバーを含み、パラレル計算のタスクを識別するために使用されるディメンションのメンバーに依存します。

  • @VAR、@ARRAY、@XREFまたは@XWRITEを使用する計算スクリプトで宣言された変数への参照を含む式。 FIXPARALLELの使用を検討してください。

  • @XREFを使用した疎ディメンション・メンバー式、および疎メンバーのディメンションが完全に計算されます。@XREFは、バッチ計算中に他の保管済メンバーに依存しない密動的計算メンバーにある場合、シリアル計算を強制しません。

  • 循環依存を発生させるメンバー式。 たとえば、メンバーAにはメンバーBを参照する式があり、メンバーBにはメンバーCを参照する式があり、メンバーCにはメンバーAを参照する式があります。

  • メンバーまたはパラレル処理のタスクを識別するために使用されるディメンションのメンバーに依存する密または疎メンバーの式。

  • 他の疎ディメンションのメンバーへの参照を含む疎ディメンション・メンバー式。

パラレル計算を妨げる可能性のある計算式を使用する必要がある場合は、FIXPARALLELの使用を検討してください。 それ以外の場合は、式のメンバーを動的計算としてマークするか、計算のスコープから式を除外できます。 formulaがパラレル計算を妨げているかどうかを確認するには、アプリケーション・ログを確認します。 関連するエラー・メッセージについては、「CALCPARALLELパラレル計算のモニタリング」を参照してください。

計算機キャッシュ

計算パスの開始時に、Essbaseは計算機キャッシュ・サイズおよび並列度をチェックし、最大パフォーマンスに適した計算機キャッシュ・ビットマップ・オプションを使用します。 したがって、パラレル計算に使用されるビットマップ・オプションは、シリアル計算に使用されるオプションとは異なる場合があります。

たとえば、Essbaseがシリアル計算を実行し、複数のビットマップと単一のアンカー・ディメンションを使用するとします。 計算機のキャッシュ・サイズを明示的に変更しない場合、Essbaseでは、単一のビットマップおよび単一のアンカー・ディメンションのみを使用してパラレル計算を実行できます。

ビットマップ・オプションを制御する計算機キャッシュ・モードを決定するには、各計算パスの開始時に、次のようなエントリのアプリケーション・ログを確認します:

Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.

透過パーティションの制限事項

透過パーティションでのパラレル計算には、次の制限があります:

  • ターゲットで計算が行われないかぎり、透過パーティション間でパラレル計算を使用することはできません。

  • タスク・ディメンションを1に設定する必要があります。 これを行うには、SET CALCTASKDIMS計算コマンドまたはCALCTASKDIMS構成設定を使用します。

  • 複数のビットマップを使用できるように、計算機キャッシュを増やす必要があります。 ビットマップ・オプションを制御する計算機キャッシュ・モードを識別するには、各計算パスの開始時に、次のようなエントリのアプリケーション・ログを確認します:

    Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.

現在のCALCPARALLEL設定の確認

パラレル計算が有効になっているかどうかを確認するために使用するアプリケーション構成または計算スクリプトのいずれかを確認できます。

パラレル計算がアプリケーション・レベルで有効になっているかどうかを確認するには、パラメータCALCPARALLELを検索し、指定された値を確認します。

計算を完了するためにタスクを同時に実行できるスレッドの数は、1から128までの値で指定されます。 ブロック・ストレージおよび集約ストレージ・データベースでは、最大128スレッドがサポートされます。

計算スクリプトでパラレル計算が設定されているかどうかを確認するには、SET CALCPARALLELコマンドを探します。 計算を完了するためにタスクを同時に実行できるスレッドの数は、1から128までの値で指定されます。 64ビット・プラットフォームで実行されているブロック・ストレージ・データベースおよび集約ストレージ・データベースでは、最大128スレッドがサポートされます。 スクリプトはパラレル計算を複数回有効化または無効化する可能性があるため、スクリプトを慎重に確認してください。 または、スクリプトでパラレル計算にFIXPARALLELコマンド・ブロックを使用できます。

CALCPARALLELパラレル計算の有効化

CALCPARALLELパラレル計算を使用するには、次のいずれかのメソッドを使用します:

パラレル計算を有効にするには:

  1. アプリケーション構成で並列計算を有効にする場合は、現在のステータスをチェックして、エントリが存在するかどうかを確認します。 「現在のCALCPARALLEL設定の確認」で説明されているプロセスを使用します。
  2. SET CALCPARALLELを計算スクリプトに追加します。
  3. 必要に応じて、Essbaseで複数の疎ディメンションを使用してパラレル計算のタスクを識別できるようにします。
  4. 計算を実行します。

ヒント:

CALCPARALLELとSET CALCPARALLELは、サイトで必要な場合に組み合せて使用できます。 たとえば、CALCPARALLELをサーバー・レベルでオフに設定し、必要に応じて計算スクリプトを使用してパラレル計算を有効および無効にできます。

パラレル計算の追加タスクの理解

デフォルトでは、Essbaseは反復手法を使用して、CALCPARALLELのパラレル計算に使用する最適なタスク・ディメンション数を選択します。

必要に応じて、Essbaseで特定の数のタスク・ディメンション(n)を使用できるようにすることができます。 たとえば、最後の疎ディメンションのメンバーにFIX文がある場合、アウトラインの次の疎ディメンションも含めることができます。 これら2つのディメンションの一意のメンバーの組合せはそれぞれ潜在的なタスクとして識別されるため、より多くの小さいタスクが作成され、パラレル処理の機会が高まり、ロード・バランシングが向上します。

パラレル計算のタスク・ディメンションの数を指定するには:

  1. 不明な場合は、「現在のCALCPARALLEL設定の確認」で説明されているプロセスを使用して、パラレル計算が有効になっているかどうかを確認します。 SET CALCPARALLELが有効になっていない(または計算スクリプトでSET CALCPARALLELが使用されている)場合、CALCTASKDIMSは無効です。
  2. オプション: Essbaseでは、パラレル計算に使用するタスク・ディメンションのデフォルト数であるnが選択され、この数が情報メッセージとしてアプリケーション・ログ・ファイルに出力されます。次に例を示します : Parallelizing using [2] task dimensions デフォルトのn設定をオーバーライドするには、アプリケーションのCALCTASKDIMS構成設定を追加または変更するか、計算スクリプト・コマンドSET CALCTASKDIMSを使用します。
  3. 計算スクリプトを実行します。

ノート:

場合によっては、EssbaseはCALCTASKDIMSまたはSET CALCTASKDIMSで指定されているよりも少ないディメンションを使用してタスクを識別します。

ログ・メッセージを使用したCALCPARALLELのチューニング

CALCPARALLELのパラレル計算を使用している場合、次のログ・メッセージが表示されることがあります:

Current selection of task dimensions [n] will generate insufficient number of tasks [n] for parallel calculation. See whether calculation time can be improved by increasing the number of task dimensions by one (see SET CALCTASKDIMS topic in the documentation). Also, consider using FIXPARALLEL to make custom task selections that are different from CALCPARALLEL.

このメッセージが表示された場合、タスクが小さすぎる可能性がある場合に備えて、パラレル計算中にEssbaseがタスク・ディメンションの数を増やしたことを意味します。 タスクが小さすぎると、計算スケジュールのオーバーヘッドが並列処理の利点を克服する可能性があります。 ただし、タスクが大きすぎると、並列計算スレッドが作業するのに十分なタスクがない可能性があります。

次の潜在的なタスク・ディメンションが最初の疎ディメンションでない場合は、SET CALCTASKDIMSのcalcコマンド(またはCALCTASKDIMSの構成設定)を使用してタスク・ディメンションの数を増やすことを検討し、計算の速度が向上するかどうかを確認してください。 また、FIXPARALLELを使用してCALCPARALLELとは異なるカスタム・タスクを選択することも検討してください(「FIXPARALLELパラレル計算の使用」を参照)。

Current number of task dimensions [n] for parallel calculation might have caused too many tasks [n] to be generated. See whether calculation time can be improved by decreasing the number of task dimensions by one (see SET CALCTASKDIMS topic in the documentation). Also, consider using FIXPARALLEL to make custom task selections that are different from CALCPARALLEL.

パラレル計算の場合、十分な数のタスクがあると、データ・スキューの影響を減らすのに役立ちます。 ただし、タスクが多すぎると(適切にサイズ設定されたタスクの場合でも)、スケジューリングのオーバーヘッドが利点を上回る可能性があります。 Essbaseは、最適な範囲をターゲットにします。 前述のメッセージが表示された場合は、Essbaseがタスク・ディメンションを追加して推奨最小タスク数を満たそうとしたことを意味します。その場合、タスク数の上限を超えている可能性があります。

Essbaseによって選択された最後のタスク・ディメンションが唯一のタスク・ディメンションでない場合は、SET CALCTASKDIMSのcalcコマンド(またはCALCTASKDIMSの構成設定)を使用してタスク・ディメンションを減らすことを検討し、計算の速度が向上するかどうかを確認してください。 また、FIXPARALLELを使用してCALCPARALLELとは異なるカスタム・タスクを選択することも検討してください。

CALCPARALLELパラレル計算のモニタリング

パラレル計算に関連するイベントは、アプリケーション・ログで表示できます。

Essbaseでは、計算パスごとに、パラレル計算をサポートするために複数のタイプの情報がアプリケーション・ログに書き込まれます:

  • パラレル計算を有効にしていて、Essbaseでパラレル計算を実行できると判断された場合、Essbaseはアプリケーション・ログに次のメッセージを書き込みます:

    Calculating in parallel with n threads

    nは、CALCPARALLELまたはSET CALCPARALLELで指定された同時タスクの数を表します。

  • パラレル計算を回避する(シリアル計算を強制する) formulaごとに、Essbaseによってアプリケーション・ログに次のメッセージが書き込まれます:

    Formula on (or backward dependence from) mbr memberName prevents calculation from running in parallel.

    memberNameは、関連する式が存在するメンバーの名前を表します。 このようなメッセージをアプリケーション・ログで確認し、式を削除するか、可能な場合は、計算パスに含まれないように関連するメンバーに「動的計算」のタグを付けることを検討してください。

  • Essbaseは、(CALCPARALLELまたはSET CALCPARALLELの値ではなく、データに基づいて)同時に実行できるタスクの数を指定するメッセージをアプリケーション・ログに書き込みます:

    Calculation task schedule [576,35,14,3,2,1]

    この例のメッセージは、576個のタスクを同時に実行できることを示しています。 576個のタスクが完了すると、さらに35個のタスクを同時に実行できます。

    パラレル計算の利点は、最初のいくつかのステップで最も大きく、実行される同時タスクが少なくなるため、減少します。

    並列度は、タスク・スケジュール内のタスクの数によって異なります。 数値が大きいほど、パラレルで実行できるタスクが多くなり、パフォーマンスが向上します。

  • Essbaseは、空の(計算を含まない)タスクの数を示すメッセージをアプリケーション・ログ・ファイルに書き込みます:

    [Tue Jun 27 12:30:44 2007]Local/CCDemo/Finance/essexer/
    Info(1012681) Empty tasks [291,1,0,0,0,0]

    この例では、Essbaseは、レベル0のタスクの291が空であることを示しています。

    計算タスク・スケジュールで指定されたタスクに対する空のタスクの比率が50%を超える場合(291 / 576など)、データ・モデルの疎性が高いために並列度によってパフォーマンスが向上しない可能性があります。

    密疎割当てを変更して、空のタスクの数を減らし、パラレル計算によるパフォーマンスの向上を促進できます。