Houdini 20.0 PDG/TOPsを使ってタスクを実行する方法

ファームでのPDGスケジューラ問題に関するトラブルシューティング

ファームでのPDGワークアイテムのスケジューリングトラブルの解決に役立つ情報。

On this page

このページでは、すべてのTOPスケジューラに関する一般的なトラブルシューティングの推奨事項が記載されています。 スケジューラの詳細は、TOPスケジューラのドキュメントを参照してください。

一般的なデバッグTips

ログ

  • ファームログまたはジョブログで警告またはエラーをチェックします。

  • 見つかった警告またはエラーのメッセージをバグレポートに添付します。

Deadlineスケジューラ

  • Deadline Schedulerノードの Deadline ▸ Verbose Logging パラメータを有効にすることで、スケジューラからログを出力することができます。このログ出力には、役立つ警告またはエラーのメッセージが含まれていることがあります。 このようなパラメータは他のTOPスケジューラにも追加される予定です。

  • ログ出力をサポートチケットまたはSideFXフォーラムの投稿に添付していただければ、SideFX社がその問題を追跡します。

ファームマシン

  • すべてのファームマシンとジョブ投入マシンがネットワークファイルシステムにアクセスできることを確認してください。

  • 理想的には、PDGワークアイテムのクックに利用可能なファームマシンまたはノードが最低でも 2台 必要です。 1台のファームマシンは、特にTOP Deadline Schedulerに関してはワークアイテムタスクとMQジョブのどちらも実行することが できません

パス

  • パスに単一バックスラッシュ(\)を 使用しないでください 。この文字はHoudiniではエスケープ文字として扱われます。 代わりにHoudiniでそれを評価できるようにするにはバックスラッシュを2つ(\\)使用するか、単にスラッシュ(/)を使用してください。

  • パス内のスペースはHoudiniで 対応していません 。代わりにパスをダブルクォーテーション(")で閉じるか、またはバックスラッシュ(\)を使ってスペース文字をエスケープしてください。

接続拒否またはタイムアウトが原因でワークアイテムが結果のレポートに失敗する

ファームマシン上で実行されるPDGワークアイテムは、そのクックを開始したHoudiniプロセスに結果をレポートする必要があります。 このHoudiniプロセスは、典型的にはユーザのワークステーション(別名 投入マシン と呼びます)上で実行されます。 この投入マシンはファームマシン ではなく 、場合によってはファームマシンとは異なるネットワーク環境を持っていても構いません。

これらの結果は、ネットワークソケットベースの Remote Procedure Call (RPC)を介してレポートされます。 これらの結果を受信するために、その投入マシン上でサーバーが自動的に起動され、必要に応じてレスポンスを返せるようにそれらのRPCsをリッスンします。

そういった理由で、実行するワークアイテムは投入マシンのIPアドレス(またはホスト名)を知る必要があり、各ファームマシンからその投入マシンまでのネットワークルートが解決できる必要があります。

ファイアーウォール

問題

  • ファイアーウォールとホスト名解決が原因でPDGワークアイテムのレポートの仕組みに問題が発生する可能性があります。

  • ファイアーウォールがファームマシン、投入マシン、ネットワーク間で有効になっていた場合、RPCsがブロックされる可能性があります。

    これを回避するために、PDGは Message Queue MQサーバーを利用します。 MQサーバーは、ファイアーウォールの背後でファームマシン上のタスクまたはジョブとして実行することができます。 ファイアーウォールを介して投入マシンにアクセス許可されているポートが限られている場合、その限られた数のポート(最低でも2つ)を使用することもできます。

解決策

  • ファイアーウォールを通過できるいくつかのポートを開放するようにIT管理者に問い合わせてください。

  • TOPスケジューラ系ノード上の Task Callback Port パラメータや Relay Port パラメータにこれらのポートを指定してください。

    これらのノードに関する詳細は、TOPノードを参照してください。

DNS

問題

Domain Name Resolution (DNS)が原因で、RPCsを介して結果をレポートする際に問題が発生する可能性があります。 現在のところ、このレポートの仕組みはデフォルトでホスト名を使用するようになっています。つまり、ホストファイルまたはDNSによって実際のIPアドレスを解決する必要があります。

解決策

  • ホストファイルに関しては、以下のファイルを編集します:

    Windows

    C:\Windows\System32\Drivers\etc\hosts

    Linux

    /etc/hosts

    Mac

    /etc/hosts

  • どちらも利用できない場合(例えば、DNSを使わないAWSファームを利用しているような場合)、RPCの仕組みの方でMQサーバーのIPアドレスの解決を試みることができます。

    • ワークアイテムジョブプロセス内または.hipファイル内にPDGMQ_USE_IP=1環境変数値を指定することで、これを有効化することができます。

MQ

  • Submit Graph as Jobクックを行なった場合、ファーム上に投入されたジョブがMQサーバーをローカルで実行します。 そういったことから、これによってネットワークの問題を回避することができます。

  • MQをそれ自身のジョブやタスクとして実行すると、スケジューラのセットアップによっては、ファームマシンを占領することになります。 さらに、各スケジューラノードは自身のMQサーバーを実行することになります。

必須ファイルが見つからなかったことが原因でワークアイテムが失敗する

ファーム上のPDGでは、そのプロセスに関与するすべてのマシン(すべてのファームマシンだけでなく投入マシンも含みます)からアクセス可能なネットワークファイルシステムが必要になります。 このプロセスに必要なすべてのファイルは、ネットワークファイルシステム上に位置されているスケジューラによって指定されたPDG作業ディレクトリにコピーされます。 詳細は、パスを参照してください。

問題

このプロセスに支障をきたす問題は以下のとおりです:

  • 投入マシンとファームマシンでファイルパスが異なる。

  • 異種ファームマシンセットアップ(例えば、同じファーム上にWindows、MacOS、Linuxのマシンが混在している時)。

解決策

各TOPスケジューラ系ノードには、作業ディレクトリのローカルファイルパスとは別にリモートファイルパスを指定するためのパラメータが備わっています。

  • 投入マシンのローカルファイルパスを指定する。

  • ファームマシン側で解決可能なリモートファイルパスを指定する。

HQueue Scheduler

  • TOPスケジューラ系ノードの Override Local Shared Root パラメータを有効にしてから、適切な Local Shared Root Paths を指定します。

Deadline Scheduler

  • ローカルファイルパスに関しては、TOPスケジューラ系ノードの Working Directory ▸ Local Shared Path パラメータフィールドを使用します。

  • リモートファイルパスに関しては、TOPスケジューラ系ノードの Working Directory ▸ Remote Shared Path パラメータフィールドを使用します。

Tractor Scheduler

  • TOPスケジューラ系ノードの Shared File Root Path パラメータフィールドを使用します。

Pythonが見つからない

問題

PDGでは、Pythonがファーム上でワークを実行できる必要があります。 そういったことから、TOPスケジューラは、Python実行可能ファイルがシステムパスを介してアクセス可能であることを前提にしています。

解決策

  1. Pythonをインストールしてください。

    ファームマシン上にHoudiniがインストールされていれば、Houdiniに同梱されているPythonを使用することができます。

    HoudiniのPythonは以下の場所にあります:

    Windows

    $HFS/python27/python.exe

    Linux

    $HFS/python/bin/python

    Mac

    $HFS/Frameworks/Python.framework/Versions/Current/bin/python

  2. 以下のどれかを実行します:

    • 全体的に解決したいのであれば、Python実行可能ファイルをシステム環境パスに追加してください。

    • 単一TOPスケジューラとそのすべてのワークアイテムに特化した解決をするのであれば、Python実行可能ファイルのパスを以下の場所で指定してください:

      • HQueue Scheduler

        TOPスケジューラノードの Executable Paths ▸ Python Executable パラメータフィールド。

      • Deadline Scheduler

        TOPスケジューラノードの Paths ▸ Python パラメータフィールド。

      • Tractor Scheduler

        TOPスケジューラノードの Scheduler ▸ Python Executable パラメータフィールド。

PDG/TOPsを使ってタスクを実行する方法

基本

初心者向けチュートリアル

次のステップ

リファレンス

  • すべてのTOPsノード

    TOPノードは、データをネットワークに送り込んでワークアイテムに変換し、色々なノードでそれを制御するワークフローを定義します。たいていのノードは、ローカルマシンまたはサーバーファーム上で実行可能な外部プロセスを表現しています。

  • プロセッサ系ノードコールバック

    プロセッサ系ノードはスケジューラで実行可能なワークアイテムを生成します。

  • パーティショナー系ノードコールバック

    パーティショナー系ノードは複数の上流ワークアイテムを単一パーティションにグループ化します。

  • スケジューラ系ノードコールバック

    スケジューラ系ノードはワークアイテムを実行します。

  • 独自のファイルタグとハンドラー

    PDGはファイルタグを使用して出力ファイルのタイプを決めます。

  • Python API

    ディペンデンシーグラフを扱うためのPython PDGパッケージのクラスと関数。

  • Job API

    ジョブスクリプトで使用するPython API

  • ユーティリティAPI

    Python pdgutilsパッケージのクラスと関数は、PDGノードでの使用だけでなく、スクリプトやプロセス外のジョブスクリプトでの使用も想定されています。