ジョブ管理システム

ジョブ管理システム(ジョブかんりシステム)とは、コンピュータ上での複数のジョブプログラムバッチ処理)の起動や終了を制御したり、ジョブの実行・終了状態の監視・報告などを行うソフトウェアである。「ジョブスケジューラ」、「タスクスケジューラ」とも呼ばれる。

なお、設定した時間にプログラムを起動するような単純なものを「タスクスケジューラ」と呼び、高度なもの(営業日や稼働日などの複数のカレンダーを持ち、複数のコンピュータ間の複雑なジョブ間の先行関係や例外処理を定義できるものなど)を「ジョブスケジューラ」と呼び分ける場合もある。比較的単純なものはオペレーティングシステムに標準装備されている場合も多い。

主な機能

ジョブ管理システムは、一般的に次のような機能を持つ。

ジョブのスケジューリング

複数あるジョブそれぞれの起動契機をスケジュールする。たとえば、毎日何時何分にジョブ A を起動するとか、ジョブ B が正常終了したらジョブ C を起動する等とかいったことである。WindowsUNIXなどのOS標準機能でも簡単な曜日・時刻指定の起動ができるが、ジョブ管理ソフトウェアでは複数のカレンダー、複雑な先行関係、ファイルトリガー、外部トリガーなどが組み合わせられるものが多い。

計算資源スケーリング

ジョブはしばしば高負荷・低頻度である(c.f. ストリーム処理)。すなわちジョブを実行する計算資源は常に100%利用されているのではなく、間欠的に高負荷がかかる形で利用される。効率的な計算資源利用のために、ジョブ管理システムはしばしば計算資源のスケーリングを提供する。例えばJobがない場合には全てのクラウドインスタンスを停止し、Job開始にあわせてインスタンスを起動、Job数が増えた場合にはインスタンスを一時的に増加させる[1]。オンプレミス環境の場合でも、高負荷時だけ一時的にクラウドへオフローディングできる。

ジョブの異常の報告

ジョブが実行時あるいは終了時に異常が発生した場合、メールやメッセージ等でオペレータに異常を報告する。

自動リトライ

ジョブは様々な理由から失敗しうる。その理由はエラー発生・プロセス停止・インスタンスダウンなど様々あり[2]、場合によってはJobをもう一度おこなう(リトライする)方が好ましい場合がある。ジョブ管理システムはJob失敗検出をトリガーとした自動リトライを提供する[3][4] (c.f. システム運用における復旧・自動修復。Jobは正常終了時にterminateするがサービスの場合はその数を維持する)。

ジョブの実行状態のログを保存

ジョブが出力したメッセージやジョブの終了ステータス等をログに保存する。

主な実装

システム管理

参考文献

関連項目

脚注

  1. ^ 「AWS Batch は、コンピューティングリソースを自動的にプロビジョニングし、ワークロードの量と規模に基づいてワークロードのディストリビューションを最適化します。」AWS Batch とは - AWS Batch
  2. ^ 「Pod内のコンテナは、その中のプロセスが0以外の終了コードで終了した、またはメモリー制限を超えたためにコンテナが強制終了されたなど、さまざまな理由で失敗する可能性があります。」Podおよびコンテナの障害の処理 - kubernetes
  3. ^ 「Jobは1つ以上のPodを作成し、指定された数のPodが正常に終了することを保証します。...さまざまな理由で失敗する可能性があり…場合、Podはノードに残りますが、コンテナは再実行されます。…Podが失敗した場合、Jobコントローラーは新しいPodを開始します。」Podおよびコンテナの障害の処理 - kubernetes
  4. ^ 「ジョブおよびジョブ定義に再試行戦略を適用し、失敗したジョブを自動的に再試行できます。」AWS Batch
  5. ^ 現行バージョン。JP1 Automatic Job Management System 2は「JP1/AJS2」と略した。