分散エンコード

お手持ちの PC で構成するエンコードクラスター

NyXGridEncode は、同一 LAN に接続された複数の Windows PC でジョブを分担して変換します。専用のサーバーや管理画面を用意する必要はありません。各 PC に本製品を導入し、動作モードを選択して構成します。

概要

専用設備を必要としない構成

本製品の分散エンコードは、コントローラーとなる PC がキューを保持し、エージェントとなる PC がジョブを分担して変換する構成です。コントローラーもエージェントも、同じ本製品を導入した通常の Windows PC です。分散エンコードに参加している各 PC を、ノードと呼びます。コントローラーとエージェントは、共通の認証トークンを用いて同一 LAN 内で通信します。通信の暗号化は行いません。

構成に必要なもの

  • 各 PC への本製品の導入エージェント専用のプログラムは不要
  • エンコード用の外部ツールエンコードを行う PC と、コントローラーに必要
  • 同一 LAN への接続接続先のコントローラーは設定で指定
  • 共通の認証トークン半角の英数字と記号で 16 - 64 文字
  • コントローラー側のライセンスキー分散エンコード対応のエディション(Pro または ProPlus)。使用できるエージェント数はエディションによって異なります
性能差の自動吸収

性能の異なる PC を混在させても、各エージェントに設定した処理能力(性能基準比)をもとに、全ジョブが最も早く完了するよう割り当てます。

停止したノードのジョブ回収

応答が一定時間途絶えたノードのジョブは待機へ戻し、ほかのノードで処理を継続します。

フォルダー監視との併用

フォルダー監視で取り込んだファイルも、通常のキューと同様にエージェントへ割り当てます。

分散エンコードは、Pro または ProPlus ライセンスでご利用いただける機能です。ライセンス認証

Pro を 7 日間無料で試す

試用ライセンスで、分散エンコードを含む Pro の機能を 7 日間無料で利用できます。お支払い情報の入力は不要です。

試用ライセンスを申し込む
動作モード

4 種類の動作モード

各 PC の役割は、設定 > 動作モードで選択します。1 台の PC で、コントローラーとエージェントを同時に動作させられません。エンコードの実行中は、動作モードを変更できません。

動作モード 役割 エンコード処理 エージェント受付 必要な外部ツール
エンコード メディア情報
スタンドアロン この PC のみでエンコード 必要 必要
コントローラー + エンコーダー 割り当てとエンコード 必要 必要
コントローラーのみ ジョブの割り当てのみ 不要 必要 ※
エージェント 割り当て分のエンコード 必要 不要

エンコードには GPU 用の外部ツール(NVEncC・QSVEncC・VCEEncC)または FFmpeg を、メディア情報の読み取りには FFmpeg を使用します。※ プリセットで黒帯の自動検出を使用する場合は、黒帯の検出にもコントローラー側の FFmpeg を使用します。

FFmpeg が必要な理由

「コントローラーのみ」でも、割り当てるジョブを組み立てる際に、入力ファイルのメディア情報を FFmpeg で読み取るためです。

エージェント側の機能制限

キューへの追加・エンコード開始・プリセットの選択・個別調整・出力フォルダー・フォルダー監視・完了通知は使用できません。該当する操作は灰色で表示し、使用できない理由を示します。

エージェントの画面表示

受け取ったジョブをキュー一覧に表示します(進捗・FPS・経過時間・出力サイズ・状態)。一覧は表示専用で、保存はしません。一覧が空の場合は「コントローラーからの割り当てを待機中」と表示します。

ジョブの割り当て

性能差を考慮したジョブの割り当て

エージェントは、処理能力に余裕ができた時点でコントローラーへ次のジョブを要求します。コントローラーは要求のたびに、待機中の全ジョブが最も早く完了するよう割り当てを再計算します。

図は、性能基準比 100・50・40 の 3 台に 9 件のジョブを割り当てる例です。並列数は 1 として簡略化しています。

ジョブのないノードへの最小ジョブの割り当て

処理能力に余裕があるにもかかわらず、1 件も割り当てられていないノードには、最小のジョブを 1 件移します。移すジョブを最小のものに限るのは、処理の遅いノードが大きなジョブを受け取ると、全体の完了がそのジョブで遅れるためです。

終盤の割り当ての保留

残りのジョブが少ない終盤では、処理の遅いノードへ割り当てるより、速いノードの空きを待つほうが早く完了する場合があります。その場合は割り当てを保留します。

保留を解除する条件
  • 保留の根拠としたノードの応答が一定時間ない場合
  • 空き見込み時間を、一定の余裕を含めて超過した場合
  • 切断または停止が発生した場合
  • 状況の変化により保留の理由が解消した場合
エージェントごとの性能基準比

性能基準比は、エージェントとして動作する PC ごとに設定画面で指定します。エージェントはジョブを要求するたびにこの値を自動で送信し、コントローラーは受け取った値をそのまま割り当てに使用します。

性能基準比と並列数の違い

性能基準比は 1 件あたりの処理速度を、並列数は同時に処理できる件数を表す、独立した設定です。エージェントの並列数と使用する GPU は、エージェント自身の設定 > エンコードに従います。

2 種類の割り当て順序

「効率優先」(既定)は、処理量の大きいジョブから、最も早く完了できるノードへ割り当てます。「リスト順」は、キューの並びのまま割り当てます。スタンドアロンでは常にリスト順で処理します。

割り当てごとの全再計算

割り当て計画は保存せず、ジョブを割り当てるたびにすべて再計算します。ノードの切断・復帰・新規参加・並列数の変更は次の割り当てから反映されるため、反映漏れが構造上発生しません。

※ 割り当ては、処理時間の長いジョブから順に、最も早く完了するノードを選択する近似的な手法によるもので、数学的な最適解を保証するものではありません。

※ ジョブはファイル単位で割り当てます。1 本の動画を分割して複数の PC で処理できません。

ノード情報の画面。
ノード情報の画面です。参加中の各ノードについて、動作モード・接続状態・割り当て予定・実行中・完了・失敗・合計 FPS・CPU と GPU の使用率・自動シャットダウンの状態を一覧で表示します。行をダブルクリックすると、ノードの詳細を表示します。コントローラーでは、エージェントの行を右クリックして、起動・再接続・シャットダウン・強制シャットダウン・再起動を要求できます。エージェント側でも同じ一覧を表示します。
参加の手順

コントローラーの準備とエージェントの追加

最初にコントローラーとなる PC を準備し、次にエージェントとして参加させる PC を設定します。エージェント専用のプログラムや画面はなく、どちらも同じ本製品を使用します。

コントローラー側の準備

  • 本製品を導入して起動し、Pro または ProPlus のライセンスキーを登録します。
  • 設定 > 動作モードで「コントローラー + エンコーダー」または「コントローラーのみ」を選択します。
  • ポートと認証トークンを設定します。「生成」を選択すると、推測されにくい認証トークンを自動で作成します。
  • 共有パスの指定は任意です。エージェントが直接読み書きできる場所を共有パスへ追加すると、その分のファイル転送を省略できます。コントローラーでドライブ文字のパスとして扱う場所は、「この PC での場所」も指定します。UNC パスの共有パスには、アクセスに使うユーザー名とパスワードを指定できます。
  • エージェント側で入力するため、この PC のホスト名または IP アドレス、ポート、認証トークンを控えます。
  • メイン画面の出力フォルダー、または監視フォルダーの出力フォルダーを指定します。出力フォルダーを指定するまで、エージェントの受付は開始しません。ジョブの割り当ては、コントローラーで「エンコード開始」を実行している間に行います。

ユーザーマニュアル: 共有パスとこの PC での場所

エージェント側の手順

参加させる PC ごとに、次の 3 つを行います。

  1. 1 本製品の導入

    インストーラーを実行するか、ZIP を展開して配置します。変換に使用する外部ツールは、初回起動時の案内に従って取得します。

  2. 2 本製品の起動

    本体を起動したまま使用するか、Windows サービスとして登録します。常駐用の別プログラムはありません。既定では、エンコード中は PC のスリープを抑止します。

  3. 3 動作モードの設定

    設定 > 動作モードで「エージェント」を選択し、コントローラー側で控えたホスト名または IP アドレス、ポート、認証トークンを入力して保存すると、コントローラーへ参加します。表示名は任意です。「接続テスト」で、コントローラーのパスを直接読み書きできるかを確認できます。

2 台目以降は、設定画面の左下の「エクスポート」で書き出した設定を「インポート」で読み込むと、接続先・ポート・認証トークンなどの動作モードの設定をまとめて写せます。書き出したファイルには認証トークンと共有パスのパスワードが含まれるため、ほかの人が読める場所に置かないでください。

動作モードの設定画面。
設定 > 動作モードの画面です。コントローラー側とエージェント側の設定を、同じ画面で行います。
ファイルの受け渡し

直接モードと転送モードの自動選択

入力ファイルの受け渡しには 2 つの経路があり、ジョブごとに自動で選択します。コントローラーは、入力ファイルと出力フォルダーが共有パスに含まれない場合と、「この PC での場所」を確認できない場合に転送を指示します。それ以外の場合は、エージェントが、渡された入力ファイルを読み取れ、かつ出力フォルダーへ書き込めるかを確認し、できない場合は転送の経路を使用します。読み取りのみ可能な共有フォルダーの場合は、転送の経路になります。経路を指定する設定は必要ありません。

共有パスの指定は任意

共有パスを指定すると、そこに含まれるファイルのうちエージェントが直接読み書きできるものは転送を省略します。出力フォルダーと監視フォルダーは、指定しなくても自動的に共有パスへ加わります。コントローラーでドライブ文字(E:\Video など)として扱う場所は、共有パスの「この PC での場所」に指定すると、共有パスへ置き換えてエージェントへ渡します。置き換えないドライブ文字のパスは、エージェントの PC の同じパスとして開きます。共有パスに含まれない場所のファイルと、共有パスと「この PC での場所」が同じ場所を指していると確認できないファイルは、転送で受け渡します。

転送の順番と速度

エンコードを並列で実行している場合も、転送は 1 本ずつ順番に行います。同時に転送すると回線が飽和し、全体の処理が遅くなるためです。1 Gbps の LAN では、10 GB の転送に約 100 秒を要します。実際の転送速度は、設定 > ベンチマークの「ファイル転送ベンチマーク」で、接続中のエージェントとの間で測定できます。

一時フォルダーと空き容量

転送されたファイルはエージェント側の一時フォルダーに置き、成否にかかわらず処理後に削除します。エージェント側には、入力と出力の 2 ファイル分の空き容量が必要です。

経路の表示

転送を経由したジョブは、キューの「ノード」列に「ノード名 - 転送」と表示します。処理に時間を要した理由を、後から確認できます。変換の前に、エージェント側の設定の「接続テスト」で、パスごとに直接読み書きできるかとその理由を確認できます。

受信データの検証

コントローラーが受信した出力ファイルは、本来の名前に .part を付けた名前で書き込みます。宣言された長さと実際に書き込んだバイト数が一致しない場合は削除し、そのジョブのみを再試行します。一致した出力ファイルは、エージェントからの結果を採用した時点で本来の名前へ置き換えます。エージェントが受信した入力ファイルも、長さが一致しない場合は削除して使用しません。

ファイルの場所を含まない要求

受け渡しの要求に含めるのはジョブ番号と種別のみで、ファイルの場所は含めません。コントローラーは、そのジョブに渡した場所だけを開きます。記録にないジョブ番号の要求は拒否するため、要求によって任意のファイルを読み出せません。

障害時の動作

ノード停止時のジョブ回収と二重処理の防止

エージェントからの応答が一定時間途絶えると、コントローラーはそのノードを切断として扱い、処理中のジョブを待機へ戻します。エージェントからの進捗は短い間隔で届くため、一時的な通信の遅れでは回収しないよう、切断と判定するまでの時間には十分な余裕を持たせています。

二重処理を防ぐ 3 つの仕組み

1送信元のエージェントの照合

エージェントから届いた進捗と結果を、キュー上のジョブの担当ノードと照合します。担当でなくなっていた場合は、そのエージェントに処理の中止を指示します。

2遅れて届いた結果の選別

回収後にエージェントから届いた結果は、ジョブが待機のままで、変換が成功していた場合にのみ採用します。別のノードが処理中の場合、完了または失敗が確定している場合、変換が失敗していた場合は破棄します。

3仮の名前での書き込み

共有パスへの出力は、出力ファイル名に .part を付けて書き込み、エージェントから結果が届いてから本来の名前に確定します。

失敗の結果を採用しない理由改めて処理すれば成功する場合があるためです(GPU での一時的な失敗に対する CPU フォールバックなど)。
処理中の一覧にないジョブの回収エージェントが定期的に送信する処理中のジョブの一覧に含まれないジョブは回収します。ただし、割り当ての直後は回収しません。
結果の送信の再試行コントローラーが回収を判定する時間に収まる回数と間隔で再試行します。
ファイル転送の再試行再試行の負荷が大きいため、少ない回数で打ち切ります。

現在の制約

エージェントは、通信が回復するまでの間は、自身のジョブが回収されたことを把握できません。回収したジョブが別のノードへ割り当てられると、同じファイルを 2 台で処理する時間帯が生じます。通信が回復すると、次の進捗の送信に対する応答で中止を受け取り、処理を停止します。回収後もジョブが待機のままの間に成功の結果が届いた場合はその成果を採用するため、処理が無駄になるのは切断が長引いた場合に限られます。

コントローラーの PC の故障に備える構成例は、2 台目の活用例を参照してください。

エージェントとの接続が切れ、ジョブが待機へ戻ったメイン画面。
エージェント 1 台との接続が切れた状態の画面です。該当するジョブは待機へ戻り、「備考」列に理由を表示します。
指定とキャンセル

割り当て先の指定とキャンセル

割り当て先は通常コントローラーが自動で決定しますが、特定のジョブについては、処理するノードを指定できます。エージェントへ割り当て済みのジョブも、コントローラーからキャンセルできます。

割り当て先の指定

  • キューのジョブを右クリックし、「エンコード」から割り当て先を選択します。選択肢は「自動割り当て」と接続中のエージェントで、「コントローラー + エンコーダー」では「ローカル」も選択できます。
  • 指定した割り当て先は利用者の明示的な指定として扱い、応答の遅れや見積もりの超過を理由に、ほかのノードへ自動で振り替えません。
  • 指定したノードが切断などで参加していない状態になった場合は、一定の猶予を設けます。猶予の間に参加を確認できない場合は指定を解除し、警告をログと状態バーに表示します。通知せずに別のノードへ振り替えません。
  • 猶予の間に一度でも参加を確認できた場合は、猶予を初めから数え直します。

無期限に待機しないのは、無人運用で戻らないノードを待ち続けると、その間の処理時間がそのまま失われるためです。

キャンセル

次の進捗の送信で停止エンコード中のジョブ
次の定期通信で停止転送中・順番待ちのジョブ
  • エージェントはジョブを要求する側で、コントローラーから呼び出す経路を持ちません。そのため、エージェントが進捗を送信するたびに、コントローラーはその応答で処理の継続または中止を指示します。
  • エンコード中のジョブは、進捗が届くたびに判定するため短時間で停止します。転送中や順番待ちのジョブは、次の定期通信の時点で停止します。
  • 1 件をキャンセルしても、そのノードのほかの処理は停止しません。
  • キャンセルしたジョブは失敗ではなく待機へ戻り、後から再実行できます。
Wake-on-LAN と自動シャットダウン

エージェント PC の起動と停止

コントローラーは Wake-on-LAN で切断中のエージェント PC を起動し、エージェントはキューの完了後に自動でシャットダウンします。組み合わせると、エージェント PC の電源をジョブの処理中だけ入れて運用できます。Wake-on-LAN は Pro 以上のコントローラーで使用できます。自動シャットダウンは、接続先のコントローラーが Pro 以上の場合に動作します。エージェント PC にライセンスは不要です。

エージェント PC の電源が入っているのは、起動要求で起動してから、キューの完了後に停止するまでです。

Wake-on-LAN による起動

  • 切断中のエージェント PC へ起動要求を送信します。対象は MAC アドレスが分かるエージェントです。
  • 送信のきっかけは、エンコードの開始時・実行中の再送・ノード情報の「起動」です。
  • ログオンしていない状態でもコントローラーへ接続させるには、エージェント PC で本製品を Windows サービスとして登録します。

自動シャットダウン

  • キューが完了した状態が待機時間続くと、シャットダウン・強制シャットダウン・スリープ・休止状態のうち、選択した動作を実行します。
  • 実行する条件として、「Wake-on-LAN で起動された場合のみ」または「常に」を選択します。
  • 実行前に予告し、予告中はキャンセルできます。キューの完了後にキーボードやマウスを操作した場合は、最後の操作から一定時間は実行しません。
  • コントローラーとスタンドアロンも、キューの完了後に自動シャットダウンできます(Standard 以上)。

利用上の注意

  • エージェント PC の BIOS / UEFI と NIC で Wake-on-LAN を有効にしてください。設定の手順は、PC・マザーボード・NIC の製造元の資料を参照してください。Wake-on-LAN を有効にする設定と、有効にできない場合の対応は、本製品のサポートの対象外です。
  • 起動要求はブロードキャストで送信するため、同じサブネット内の PC にだけ届きます。
  • 強制シャットダウンでは、保存していない内容が失われます。
  • Wake-on-LAN による起動は、PC の機種、マザーボードと BIOS / UEFI のバージョンと設定、NIC とドライバー、Windows の電源の設定(高速スタートアップなど)、停止の方法(シャットダウン・スリープ・休止状態、電源ケーブルの抜き差し)、無線 LAN か有線 LAN か、スイッチやルーターなどのネットワーク機器と構成に依存します。自動シャットダウンのスリープと休止状態も、PC が対応していない場合があります。すべての環境での動作を保証するものではありません。運用を始める前に、エージェント PC ごとに起動と停止を確認してください。

設定項目と動作の条件の詳細は、ユーザーマニュアル: Wake-on-LAN と自動シャットダウンに記載しています。

運用上の注意

運用にあたっての注意事項

コントローラーとエージェントのバージョンの統一

コントローラーとエージェントは、同じバージョンの NyXGridEncode を使用してください。分散エンコードの通信のバージョンが異なると接続できません。コントローラーと異なるバージョンのエージェントがある場合は、ノード情報の「接続状態」に「▲」を付け、状態バーに台数を表示します。各 PC のバージョンは、ノードの詳細で確認できます。

ベンチマークによる並列数の決定

エージェントの並列数は、エージェントとして動作する PC の設定で指定し、その値がコントローラーへ自動で送信されます。実測で決めるには、実際に使用するプリセットで測定する必要があります。

  1. 1プリセットの取得

    プリセット編集の「コントローラーから取得」で、コントローラーのプリセットを取得します。

  2. 2測定

    設定 > ベンチマークで、取得したプリセットを選択して測定します。

  3. 3並列数への反映

    算出された推奨値を、設定 > エンコードの並列数へ反映します。

プリセットの取得に関する注意

「コントローラーから取得」を実行し、プリセット編集の「OK」で確定すると、その PC のプリセットはコントローラーのプリセットで一括して置き換えられ、元のプリセットは失われます。残す必要のあるプリセットは、事前にエクスポートしてください。取得したプリセットは測定にのみ使用し、エンコードはコントローラーから指定された設定で実行します。

プリセット編集の画面。
プリセット編集の画面です。エージェントとして動作している場合に、「コントローラーから取得」を使用できます。
ベンチマークの設定画面。
設定 > ベンチマークの画面です。GPU / CPU ベンチマークで並列数の推奨値を算出します。ファイル転送ベンチマークは、コントローラー側で使用します。