(57)【特許請求の範囲】
【請求項１】
ノード管理システムと、前記ノード管理システムから処理されるユーザ・ジョブ情報を受信するリソース・スケジューラと、リソース・スケジューラにより実行がスケジューリングされ、ユーザ・ジョブ・キューに保持された実ジョブの処理を行うローカル・ジョブ制御システム（ＬＪＣＳ）とを有し、分散処理システム内で前記ＬＪＣＳの外部のノード集合により開始されるユーザ・ジョブを処理する方法であって、
前記リソース・スケジューラによって前記ＬＪＣＳでの前記ユーザ・ジョブの存在を判別するため、前記リソース・スケジューラによって前記ＬＪＣＳのユーザ・ジョブ・キュー内のユーザ・ジョブを、バッチ・ジョブ・キュー内のユーザ・ジョブと比較するステップと、前記ユーザ・ジョブ・キューにリストされているが、前記バッチ・ジョブ・キューにリストされていないユーザ・ジョブとして新しいユーザ・ジョブを識別するステップと、
前記ＬＪＣＳによって実行される前記新しいユーザ・ジョブに対応し、前記新しいユーザ・ジョブが要求するノードの数を前記ＬＪＣＳから読取り、ウォールクロック時間を設定したマーカ・ジョブを、前記ノード管理システム内で前記リソース・スケジューラからの指令によって開始するステップと、
前記リソース・スケジューラにより指令された前記ノード管理システム内での前記マーカ・ジョブの開始の後、前記リソース・スケジューラの指令により前記ＬＪＣＳ内で前記ユーザ・ジョブを開始するステップと、
前記リソース・スケジューラが前記ユーザ・ジョブが終了または失敗したと判断したときに、前記リソース・スケジューラが前記ノード管理システムに対して前記リソース・スケジューラによって開始された前記マーカ・ジョブを終了させるステップとを含み、
前記ＬＪＣＳによる前記ユーザ・ジョブの実行開始を、前記リソース・スケジューラの前記マーカ・ジョブの開始に応答させ、前記マーカ・ジョブの終了を、前記ユーザ・ジョブがサクセスフルに完了するか失敗するかによる終了に応答させることにより、前記ＬＪＣＳの外部で前記ユーザ・ジョブの状態を管理する方法。
【請求項２】
前記マーカ・ジョブを開始するステップは、前記ノード管理システム内のバッチ・ジョブ・キューへ前記マーカ・ジョブを実行依頼する前記リソース・スケジューラによって先に実行され、前記ＬＪＣＳによる前記ユーザ・ジョブを開始するステップは、前記マーカ・ジョブを開始するステップに続いて、前記ノード管理システムでのジョブ・コマンド・ファイルの立ち上げに応答し、前記ジョブ・コマンド・ファイルは、前記分散処理システムのノード集合で前記ユーザ・ジョブを開始することを、前記ＬＪＣＳへ要求し、前記マーカ・ジョブの実行時間内に前記ユーザ・ジョブの実行時間が含まれる請求項１に記載の方法。
【請求項３】
前記ＬＪＣＳの前記ユーザ・ジョブ・キュー内の新しいユーザ・ジョブの識別に応じて、前記新しいユーザ・ジョブにあるジョブ情報を獲得し、前記新しいユーザ・ジョブによって要求されるノード数を読取り、前記新しいユーザ・ジョブによって要求される実行時間を見積もり、前記新しいユーザ・ジョブのジョブ名を獲得するステップと、ジョブ・コマンド・ファイルを作成して、前記ノード管理システムで新しいマーカ・ジョブを開始するために、前記ジョブ情報を使用するステップとを、さらに含む請求項１に記載の方法。
【請求項４】
前記ジョブ・コマンド・ファイルに応じて、前記ＬＪＣＳによる前記ユーザ・ジョブの開始を監視するステップと、前記ユーザ・ジョブが、第１の期間内で開始することに失敗する場合には、開始失敗を、前記ノード管理システムで保持されるエラー・ログに記録するステップとを、さらに含む請求項３に記載の方法。
【請求項５】
前記ＬＪＣＳによる前記ユーザ・ジョブの開始の後に、前記ウォールクロック時間である第２の期間を開始するステップと、前記ユーザ・ジョブの完了を監視するステップとをさらに含み、前記方法は、前記ユーザ・ジョブのサクセスフルな完了を伴わない前記第２の期間の満了時に、前記ユーザ・ジョブが実行することをキャンセルするステップと、前記ユーザ・ジョブを、前記ＬＪＣＳの実行キューから取り除くステップとを、さらに含む請求項４に記載の方法。
【請求項６】
前記ＬＪＣＳによる前記ユーザ・ジョブの完了の失敗を監視するステップと、前記失敗の検出時に、前記ユーザ・ジョブを前記ＬＪＣＳの実行キューから取り除き、前記ユーザ・ジョブを終了させるステップと、その後、前記リソース・スケジューラによって開始された前記マーカ・ジョブを終了するステップとを、さらに含む請求項１に記載の方法。
【請求項７】
ノード管理システムと、前記ノード管理システムから処理されるユーザ・ジョブ情報を受信するリソース・スケジューラと、リソース・スケジューラにより実行がスケジューリングされ、ユーザ・ジョブ・キューに保持された実ジョブの処理を行うローカル・ジョブ制御システム（ＬＪＣＳ）とを有し、分散処理システム内で前記ＬＪＣＳの外部のノード集合により開始されるユーザ・ジョブを処理するシステムであって、
前記リソース・スケジューラによって前記ＬＪＣＳでの前記ユーザ・ジョブの存在を判別するため、前記ＬＪＣＳのユーザ・ジョブ・キュー内のユーザ・ジョブを、前記バッチ・ジョブ・キュー内のユーザ・ジョブと比較し、前記ユーザ・ジョブ・キューにリストされているが、バッチ・ジョブ・キューにリストされていないユーザ・ジョブとして新しいユーザ・ジョブを識別し、前記ＬＪＣＳによって実行される前記新しいユーザ・ジョブに対応し、前記新しいユーザ・ジョブが要求するノードの数を前記ＬＪＣＳから読取り、ウォールクロック時間を設定したマーカ・ジョブを、前記ノード管理システム内で開始させる手段を有するリソース・スケジューラと、
前記リソース・スケジューラにより指令された前記ノード管理システム内での前記マーカ・ジョブの開始の後、前記リソース・スケジューラの指令により前記ＬＪＣＳ内で前記ユーザ・ジョブを開始させる手段と、
前記リソース・スケジューラが、前記ユーザ・ジョブが終了または失敗したと判断したときに、前記リソース・スケジューラが前記ノード管理システムに対して前記リソース・スケジューラによって開始された前記マーカ・ジョブを終了させる手段とを含み、
前記ＬＪＣＳによる前記ユーザ・ジョブの実行開始を、前記リソース・スケジューラの前記マーカ・ジョブの開始に応答させ、前記マーカ・ジョブの終了を、前記ユーザ・ジョブがサクセスフルに完了するか失敗するかによる終了に応答させることにより、前記ＬＪＣＳの外部で前記ユーザ・ジョブの状態を管理するシステム。
【請求項８】
前記リソース・スケジューラは、さらに、前記マーカ・ジョブを、前記ノード管理システム内のバッチ・ジョブ・キューへ実行依頼する手段を備え、前記ＬＪＣＳによる前記ユーザ・ジョブを開始する前記手段は、前記マーカ・ジョブの開始に続く前記ノード管理システムでのジョブ・コマンド・ファイルの立ち上げに応答し、前記ジョブ・コマンド・ファイルは、前記分散処理システムのノード集合で前記ユーザ・ジョブを開始することを、前記ＬＪＣＳへ要求し、前記マーカ・ジョブの実行時間内に前記ユーザ・ジョブの実行時間が含まれる請求項７に記載のシステム。
【請求項９】
前記ＬＪＣＳの前記ユーザ・ジョブ・キュー内の新しいユーザ・ジョブの識別に応じて、前記新しいユーザ・ジョブにあるジョブ情報を獲得し、前記新しいユーザ・ジョブによって要求されるノード数を読取り、前記新しいユーザ・ジョブによって要求される実行時間を見積もり、前記新しいユーザ・ジョブのジョブ名を獲得する手段と、ジョブ・コマンド・ファイルを作成して、前記ノード管理システムで新しいマーカ・ジョブを開始するために、前記ジョブ情報を使用する手段とを、さらに備える請求項７に記載のシステム。
【請求項１０】
前記ジョブ・コマンド・ファイルに応じて、前記ＬＪＣＳによる前記ユーザ・ジョブの開始を監視する手段と、前記ユーザ・ジョブが、第１の期間内で開始することに失敗する場合には、開始失敗を、前記ノード管理システムで保持されるエラー・ログに記録する手段とを、さらに備える請求項９に記載のシステム。
【請求項１１】
前記ＬＪＣＳによる前記ユーザ・ジョブの開始の後に、前記ウォールクロック時間である第２の期間を開始する手段と、前記ユーザ・ジョブの完了を監視する手段とをさらに備え、前記システムは、前記ユーザ・ジョブのサクセスフルな完了を伴わない前記第２の期間の満了時に、前記ユーザ・ジョブが実行することをキャンセルする手段と、前記ユーザ・ジョブを、前記ＬＪＣＳの実行キューから取り除く手段とを、さらに備える請求項１０に記載のシステム。
【請求項１２】
前記ＬＪＣＳによる前記ユーザ・ジョブの完了の失敗を監視する手段と、前記失敗の検出時に、前記ユーザ・ジョブを前記ＬＪＣＳの実行キューから取り除き、前記ユーザ・ジョブを終了させる手段と、その後、前記リソース・スケジューラによって開始された前記マーカ・ジョブを終了する手段とを、さらに備える請求項７に記載のシステム。
【請求項１３】
請求項１乃至請求項６のいずれかに記載の方法を装置に対して実行させるためのプログラムを記憶した機械可読な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的にはデータ処理方法に関し、特に、ジョブ・スケジューリング機能が不十分な先在“ローカル”ジョブ制御システムを有する分散処理システム内での、外部ジョブ・スケジューリング方法に関する。
【０００２】
【従来の技術】
ネットワークによって接続され、適切なソフトウェア及び管理方針によって統一された自律マシンの集合体は、それ自体がコンピュータ・システムである。このネットワーク・ベースのコンピュータ・システムの概念は、コンピュータ産業において、ますます重要になりつつある。ネットワーク・ベースのコンピュータは、クライアント／サーバ・コンピューティング及びクライアント／サーバ関係の強調以上のものを含む。ネットワーク・ベースのコンピューティングにおいて、サービス（もしくはリソース）は、より一般的な概念になり、もはや、単一のマシンに拘束される必要がない。むしろ、サービスは、ネットワーク・ベースのコンピュータ全体の一つの特徴となる。ネットワーク・ベースのコンピュータ、あるいは環境は、例えば、ローカル・エリア・ネットワーク上のユーザ・ワークステーション及びサーバ・マシンの異機種集合において、高速ネットワークによって接続された個別のプロセッサからなる特殊目的の“クラスタ化”マシンにおいて、または、いくつかのこのような環境を相互に接続する、学校、企業又はグローバル・ネットワークにおいて、など多数の状況において発生する。
【０００３】
これら環境の全てにおいて、重要な要素はリソース管理システムであり、リソース管理システムの重要な側面は、ジョブ・スケジューリング機能である。多くの場合、分散処理システムは、分散システム内のジョブ管理に対して既存の手法を有することができる。ここでは“ローカル・ジョブ制御システム”と称されるこの既存の手法は、初歩的なジョブ・スケジューリング機能を備えてもよく、あるいは備えなくともよい。多くのこのようなシステムにおいて、ジョブ・スケジューリングは、システムのオペレータ又はユーザがジョブを開始し、ローカル・ジョブ制御システムが単にジョブの進行を監視するという点で、手動的であると考えられる。
【０００４】
【発明が解決しようとする課題】
様々な理由で、出願人は、拡張及び自動外部ジョブ・スケジューリング機能をローカル・システムに与えながら、同時に、ローカル・ジョブ制御システムを保持することが望ましいとの結論に至った。
【０００５】
【課題を解決するための手段】
発明の概要として、本発明は、一態様として、処理されるユーザ・ジョブを受信するローカル・ジョブ制御システム（ＬＪＣＳ）を有する分散処理システム内でジョブを処理する方法を含み、この方法は、ＬＪＣＳによって実行されるユーザ・ジョブに対応するマーカ・ジョブをローカル・ジョブ制御システムの外部にあるリソース・スケジューラによって開始するステップと、リソース・スケジューラによるマーカ・ジョブの開始に応じて、ＬＪＣＳによってユーザ・ジョブを開始するステップと、ユーザ・ジョブの終了時に、リソース・スケジューラによって開始されたマーカ・ジョブを終了するステップとを含み、ＬＪＣＳによるユーザ・ジョブの開始は、リソース・スケジューラのマーカ・ジョブの開始に応答し、マーカ・ジョブの終了は、ＬＪＣＳによるユーザ・ジョブの終了に応答する。
【０００６】
もう一つの態様として、分散処理システム内でジョブを処理するシステムを提供する。この分散処理システムは、処理されるユーザ・ジョブを受信するローカル・ジョブ制御システム（ＬＪＣＳ）を有する。このシステムは、ＬＪＣＳの外部に配置されたリソース・スケジューラを備え、リソース・スケジューラは、マーカ・ジョブを開始する手段を有し、マーカ・ジョブは、ＬＪＣＳによって実行されるユーザ・ジョブに対応する。このシステムは、さらに、リソース・スケジューラによるマーカ・ジョブの開始に応じて、ＬＪＣＳによってユーザ・ジョブを開始する手段と、ユーザ・ジョブの終了時に、リソース・スケジューラによって開始されたマーカ・ジョブを終了する手段とを備える。従って、ＬＪＣＳによりユーザ・ジョブを開始する手段は、リソース・スケジューラのマーカ・ジョブを開始する手段に応答し、マーカ・ジョブを終了する手段は、ユーザ・ジョブの終了に応答する。
【０００７】
さらなる態様として、処理されるユーザ・ジョブを受信するローカル・ジョブ制御システム（ＬＪＣＳ）を有する分散処理システム内でジョブを処理する方法を実行するための、機械によって実行可能な命令の少なくとも一つのプログラムを有形的に具体化する、少なくとも一つの機械可読プログラム記憶装置を提供する。本方法は、ＬＪＣＳによって実行されるユーザ・ジョブに対応するマーカ・ジョブをＬＪＣＳの外部にあるリソース・スケジューラによって開始するステップと、リソース・スケジューラによるマーカ・ジョブの開始に応じて、ＬＪＣＳによってユーザ・ジョブを開始するステップと、ユーザ・ジョブの終了時に、リソース・スケジューラによって開始されたマーカ・ジョブを終了するステップとを含み、ＬＪＣＳによるユーザ・ジョブの開始は、リソース・スケジューラのマーカ・ジョブの開始に応答し、マーカ・ジョブの終了は、ユーザ・ジョブの終了に応答する。
【０００８】
言い換えれば、ここでは、独自のジョブ・スケジューラを有することももしくは有さないこともできる先在ジョブ制御ファシリティに、リソース・スケジューリング機能を加える方法を提供する。本方法は、ローカル・ジョブ制御システムでのユーザ・ジョブの実行を、リソース・スケジューラによるマーカ・ジョブの開始と終了の中に閉じこめるステップを含む。リソース・スケジューラは、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  （ＩＢＭ）  Ｃｏｒｐによって提供されるＬｏａｄ  Ｌｅｖｅｌｅｒプログラムのようなノード管理システムを利用すると好ましい。この方法を使用することにより、クライアントは、システムに付加された自動ジョブ・スケジューリング機能を備えながら、同時にローカル・ジョブ制御システムの既存インターフェースを保持することが可能となる。さらに、これらの機能は、基礎をなす、先在ローカル・ジョブ制御システムへの変更を最小限に抑えながら提供される。
【０００９】
提示する解決方法は、本解決方法における複数のコード間、すなわち、外部リソース・スケジューラ、ノード管理システム、及びローカル・ジョブ制御システムの間の、同期はずれエラーのどんな機会も効果的にクローズする。さらに、本発明の解決方法は、ノード管理システム及びローカル・ジョブ制御システムの上に外部スケジューラを追加する簡潔かつ堅固なインプリメンテーションである。カスタマのコード（すなわち、ローカル・ジョブ制御システム）は、スケジューリング・サブシステム間の同期をサポートするためには、高価な変更なしに保存される。カスタマ・コードをノード管理システム／外部リソース・スケジューラの制御に従属させることにより、ノード管理システム・データの調査は、カスタマ・タスクの進行に関する完全な情報を提供する。
【００１０】
【発明の実施の形態】
図１は、本発明を使用できる分散コンピュータ・システム１００の略図である。分散コンピュータ・システム１００は、Ｎｅｗ  Ｙｏｒｋ；ＡｒｍｏｎｋのＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎから入手できるＩＢＭ  ＲＩＳＣ  Ｓｙｓｔｅｍ／６０００  Ｓｃａｌａｂｌｅ  ＰＯＷＥＲｐａｒａｌｌｅｌ  Ｓｙｓｔｅｍ  （ＳＰ）分散コンピュータ・システムとすることができる。図１に示された実施の形態は、総計８個のフレームを有し、各フレームは、１６個のノードを有するので、総計１２８個のノードを備えるＳＰコンピュータである。ノード１０６の全ては、ローカル・エリア・ネットワーク（ＬＡＮ）１０２によって結合されている。それぞれのノード１０６は、それ自体コンピュータであり、当業者によって周知のように、ＲＩＳＣ  Ｓｙｓｔｅｍ／６０００ワークステーションとすることができる。
【００１１】
ＳＰコンピュータ１００の１フレーム内のノードの全ては、ＬＡＮセグメント内に含まれる。このＬＡＮセグメントは、ＬＡＮゲート１０４を介して他のＬＡＮセグメントにより結合されている。ＳＰコンピュータ１００のオペレーションを制御するコントロール・ワークステーション（ＣＷＳ）１１２も、ＬＡＮ１０２に接続されている。コントロール・ワークステーションは、システム共用ディスクと称され、その上にシステム・データ・リポジトリー（ＳＤＲ）ファイルが格納されるダイレクト・アクセス記憶装置（ＤＡＳＤ）１１４を有する。ＳＤＲファイルは、システム内にあるノード及びノードの構成のリストのような情報を含み、及び、ノード１０６の各々に対してのリソース及びオブジェクト定義を含む。各ノード１０６は、また、ＳＰコンピュータ１００によって処理されたデータを格納するＤＡＳＤ装置１０７を有する。
【００１２】
一実施形態では、各フレーム内のノードは、ＩＢＭ  Ｓｃａｌａｂｌｅ  ＰＯＷＥＲｐａｒａｌｌｅｌ  スイッチ（ＳＰＳ）１０５にも接続される。各フレームのＳＰＳスイッチ１０５の各々は、他のフレームの隣接するＳＰＳスイッチ１０５にバス１１０によって接続される。
【００１３】
技術上良く理解されているように、ＣＷＳノード１１２は、システム・データ及び制御信号を、ＬＡＮ１０２によってＳＰコンピュータ１００のフレームへ送信する。他方、メッセージ及びデータは、高性能スイッチ１０５によってノード１０６のうちの１つのノードから他のノードへ送ることができる。
【００１４】
また、図１には、ＩＢＭ  Ｌｏａｄ  Ｌｅｖｅｌｅｒ  Ｐａｒａｌｌｅｌ  Ｂａｔｃｈ  Ｓｃｈｅｄｕｌｅｒのような、内部タスク又はジョブ・スケジューラが、外部スケジューラと共に示されている（これらは点線によって分離され、参照番号１１３が付されている）。Ｌｏａｄ  Ｌｅｖｅｌｅｒ  ＰａｒａｌｌｅｌＢａｔｃｈ  Ｓｃｈｅｄｕｌｅｒは、ＩＢＭによって販売される商業的に入手可能な製品である。そして、図１において別個のブロックとして示されているが、実際は、分散処理システムの各ノード上に常駐する分散スケジューラである。バッチ・システム制御であることに加えて、Ｌｏａｄ  Ｌｅｖｅｌｅｒプログラムは、ジョブ・スケジューラでもある。しかし、本発明の原理に従えば、外部ジョブ・スケジューラは、ジョブ処理のアドミニストレータ制御のために、分散システムに結合される。技術上、このような外部スケジューラの例が存在する。例えば、ウェブ・ページ：ｈｔｔｐ：／／ｗｗｗ．ｔｃ．ｃｏｒｎｅｌｌ．ｅｄｕで公に入手可能である、Ｅａｓｙ―ＩＩ  Ｐａｒａｌｌｅｌ  Ｊｏｂ  Ｓｃｈｅｄｕｌｅｒを参照されたい。
【００１５】
商業的に入手可能な外部ジョブ・スケジューラのもう一つの例は、Ｈａｗａｉｉ；ＭａｕｉのＭａｕｉ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ  ＣｅｎｔｅｒによってサポートされるＭａｕｉ  Ｅｘｔｅｒｎａｌ  Ｓｃｈｅｄｕｌｅｒである。本発明の一実施形態に従えば、ここで開示されるプログラム・コードは、Ｅａｓｙ―ＩＩあるいはＭａｕｉ  Ｓｃｈｅｄｕｌｅｒｓ（これらは、単に一例としてここに提示される）のような外部ジョブ・スケジューラに対する機能強化であり、及び、上述のＬｏａｄ  Ｌｅｖｅｌｅｒプログラムのようなバッチ・システム制御に対する機能強化である。
【００１６】
上述したように、本発明は、ここではローカル・ジョブ制御システムと称されるカスタマのジョブ制御ソフトウェアを保持しながら、パラレル・ジョブ・スケジューリングの問題を解決することに関する。Ｌｏａｄ  Ｌｅｖｅｌｅｒのようなノード管理システムを利用する、分散処理システムにおける一般的な調整問題に対する解決方法が提供される。この解決方法では、カスタマが、例えばその習熟性の故に、最低限の変更で維持したいと望み得る先在ローカル・ジョブ制御システムの他に、外部又は特殊リソース・スケジューラ（ＳＲＳ）を備える。図２は、本発明の原理に従ったジョブ・スケジューリング・ロジック（２００で示される）の一実施形態を示す。ロジック２００は、バッチ・ジョブ・キュー２１５を有する、上述のＬｏａｄ  Ｌｅｖｅｌｅｒシステムのようなノード管理システム２１０を含む。ノード管理システム２１０の外部には、スケジューリング及び制御ロジック２２０がある。このロジック２２０は、この実施の形態において、（上述のＥａｓｙ―ＩＩもしくはＭａｕｉ  Ｓｃｈｅｄｕｌｅｒのような）特殊リソース・スケジューラ（ＳＲＳ）２３０と、分散処理システムによって実行されるユーザ又は実ジョブを収容するユーザ・ジョブ・キュー２４５を有するローカル・ジョブ制御システム（ＬＪＣＳ）２４０とを含む。
【００１７】
動作的には、ＳＲＳ２３０は、ノード／ジョブ特殊リソース・マッチングによるバックフィル・スケジューリングを実行する。ＳＲＳ２３０は、ノード及びジョブ情報を、ノード管理システム２１０から受信し、この情報をスケジューリング決定に使用する。本発明の原理に従えば、ＳＲＳ２３０は、ノード管理システム２１０で“マーカ・ジョブ”を開始させ、続いてノード管理システム２１０内でビルド・コマンド・ファイル・ルーチンを開始させ、ＬＪＣＳ２４０へジョブ・コマンドを送信し、ユーザ・ジョブ・キュー２４５で保持される実ジョブの処理を開始させる。従って、ローカル・ジョブ制御システムでのキュー管理プログラムは、ノード管理システムでのマーカ・ジョブの開始によって、リソース・スケジューラに応答する。ＬＪＣＳによる実ジョブの処理は監視され、その完了あるいは失敗の際に、ＳＲＳは、ノード管理システムでのマーカ・ジョブを終了させる。従って、ＬＪＣＳにおいて実行される実ジョブあるいは認証ジョブは、マーカ・ジョブの開始と終了との間に閉じこめられる。
【００１８】
特に、外部スケジューラ２３０は、ノード管理システム２１０からスケジューリング・インターフェースを介して、全てのノード及びジョブ情報を獲得する。ＳＲＳ２３０は、各スケジューリング・パスに対して、一回この情報を読取る。その結果、ジョブ・キュー内のノード状態の瞬間スナップショットを使用して、瞬時に各スケジューリング決定がなされる。各スケジューリング・パスの完了時に、ノード管理システム情報は廃棄される。次のパスの開始時に、ノード管理システム２１０から情報が再びロードされ、これにより、管理システムが検出した変更状態をリフレッシュする。要するに、外部スケジューラ２３０は、一時的にノード管理システム２１０の情報を扱う。ノード管理システムの拡張データベース機能に依存することにより、関連データ構造の余分なコピーを、外部スケジューラ内に複製する必要がない。これは、ノード管理システムとＳＲＳとの間の非同期状態の発生を防止する。
【００１９】
任意のカスタマ所有のジョブ管理プログラムに対して、一時的にノード及びジョブ情報を取り扱うことの制限を付加することは、カスタマのプログラムの拡張再書込みを要求できる。多くの場合、ローカル・ジョブ制御システムは、分散システム上のパラレル・ジョブの進行を追跡するために、一組のジョブ・キューを保持する。ノード管理システムと特殊リソース・スケジューラとの組合せが、ジョブの開始を決定すると、ローカル・ジョブ制御システムは、ジョブの進行を追跡することを引継ぐ。しかしながら、ジョブ情報は、現在、ＬＪＣＳ及びノード管理システムの両方に存在する。ジョブが、これらのコードの一方において状態を変更する場合には、他方のコードは、その事象を知らなければならない。このコミュニケーションは、ノード管理システムとローカル・ジョブ制御システムとの間のジョブ状態が一致しない同期はずれエラーを防止するために、密に結合されなければならない。
【００２０】
この問題に対する一つの解決方法は、図３および図５の疑似コードにおいて説明される。ユーザがＬＪＣＳへジョブの実行を依頼すると、ジョブは、ユーザ・ジョブ・キュー２４５に作成される。ＳＲＳの次のパスで、ノード及びジョブ・キュー情報が、ノード管理システム２１０から最初に読み取られる。次に、リソース・スケジューラは、ＬＪＣＳユーザ・ジョブ・キュー２４５をバッチ・ジョブ・キュー２１５と比較する。ジョブが、ＬＪＣＳキューに存在するが、ノード管理システム・キューに存在しない場合には、新しいユーザ・ジョブが検出される。スキャナ・ルーチンは、次に、“マーカ・ジョブ”としてノード管理システムへの実行依頼をするため、対応するノード管理システム・ジョブ・コマンド・ファイルを作成する。ノード管理システム・コマンド・ファイル内で実行可能な手順（シェル・スクリプト）は、図５において示されるステップを含む。これらのステップ内のロジックは、システムにおけるジョブに対して、正確な開始及び終了のシーケンスが続くことを保証する。特に、ノード管理システム・ジョブが最初に開始し、それからＬＪＣＳジョブを立ち上げる。ノード管理システム・ジョブは、ＬＪＣＳジョブの全所要時間の間、実行状態のままである。ＬＪＣＳジョブが、サクセスフルに完了するか失敗するかのどちらかで終了すると、ノード管理システムがマーカ・ジョブを終了する前に、ＬＪＣＳが最初に終了する。その結果、ノード管理システム・ジョブがアクティブである期間は、常に、ＬＪＣＳジョブの所要時間を包含する。
【００２１】
上術した処理を、図４，６，７のフローチャートを参照して、以下に詳細に説明する。
【００２２】
図４は、例えば、（図２の）ＳＲＳ２３０において実行される、ＬＪＣＳでのユーザ・ジョブ検出のためのロジックを示す。新しいユーザ・ジョブの検出は、ノード及びバッチ・ジョブ・キュー情報を、ノード管理システム（Ｌｏａｄ  Ｌｅｖｅｌｅｒについては、図４，６，７においてＬＬと表示される）から読取り（ステップ３００）、及びＬＪＣＳ内のユーザ・ジョブ・キューから読取る（ステップ３１０）ことによって開始する。それぞれのパスに対して（ステップ３２０）、処理は、キュー内の全てのジョブが考慮されたか否かを、すなわち、リストの終りに達したか否かを判別する（ステップ３３０）。達した場合には、検出処理は、完了する（ステップ３４０）。
【００２３】
達しない場合には、処理は、ＬＪＣＳ内のユーザ・ジョブ・キューにリストされたジョブが存在するが、ノード管理システム内のバッチ・ジョブ・キューには存在しないか否かを判別する（ステップ３５０）。この照会は、ユーザ・ジョブ・キュー内の各ジョブに対して行われる。ユーザ・ジョブ・キュー内のそれぞれの新しいジョブに対して、ロジックは、次に、ジョブによって要求されるノードの数をＬＪＣＳから読取り、要求されるウォールクロック時間（ｗａｌｌ  ｃｌｏｃｋ  ｔｉｍｅ）を見積もり、そして、ジョブの名前を獲得することにより、そのジョブ情報を獲得する（ステップ３６０）。ビルド・コマンド・ファイル・ルーチンが、ノード管理システムのバッチ・ジョブ・キュー内の対応するマーカ・ジョブを実行するためにコールされる（ステップ３７０）。ノード管理システムにマーカ・ジョブが存在すると、ジョブは、ノード管理システム内のバッチ・ジョブ・キューに配置される（ステップ３８０）。
【００２４】
図６は、例えば、（図２の）リソース・スケジューラ２３０内で実行される、ビルド・コマンド・ファイル・ルーチンをセットアップするロジックを示す。このロジックは、ノード管理システム・コマンド・ファイル・キーワード、入出力及びエラー・ディレクトリ，ノードの数，及び新しいジョブに対するウォールクロックの見積もりのセットアップを含む（ステップ４００）。さらに、コマンド・ファイルは、ノード管理システム（ここでは、ＬＬタスク）上でマーカ・ジョブを実行するためのランタイム・ルーチンのコールをインクルードし（ステップ４１０）、この後、処理は完了する（ステップ４２０）。
【００２５】
図７は、ノード管理システムでマーカ・ジョブを実行するランタイム・ルーチンについての一実施形態を示す。このロジックは、一例として、ノード管理システム内で実現される。ノード管理システム上のマーカ・ジョブの開始に応答して、ローカル・ジョブ制御システムにおける実ジョブが開始される（ステップ４５０）。タイマＴ１がセットされ（ステップ４６０）、処理は、ＬＪＣＳにおいて実ジョブが開始したか否かを照会する（ステップ４７０）。実ジョブが開始していない場合には、処理は、タイマＴ１が満了したか否かを判別する（ステップ４８０）。ジョブが開始する前にタイマが満了する場合には、ジョブは開始に失敗し（ステップ４９０）、開始失敗が、ノード管理システムによって保持されるエラー・ログに記録され（ステップ５００）、その後、処理が、このマーカ・ジョブに対して終了される（ステップ５１０）。
【００２６】
ジョブが開始した後に、第２のタイマＴ２が開始され（ステップ５２０）、処理は、ジョブがＬＪＣＳの実行キューを終了したか否かを照会する（ステップ５３０）。終了した場合には、ジョブは、サクセスフルに完了し（ステップ５４０）、処理は終了して、ノード管理システムでのマーカ・ジョブが終了することを許可する。ジョブがＬＪＣＳの実行キューを終了する前に、タイマＴ２が満了した場合には（ステップ５５０）、エラーが発生し、ジョブがローカル・ジョブ制御システムからキャンセルされる（ステップ５６０）。処理は、ジョブが実行キューを終了するまで待機し（ステップ５７０）、その後、ノード管理システムにおけるマーカ・ジョブが終了可能となる。
【００２７】
当業者は、上記の詳細な説明から、ここで提示された解決方法は、複数のコードの間で、すなわち、外部リソース・スケジューラと、ノード管理システムと、ローカル・ジョブ制御システムとの間で、同期はずれエラーが発生するどんな機会も効果的になくすことが分かるであろう。さらに、ローカル・ジョブ制御システム・コードは、スケジューリング・サブシステム間の同期をサポートするためには、著しい変更を伴わずに保存される。カスタマ・コードをノード管理システム／外部リソース・スケジューラの制御に従属させることにより、ノード管理システム・データの調査は、カスタマ・タスクの進行に関する完全な情報を提供する。
【００２８】
本発明は、例えば、コンピュータ可用な媒体を有する製造物品（例えば、一つ以上のコンピュータプログラム製品）内に含めることができる。この媒体は、その中で、例えば、本発明の機能を提供および促進する手段としてのコンピュータ可読プログラムコードを具体化する。この製造物品は、コンピュータシステムの一部として含めることができ、また、別々に販売することもできる。
【００２９】
それに加えて、本発明の機能を実行するために、機械によって実行可能な命令の少なくとも一つのプログラムを有形的に具体化する、少なくとも一つの機械可読プログラム記憶装置を提供することができる。
【００３０】
ここに示された流れ図は、例示として提供されたものである。本発明の趣旨に反することなしに、ここで述べられたこれらの図もしくはステップ（またはオペレーション）に対するバリエーションが存在し得る。例えば、ある場合においては、ステップは、異なる順番で実行可能であり、また、ステップは、付加、削除、又は修正可能である。これらのバリエーションの全ては、請求の範囲に記載された本発明の一部を含むと判断される。
【００３１】
いくつかの好ましい実施の形態に従って、本発明を詳細に述べてきが、当業者によれば、多くの修正や変更を行うことができる。従って、本発明の範囲および本発明の真の趣旨に含まれるそのような修正や変更の全てをカバーすることが、請求の範囲によって意図されている。
【００３２】
まとめとして、本発明の構成に関して以下の事項を開示する。
（１）処理されるユーザ・ジョブを受信するローカル・ジョブ制御システム（ＬＪＣＳ）を有する分散処理システム内でジョブを処理する方法であって、
前記ＬＪＣＳによって実行されるユーザ・ジョブに対応するマーカ・ジョブを前記ＬＪＣＳの外部にあるリソース・スケジューラによって開始するステップと、
前記リソース・スケジューラによる前記マーカ・ジョブの開始に応じて、前記ＬＪＣＳによって前記ユーザ・ジョブを開始するステップと、
前記ユーザ・ジョブの終了時に、前記リソース・スケジューラによって開始された前記マーカ・ジョブを終了するステップとを含み、
前記ＬＪＣＳによる前記ユーザ・ジョブの開始は、前記リソース・スケジューラの前記マーカ・ジョブの開始に応答し、前記マーカ・ジョブの終了は、前記ユーザ・ジョブの終了に応答する方法。
（２）前記リソース・スケジューラによる前記マーカ・ジョブの前記開始の前に、前記ＬＪＣＳで前記ユーザ・ジョブの存在を判別するステップを、さらに含む上記（１）に記載の方法。
（３）前記判別するステップは、前記リソース・スケジューラによって開始される上記（２）に記載の方法。
（４）前記リソース・スケジューラは、前記リソース・スケジューラ及び前記ＬＪＣＳの外部にあるノード管理システムを利用して前記マーカジョブを開始し、前記マーカ・ジョブは前記ノード管理システムに存在するが、前記ＬＪＣＳに存在しない上記（１）に記載の方法。
（５）前記マーカ・ジョブの前記開始は、前記ノード管理システム内のバッチ・ジョブ・キューへ前記マーカ・ジョブを実行依頼する前記リソース・スケジューラに先行され、前記ＬＪＣＳによる前記ユーザ・ジョブの前記開始は、前記マーカ・ジョブの開始に続く前記ノード管理システムでのジョブ・コマンド・ファイルの立ち上げに応答し、前記ジョブ・コマンド・ファイルは、前記分散処理システムのノード集合で前記ユーザ・ジョブを開始することを、前記ＬＪＣＳへ要求し、前記マーカ・ジョブの実行は、前記ユーザ・ジョブの実行を包含する上記（４）に記載の方法。
（６）前記リソース・スケジューラによる前記マーカ・ジョブの開始の前に、前記ＬＪＣＳで前記ユーザ・ジョブの存在を判別するステップをさらに含み、前記判別するステップは、前記ＬＪＣＳのユーザ・ジョブ・キュー内のユーザ・ジョブを、前記ノード管理システムによって保持されるバッチ・ジョブ・キュー内のマーカ・ジョブと比較するステップと、前記ユーザ・ジョブ・キューにリストされているが、前記バッチ・ジョブ・キューにリストされていないジョブとして新しいユーザ・ジョブを識別するステップとを含む上記（４）に記載の方法。
（７）前記ＬＪＣＳの前記ユーザ・ジョブ・キュー内の新しいユーザ・ジョブの識別に応じて、前記新しいユーザ・ジョブにあるジョブ情報を獲得し、前記新しいユーザ・ジョブによって要求されるノード数を読取り、前記新しいユーザ・ジョブによって要求される実行時間を見積もり、前記新しいユーザ・ジョブのジョブ名を獲得するステップと、コマンド・ファイルを作成して、前記ノード管理システムで新しいマーカ・ジョブを開始するために、前記ジョブ情報を使用するステップとを、さらに含む上記（６）に記載の方法。
（８）前記ジョブ・コマンド・ファイルに応じて、前記ＬＪＣＳによる前記ユーザ・ジョブの開始を監視するステップと、前記ユーザ・ジョブが、第１の期間内で開始することに失敗する場合には、開始失敗を、前記ノード管理システムで保持されるエラー・ログに記録するステップとを、さらに含む上記（７）に記載の方法。
（９）前記ＬＪＣＳによる前記ユーザ・ジョブの開始の後に、第２の期間を開始するステップと、前記ユーザ・ジョブの完了を監視するステップとをさらに含み、前記方法は、前記ユーザ・ジョブのサクセスフルな完了を伴わない前記第２の期間の満了時に、前記ユーザ・ジョブが実行することをキャンセルするステップと、前記ユーザ・ジョブを、前記ＬＪＣＳの実行キューから取り除くステップとを、さらに含む上記（８）に記載の方法。
（１０）前記ＬＪＣＳによる前記ユーザ・ジョブの完了の失敗を監視するステップと、前記失敗の検出時に、前記ユーザ・ジョブを前記ＬＪＣＳの実行キューから取り除き、前記ユーザ・ジョブを終了させるステップと、その後、前記リソース・スケジューラによって開始された前記マーカ・ジョブを終了するステップとを、さらに含む上記（１）に記載の方法。
（１１）処理されるユーザ・ジョブを受信するローカル・ジョブ制御システム（ＬＪＣＳ）を有する分散システム内でジョブを処理するシステムであって、
前記ＬＪＣＳの外部にあって、前記ＬＪＣＳによって実行されるユーザ・ジョブに対応するマーカ・ジョブを開始する手段を有するリソース・スケジューラと、
前記リソース・スケジューラによる前記マーカ・ジョブの開始に応じて、前記ＬＪＣＳによって前記ユーザ・ジョブを開始する手段と、
前記ユーザ・ジョブの終了時に、前記リソース・スケジューラによって開始された前記マーカ・ジョブを終了する手段とを備え、
前記ＬＪＣＳにより前記ユーザ・ジョブを開始する手段は、前記リソース・スケジューラの前記マーカ・ジョブを開始する手段に応答し、前記マーカ・ジョブを終了する前記手段は、前記ユーザ・ジョブの終了に応答するシステム。
（１２）前記リソース・スケジューラによる前記マーカ・ジョブの前記開始の前に、前記ＬＪＣＳで前記ユーザ・ジョブの存在を判別する手段を、さらに備える上記（１１）に記載のシステム。
（１３）前記判別する手段は、前記リソース・スケジューラによって開始される上記（１２）に記載のシステム。
（１４）前記リソース・スケジューラは、前記リソース・スケジューラ及び前記ＬＪＣＳの外部にあるノード管理システムを利用して前記マーカジョブを開始し、前記マーカ・ジョブは前記ノード管理システムに存在するが、前記ＬＪＣＳに存在しない上記（１１）に記載のシステム。
（１５）前記リソース・スケジューラは、さらに、前記マーカ・ジョブを、前記ノード管理システム内のバッチ・ジョブ・キューへ実行依頼する手段を備え、前記ＬＪＣＳによる前記ユーザ・ジョブを開始する前記手段は、前記マーカ・ジョブの開始に続く前記ノード管理システムでのジョブ・コマンド・ファイルの立ち上げに応答し、前記ジョブ・コマンド・ファイルは、前記分散処理システムのノード集合で前記ユーザ・ジョブを開始することを、前記ＬＪＣＳへ要求し、前記マーカ・ジョブの実行は、前記ユーザ・ジョブの実行を包含する上記（１４）に記載のシステム。
（１６）前記リソース・スケジューラによる前記マーカ・ジョブの開始の前に、前記ＬＪＣＳで前記ユーザ・ジョブの存在を判別する手段をさらに備え、前記判別する手段は、前記ＬＪＣＳのユーザ・ジョブ・キュー内のユーザ・ジョブを、前記ノード管理システムによって保持されるバッチ・ジョブ・キュー内のマーカ・ジョブと比較する手段と、前記ユーザ・ジョブ・キューにリストされているが、前記バッチ・ジョブ・キューにリストされていないジョブとして新しいユーザ・ジョブを識別する手段とを備える上記（１４）に記載のシステム。
（１７）前記ＬＪＣＳの前記ユーザ・ジョブ・キュー内の新しいユーザ・ジョブの識別に応じて、前記新しいユーザ・ジョブにあるジョブ情報を獲得し、前記新しいユーザ・ジョブによって要求されるノード数を読取り、前記新しいユーザ・ジョブによって要求される実行時間を見積もり、前記新しいユーザ・ジョブのジョブ名を獲得する手段と、コマンド・ファイルを作成して、前記ノード管理システムで新しいマーカ・ジョブを開始するために、前記ジョブ情報を使用する手段とを、さらに備える上記（１６）に記載のシステム。
（１８）前記ジョブ・コマンド・ファイルに応じて、前記ＬＪＣＳによる前記ユーザ・ジョブの開始を監視する手段と、前記ユーザ・ジョブが、第１の期間内で開始することに失敗する場合には、開始失敗を、前記ノード管理システムで保持されるエラー・ログに記録する手段とを、さらに備える上記（１７）に記載のシステム。
（１９）前記ＬＪＣＳによる前記ユーザ・ジョブの開始の後に、第２の期間を開始する手段と、前記ユーザ・ジョブの完了を監視する手段とをさらに備え、前記システムは、前記ユーザ・ジョブのサクセスフルな完了を伴わない前記第２の期間の満了時に、前記ユーザ・ジョブが実行することをキャンセルする手段と、前記ユーザ・ジョブを、前記ＬＪＣＳの実行キューから取り除く手段とを、さらに備える上記（１８）に記載のシステム。
（２０）前記ＬＪＣＳによる前記ユーザ・ジョブの完了の失敗を監視する手段と、前記失敗の検出時に、前記ユーザ・ジョブを前記ＬＪＣＳの実行キューから取り除き、前記ユーザ・ジョブを終了させる手段と、その後、前記リソース・スケジューラによって開始された前記マーカ・ジョブを終了する手段とを、さらに備える上記（１１）に記載のシステム。
（２１）処理されるユーザ・ジョブを受信するローカル・ジョブ制御システム（ＬＪＣＳ）を有する分散処理システム内でジョブを処理するシステムであって、前記ＬＪＣＳの外部にあって、前記ＬＪＣＳ内で実行するためのジョブのスケジューリングを制御するスケジューラ・モジュールを備え、前記スケジューラ・モジュールは、
前記ＬＪＣＳの外部にあって、前記ＬＪＣＳによって実行されるユーザ・ジョブに対応するマーカ・ジョブを開始するコード手段と、
前記マーカ・ジョブの開始に応じて、前記ＬＪＣＳによって前記ユーザ・ジョブの開始を始動させるコード手段と、
前記ユーザ・ジョブの終了時に、前記マーカ・ジョブを終了するコード手段とを含み、
前記ＬＪＣＳによる前記ユーザ・ジョブの開始は、前記スケジューラの前記マーカ・ジョブの開始に応答し、前記マーカ・ジョブの終了は、前記ユーザ・ジョブの終了に応答するシステム。
（２２）上記（１）乃至上記（１０）のいずれかに記載の方法を実行するためのプログラムを記憶した機械可読プログラム記憶装置。
【図面の簡単な説明】
【図１】本発明のジョブ・スケジューリング機能を使用する分散データ処理システムの略図である。
【図２】本発明のジョブ・スケジューリング機能に従って、ローカル・ジョブ制御システム、リソース・スケジューラ及びノード管理システム間の対話を示すブロック図である。
【図３】ローカル・ジョブ制御システムで、新しいユーザ・ジョブを検出する一実施形態を実行する疑似コードである。
【図４】ローカル・ジョブ制御システムで、新しいユーザ・ジョブを検出するロジックの一実施形態の流れ図である。
【図５】本発明の原理に従って、ノード管理システムにおけるマーカ・ジョブについてのビルド・コマンド・ファイル（ｂｕｉｌｄ  ｃｏｍｍａｎｄ  ｆｉｌｅ；ＢＣＦ）・ルーチンの一実施形態を実現する疑似コードである。
【図６】本発明の原理に従った、ビルド・コマンド・ルーチン・ロジックの一実施形態についての流れ図である。
【図７】ユーザ・ジョブがローカル・ジョブ制御システムにおいて実行される場合の、ノード管理システムの実行についてのロジックの一実施形態の流れ図である。
【符号の説明】
１００  分散コンピュータ・システム
１０２  ローカル・エリア・ネットワーク（ＬＡＮ）
１０４  ＬＡＮゲート
１０５  ＳＰＳスイッチ
１０６  ノード
１０７  ダイレクト・アクセス記憶装置
１１０  バス
１１２  コントロール・ワークステーション・ノード
１１３  ジョブ・スケジューラ，外部スケジューラ
１１４  ダイレクト・アクセス記憶装置
２００  ジョブ・スケジューリング・ロジック
２１０  ノード管理システム
２１５  バッチ・ジョブ・キュー
２２０  スケジューリング及び制御ロジック
２３０  特殊リソース・スケジューラ（ＳＲＳ）
２４０  ローカル・ジョブ制御システム（ＬＪＣＳ）
２４５  ユーザ・ジョブ・キュー
【図１】
0003887160.tif 000002
【図２】
0003887160.tif 000003
【図３】
0003887160.tif 000004
【図４】
0003887160.tif 000005
【図５】
0003887160.tif 000006
【図６】
0003887160.tif 000007
【図７】
0003887160.tif 000008