(57)【要約】【課題】  複数のユーザによって複数の計算機が共用された計算機システムにおいて、単一ユーザによる計算機独占を防ぎつつ、無駄に空いた計算機が発生しないようにジョブキューの管理および実行を制御する。【解決手段】  複数のユーザによって複数の計算機が共用され、ジョブの投入順に計算機が割り当てられ、各ユーザに割り当てられる計算機の数に制限（ユーザジョブリミット）が設けられたジョブキューシステム１０において、ジョブスケジューラ１３１は、空き状態の計算機がある場合に、ユーザジョブリミットを越えてジョブを実行させる。他のジョブが投入されたときには、当該ジョブの実行を中止させてデータおよび状態の複製を作成し、ジョブキューの先頭に戻す。【選択図】  図２
2007179100.tif 000002
【特許請求の範囲】
【請求項１】
複数のユーザから投入されたジョブを実行可能とする複数のサーバ計算機が、該ジョブの投入順に該サーバ計算機を割り当てて、各ユーザに割り当てられるサーバ計算機の数に制限がユーザジョブリミットとして加えられた状態で、ジョブキューの管理および実行を制御するジョブキューイングサーバ計算機に電気的に接続されたジョブキューシステムにおいて、
該ジョブキューイングサーバ計算機は、空きのサーバ計算機がある場合に、該ユーザジョブリミットを越えて該空きのサーバ計算機にジョブを実行させ、他のユーザからジョブが投入されたときに、該空きのサーバ計算機がない場合に、該ユーザジョブリミットを越えて実行中のジョブの中からジョブの実行を中止させ、該中止させたサーバ計算機に該他のユーザから投入されたジョブを実行制御するジョブ制御手段を有するジョブキューシステム。
【請求項２】
前記ジョブ制御手段は、前記中止させた時点のジョブ情報の複製を作成し、該中止させたジョブの実行を再開させるときに、該ジョブ情報の複製を作成した実行途中のチェックポイントから該ジョブ情報の複製を用いて該ジョブの実行を再開させるように制御する請求項１に記載のジョブキューシステム。
【請求項３】
前記ジョブ制御手段は、前記ジョブの実行前に前記ジョブ情報の複製を作成し、前記中止させたジョブの実行を再開させるときに、該ジョブの実行前のジョブ情報の複製を用いて該ジョブの実行を最初から再開させるように制御する請求項１に記載のジョブキューシステム。
【請求項４】
前記ジョブ制御手段は、前記中止させたジョブの実行を再開させるときに、前記ジョブ情報の複製を作成した実行途中のチェックポイントからのジョブの再開可否を判断し、該再開が可能である場合には該ジョブ情報の複製を用いて該チェックポイントからのジョブの実行を再開させ、該再開が可能でない場合にはジョブ実行前のジョブ情報の複製を用いて最初からジョブの実行を再開させるように制御する請求項１に記載のジョブキューシステム。
【請求項５】
前記ジョブ制御手段は、前記中止させたジョブを最初から再開させているかまたは再開させようとするときに、前記チェックポイントからジョブを再開させることが可能な他のサーバ計算機が空いた場合に、現在実行中のジョブの進捗状況と該チェックポイントでのジョブの進捗状況とを比較して、該現在実行中のジョブの進捗状況が該チェックポイントでのジョブの進捗状況よりも進んでいない場合に、該現在実行中のジョブを中止させて該他のサーバ計算機により該チェックポイントからのジョブの実行を再開させるように制御する請求項２または４に記載のジョブキューシステム。
【請求項６】
前記現在実行中のジョブの進捗状況が前記チェックポイントでのジョブの進捗状況よりも進んでいない場合に、後から開始された実行中のジョブから中止させるか、処理済みの計算量が最小であるジョブから中止させるかまたは、該処理が残った計算量が最大であるジョブから中止させる請求項５に記載のジョブキューシステム。
【請求項７】
前記ジョブ制御手段は、中止ジョブのサーバタイプと再開先のサーバタイプとが適合するように前記チェックポイントからのジョブの再開可否を判定する第１ジョブ再開判定手段と、該第１ジョブ再開判定手段による判定結果がジョブ再開可能な場合に該再開先のサーバ計算機に該チェックポイントからのジョブ再開を指示し、該判定結果がジョブ再開不可能な場合に該再開先のサーバ計算機に最初からのジョブ再開を指示する第１ジョブ再開指示手段とを有する請求項１または４に記載のジョブキューシステム。
【請求項８】
前記サーバタイプの適合判断はオペレーティングシステムが異なるか否かによって判断される請求項７に記載のジョブキューシステム。
【請求項９】
前記ジョブ制御手段は、投入されたジョブを第１記憶部のジョブキューの最後尾に登録するジョブ登録手段と、登録されたジョブに対する「空き」状態のサーバ計算機を選択するサーバ選択手段と、選択されたサーバ計算機に、登録されたジョブの実行を指示する第１ジョブ実行指示手段とを有する請求項１に記載のジョブキューシステム。
【請求項１０】
前記ジョブ登録手段によるジョブ登録時に前記第１記憶部のジョブ管理テーブルに登録ジョブの管理情報を記録させる第１ジョブ情報記録手段をされに有する請求項９に記載のジョブキューシステム。
【請求項１１】
前記第１ジョブ情報記録手段は、ジョブ実行指示時に、前記第１記憶部のジョブ管理テーブルおよびサーバ管理テーブルの管理情報を更新すると共に、ジョブ実行前またはジョブ実行途中のジョブ情報を第２記憶部に保存させる請求項１０に記載のジョブキューシステム。
【請求項１２】
前記ジョブ制御手段は、前記サーバ計算機に「空き」状態のものがない場合に、ユーザ毎に、「実行中」のジョブがいくつあるかを集計した集計結果がユーザジョブリミットを越えているユーザを検索するユーザジョブリミット超過ユーザ選択手段と、該ユーザジョブリミットを越えているユーザがあり、かつ当該ユーザの中に、前記ジョブキューの最後尾のジョブに対応した他のユーザがいない場合に、該ユーザジョブリミットを越えているユーザに対応するジョブから中止対象ジョブを選択する中止対象ジョブ選択手段と、選択された中止対象ジョブの実行を中止指示する第１ジョブ中止指示手段と、ジョブ中止指示した「空き」状態のサーバ計算機に、該ジョブキューの最後尾のジョブの実行を指示する第２ジョブ実行指示手段とを有する請求項１または９に記載のジョブキューシステム。
【請求項１３】
前記ジョブ制御手段は、前記中止対象ジョブを選択時に、ジョブ管理テーブル上の該中止対象ジョブの管理情報を更新して該中止対象ジョブを前記ジョブキューの先頭位置に移動させると共に、該中止対象ジョブのその時点でのジョブ情報をチェックポイントとして複製して情報保存する第２ジョブ情報記録手段をさらに有する請求項１２に記載のジョブキューシステム。
【請求項１４】
前記第２ジョブ情報記録手段は、前記ユーザジョブリミットを越えているユーザがない場合、または、当該ユーザの中に前記ジョブキューの最後尾のジョブに対応するユーザがある場合に、前記ジョブ管理テーブル上の該ジョブキューの最後尾のジョブを「実行待ち」の状態として情報保持する請求項１３に記載のジョブキューシステム。
【請求項１５】
前記第２ジョブ情報記録手段は、前記ジョブ実行指示時に、前記ジョブ管理テーブルおよびサーバ管理テーブルの管理情報を更新すると共に、前記第２ジョブ実行指示手段によるジョブ実行前のジョブ情報を情報保存する請求項１３に記載のジョブキューシステム。
【請求項１６】
前記ジョブ制御手段は、サーバ計算機に空きができたときに、中止・実行中のジョブを検索する第１ジョブ検索手段と、検索された中止・実行中のジョブのうち、投入時間の最も早いジョブを選択するジョブ選択手段と、選択されたジョブの再開が可能かどうかを判定する第２ジョブ再開判定手段と、ジョブの再開が不可能な場合、または、ジョブの再開が可能な場合でかつ、現在のジョブの進捗状況が、該中止・実行中のジョブよりも進んでいる場合に、投入時間が次に早いジョブを選択して、該第２ジョブ再開判定手段を動作させるジョブ再開判定起動手段と、該中止・実行中のジョブの進捗状況が、該現在のジョブよりも進んでいる場合に、実行中のジョブを中止する第２ジョブ中止指示手段と、該空きサーバ計算機上で前記チェックポイントからジョブを再開するように実行指示する第２ジョブ再開指示手段とを有する請求項１、５および９のいずれかに記載のジョブキューシステム。
【請求項１７】
前記ジョブ制御手段は、前記サーバ計算機に空きができた場合に、実行待ちまたは中止・実行待ちのジョブを検索する第２ジョブ検索手段と、該検索した実行待ちまたは中止・実行待ちのジョブのうち先頭ジョブを選択する先頭ジョブ選択手段と、該選択したジョブのユーザに対して実行中のジョブを集計するジョブ集計手段と、該ジョブ集計手段による集計結果が前記ユーザジョブリミットを越えているか否かを判定するユーザジョブリミット超過判定手段と、当該ジョブのユーザがユーザジョブリミットを越えている場合に、次のジョブの集計処理に進む第１ジョブ集計起動手段と、当該ジョブのユーザがユーザジョブリミットを越えていない場合でかつ、当該ジョブの実行がはじめての場合に、当該ジョブの実行を空きサーバ計算機に指示する第３ジョブ実行指示手段とを有する請求項１または９に記載のジョブキューシステム。
【請求項１８】
前記ジョブ制御手段は、前記サーバ計算機に空きができた場合に、実行待ちまたは中止・実行待ちのジョブを検索する第２ジョブ検索手段と、該検索した実行待ちまたは中止・実行待ちのジョブのうち先頭ジョブを選択する先頭ジョブ選択手段と、該選択したジョブのユーザに対して実行中のジョブを集計するジョブ集計手段と、該ジョブ集計手段による集計結果が前記ユーザジョブリミットを越えているか否かを判定するユーザジョブリミット超過判定手段と、当該ジョブのユーザがユーザジョブリミットを越えていない場合に、次のジョブの集計処理に進む第２ジョブ集計起動手段と、当該ジョブのユーザがユーザジョブリミットを越えている場合でかつ、当該ジョブの実行がはじめての場合に、当該ジョブの実行を空きサーバ計算機に指示する第４ジョブ実行指示手段とを有する請求項１または９に記載のジョブキューシステム。
【請求項１９】
複数のユーザによってジョブが投入される一または複数のクライアント計算機が設けられ、該クライアント計算機と前記サーバ計算機との間に前記ジョブキューイングサーバ計算機が設けられた請求項１に記載のジョブキューシステム。
【請求項２０】
前記複数のサーバ計算機と、前記一または複数のクライアント計算機と、前記ジョブキューイングサーバ計算機とがネットワークにより相互に接続されている請求項１または１９に記載のジョブキューシステム。
【請求項２１】
前記クライアント計算機は、ジョブ投入コマンドと、該ジョブ投入コマンドを管理するオペレーティングシステムとを有している請求項１９または２０に記載のジョブキューシステム。
【請求項２２】
前記ジョブキューイングサーバ計算機は、前記クライアント計算機からのジョブ投入コマンドを受けて、ジョブを実行するタイミングとジョブを実行するサーバ計算機とを決定するジョブスケジューリング処理を行うジョブスケジューラと、該ジョブスケジューラを管理するオペレーティングシステムとを有している請求項１９または２０に記載のジョブキューシステム。
【請求項２３】
前記ジョブキューイングサーバ計算機は、前記ジョブスケジューラによって参照および管理されるジョブ管理テーブル、ユーザ管理テーブル、サーバ管理テーブル、再開マトリックスおよびログファイルのうち少なくともいずれかを第１記憶部に記憶している請求項２２に記載のジョブキューシステム。
【請求項２４】
前記ジョブ管理テーブルは、ジョブ毎に一つの行が作成されて、該ジョブを一意に識別するためのジョブＩＤ、該ジョブを投入したユーザを一意に識別するためのユーザＩＤ、該ジョブが実行待ち／実行中／中止・実行待ち／中止・実行中のいずれであるかを示すジョブの状態、前記クライアント計算機からジョブが投入された時刻、前記サーバ計算機によってジョブの実行が開始された時刻、該ジョブが実行されたサーバ計算機の名前、該ジョブを実行する前に複製されたジョブ情報が退避されたディレクトリ名、該ジョブを中止時点から再開させるために作成されたジョブのデータおよび状態の複製が管理情報として保存されたディレクトリ名、該データおよび状態の複製が作成されたチェックポイントにおけるジョブの進捗状況、該チェックポイントが作成されたサーバ計算機のタイプが記録されており、これらは前記ジョブスケジューラがジョブを制御するために利用される請求項２３に記載のジョブキューシステム。
【請求項２５】
前記ジョブの進捗状況は、ジョブによる計算機の使用時間と、当該ジョブが実行されているサーバ計算機の性能を乗じた値によって求められる請求項２４に記載のジョブキューシステム。
【請求項２６】
前記投入されたジョブは、前記ジョブ管理テーブルの最終行として追加される請求項２４に記載のジョブキューシステム。
【請求項２７】
前記ユーザ管理テーブルは、前記ジョブを投入したユーザを一意に識別するためのユーザＩＤと前記ユーザジョブリミットとの対応が記録され、前記ジョブスケジューラが各ユーザのユーザジョブリミットを調べるために利用される請求項２３に記載のジョブキューシステム。
【請求項２８】
前記サーバ管理テーブルは、前記サーバ計算機の性能およびタイプ、該サーバ計算機が空き／実行中のいずれであるかを示す状態が記録されて、前記ジョブスケジューラが各サーバ計算機の性能、タイプおよび状態を調べるために利用され、該サーバ計算機の状態は該ジョブスケジューラによって更新可能とされている請求項２３に記載のジョブキューシステム。
【請求項２９】
前記再開マトリックスは、各タイプのサーバ計算機上で作成されたチェックポイントが、どのタイプのサーバ計算機によって再開可能であるかが予めテーブル化されている請求項２３に記載のジョブキューシステム。
【請求項３０】
前記ログファイルは、前記サーバ計算機の実行が終了したジョブを一意に識別するためのジョブＩＤ、該ジョブを投入したユーザを一意に識別するためのユーザＩＤ、前記クライアント計算機から該ジョブが投入された時刻、該サーバ計算機によってジョブの実行が終了した時刻、および該ジョブが実行されたサーバ計算機の名前が記録され、これらが前記ジョブスケジューラによって更新可能とされている請求項２３に記載のジョブキューシステム。
【請求項３１】
前記サーバ計算機は、前記ジョブスケジューラからの指示を受けて前記ジョブの実行、中止および再開を実施し、該ジョブの中止および終了を該ジョブスケジューラに通知するジョブ実行制御プログラムと、該ジョブ実行制御プログラムを管理するオペレーティングシステムとを有している請求項２２に記載のジョブキューシステム。
【請求項３２】
前記クライアント計算機、前記サーバ計算機および前記ジョブキューイングサーバ計算機からアクセス可能とされており、前記ジョブを実行するために必要な管理情報、該ジョブを実行する前に複製・退避されるジョブ情報、および該ジョブを中止したときに保存される該ジョブのデータおよび状態の複製を該管理情報として保存する外部記憶装置をさらに有している請求項１９または２０に記載のジョブキューシステム。
【請求項３３】
各ユーザに割り当てられる計算機の数に制限がユーザジョブリミットとして設けられた状態で、複数のユーザによって複数のサーバ計算機が共用されて、ジョブの投入順にサーバ計算機が割り当てられるジョブキューシステムによりジョブキューの管理および実行を制御するジョブ管理方法において、
空きのサーバ計算機がある場合に、該ユーザジョブリミットを越えて該空きのサーバ計算機にジョブを実行させ、他のユーザからジョブが投入されたときに、該空きのサーバ計算機がない場合に、該ユーザジョブリミットを越えて実行中のジョブの中からジョブの実行を中止させ、該中止させたサーバ計算機に該他のユーザから投入されたジョブを実行制御するジョブ制御ステップを有するジョブ管理方法。
【請求項３４】
前記ジョブ制御ステップは、前記中止させたジョブの実行を再開させるときに、前記ジョブ情報の複製を作成した実行途中のチェックポイントからのジョブの再開可否を判断し、該再開が可能である場合には該ジョブ情報の複製を用いて該チェックポイントからのジョブの実行を再開させ、該再開が可能でない場合にはジョブ実行前のジョブ情報の複製を用いて最初からジョブの実行を再開させる請求項３３に記載のジョブ管理方法。
【請求項３５】
前記ジョブ制御ステップは、前記中止させたジョブを最初から再開させているかまたは再開させようとするときに、前記チェックポイントからジョブを再開させることが可能な他のサーバ計算機が空いた場合に、現在実行中のジョブの進捗状況と該チェックポイントでのジョブの進捗状況とを比較して、該現在実行中のジョブの進捗状況が該チェックポイントでのジョブの進捗状況よりも進んでいない場合に、該現在実行中のジョブを中止させて該他のサーバ計算機により該チェックポイントからのジョブの実行を再開させる請求項３４に記載のジョブ管理方法。
【請求項３６】
前記ジョブ制御ステップは、中止ジョブのサーバタイプと再開先のサーバタイプとが適合するように前記チェックポイントからの再開可否を判定する第１ジョブ再開判定ステップと、該ジョブ再開判定ステップによる判定結果がジョブ再開可能な場合に該再開先のサーバ計算機に該チェックポイントからのジョブ再開を指示し、該判定結果がジョブ再開不可能な場合に該再開先のサーバ計算機に最初からのジョブ再開を指示する第１ジョブ再開指示ステップとを有する請求項３３または３４に記載のジョブ管理方法。
【請求項３７】
前記ジョブ制御ステップは、投入されたジョブを第１記憶部のジョブキューの最後尾に登録するジョブ登録ステップと、登録されたジョブに対する「空き」状態のサーバ計算機を選択するサーバ選択ステップと、選択されたサーバ計算機に、登録されたジョブの実行を指示する第１ジョブ実行指示ステップとを有する請求項３３に記載のジョブ管理方法。
【請求項３８】
前記ジョブ登録ステップによるジョブ登録時にジョブ管理テーブルに登録ジョブの管理情報を前記第１記憶部に記録するジョブ情報記録ステップをされに有する請求項３７に記載のジョブ管理方法。
【請求項３９】
前記ジョブ制御ステップは、前記ジョブキューイングサーバ計算機は、前記サーバ計算機に「空き」状態のものがない場合に、ユーザ毎に、「実行中」のジョブがいくつあるかを集計した集計結果がユーザジョブリミットを越えているユーザを検索するユーザジョブリミット超過ユーザ選択ステップと、該ユーザジョブリミットを越えているユーザがあり、かつ当該ユーザの中に、前記ジョブキューの最後尾のジョブに対応した他のユーザがいない場合に、該ユーザジョブリミットを越えているユーザに対応するジョブから中止対象ジョブを選択する中止対象ジョブ選択ステップと、選択された中止対象ジョブの実行を中止指示する第１ジョブ中止指示ステップと、ジョブ中止指示した「空き」状態のサーバ計算機に、該ジョブキューの最後尾のジョブの実行を指示する第２ジョブ実行指示ステップとを有する請求項３３または３７に記載のジョブ管理方法。
【請求項４０】
前記ジョブ制御ステップは、前記中止対象ジョブを選択時に、ジョブ管理テーブル上の該中止対象ジョブの管理情報を更新して該中止対象ジョブを前記ジョブキューの先頭位置に移動させると共に、該中止対象ジョブのその時点でのジョブ情報をチェックポイントとして複製して情報保存する第２ジョブ情報記録ステップをさらに有する請求項３９に記載のジョブ管理方法。
【請求項４１】
前記第２ジョブ情報記録ステップは、前記ユーザジョブリミットを越えているユーザがない場合、または、当該ユーザの中に前記ジョブキューの最後尾のジョブに対応するユーザがある場合に、前記ジョブ管理テーブル上の該ジョブキューの最後尾のジョブを「実行待ち」の状態として情報保持する請求項４０に記載のジョブ管理方法。
【請求項４２】
前記ジョブ制御ステップは、サーバ計算機に空きができたときに、中止・実行中のジョブを検索する第１ジョブ検索ステップと、検索された中止・実行中のジョブのうち、投入時間の最も早いジョブを選択するジョブ選択ステップと、選択されたジョブの再開が可能かどうかを判定する第２ジョブ再開判定ステップと、ジョブの再開が不可能な場合、または、ジョブの再開が可能な場合でかつ、現在のジョブの進捗状況が、該中止・実行中のジョブよりも進んでいる場合に、投入時間が次に早いジョブを選択して、該第２ジョブ再開判定ステップを動作させるジョブ再開判定起動ステップと、該中止・実行中のジョブの進捗状況が、該現在のジョブよりも進んでいる場合に、実行中のジョブを中止する第２ジョブ中止指示ステップと、該空きサーバ計算機上で前記チェックポイントからジョブを再開するように実行指示する第２ジョブ再開指示ステップとを有する請求項３３または３７に記載のジョブ管理方法。
【請求項４３】
前記ジョブ制御ステップは、前記サーバ計算機に空きができた場合に、実行待ちまたは中止・実行待ちのジョブを検索する第２ジョブ検索ステップと、該検索した実行待ちまたは中止・実行待ちのジョブのうち先頭ジョブを選択する先頭ジョブ選択ステップと、該選択したジョブのユーザに対して実行中のジョブを集計するジョブ集計ステップと、該ジョブ集計ステップによる集計結果が前記ユーザジョブリミットを越えているか否かを判定するユーザジョブリミット超過判定ステップと、当該ジョブのユーザがユーザジョブリミットを越えている場合に、次のジョブの集計処理に進む第１ジョブ集計起動ステップと、当該ジョブのユーザがユーザジョブリミットを越えていない場合でかつ、当該ジョブの実行がはじめての場合に、当該ジョブの実行を空きサーバ計算機に指示する第３ジョブ実行指示ステップとを有する請求項３３または３７に記載のジョブ管理方法。
【請求項４４】
前記ジョブ制御ステップは、前記サーバ計算機に空きができた場合に、実行待ちまたは中止・実行待ちのジョブを検索する第２ジョブ検索ステップと、該検索した実行待ちまたは中止・実行待ちのジョブのうち先頭ジョブを選択する先頭ジョブ選択ステップと、該選択したジョブのユーザに対して実行中のジョブを集計するジョブ集計ステップと、該ジョブ集計ステップによる集計結果が前記ユーザジョブリミットを越えているか否かを判定するユーザジョブリミット超過判定ステップと、当該ジョブのユーザがユーザジョブリミットを越えていない場合に、次のジョブの集計処理に進む第２ジョブ集計起動ステップと、当該ジョブのユーザがユーザジョブリミットを越えている場合でかつ、当該ジョブの実行がはじめての場合に、当該ジョブの実行を空きサーバ計算機に指示する第４ジョブ実行指示ステップとを有する請求項３３または３７に記載のジョブ管理方法。
【請求項４５】
請求項３３〜４４のいずれかに記載のジョブ管理方法の各ステップをコンピュータに実行させるための制御プログラム。
【請求項４６】
請求項４５に記載の制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばシミュレーションの計算処理などの各種ジョブに使用される資源がネットワークを介して複数の計算機に分散して配置されるシステムに対してジョブキューの管理および実行を制御するジョブキューシステムおよびこれを用いたジョブ管理方法、このジョブ管理方法の各ステップをコンピュータに実行させるための制御プログラム、この制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体に関する。
【背景技術】
【０００２】
従来より、計算機システムを利用する形態としては、二つの形態が挙げられる。操作者が会話形式（対話形式）で操作することによって処理を進めていく会話型と、処理の途中で人の操作が必要とされないバッチ型である。会話型の処理方法は図面の作成などに用いられ、バッチ型の処理方法はシミュレーション計算などに用いられている。
【０００３】
一般に、バッチ型の処理（以下、ジョブと記す）方法には、多量の計算処理が必要とされ、計算資源（計算機）が多く消費される。
【０００４】
複数のユーザによって、複数の計算機を用いて、バッチ型のジョブを効率的に処理する手法として、ジョブキューシステムが知られている。このジョブキューシステムは、ネットワークに接続された複数の計算機によって構成され、ジョブを制御する機構を有している。このシステムに投入されたジョブは、まず、投入順にキュー（待ち行列）に並べられる。計算機に空きが生じると、キューの先頭にあるジョブから順に計算機に送られて処理される。これにより、複数の計算機を複数のユーザによって効率よく利用することができる。また、ジョブが投入時間順に実行されることによって、処理機会の公平性が得られている。
【０００５】
上記ジョブキューシステムを実現するソフトウェアとして、例えば非特許文献１および非特許文献２に開示されているような、いくつかのツールが市販されている。
【０００６】
以下に、図１６を用いて、従来のジョブキューシステムの構成およびその動作について説明する。
【０００７】
図１６に示すように、ジョブキューシステム４０では、ジョブキュー４１と、ジョブが実行される計算機４２および４３とが設けられており、ユーザＡによってジョブキュー４１にジョブ４４〜４６が投入されて、ジョブキュー４１内で、投入されたジョブが右から順番に並べられ、この投入順に処理される。図１６では、ジョブ４４、ジョブ４５およびジョブ４６の順にジョブが投入された場合であり、最初に投入されたジョブ４４が計算機４２に送られて処理された時点を示している。
【０００８】
ここで、単純なジョブキューシステム４０では、次に、ジョブ４５が、空いた計算機４３に送られて処理される。その結果、計算機がユーザＡから投入されたジョブによって占有されてしまい、他のユーザからジョブが投入されても、ジョブが処理されない。
【０００９】
このように、単純なジョブキューシステムでは、一人のユーザから一度に多数のジョブが投入されると、計算機が独占されてしまい、他のユーザによるジョブ実行が妨げられてしまう。このため、各ユーザに対する処理機会の公平性が得られなくなるという問題がある。
【００１０】
このような問題を解決する方法として、非特許文献１のジョブ管理方法には、各ユーザに割り当てられる計算機の数に制限（ユーザジョブリミット）を設けて、単一ユーザによる計算機の独占を防ぐ方法が開示されている。
【００１１】
以下に、図１６および図１７を用いて、上記非特許文献１に開示されている従来のジョブキューシステムによる動作について説明する。なお、ここでは、ユーザＡのユーザジョブリミットが”１”に設定されているものとする。
【００１２】
図１６において、ユーザＡからは３つのジョブ（ジョブ４４、ジョブ４５、ジョブ４６）が順次投入されているが、ユーザジョブリミットに従って、１台の計算機４２のみが割り当てられる。この結果、ジョブ４５およびジョブ４６はジョブキュー４１によって実行待ち状態とされ、計算機４３は、空き状態のままとなる。これにより、２つの計算機４２，４３が共にユーザＡに独占されるのを防止することができる。
【００１３】
図１６の状態で他のユーザＢのジョブが投入された場合の動作を図１７に示している。
【００１４】
図１７には、ジョブキュー４１と、ジョブが実行される計算機４２および４３と、ユーザＡによってジョブキュー４１に投入されて計算機４２にて順次処理されるジョブ４４〜４６と、ユーザＢによってジョブキュー４１に投入されて計算機４３にて処理されるジョブ５７とが示されている。
【００１５】
このジョブキュー４１では、投入されたジョブ４４〜４６が右から順番に並べられ、この投入順で計算機４２にて処理される。このとき、他のユーザＢからジョブキュー４１にジョブ５７が投入されると、ユーザジョブリミット”１”に従って、ジョブキュー４１により実行待ち状態とされているユーザＡのジョブ４６およびジョブ４５を飛び越して、空いている計算機４３によってジョブ５７の処理が実行される。これにより、ユーザ間の処理機会の公平性を得ることができる。
【非特許文献１】Ｐｌａｔｆｏｒｍ  Ｃｏｍｐｕｔｉｎｇ  社刊、Ｐｌａｔｆｏｒｍ  ＬＳＦ  管理者  Ｖｅｒｓｉｏｎ  ６．０  Ｊｕｎｅ  ２００４
【非特許文献２】Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ社刊、Ｎ１  Ｇｒｉｄ  Ｅｎｇｉｎｅ  ６  Ａｄｍｉｎｉｓｔｒａｔｉｏｎ  Ｇｕｉｄｅ  Ｐａｒｔ  Ｎｏ：  ８１７−５６７７−２０
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかしながら、上記非特許文献１に開示されている従来のジョブ管理方法には、以下のような問題がある。
【００１７】
図１６に示すように、あるユーザＡがユーザジョブリミットに達している一方で、他のユーザＢのジョブが空いていれば（例えばジョブ５７がなければ）、計算機４３に空き状態が生じる。この場合、ユーザジョブリミットに達したユーザＡから投入された実行待ち状態のジョブ（例えばジョブ４５，４６）は、計算機４２により順次処理されるから、次の計算機４３が空いているにも関わらず、計算機４３により実行されないため、そのユーザＡから連続投入されたジョブ４４〜４６の処理完了が無駄に遅れてしまう。
【００１８】
本発明は、上記従来の問題を解決するもので、単一ユーザによる計算機独占を防ぎつつ、無駄に空いた計算機が発生しないようにジョブキューの管理および実行を制御して、連続投入されたジョブを効率的に処理することができるジョブキューシステムおよびこれを用いたジョブ管理方法、このジョブ管理方法の各ステップをコンピュータに実行させるための制御プログラム、この制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明のジョブキューシステムは、  複数のユーザから投入されたジョブを実行可能とする複数のサーバ計算機が、該ジョブの投入順に該サーバ計算機を割り当てて、各ユーザに割り当てられるサーバ計算機の数に制限がユーザジョブリミットとして加えられた状態で、ジョブキューの管理および実行を制御するジョブキューイングサーバ計算機に電気的に接続されたジョブキューシステムにおいて、該ジョブキューイングサーバ計算機は、空きのサーバ計算機がある場合に、該ユーザジョブリミットを越えて該空きのサーバ計算機にジョブを実行させ、他のユーザからジョブが投入されたときに、該空きのサーバ計算機がない場合に、該ユーザジョブリミットを越えて実行中のジョブの中からジョブの実行を中止させ、該中止させたサーバ計算機に該他のユーザから投入されたジョブを実行制御するジョブ制御手段を有するものであり、そのことにより上記目的が達成される。
【００２０】
また、好ましくは、本発明のジョブキューシステムにおけるジョブ制御手段は、前記中止させた時点のジョブ情報の複製を作成し、該中止させたジョブの実行を再開させるときに、該ジョブ情報の複製を作成した実行途中のチェックポイントから該ジョブ情報の複製を用いて該ジョブの実行を再開させるように制御する。
【００２１】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブ制御手段は、前記ジョブの実行前に前記ジョブ情報の複製を作成し、前記中止させたジョブの実行を再開させるときに、該ジョブの実行前のジョブ情報の複製を用いて該ジョブの実行を最初から再開させるように制御する。
【００２２】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブ制御手段は、前記中止させたジョブの実行を再開させるときに、前記ジョブ情報の複製を作成した実行途中のチェックポイントからのジョブの再開可否を判断し、該再開が可能である場合には該ジョブ情報の複製を用いて該チェックポイントからのジョブの実行を再開させ、該再開が可能でない場合にはジョブ実行前のジョブ情報の複製を用いて最初からジョブの実行を再開させるように制御する。
【００２３】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブ制御手段は、前記中止させたジョブを最初から再開させているかまたは再開させようとするときに、前記チェックポイントからジョブを再開させることが可能な他のサーバ計算機が空いた場合に、現在実行中のジョブの進捗状況と該チェックポイントでのジョブの進捗状況とを比較して、該現在実行中のジョブの進捗状況が該チェックポイントでのジョブの進捗状況よりも進んでいない場合に、該現在実行中のジョブを中止させて該他のサーバ計算機により該チェックポイントからのジョブの実行を再開させるように制御する。
【００２４】
さらに、好ましくは、本発明のジョブキューシステムにおいて、前記現在実行中のジョブの進捗状況が前記チェックポイントでのジョブの進捗状況よりも進んでいない場合に、後から開始された実行中のジョブから中止させるか、処理済みの計算量が最小であるジョブから中止させるかまたは、該処理が残った計算量が最大であるジョブから中止させる。
【００２５】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブ制御手段は、中止ジョブのサーバタイプと再開先のサーバタイプとが適合するように前記チェックポイントからのジョブの再開可否を判定する第１ジョブ再開判定手段と、該第１ジョブ再開判定手段による判定結果がジョブ再開可能な場合に該再開先のサーバ計算機に該チェックポイントからのジョブ再開を指示し、該判定結果がジョブ再開不可能な場合に該再開先のサーバ計算機に最初からのジョブ再開を指示する第１ジョブ再開指示手段とを有する。
【００２６】
さらに、好ましくは、本発明のジョブキューシステムにおけるサーバタイプの適合判断はオペレーティングシステムが異なるか否かによって判断される。
【００２７】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブ制御手段は、投入されたジョブを第１記憶部のジョブキューの最後尾に登録するジョブ登録手段と、登録されたジョブに対する「空き」状態のサーバ計算機を選択するサーバ選択手段と、選択されたサーバ計算機に、登録されたジョブの実行を指示する第１ジョブ実行指示手段とを有する。
【００２８】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブ登録手段によるジョブ登録時に前記第１記憶部のジョブ管理テーブルに登録ジョブの管理情報を記録させる第１ジョブ情報記録手段をされに有する。
【００２９】
さらに、好ましくは、本発明のジョブキューシステムにおける第１ジョブ情報記録手段は、ジョブ実行指示時に、前記第１記憶部のジョブ管理テーブルおよびサーバ管理テーブルの管理情報を更新すると共に、ジョブ実行前またはジョブ実行途中のジョブ情報を第２記憶部に保存させる。
【００３０】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブ制御手段は、前記サーバ計算機に「空き」状態のものがない場合に、ユーザ毎に、「実行中」のジョブがいくつあるかを集計した集計結果がユーザジョブリミットを越えているユーザを検索するユーザジョブリミット超過ユーザ選択手段と、該ユーザジョブリミットを越えているユーザがあり、かつ当該ユーザの中に、前記ジョブキューの最後尾のジョブに対応した他のユーザがいない場合に、該ユーザジョブリミットを越えているユーザに対応するジョブから中止対象ジョブを選択する中止対象ジョブ選択手段と、選択された中止対象ジョブの実行を中止指示する第１ジョブ中止指示手段と、ジョブ中止指示した「空き」状態のサーバ計算機に、該ジョブキューの最後尾のジョブの実行を指示する第２ジョブ実行指示手段とを有する。
【００３１】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブ制御手段は、前記中止対象ジョブを選択時に、ジョブ管理テーブル上の該中止対象ジョブの管理情報を更新して該中止対象ジョブを前記ジョブキューの先頭位置に移動させると共に、該中止対象ジョブのその時点でのジョブ情報をチェックポイントとして複製して情報保存する第２ジョブ情報記録手段をさらに有する。
【００３２】
さらに、好ましくは、本発明のジョブキューシステムにおける第２ジョブ情報記録手段は、前記ユーザジョブリミットを越えているユーザがない場合、または、当該ユーザの中に前記ジョブキューの最後尾のジョブに対応するユーザがある場合に、前記ジョブ管理テーブル上の該ジョブキューの最後尾のジョブを「実行待ち」の状態として情報保持する。
【００３３】
さらに、好ましくは、本発明のジョブキューシステムにおける第２ジョブ情報記録手段は、前記ジョブ実行指示時に、前記ジョブ管理テーブルおよびサーバ管理テーブルの管理情報を更新すると共に、前記第２ジョブ実行指示手段によるジョブ実行前のジョブ情報を情報保存する。
【００３４】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブ制御手段は、サーバ計算機に空きができたときに、中止・実行中のジョブを検索する第１ジョブ検索手段と、検索された中止・実行中のジョブのうち、投入時間の最も早いジョブを選択するジョブ選択手段と、選択されたジョブの再開が可能かどうかを判定する第２ジョブ再開判定手段と、ジョブの再開が不可能な場合、または、ジョブの再開が可能な場合でかつ、現在のジョブの進捗状況が、該中止・実行中のジョブよりも進んでいる場合に、投入時間が次に早いジョブを選択して、該第２ジョブ再開判定手段を動作させるジョブ再開判定起動手段と、該中止・実行中のジョブの進捗状況が、該現在のジョブよりも進んでいる場合に、実行中のジョブを中止する第２ジョブ中止指示手段と、該空きサーバ計算機上で前記チェックポイントからジョブを再開するように実行指示する第２ジョブ再開指示手段とを有する。
【００３５】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブ制御手段は、前記サーバ計算機に空きができた場合に、実行待ちまたは中止・実行待ちのジョブを検索する第２ジョブ検索手段と、該検索した実行待ちまたは中止・実行待ちのジョブのうち先頭ジョブを選択する先頭ジョブ選択手段と、該選択したジョブのユーザに対して実行中のジョブを集計するジョブ集計手段と、該ジョブ集計手段による集計結果が前記ユーザジョブリミットを越えているか否かを判定するユーザジョブリミット超過判定手段と、当該ジョブのユーザがユーザジョブリミットを越えている場合に、次のジョブの集計処理に進む第１ジョブ集計起動手段と、当該ジョブのユーザがユーザジョブリミットを越えていない場合でかつ、当該ジョブの実行がはじめての場合に、当該ジョブの実行を空きサーバ計算機に指示する第３ジョブ実行指示手段とを有する。
【００３６】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブ制御手段は、前記サーバ計算機に空きができた場合に、実行待ちまたは中止・実行待ちのジョブを検索する第２ジョブ検索手段と、該検索した実行待ちまたは中止・実行待ちのジョブのうち先頭ジョブを選択する先頭ジョブ選択手段と、該選択したジョブのユーザに対して実行中のジョブを集計するジョブ集計手段と、該ジョブ集計手段による集計結果が前記ユーザジョブリミットを越えているか否かを判定するユーザジョブリミット超過判定手段と、当該ジョブのユーザがユーザジョブリミットを越えていない場合に、次のジョブの集計処理に進む第２ジョブ集計起動手段と、当該ジョブのユーザがユーザジョブリミットを越えている場合でかつ、当該ジョブの実行がはじめての場合に、当該ジョブの実行を空きサーバ計算機に指示する第４ジョブ実行指示手段とを有する。
【００３７】
さらに、好ましくは、本発明のジョブキューシステムにおいて、複数のユーザによってジョブが投入される一または複数のクライアント計算機が設けられ、該クライアント計算機と前記サーバ計算機との間に前記ジョブキューイングサーバ計算機が設けられている。
【００３８】
さらに、好ましくは、本発明のジョブキューシステムにおいて、複数のサーバ計算機と、前記一または複数のクライアント計算機と、前記ジョブキューイングサーバ計算機とがネットワークにより相互に接続されている。
【００３９】
さらに、好ましくは、本発明のジョブキューシステムにおけるクライアント計算機は、ジョブ投入コマンドと、該ジョブ投入コマンドを管理するオペレーティングシステムとを有している。
【００４０】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブキューイングサーバ計算機は、前記クライアント計算機からのジョブ投入コマンドを受けて、ジョブを実行するタイミングとジョブを実行するサーバ計算機とを決定するジョブスケジューリング処理を行うジョブスケジューラと、該ジョブスケジューラを管理するオペレーティングシステムとを有している。
【００４１】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブキューイングサーバ計算機は、前記ジョブスケジューラによって参照および管理されるジョブ管理テーブル、ユーザ管理テーブル、サーバ管理テーブル、再開マトリックスおよびログファイルのうち少なくともいずれかを第１記憶部に記憶している。
【００４２】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブ管理テーブルは、ジョブ毎に一つの行が作成されて、該ジョブを一意に識別するためのジョブＩＤ、該ジョブを投入したユーザを一意に識別するためのユーザＩＤ、該ジョブが実行待ち／実行中／中止・実行待ち／中止・実行中のいずれであるかを示すジョブの状態、前記クライアント計算機からジョブが投入された時刻、前記サーバ計算機によってジョブの実行が開始された時刻、該ジョブが実行されたサーバ計算機の名前、該ジョブを実行する前に複製されたジョブ情報が退避されたディレクトリ名、該ジョブを中止時点から再開させるために作成されたジョブのデータおよび状態の複製が管理情報として保存されたディレクトリ名、該データおよび状態の複製が作成されたチェックポイントにおけるジョブの進捗状況、該チェックポイントが作成されたサーバ計算機のタイプが記録されており、これらは前記ジョブスケジューラがジョブを制御するために利用される。
【００４３】
さらに、好ましくは、本発明のジョブキューシステムにおけるジョブの進捗状況は、ジョブによる計算機の使用時間と、当該ジョブが実行されているサーバ計算機の性能を乗じた値によって求められる。
【００４４】
さらに、好ましくは、本発明のジョブキューシステムにおいて、前記投入されたジョブは、前記ジョブ管理テーブルの最終行として追加される。
【００４５】
さらに、好ましくは、本発明のジョブキューシステムにおけるユーザ管理テーブルは、前記ジョブを投入したユーザを一意に識別するためのユーザＩＤと前記ユーザジョブリミットとの対応が記録され、前記ジョブスケジューラが各ユーザのユーザジョブリミットを調べるために利用される。
【００４６】
さらに、好ましくは、本発明のジョブキューシステムにおけるサーバ管理テーブルは、前記サーバ計算機の性能およびタイプ、該サーバ計算機が空き／実行中のいずれであるかを示す状態が記録されて、前記ジョブスケジューラが各サーバ計算機の性能、タイプおよび状態を調べるために利用され、該サーバ計算機の状態は該ジョブスケジューラによって更新可能とされている。
【００４７】
さらに、好ましくは、本発明のジョブキューシステムにおける再開マトリックスは、各タイプのサーバ計算機上で作成されたチェックポイントが、どのタイプのサーバ計算機によって再開可能であるかが予めテーブル化されている。
【００４８】
さらに、好ましくは、本発明のジョブキューシステムにおけるログファイルは、前記サーバ計算機の実行が終了したジョブを一意に識別するためのジョブＩＤ、該ジョブを投入したユーザを一意に識別するためのユーザＩＤ、前記クライアント計算機から該ジョブが投入された時刻、該サーバ計算機によってジョブの実行が終了した時刻、および該ジョブが実行されたサーバ計算機の名前が記録され、これらが前記ジョブスケジューラによって更新可能とされている。
【００４９】
さらに、好ましくは、本発明のジョブキューシステムにおけるサーバ計算機は、前記ジョブスケジューラからの指示を受けて前記ジョブの実行、中止および再開を実施し、該ジョブの中止および終了を該ジョブスケジューラに通知するジョブ実行制御プログラムと、該ジョブ実行制御プログラムを管理するオペレーティングシステムとを有している。
【００５０】
さらに、好ましくは、本発明のジョブキューシステムにおいて、前記クライアント計算機、前記サーバ計算機および前記ジョブキューイングサーバ計算機からアクセス可能とされており、前記ジョブを実行するために必要な管理情報、該ジョブを実行する前に複製・退避されるジョブ情報、および該ジョブを中止したときに保存される該ジョブのデータおよび状態の複製を該管理情報として保存する外部記憶装置をさらに有している。
【００５１】
本発明のジョブ管理方法は、各ユーザに割り当てられる計算機の数に制限がユーザジョブリミットとして設けられた状態で、複数のユーザによって複数のサーバ計算機が共用されて、ジョブの投入順にサーバ計算機が割り当てられるジョブキューシステムによりジョブキューの管理および実行を制御するジョブ管理方法において、空きのサーバ計算機がある場合に、該ユーザジョブリミットを越えて該空きのサーバ計算機にジョブを実行させ、他のユーザからジョブが投入されたときに、該空きのサーバ計算機がない場合に、該ユーザジョブリミットを越えて実行中のジョブの中からジョブの実行を中止させ、該中止させたサーバ計算機に該他のユーザから投入されたジョブを実行制御するジョブ制御ステップを有するものであり、そのことにより上記目的が達成される。
【００５２】
また、好ましくは、本発明のジョブ管理方法におけるジョブ制御ステップは、前記中止させたジョブの実行を再開させるときに、前記ジョブ情報の複製を作成した実行途中のチェックポイントからのジョブの再開可否を判断し、該再開が可能である場合には該ジョブ情報の複製を用いて該チェックポイントからのジョブの実行を再開させ、該再開が可能でない場合にはジョブ実行前のジョブ情報の複製を用いて最初からジョブの実行を再開させる。
【００５３】
さらに、好ましくは、本発明のジョブ管理方法におけるジョブ制御ステップは、前記中止させたジョブを最初から再開させているかまたは再開させようとするときに、前記チェックポイントからジョブを再開させることが可能な他のサーバ計算機が空いた場合に、現在実行中のジョブの進捗状況と該チェックポイントでのジョブの進捗状況とを比較して、該現在実行中のジョブの進捗状況が該チェックポイントでのジョブの進捗状況よりも進んでいない場合に、該現在実行中のジョブを中止させて該他のサーバ計算機により該チェックポイントからのジョブの実行を再開させる。
【００５４】
さらに、好ましくは、本発明のジョブ管理方法におけるジョブ制御ステップは、中止ジョブのサーバタイプと再開先のサーバタイプとが適合するように前記チェックポイントからの再開可否を判定する第１ジョブ再開判定ステップと、該ジョブ再開判定ステップによる判定結果がジョブ再開可能な場合に該再開先のサーバ計算機に該チェックポイントからのジョブ再開を指示し、該判定結果がジョブ再開不可能な場合に該再開先のサーバ計算機に最初からのジョブ再開を指示する第１ジョブ再開指示ステップとを有する。
【００５５】
さらに、好ましくは、本発明のジョブ管理方法におけるジョブ制御ステップは、投入されたジョブを第１記憶部のジョブキューの最後尾に登録するジョブ登録ステップと、登録されたジョブに対する「空き」状態のサーバ計算機を選択するサーバ選択ステップと、選択されたサーバ計算機に、登録されたジョブの実行を指示する。
【００５６】
さらに、好ましくは、本発明のジョブ管理方法において、前記ジョブ登録ステップによるジョブ登録時にジョブ管理テーブルに登録ジョブの管理情報を前記第１記憶部に記録するジョブ情報記録ステップをされに有する。
【００５７】
さらに、好ましくは、本発明のジョブ管理方法におけるジョブ制御ステップは、前記ジョブキューイングサーバ計算機は、前記サーバ計算機に「空き」状態のものがない場合に、ユーザ毎に、「実行中」のジョブがいくつあるかを集計した集計結果がユーザジョブリミットを越えているユーザを検索するユーザジョブリミット超過ユーザ選択ステップと、該ユーザジョブリミットを越えているユーザがあり、かつ当該ユーザの中に、前記ジョブキューの最後尾のジョブに対応した他のユーザがいない場合に、該ユーザジョブリミットを越えているユーザに対応するジョブから中止対象ジョブを選択する中止対象ジョブ選択ステップと、選択された中止対象ジョブの実行を中止指示する第１ジョブ中止指示ステップと、ジョブ中止指示した「空き」状態のサーバ計算機に、該ジョブキューの最後尾のジョブの実行を指示する第２ジョブ実行指示ステップとを有する。
【００５８】
さらに、好ましくは、本発明のジョブ管理方法におけるジョブ制御ステップは、前記中止対象ジョブを選択時に、ジョブ管理テーブル上の該中止対象ジョブの管理情報を更新して該中止対象ジョブを前記ジョブキューの先頭位置に移動させると共に、該中止対象ジョブのその時点でのジョブ情報をチェックポイントとして複製して情報保存する第２ジョブ情報記録ステップをさらに有する。
【００５９】
さらに、好ましくは、本発明のジョブ管理方法における第２ジョブ情報記録ステップは、前記ユーザジョブリミットを越えているユーザがない場合、または、当該ユーザの中に前記ジョブキューの最後尾のジョブに対応するユーザがある場合に、前記ジョブ管理テーブル上の該ジョブキューの最後尾のジョブを「実行待ち」の状態として情報保持する。
【００６０】
さらに、好ましくは、本発明のジョブ管理方法におけるジョブ制御ステップは、サーバ計算機に空きができたときに、中止・実行中のジョブを検索する第１ジョブ検索ステップと、検索された中止・実行中のジョブのうち、投入時間の最も早いジョブを選択するジョブ選択ステップと、選択されたジョブの再開が可能かどうかを判定する第２ジョブ再開判定ステップと、ジョブの再開が不可能な場合、または、ジョブの再開が可能な場合でかつ、現在のジョブの進捗状況が、該中止・実行中のジョブよりも進んでいる場合に、投入時間が次に早いジョブを選択して、該第２ジョブ再開判定ステップを動作させるジョブ再開判定起動ステップと、該中止・実行中のジョブの進捗状況が、該現在のジョブよりも進んでいる場合に、実行中のジョブを中止する第２ジョブ中止指示ステップと、該空きサーバ計算機上で前記チェックポイントからジョブを再開するように実行指示する第２ジョブ再開指示ステップとを有する。
【００６１】
さらに、好ましくは、本発明のジョブ管理方法におけるジョブ制御ステップは、前記サーバ計算機に空きができた場合に、実行待ちまたは中止・実行待ちのジョブを検索する第２ジョブ検索ステップと、該検索した実行待ちまたは中止・実行待ちのジョブのうち先頭ジョブを選択する先頭ジョブ選択ステップと、該選択したジョブのユーザに対して実行中のジョブを集計するジョブ集計ステップと、該ジョブ集計ステップによる集計結果が前記ユーザジョブリミットを越えているか否かを判定するユーザジョブリミット超過判定ステップと、当該ジョブのユーザがユーザジョブリミットを越えている場合に、次のジョブの集計処理に進む第１ジョブ集計起動ステップと、当該ジョブのユーザがユーザジョブリミットを越えていない場合でかつ、当該ジョブの実行がはじめての場合に、当該ジョブの実行を空きサーバ計算機に指示する第３ジョブ実行指示ステップとを有する。
【００６２】
さらに、好ましくは、本発明のジョブ管理方法におけるジョブ制御ステップは、前記サーバ計算機に空きができた場合に、実行待ちまたは中止・実行待ちのジョブを検索する第２ジョブ検索ステップと、該検索した実行待ちまたは中止・実行待ちのジョブのうち先頭ジョブを選択する先頭ジョブ選択ステップと、該選択したジョブのユーザに対して実行中のジョブを集計するジョブ集計ステップと、該ジョブ集計ステップによる集計結果が前記ユーザジョブリミットを越えているか否かを判定するユーザジョブリミット超過判定ステップと、当該ジョブのユーザがユーザジョブリミットを越えていない場合に、次のジョブの集計処理に進む第２ジョブ集計起動ステップと、当該ジョブのユーザがユーザジョブリミットを越えている場合でかつ、当該ジョブの実行がはじめての場合に、当該ジョブの実行を空きサーバ計算機に指示する第４ジョブ実行指示ステップとを有する。
【００６３】
本発明の制御プログラムは、本発明の上記ジョブ管理方法の各ステップをコンピュータに実行させるためのものであり、そのことにより上記目的が達成される。
【００６４】
本発明の可読記録媒体は、本発明の上記制御プログラムが記録されたコンピュータ読み取り可能なものであり、そのことにより上記目的が達成される。
【００６５】
上記構成により、以下に、本発明の作用について説明する。
【００６６】
本発明にあっては、複数のユーザによって複数の計算機が共用されて、ジョブの投入順に計算機が割り当てられ、各ユーザに割り当てられる計算機の数に制限（ユーザジョブリミット）が設けられたジョブキューシステムにおいて、空き状態の計算機がある場合に、ユーザジョブリミットを越えてジョブを実行させる。他のユーザからジョブが投入されたときには、この投入されたジョブの実行を中止させてデータおよび状態の複製を作成し、ジョブキューの先頭位置に戻して次の処理のために待機させる。
【００６７】
これにより、単一ユーザによる計算機の独占を防ぐと共に、計算機の無駄な空き状態を防ぐことが可能となる。さらに、データおよび状態の複製を作成した時点（チェックポイント）からジョブを再開させることが可能となる。
【００６８】
さらに、ジョブの実行前にデータの複製を作成することによって、中止されたジョブについて、チェックポイントから再開させることができない場合でも、ジョブを最初から再開させることが可能となる。
【００６９】
さらに、中止されたジョブの実行を再開させるときに、チェックポイントからの再開可否を判断して、可能であればチェックポイントからジョブを再開させ、可能でない場合には最初からジョブを再開させることが可能となる。
【００７０】
これにより、チェックポイントが作成された計算機と、チェックポイントからジョブを再開させようとする計算機のオペレーティングシステム（以下、ＯＳと記す）が異なる等の原因によって、ジョブをチェックポイントから再開させることができない場合でも、空いている計算機を有効に活用することが可能となる。
【００７１】
さらに、一旦中止されたジョブを最初から再開させているときに、チェックポイントからジョブを再開させることが可能な他の計算機が空いた場合に、現在のジョブの進捗状況とチェックポイントでのジョブの進捗状況とを比較し、現在のジョブの進捗状況がチェックポイントでのジョブの進捗状況に及んでいない場合には、ジョブを中止させて他の計算機によりチェックポイントからジョブを再開させることが可能となる。
【００７２】
これにより、中止されたジョブについて、ジョブを最初から再開させた場合でも、進捗状況が進んでいる場合にはチェックポイントまで処理を進めることができ、ジョブをより短時間で終了させることが可能となる。
【００７３】
さらに、ジョブを中止させる場合に、後から開始されたジョブから中止させるか、または、処理済みの計算量が最小であるジョブから中止させることが可能となる。
【００７４】
これにより、ジョブを最初から再開させた場合に生じる、ジョブ中止による処理の損失を最小限に抑えることが可能となる。
【発明の効果】
【００７５】
以上により、本発明によれば、空きの計算機がある場合に、空きの計算機がある場合に、ユーザユーザジョブリミットを越えてその計算機にジョブを実行させ、他のユーザからジョブが投入されたときには、そのジョブの実行を中止させてデータおよび状態の複製を作成し、そのジョブをジョブキューの先頭に戻して次の処理のために待機させるようにしたため、単一のユーザにより計算機を独占させることなく、空き状態の計算機をも利用して、連続投入されたジョブをより短時間で完了させることができる。
【発明を実施するための最良の形態】
【００７６】
以下に、複数のユーザによって共用される複数の計算機がネットワークを介して接続された計算機システムを、本発明のジョブ管理方法を用いたジョブキューシステムに適用した場合について、図面を参照しながら詳細に説明する。
【００７７】
図１は、本発明のジョブ管理方法が適用された計算機システムの構成例を説明するためのシステム構成図である。
【００７８】
図１において、本実施形態の計算機システム１は、複数のクライアント１１と、複数のサーバ１２と、１つのジョブキューイングサーバ１３とがネットワーク１４により相互に接続されている。
【００７９】
複数のクライアント１１は、複数のユーザが各々ジョブを投入するための計算機（コンピュータ）である。
【００８０】
複数のサーバ１２は、例えばシミュレーションの計算処理などの各種のジョブを実行するための計算機（コンピュータ）である。
【００８１】
ジョブキューイングサーバ１３は、ジョブキューの管理および実行を制御するための計算機（コンピュータ）である。
【００８２】
外部記憶装置１５は、クライアント１１、サーバ１２およびジョブキューイングサーバ１３などのいくつかの計算機に接続されている。
【００８３】
上記構成により、クライアント１１からのジョブ（処理）の投入順に、そのジョブを実行する計算機（サーバ１２）が割り当てられ、各ユーザ毎に、割り当てられる計算機（サーバ１２）の数に制限がユーザジョブリミットとして設けられたジョブキューシステム（ジョブ管理システム）により、ジョブキューの管理および実行が制御される。このジョブキューシステムについて図２を用いて説明する。
【００８４】
図２は、本発明の実施形態に係るジョブキューシステムの構成例を示すブロック図である。
【００８５】
図２に示すように、本実施形態のジョブキューシステム１０では、クライアント１１とサーバ１２とがジョブキューイングサーバ１３を介して接続されており、各々が外部記憶装置１５と接続されている。なお、実際には、図１に示すように、複数のクライアント１１と複数のサーバ１２とジョブキューイングサーバ１３とがネットワーク１４により接続されている。
【００８６】
クライアント１１は、ジョブ投入コマンド１１１と、このジョブ投入コマンド１１１を管理するオペレーティングシステム１１２とを有している。クライアント１１では、ユーザによってジョブ投入コマンド１１１が実行されて、ジョブキューイングサーバ１３に対してジョブが投入される。
【００８７】
サーバ１２は、ジョブ実行制御プログラム１２１と、このジョブ実行制御プログラム１２１を管理するオペレーティングシステム１２２とを有している。
【００８８】
ジョブ実行制御プログラム１２１は、後述するジョブ制御手段としてのジョブスケジューラ１３１からの指示を受けて、ジョブの実行、ジョブの中止およびジョブの再開を制御する。また、ジョブ実行制御プログラム１２１は、ジョブの中止および終了をジョブスケジューラ１３１に通知する。
【００８９】
ジョブキューイングサーバ１３は、ジョブスケジューラ１３１と、このジョブスケジューラ１３１を管理するオペレーティングシステム１３２と、このジョブスケジューラ１３１によって用いられるジョブ管理テーブル１３１ａ、ユーザ管理テーブル１３１ｂ、サーバ管理テーブル１３１ｃ、再開マトリックス１３１ｄおよびログファイル１３１ｅとを有している。
【００９０】
ジョブスケジューラ１３１は、ジョブを実行するタイミングとジョブを実行するサーバ１２とを決定するジョブスケジューリング処理を行う。
【００９１】
外部記憶装置１５は、記憶部１５１を有している。この記憶部１５１には、クライアント１１、サーバ１２およびジョブキューイングサーバ１３からアクセスされ、ジョブを実行するために必要なデータ、ジョブを実行する前に複製・退避されるデータ、およびジョブを中止したときに保存されるジョブのデータおよび状態の複製（チェックポイント）などが保存される。
【００９２】
上記構成により、まず、クライアント１１によってジョブ投入コマンド１１１が実行されると、ジョブキューイングサーバ１３に、ジョブを実行するタイミングとジョブを実行するサーバ１２とを決定するジョブスケジューリング処理が依頼される。
【００９３】
次に、このジョブキューイングサーバ１３では、このジョブ投入コマンド１１１を受けて、ジョブスケジューラ１３１が動作する。即ち、このジョブスケジューラ１３１は、ジョブ管理テーブル１３１ａ、ユーザ管理テーブル１３１ｂ、サーバ管理テーブル１３１ｃ、再開マトリックス１３１ｄおよびログファイル１３１ｅを参照および管理しながら、ジョブのスケジューリング（実行タイミングとサーバ決定）が行われる。
【００９４】
その後、ジョブ実行制御プログラム１２１は、ジョブスケジューラ１３１からの指示を受けて、ジョブの実行、ジョブの中止および、ジョブの再開を制御する。また、ジョブ実行制御プログラム１２１は、ジョブの中止やジョブの終了をジョブスケジューラ１３１側に通知する。
【００９５】
図３は、図２の外部記憶装置１５の記憶部１５１に保存された各データのディレクトリ構成例を示す図である。
【００９６】
図３に示すように、ジョブ１、ジョブ２、・・・のそれぞれを実行するために必要なデータは、ジョブ実行ディレクトリ（ｄａｔａ）の各ジョブ用ディレクトリｊｏｂ１、ｊｏｂ２、・・・に保存されている。また、ジョブ１、ジョブ２、・・・のそれぞれを実行する前に複製・退避されるデータは、データ退避ディレクトリ（ｔａｉｈｉ）の各ジョブ用ディレクトリｊｏｂ１、ｊｏｂ２、・・・に保存されている。さらに、ジョブ１、ジョブ２、・・・のそれぞれを中止したときに保存されるジョブのデータおよび状態の複製（チェックポイント）は、チェックポイント保存ディレクトリ（ｃｐ）の各ジョブ用ディレクトリｊｏｂ１、ｊｏｂ２、・・・に保存されている。
【００９７】
次に、ジョブスケジューラ１３１によって用いられるジョブ管理テーブル１３１ａ、ユーザ管理テーブル１３１ｂ、サーバ管理テーブル１３１ｃ、再開マトリックス１３１ｄおよびログファイル１３１ｅの構成例については、図４〜図８を用いて詳細に説明する。
【００９８】
ジョブ管理テーブル１３１ａは、図４に示すように、ジョブスケジューラ１３１がジョブを制御するために利用される。
【００９９】
ジョブ管理テーブル１３１ａは、ジョブ毎に１つの行が作成されており、ジョブを一意に識別するためのジョブＩＤ、ジョブを投入したユーザを一意に識別するためのユーザＩＤ、ジョブが実行待ち／実行中／中止・実行待ち／中止・実行中のいずれであるかを示すジョブの状態（状態）、クライアント１１からジョブが投入された時刻（投入時刻）、サーバ１２によってジョブの実行が開始された時刻（開始時刻）、ジョブが実行されたサーバ１２の名前（サーバ名）、ジョブを実行する前に複製されたデータが退避されたディレクトリ名（データ退避ディレクトリ名）、ジョブを中止時点から再開させるために作成されたジョブのデータおよび状態の複製が保存されたディレクトリ名（チェックポイント保存ディレクトリ名）、データおよび状態の複製が作成されたチェックポイントにおけるジョブの進捗状況（チェックポイントの進捗）、チェックポイントが作成されたサーバ１２のタイプ（チェックポイントのサーバタイプ）が記録されている。
【０１００】
ジョブの進捗状況は、ジョブによるＣＰＵ使用時間と、当該ジョブが実行されているサーバ１２の性能を乗じた値によって求められる。サーバ１２の性能は、予め、単位時間当たりの処理量が計測され、あるサーバ１２を基準とした相対値によって表されている。サーバ１２の性能およびサーバタイプは、後述するサーバ管理テーブル１３１ｃに記録されている。
【０１０１】
ジョブキューは、このジョブ管理テーブル１３１ａによって制御される。ユーザから投入されたジョブは、ジョブ管理テーブル１３１ａの最終行として各項目の情報が追加される。したがって、ジョブキューの待ち順番は、ジョブ管理テーブル１３１ａの先頭行からの順となる。ただし、ジョブの状態が「実行中」または「中止・実行中」であるものは、実行待ちの順番に含まれない。
【０１０２】
図４の例では、１行目に、ユーザ（ｕｓｅｒ２）によって２００５年８月３０日１０時２５分２０秒に投入されたジョブ（ｊｏｂ１）が２００５年８月３０日１０時２５分２５秒にサーバ１２（ｓｅｒｖｅｒ１）によって開始され、現在実行中であることが示されている。また、図４の２行目には、ユーザ（ｕｓｅｒ１）によって２００５年８月３０日１０時３５分５５秒に投入されたジョブ（ｊｏｂ２）が２００５年８月３０日１０時３６分１２秒にサーバ１２（ｓｅｒｖｅｒ２）によって開始され、現在実行中であることが示されている。さらに、図４の３行目には、ユーザ（ｕｓｅｒ１）によって２００５年８月３０日１０時３５分５９秒に投入されたジョブ（Ｊｏｂ３）が２００５年８月３０日１０時３６分１３秒にサーバ１２（ｓｅｒｖｅｒ３）によって開始され、現在、中止・実行待ちであることが示されている。さらに、図４の４行目には、ユーザ（ｕｓｅｒ３）によって２００５年８月３０日１１時２８分１４秒に投入されたジョブ（Ｊｏｂ４）が２００５年８月３０日１１時２８分２０秒にサーバ１２（ｓｅｒｖｅｒ３）によって開始され、現在実行中であることが示されている。これらの各ジョブ（Ｊｏｂ１〜４）のうち、１番目、２番目および４番目に投入されたジョブ（Ｊｏｂ１、Ｊｏｂ２およびＪｏｂ４）は、現在実行中のものであるため、実行待ちの順番に含まれない。
【０１０３】
一方、図４の３行目には、ユーザ（ｕｓｅｒ１）によって２００５年８月３０日１０時３５分５９秒に投入されたジョブ（Ｊｏｂ３）が２００５年８月３０日１０時３６分１３秒に、空いていたサーバ１２（ｓｅｒｖｅｒ３）によって開始されたが、このジョブ（Ｊｏｂ３）はユーザ（ｕｓｅｒ３）のジョブ（Ｊｏｂ４）が投入されたことによって中止され、実行待ち状態であることが示されている。また、ジョブ（Ｊｏｂ３）を実行する前に複製されたデータが外部記憶装置１５の記憶部１５１におけるディレクトリ（／ｔａｉｈｉ／ｊｏｂ２）に退避され、ジョブ（Ｊｏｂ３）を中止時点から再開させるために作成されたジョブのデータおよび状態の複製（チェックポイント）が外部記憶装置１５の記憶部１５１におけるディレクトリ（／ｃｐ／ｊｏｂ２）に保存されていることが示されている。さらに、チェックポイントにおけるジョブの進捗状況が３１８０、チェックポイントが作成されたサーバ１２のタイプが「３」であることが示されている。
【０１０４】
次に、ユーザ管理テーブル１３１ｂは、図５に示すように、ジョブを投入したユーザを一意に識別するためのユーザＩＤとユーザジョブリミットとの対応が記録されている。このユーザ管理テーブル１３１ｂは、ジョブスケジューラ１３１が各ユーザのユーザジョブリミットを調べるために利用される。
【０１０５】
ここで、ユーザジョブリミットとは、各ユーザに割り当てられるサーバ１２の数の制限に相当し、本発明のジョブキューシステム１０において、他のユーザのジョブに割り込まれないで同時に実行可能なジョブの数となっている。
【０１０６】
図５の例では、１行目と２行目のユーザ（ｕｓｅｒ１とｕｓｅｒ２）のユーザジョブリミットの値は「１」であり、３行目のユーザ（ｕｓｅｒ３）のユーザジョブリミットの値は「２」である。
【０１０７】
次に、サーバ管理テーブル１３１ｃは、図６に示すように、各サーバ１２の性能、タイプ、サーバが空き／実行中のいずれかを示すサーバの状態が記録されている。このサーバ管理テーブル１３１ｃは、ジョブスケジューラ１３１が各サーバ１２の性能、タイプおよび状態を調べるために利用される。また、サーバ１２の状態はジョブスケジューラ１３１によって更新される。
【０１０８】
サーバ１２の性能は、予め、単位時間あたりの処理量が計測され、あるサーバ１２を基準とした相対値として表されている。
【０１０９】
また、サーバ１２のタイプは、チェックポイントからのジョブ再開の可否に係わる項目により分類され、例えばオペレーティングシステム（ＯＳ）の違いなどが挙げられる。ＯＳが異なると、プログラムを実行するための表現が異なるため、相互に同一プログラムを実行することができない場合が多い。この場合、チェックポイントが作成されたＯＳと異なるＯＳでは、チェックポイントからジョブを再開させることができない。ただし、ＯＳ間で互換性を保つものもあり、この場合にはチェックポイントが作成されたＯＳと異なるＯＳでも、チェックポイントからジョブを再開させることができる。本実施形態では、サーバ１２のタイプをＯＳで分類しており、ここでは、タイプ１をＯＳ１、２をＯＳ２、３をＯＳ３、４をＯＳ４としている。
【０１１０】
図６の例では、１行目に示すサーバｓｅｒｖｅｒ＿１の性能が１．０でタイプが２、状態がジョブを実行中であることが示されている。また、図６の２行目には、サーバｓｅｒｖｅｒ＿２の性能が１．４でタイプが３、状態がジョブを実行中であることが示されている。さらに、図６の３行目には、サーバｓｅｒｖｅｒ＿３の性能が０．８でタイプが１、状態がジョブを実行していない空き状態であることが示されている
次に、再開マトリックス１３１ｄは、図７に示すように、各タイプのサーバ１２上で作成されたチェックポイントが、どのタイプのサーバ１２によってジョブを再開可能であるかが予め調べられて表にされている。この表の各行にはジョブ中止元のサーバタイプが示され、各列にはジョブ再開先のサーバタイプが示されている。
【０１１１】
図７の例では、１行目に、チェックポイントが作成されたジョブ中止元のサーバ１２がサーバタイプ「１」のＯＳ１である場合、当該チェックポイントからジョブを再開可能であるものは、タイプ「１」のＯＳ１であるサーバ１２であり、タイプ「２」のＯＳ２や、タイプ「３」のＯＳ３、タイプ「４」のＯＳ４であるサーバ１２では、当該チェックポイントからジョブを再開させることができないことが示されている。また、図７の２行目には、チェックポイントが作成されたジョブ中止元のサーバ１２がサーバタイプ「２」のＯＳ２である場合、当該チェックポイントからジョブを再開可能であるものは、タイプ「２」のＯＳ２や、タイプ「３」のＯＳ３、タイプ「４」のＯＳ４であるサーバ１２であり、タイプ「１」のＯＳ１では、当該チェックポイントからジョブを再開させることができないことが示されている。さらに、図７の３行目には、チェックポイントが作成されたジョブ中止元のサーバ１２がサーバタイプ「３」のＯＳ３である場合、当該チェックポイントからジョブを再開可能であるものは、タイプ「３」のＯＳ３やタイプ「４」のＯＳ４であるサーバ１２であり、タイプ「１」のＯＳ１やタイプ「２」のＯＳ２では、当該チェックポイントからジョブを再開させることができないことが示されている。さらに、図７の４行目には、チェックポイントが作成されたジョブ中止元のサーバ１２がサーバタイプ「４」のＯＳ４である場合、当該チェックポイントからジョブを再開可能であるものは、タイプ「３」のＯＳ３やタイプ「４」のＯＳ４であるサーバ１２であり、タイプ「１」のＯＳ１やタイプ「２」のＯＳ２では、当該チェックポイントからジョブを再開させることができないことが示されている。
【０１１２】
図８に示すように、ログファイル１３１ｅは、実行が終了されたジョブを一意に識別するためのジョブＩＤ、ジョブを投入したユーザを一意に識別するためのユーザＩＤ、クライアント１１からジョブが投入された時刻（投入時刻）、サーバ１２によってジョブの実行が終了された時刻（終了時刻）、およびジョブが実行されたサーバ１２の名前（サーバ名）が記録されている。このログファイル１３１ｅは、ジョブスケジューラ１３１によって更新される。
【０１１３】
図８の例では、１行目に、ユーザ（ｕｓｅｒ２）によって２００５年８月３０日１０時２５分２０秒に投入されたジョブ（ｊｏｂ１）がサーバ１２（ｓｅｒｖｅｒ１）によって実行され、２００５年８月３０日１０時２５分２５秒に終了されていることが示されている。また、図８の２行目には、ユーザ（ｕｓｅｒ１）によって２００５年８月３０日１０時３５分５５秒に投入されたジョブ（ｊｏｂ２）がサーバ１２（ｓｅｒｖｅｒ２）によって実行され、まだ終了されていないことが示されている。さらに、図８の３行目には、ユーザ（ｕｓｅｒ３）によって２００５年８月３０日１１時２８分１４秒に投入されたジョブ（ｊｏｂ３）がサーバ１２（ｓｅｒｖｅｒ２）によって実行され、２００５年８月３０日１１時２８分２０秒に終了されていることが示されている。
【０１１４】
以下に、本実施形態のジョブキューシステム１０を用いたジョブ管理方法について説明する。
【０１１５】
本実施形態のジョブ管理方法では、複数のユーザによって複数の計算機が共用されて、ジョブの投入順に計算機が割り当てられ、各ユーザに割り当てられる計算機の数に制限がユーザジョブリミットとして設けられており、空きの計算機がある場合に、ユーザジョブリミットを越えてジョブを実行させ、他のユーザのジョブが投入されたときに、ジョブの実行を中止させてデータおよび状態の複製（チェックポイント）を作成し、この中止したジョブをジョブキューの先頭位置に戻して次に待機させる。
【０１１６】
ジョブを中止させる場合には、後から開始されたジョブから中止させるか、または、処理済みの計算量が最小であるジョブから中止させる。
【０１１７】
さらに、ジョブの実行前にデータの複製を作成し、中止されたジョブの実行を再開させるときに、チェックポイントからの再開可否を判断し、可能であればチェックポイントからジョブを再開させ、可能でない場合にはジョブ実行前のデータの複製を用いて最初からジョブを再開させる。
【０１１８】
さらに、一旦中止されたジョブを最初から再開させているときに、チェックポイントからジョブを再開させることが可能な他の計算機が空いた場合に、現在のジョブの進捗状況とチェックポイントでのジョブの進捗状況とを比較して、現在のジョブの進捗状況がチェックポイントでのジョブの進捗状況に及んでいない場合に、ジョブを中止させて、他の計算機によりチェックポイントからジョブを再開させる。
【０１１９】
ここで、本実施形態のジョブキューシステム１０を用いたジョブ管理方法について、次の（１）〜（８）により具体的に説明する。
ジョブの投入
まず、ジョブ投入時におけるジョブキューシステム１０の動作について説明する。
【０１２０】
図９は、図２のジョブキューシステム１０のジョブ投入時の動作を示すフローチャートである。
【０１２１】
図９に示すように、ジョブスケジューラ１３１によりステップＳ１０でジョブ投入の有無が検出される。ジョブが投入された場合（ＹＥＳ）、ステップＳ１１でこの投入されたジョブをジョブキューの最後尾に登録する。
【０１２２】
この場合、図２のジョブキューシステム１０において、ユーザがクライアント１１上でジョブ投入コマンド１１１を実行することにより、クライアント１１からジョブキューイングサーバ１３にジョブが投入される。このジョブキューイングサーバ１３に投入されたジョブは、ジョブキューイングサーバ１３上のジョブスケジューラ１３１に引き渡され、ジョブキューの最後尾に並べられる。
【０１２３】
さらに、ステップＳ１２でジョブ管理テーブル１３１ａに対して、この投入されたジョブの情報が記録される。
【０１２４】
即ち、ジョブ管理テーブル１３１ａには、図４に示すように、ジョブスケジューラ１３１によって、ジョブを一意に識別するためのジョブＩＤ、ジョブを投入したユーザのユーザＩＤ、ジョブの投入時刻、ジョブの状態が記録される。ジョブの状態は、「実行待ち」とされる。
（２）ジョブの実行開始
次に、ジョブの実行開始時におけるジョブキューシステム１０の動作について説明する。
【０１２５】
図９のステップＳ１１でジョブキューの最後尾に、投入された新しいジョブが登録されると、ジョブスケジューラ１３１によって、ステップＳ２０で、図６のサーバ管理テーブル１３１ｃが参照され、状態が「空き」のサーバ１２が検索される。「空き」状態のサーバ１２があれば、そのうち、図６のサーバ管理テーブル１３１ｃに記された「性能」の値が最大であるものが、ジョブの実行サーバ１２として選択される。
【０１２６】
ステップＳ２１で「空き」状態のサーバ１２が選択されたかどうかが判定される。「空き」状態のサーバ１２が選択された場合（ＹＥＳ）には、ジョブスケジューラ１３１によって、ステップＳ２２で、キューの最後尾に登録されたジョブが、選択された実行サーバ１２に引き渡される。この引き渡されたジョブは、選択された実行サーバ１２上でジョブの実行が開始される。
【０１２７】
このジョブスケジューラ１３１では、ステップＳ２３で、ジョブ管理テーブル１３１ａおよびサーバ管理テーブル１３１ｃにジョブ情報を記録すると共に、図３に示す外部記憶装置１５の記憶部１５１にジョブ実行前のデータを複製として保存する。
【０１２８】
即ち、このジョブをサーバ１２に引き渡して実行するときに、図３に示す外部記憶装置１５の記憶部１５１のディレクトリ構造において、ジョブが起動されたディレクトリ以下にあるジョブ実行ディレクトリのデータが、データ退避ディレクトリに複製されて保存される（ジョブの実行前にデータを複製する）。また、図４のジョブ管理テーブル１３１ａには、ジョブスケジューラ１３１によって、ジョブの実行開始時刻、ジョブが実行されるサーバ１２の名前、データが退避されたディレクトリの名前が記録され、ジョブが実行されるサーバ１２の状態が「実行中」に更新される。さらに、図６のサーバ管理テーブル１３１ｃは、ジョブスケジューラ１３１によって、ジョブが実行されるサーバ１２の状態が「実行中」に更新される。
（３）ユーザジョブリミットによるジョブの中止と飛び越し
ユーザジョブリミットによるジョブの中止と飛び越し動作について説明する。
【０１２９】
図１０は、図２のジョブキューシステム１０のユーザジョブリミットによるジョブの中止と飛び越し動作を示すフローチャートである。
【０１３０】
図１０に示すように、上記（２）の検索によって「空き」状態のサーバ１２がない場合ステップＳ２１；ＮＯ）、ジョブスケジューラ１３１によって、ステップＳ３０で、図４のジョブ管理テーブル１３１ａからユーザ毎に、状態が「実行中」のジョブがいくつあるかが集計される。
【０１３１】
この集計結果は、ステップＳ３１で、図５のユーザ管理テーブル１３１ｂから得られたユーザジョブリミットと比較されて、ユーザジョブリミットを越えているユーザがおるかどうかが検索される。ユーザジョブリミットを越えているユーザがない場合（ステップＳ３１；ＮＯ）、または、ジョブキュー最後尾のジョブのユーザ自身がユーザジョブリミットを越えている場合（ステップＳ３２；ＮＯ）に、ステップＳ３３で、ジョブは、ジョブキューの最後尾に並べられたままで、「実行待ち」の状態とされる。
【０１３２】
一方、ユーザジョブリミットを越えているユーザがあり（ステップＳ３１；ＹＥＳ）、かつ、その中にジョブキュー最後尾のジョブのユーザが含まれない場合（ステップＳ３２；ＹＥＳ）には、ステップＳ３４でユーザジョブリミットを越えているユーザに対応するジョブから中止対象ジョブが選択される。
【０１３３】
例えば、図５のユーザジョブリミットを越えているユーザのジョブのうち、図４に示す実行開始時刻が最近であるジョブ、即ち、後から開始されたジョブが検索され、中止対象ジョブとされる。または、ユーザジョブリミットを越えているユーザに対して、各ジョブの進捗状況が比較され、進捗が最も進んでいないジョブ、即ち、処理済みの計算量が最小であるジョブが中止対象ジョブとされてもよい。
【０１３４】
各ジョブの進捗状況は、ＣＰＵ使用時間と、当該ジョブが実行されているサーバ１２の性能を乗じた値で計算される。サーバ１２の性能は、予め、単位時間当たりの処理量が計測され、あるサーバ１２を基準とした相対値で表される。このサーバ１２の性能は、図６のサーバ管理テーブル１３１ｃに登録されている。
【０１３５】
このように、ステップＳ３４で中止対象ジョブを選択することにより、後で、ジョブをチェックポイントからではなく初めから再開させた場合に、中止による処理の損失を最小限に抑えることができる。
【０１３６】
さらに、このジョブスケジューラ１３１では、ステップＳ３５およびＳ３６で、ジョブ管理テーブル１３１ａにジョブ情報を更新して中止対照ジョブが先頭に移動すると共に、図３に示す外部記憶装置１５の記憶部１５１に中止対照ジョブのデータを複製（チェックポイント）して保存、または、すでにチェックポイントがあればデータ更新する。
【０１３７】
即ち、ステップＳ３５で、図４のジョブ管理テーブル１３１ａには、ジョブスケジューラ１３１によって、チェックポイントの保存ディレクトリ名、チェックポイントの進捗、チェックポイントが作成されたサーバ１２のタイプ、ジョブの状態として「中止・実行待ち」が記録され、中止対象ジョブがジョブキューの先頭に並べられる。このようにして、図４のジョブ管理テーブル１３１ａに記された当該ジョブの行が、テーブルの先頭位置に移動される。
【０１３８】
また、ステップＳ３６で、選択された中止対象ジョブのデータおよび状態の複製（チェックポイント）が、ジョブスケジューラ１３１によって作成されて、外部記憶装置１５の記憶部１５１におけるチェックポイント保存ディレクトリに保存されて、次のステップＳ３７でそのジョブは中止される。
【０１３９】
また、ジョブスケジューラ１３１によって、図４のジョブ管理テーブル１３１ａが調べられて、当該中止対象ジョブに対して既にチェックポイントがある場合には、当該中止対象ジョブの進捗状況と、ジョブ管理テーブル１３１ａに記されたチェックポイントの進捗状況とが比較され、進捗状況がより進んでいる方が新たなチェックポイントとして保存される。ジョブの進捗は、ＣＰＵ使用時間と、当該ジョブが実行されているサーバ１２の性能を乗じた値によって計算される。
【０１４０】
その後、ステップＳ３８でジョブ注視した空きサーバ１２にそのジョブを引き渡してジョブ実行させる。即ち、ジョブスケジューラ１３１によって、ジョブキューにおいて実行待ち状態とされている、ユーザジョブリミットを越えたユーザのジョブを飛び越して、キュー最後尾に登録されたジョブが、上記中止対象ジョブの中止処理によって空いたサーバ１２に引渡され、そのジョブが実行される。
【０１４１】
このとき、ステップＳ３９で、ジョブ管理テーブル１３１ａおよびサーバ管理テーブル１３１ｃにジョブ情報を更新すると共に、図３に示す外部記憶装置１５の記憶部１５１にジョブ実行前のデータを複製として保存する。
【０１４２】
即ち、ジョブスケジューラ１３１によって、図３に示す外部記憶装置１５の記憶部１５１のディレクトリ構造において、ジョブが起動されたディレクトリ以下にあるジョブ実行ディレクトリのデータが、データ退避ディレクトリに複製されて保存される。また、図４のジョブ管理テーブル１３１ａには、ジョブスケジューラ１３１によって、ジョブの実行開始時刻、ジョブが実行されるサーバ１２の名前、データが退避されたディレクトリの名前が記録され、サーバ１２の状態が「実行中」に更新される。さらに、図６のサーバ管理テーブル１３１ｃは、ジョブスケジューラ１３１によって、ジョブが実行されるサーバ１２の状態が「実行中」に更新される。
【０１４３】
これにより、ユーザジョブリミットを越えてジョブが実行されていたユーザによる計算機の独占を防いで、本来実行されるべき、ユーザジョブリミットを越えていないユーザのジョブを実行することができる。
（４）再開ジョブのチェックポイント有効利用
再開ジョブのチェックポイントを有効利用することについて説明する。
【０１４４】
図１１は、図２のジョブキューシステム１０において、再開ジョブのチェックポイントを有効利用する動作を示すフローチャートである。
【０１４５】
図１１に示すように、ステップＳ４０でサーバ１２に空きができたとき（ＹＥＳ）に、ステップＳ４１で図４のジョブ管理テーブル１３１ａにおいて状態が「中止・実行中」となっているジョブがあるかどうかを検索する。この場合に、当該ジョブの全てのものに対して、投入時間の最も早いジョブから順に、以下の処理が行われる。
【０１４６】
ステップＳ４１で検索された中止・実行中のジョブのうち、ステップＳ４２で投入時間の最も早いジョブが選択される。ステップＳ４３でこの選択されたジョブの再開が可能かどうかが判定される。
【０１４７】
即ち、ジョブスケジューラ１３１によって、図７の再開マトリックス１３１ｄが参照され、図４のジョブ管理テーブル１３１ａに記されたチェックポイントが作成されたサーバ１２（中止元）のサーバタイプと、空きサーバ１２（再開先）のサーバタイプによって、チェックポイントからのジョブの再開可否が調べられる。
【０１４８】
ジョブの再開が不可能である場合（ステップＳ４３でＮＯ）には、次のジョブの処理に移る。即ち、ステップＳ４４で投入時間が次に早いジョブを選択して、ステップＳ４３のジョブの再開可能性を判定する。
【０１４９】
また、ジョブの再開が可能である場合（ステップＳ４３でＹＥＳ）には、ステップＳ４５で、現在のジョブの進捗状況と、チェックポイントでのジョブの進捗状況とが比較される。現在のジョブの進捗状況の方が進んでいる場合（ステップＳ４５でＹＥＳ）には、次のジョブの処理に移る。即ち、ステップＳ４４で投入時間が次に早いジョブを選択して、ステップＳ４３のジョブの再開可能性を判定する。
【０１５０】
一方、チェックポイントでのジョブの進捗状況の方が進んでいる場合（ステップＳ４５でＮＯ）には、ステップＳ４６で実行中のジョブが中止処理され、ステップＳ４７で空きサーバ１２上でチェックポイントからジョブが再開される。この場合、ステップＳ４８において、ジョブスケジューラ１３１によって、図４のジョブ管理テーブル１３１ａに記録されたチェックポイント保存ディレクトリ名とジョブがサーバ１２に引き渡され、ジョブ管理テーブル１３１ａの開始時刻とサーバ名が更新される。また、ジョブスケジューラ１３１によって、図６のサーバ管理テーブル１３１ｃにおける当該サーバ１２の状態が「実行中」に更新される。
【０１５１】
また、ステップＳ４８において、チェックポイント保存ディレクトリ名とジョブが引き渡された空きサーバ１２では、外部記憶装置１５の記憶部１５１におけるチェックポイント保存ディレクトリからジョブのデータおよび状態が復元され、ジョブの実行が再開される。
【０１５２】
当該ジョブが実行されていたサーバ１２は、新たに空き状態となる。
【０１５３】
さらに、ステップＳ４９で、上記再開ジョブ処理が終了したかどうかが判定され、再開ジョブ処理が終了するまでは、ステップＳ４２〜Ｓ４９の処理が繰り返される。ステップＳ４９で上記再開ジョブ処理が終了した場合（ＹＥＳ）には、次に説明する図１２の処理を行う。
【０１５４】
これにより、一旦中止されたジョブについて、チェックポイントからではなく、初めから再開された場合でも、進捗状況に応じてチェックポイントまで処理を進めることが可能となり、ジョブをより短時間で終了することができる。
（５）サーバが空いたとき：ユーザジョブリミットに達していないユーザジョブの実行
サーバが空いたときに、ユーザジョブリミットに達していないユーザのジョブを実行する場合について、ジョブキーシステム１０の動作を説明する。
【０１５５】
図１２は、図２のジョブキューシステム１０において、ユーザジョブリミットに達しないユーザジョブを実行する場合の動作を示すフローチャートである。
【０１５６】
図１２に示すように、ステップＳ５０で、サーバ１２に空きができた場合（ＹＥＳ）に、上記（４）「再開ジョブのチェックポイント有効利用」の処理が完了した後（ステップＳ４９でＹＥＳ）、図４のジョブ管理テーブル１３１ａにおいてサーバ１２の状態が「実行待ち」または「中止・実行待ち」となっているジョブに対して、先頭位置から順に、空き状態のサーバ１２がなくなるまで、以下の処理が行われる。
【０１５７】
即ち、ステップＳ５０でこの時点でサーバ１２に空きがあるかどうかが判定されて、サーバ１２に空きがある場合（ＹＥＳ）に、ステップＳ５１で実行待ちまたは中止・実行待ちのジョブを検索する。その検索した実行待ちまたは中止・実行待ちのジョブのうち、ステップＳ５２で先頭ジョブを選択する。
【０１５８】
さらに、ジョブスケジューラ１３１によって、ステップＳ５３で当該ジョブのユーザに対して、図４のジョブ管理テーブル１３１ａから、状態が「実行中」のジョブがいくつあるかが集計され、ステップＳ５４で、その集計結果が図５のユーザ管理テーブル１３１ｂから得られたユーザジョブリミットと比較されて、当該ジョブのユーザが図５のユーザジョブリミットに達しているか否かが調べられる。
【０１５９】
当該ジョブのユーザがユーザジョブリミットに達している場合（ステップＳ５４でＹＥＳ）には、次のジョブの処理に進む。即ち、ステップＳ５５で処理の順番が次に早いジョブを選択して、ステップＳ５３の集計処理を行う。
【０１６０】
一方、当該ジョブのユーザがユーザジョブリミットに達していない場合（ステップＳ５４でＮＯ）、ステップＳ５６でジョブの実行がはじめてであるかどうかが調べられ、ジョブの実行がはじめての場合（ＹＥＳ）に、ステップＳ５７でそのジョブの実行を行う。
【０１６１】
即ち、当該ジョブが初めて実行されるものであり（ステップＳ５６でＹＥＳ）、図４のジョブ管理テーブル１３１ａにおいて当該ジョブの状態が「実行待ち」である場合には、ジョブスケジューラ１３１によって、ジョブが実行サーバ１２に引き渡される。引き渡されたジョブは、ステップＳ５７でサーバ１２上で実行が開始される。また、このとき、ステップＳ５８で、ジョブスケジューラ１３１によって、ジョブがサーバ１２に引き渡されるときに、図３に示す外部記憶装置１５の記憶部１５１のディレクトリ構造において、ジョブが起動されたディレクトリ以下にあるジョブ実行ディレクトリのデータが、データ退避ディレクトリに複製されて保存される。さらに、図４のジョブ管理テーブル１３１ａは、ジョブスケジューラ１３１によって、ジョブの実行開始時刻、ジョブが実行されるサーバ１２の名前、データが退避されたディレクトリの名前が記録され、サーバの状態が「実行中」とされる。さらに、図６のサーバ管理テーブル１３１ｃでは、ジョブスケジューラ１３１によって、当該サーバ１２の状態が「実行中」に更新される。
【０１６２】
ステップＳ５９で、上記ユーザジョブリミットに達しないユーザジョブ実行処理が完了したかどうかが判定される。この完了は、検索ジョブに対する処理が全て終了したかまたは空きサーバがなくなったかで判定される。上記ユーザジョブリミットに達しないユーザジョブ実行処理が完了していない場合（ＮＯ）にはステップＳ５０の処理に戻り、上記ユーザジョブリミットに達しないユーザジョブ実行処理が完了した場合（ＹＥＳ）には後述する図１３の（６）「ユーザジョブリミットを越えたユーザジョブ実行処理」が実施される。
【０１６３】
また、当該ジョブが一度中止されたジョブであり（ステップＳ５６でＮＯ）、図４のジョブ管理テーブル１３１ａにおいて当該ジョブの状態が「中止・実行待ち」である場合には、ジョブスケジューラ１３１によって、後述する図１４の（７）「ジョブの再開処理」が実施される。
（６）サーバが空いたとき：ユーザジョブリミットを越えたユーザジョブの実行
サーバが空いたときに、ユーザジョブリミットを越えたユーザのジョブを実行する場合について、ジョブキーシステム１０の動作を説明する。
【０１６４】
図１３は、図２のジョブキューシステム１０において、ユーザジョブリミットに達したユーザジョブを実行する場合の動作を示すフローチャートである。
【０１６５】
図１３に示すように、上記（５）「サーバが空いた時：ユーザジョブリミットに達していないユーザジョブの実行の処理」が完了された後（ステップＳ５９でＹＥＳ）で、さらに空き状態のサーバ１２がある場合（ステップＳ６０でＹＥＳ）、図４のジョブ管理テーブル２１においてサーバ１２の状態が「実行待ち」または「中止・実行待ち」となっているジョブに対して、先頭から順に、空き状態のサーバ１２がなくなるまで、以下の処理が行われる。
【０１６６】
即ち、ステップＳ６０でこの時点でサーバ１２に空きがあるかどうかが判定されて、サーバ１２に空きがある場合（ＹＥＳ）に、ステップＳ６１で実行待ちまたは中止・実行待ちのジョブを検索する。その検索した実行待ちまたは中止・実行待ちのジョブのうち、ステップＳ６２で先頭ジョブを選択する。
【０１６７】
さらに、ジョブスケジューラ１３１によって、ステップＳ６３で当該ジョブのユーザに対して、図４のジョブ管理テーブル１３１ａから、状態が「実行中」のジョブがいくつあるかが集計され、ステップＳ６４で、その集計結果が図５のユーザ管理テーブル１３１ｂから得られたユーザジョブリミットと比較されて、当該ジョブのユーザが図５のユーザジョブリミットを越えているか否かが調べられる。
【０１６８】
当該ジョブのユーザがユーザジョブリミットに達していない場合（ステップＳ６４でＮＯ）には、次のジョブの処理に進む。即ち、ステップＳ６５で処理の順番が次に早いジョブを選択して、ステップＳ６３の集計処理を行う。
【０１６９】
一方、当該ジョブのユーザがユーザジョブリミットに達している場合（ステップＳ６４でＹＥＳ）、ステップＳ６６でジョブの実行がはじめてであるかどうかが調べられ、ジョブの実行がはじめての場合（ＹＥＳ）に、ジョブスケジューラ１３１によって、ステップＳ６７でそのジョブの実行を行う。
【０１７０】
このようにして、当該ジョブが初めて実行されるものであり（ステップＳ６６でＹＥＳ）、図４のジョブ管理テーブル１３１ａにおいて当該ジョブの状態が「実行待ち」である場合には、ジョブスケジューラ１３１によって、このジョブが実行サーバ１２に引き渡される。  この引き渡されたジョブは、サーバ１２上で実行が開始される。
【０１７１】
また、ジョブスケジューラ１３１によって、ジョブがサーバ１２に引き渡されるときに、ステップＳ６８において、図３の外部記憶装置１５の記憶部１５１のディレクトリ構造において、ジョブが起動されたディレクトリ以下にあるジョブ実行ディレクトリのデータが、データ退避ディレクトリに複製されて保存される。さらに、図４のジョブ管理テーブル１３１ａは、ジョブスケジューラ１３１によって、ジョブの実行開始時刻、ジョブが実行されるサーバ１２の名前、データが退避されたディレクトリの名前が記録され、サーバの状態が「実行中」とされる。さらに、図６のサーバ管理テーブル１３１ｃでは、ジョブスケジューラ１３１によって、当該サーバ１２の状態が「実行中」に更新される。
【０１７２】
当該ジョブが一度中止されたジョブであり（ステップＳ６６でＮＯ）、図４のジョブ管理テーブル１３１ａにおいて当該ジョブの状態が「中止・実行待ち」である場合には、ジョブスケジューラ１３１によって、後述する（７）の「ジョブの再開処理」が実施されることになる。
【０１７３】
また、ステップＳ６９で、上記ユーザジョブリミットに達するユーザジョブ実行処理が完了したかどうかが判定される。この完了は、検索ジョブに対する処理が全て終了したかまたは空きサーバがなくなったかで判定される。上記ユーザジョブリミットに達するユーザジョブ実行処理が完了していない場合（ＮＯ）にはステップＳ６０の処理に戻り、上記ユーザジョブリミットに達するユーザジョブ実行処理が完了した場合（ＹＥＳ）には後述する（７）「ジョブの再開処理」が実施されることになる。
【０１７４】
これにより、従来技術ではユーザジョブリミットのために無駄に空いていた計算機をなくして、計算機資源を有効活用することによって、単一ユーザにより連続投入されたジョブをより短時間で終了することができる。
（７）ジョブの再開
ジョブ再開時におけるジョブキューシステム１０の動作について説明する。
【０１７５】
図１４は、図２のジョブキューシステム１０において、ジョブ再開処理および終了処理を実行する場合の動作を示すフローチャートである。
【０１７６】
図４のジョブ管理テーブル１３１ａにおいて、状態が「中止・実行待ち」となっているジョブを再開させる場合（ステップＳ６６でＮＯ）、ジョブスケジューラ１３１によって、図７の再開マトリックス１３１ｄが参照される。図１４に示すように、ステップＳ７０で図４のジョブ管理テーブル１３１ａから調べられた中止ジョブのサーバタイプ（中止元）と、図６のサーバ管理テーブル１３１ｃから調べられたサーバ１２のサーバタイプ（再開先）との組み合わせが互いに適合するように再開マトリックス１３１ｄに基づいて、チェックポイントの再開可否が調べられる。
【０１７７】
チェックポイントからのジョブ再開が可能である場合（ステップＳ７０でＹＥＳ）には、ジョブスケジューラ１３１によって、ステップＳ７１で図４のジョブ管理テーブル１３１ａに記録されたチェックポイント保存ディレクトリ名とジョブがサーバ１２に引き渡される。また、ジョブスケジューラ１３１によって、ステップＳ７２で図４のジョブ管理テーブル１３１ａにおける開始時刻とサーバ名が更新されて、状態が「中止・実行中」に更新される。さらに、ジョブスケジューラ１３１によって、図６のサーバ管理テーブル１３１ｃにおける当該サーバ１２の状態が「実行中」に更新される。ステップＳ７３で、チェックポイント保存ディレクトリ名とジョブを引き渡された再開先のサーバ１２では、外部記憶装置１５の記憶部１５１におけるチェックポイント保存ディレクトリからジョブのデータおよび状態が復元され、ジョブの実行が再開される。
【０１７８】
一方、チェックポイントからのジョブ再開が不可能である場合（ステップＳ７０でＮＯ）には、ジョブスケジューラ１３１によって、図４のジョブ管理テーブル１３１ａに記録された開始データ退避ディレクトリより、ステップＳ７４で実行開始前のデータが外部記憶装置１５の記憶部１５１における実行ディレクトリにコピー、復元され、ジョブがサーバ１２に引き渡される。これによって、ステップＳ７５で、再開先のサーバ１２では、ジョブが最初から再開される。また、ステップＳ７２で、ジョブスケジューラ１３１によって、図４のジョブ管理テーブル１３１ａにおける開始時刻とサーバ名が更新され、状態が「中止・実行中」に更新される。さらに、ジョブスケジューラ１３１によって、図６のサーバ管理テーブル１３１ｃにおける当該サーバ１２の状態が「実行中」に更新される。
【０１７９】
これにより、チェックポイントが作成された計算機と、チェックポイントからジョブを再開しようとする計算機とで、オペレーティングシステム（ＯＳ）が異なることなどが原因で、ジョブをチェックポイントから再開させることができない場合でも、空き状態の計算機によってジョブを最初から実行することが可能となり、計算機を有効に活用することができる。
（８）ジョブの終了
ジョブ終了時におけるジョブキューシステム１０の動作について説明する。
【０１８０】
図１４に示すように、ステップＳ７３およびＳ７５で、サーバ１２上でジョブの再開実行が終了すると、ジョブ実行制御プログラム１２１によって、ジョブの終了がジョブスケジューラ１３１に通知される。このジョブ終了の通知の有無により、ステップＳ８０で、サーバ１２上でジョブが終了したか否かが判定される。
【０１８１】
ジョブが終了した場合（ステップＳ８０でＹＥＳ）、ステップＳ８１で、このジョブスケジューラ１３１によって、当該ジョブに関する情報が図４のジョブ管理テーブル１３１ａより削除される。また、ジョブスケジューラ１３１によって、図８のログファイル１３１ｅに対して、当該ジョブに関する情報（ジョブＩＤ、ユーザＩＤ、投入時刻、終了時刻、実行サーバ１２の名前）が記録される。さらに、図６のサーバ管理テーブル１３１ｃにおけるサーバの状態が「空き」に更新される。さらに、ジョブの開始時に作成されたデータの保存ディレクトリと、ジョブが中止された場合に作成されるチェックポイントのデータが保存されたディレクトリがあれば、外部記憶装置１５の記憶部１５１から削除される。
【０１８２】
以上により、本実施形態によれば、複数のユーザによって複数の計算機が共用されて、ジョブの投入順に計算機が割り当てられ、各ユーザに割り当てられる計算機の数に制限（ユーザジョブリミット）が設けられたジョブキューシステム１０において、空き状態の計算機がある場合に、ユーザジョブリミットを越えてジョブを実行させ、他のユーザのジョブが投入されたときに、当該ジョブの実行を中止させてデータおよび状態の複製を作成し、ジョブキューの先頭位置に戻すことによって、単一ユーザによる計算機の独占を防ぐと共に、計算機の無駄な空き状態を防ぐことができる。また、データおよび状態の複製を作成した時点（チェックポイント）からジョブを再開させることができる。
【０１８３】
また、ジョブの実行前にデータの複製を作成することによって、中止されたジョブについて、チェックポイントから再開させることができない場合でも、ジョブを最初から再開させることができる。
【０１８４】
さらに、中止されたジョブの実行を再開させるときに、チェックポイントからの再開可否を判断して、可能であればチェックポイントからジョブを再開させ、可能でない場合には最初からジョブを再開させることによって、チェックポイントが作成された計算機と、チェックポイントからジョブを再開させようとする計算機のオペレーティングシステム（以下、ＯＳと記す）が異なるなどの原因によって、ジョブをチェックポイントから再開させることができない場合でも、空いている計算機を有効に活用することができる。
【０１８５】
さらに、一旦中止されたジョブを最初から再開させているときに、チェックポイントからジョブを再開させることが可能な他の計算機が空いた場合に、現在のジョブの進捗状況とチェックポイントでのジョブの進捗状況とを比較して、現在のジョブの進捗状況がチェックポイントでのジョブの進捗状況に及んでいない場合には、ジョブを中止させて他の計算機によりチェックポイントからジョブを再開させることによって、中止されたジョブについて、ジョブを最初から再開させた場合でも、進捗状況が進んでいる場合にはチェックポイントまで処理を進めることができ、ジョブをより短時間で終了させることができる。
【０１８６】
さらに、ジョブを中止させる場合には、後から開始されたジョブから中止させるか、または、処理済みの計算量が最小であるジョブから中止させることによって、ジョブを最初から再開させた場合に生じる、ジョブ中止による処理の損失を最小限に抑えることができる。
【０１８７】
したがって、本実施形態によれば、空きの計算機がある場合に、ユーザユーザジョブリミットを越えてその計算機にジョブを実行させ、他のユーザからジョブが投入されたときには、そのジョブの実行を中止させてデータおよび状態の複製を作成し、そのジョブをジョブキューの先頭に戻して次の処理のために待機させるようにしたため、単一のユーザにより計算機を独占させることなく、空き状態の計算機を利用して、連続投入されたジョブを短時間で完了させることができる。
【０１８８】
なお、本実施形態では、特に説明しなかったが、本発明のジョブキューシステム１０はハードウェアで構成することもできるし、ソフトウェアで構成することもできる。本発明のジョブキューシステム１０をソフトウェアで構成する場合には、全体の制御を行うコンピュータ制御手段としてのＣＰＵ（中央演算処理装置）と、このジョブ管理方法の各処理ステップをコンピュータ（ＣＰＵ）に実行させるための制御プログラムおよびそのデータが記録されたコンピュータ（ＣＰＵ）読み出し可能な可読記録媒体（記憶手段）としてのＲＯＭと、このＲＯＭから本発明の制御プログラムやゲームプログラムが読み出され、ワークメモリとして働く記憶手段としてのＲＡＭとを有している。本発明では、これらのＣＰＵおよびＲＡＭはジョブスケジューラ１３１内に設けられていてもよい。
【０１８９】
この制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体としては、ハードディスク、光ディスク、磁気ディスクおよびＩＣメモリなどで構成することができる。これは、携帯自在な光ディスク、磁気ディスクおよびＩＣメモリなどであってもよい。また、この携帯自在な光ディスク、磁気ディスクおよびＩＣメモリなどから本発明のジョブキューシステム１０内のハードディスク、光ディスク、磁気ディスクおよびＩＣメモリなどの記憶手段に制御プログラムがインストールされるように構成してもよいし、インターネットやイントラネット（サーバ装置）を介して、本発明のジョブキューシステム１０内のハードディスク、光ディスク、磁気ディスクおよびＩＣメモリなどの記憶手段に制御プログラムがインストールされるように構成してもよい。
【０１９０】
例えばジョブキューシステム１０の場合、ＣＰＵ（制御部）としてのジョブ制御手段（ジョブスケジューラ１３１）は、制御プログラムに基づいて、図１４および図１５に示すように、中止ジョブのサーバタイプと再開先のサーバタイプとが適合するようにチェックポイントからのジョブの再開可否を判定するジョブ再開判定手段１３ｋと、このジョブ再開判定手段１３ｋによる判定結果がジョブ再開可能な場合に再開先のサーバ計算機にチェックポイントからのジョブ再開を指示し、この判定結果がジョブ再開不可能な場合に再開先のサーバ計算機に最初からのジョブ再開を指示するジョブ再開指示手段１３ｌとの各処理機能を実行する。
【０１９１】
また、ＣＰＵ（制御部）としてのジョブ制御手段（ジョブスケジューラ１３１）は、制御プログラムに基づいて、図９および図１５に示すように、投入されたジョブを第１記憶部のジョブキューの最後尾に登録するジョブ登録手段１３ａと、登録されたジョブに対する「空き」状態のサーバ計算機を選択するサーバ選択手段１３ｂと、選択されたサーバ計算機に、登録されたジョブの実行を指示するジョブ実行指示手段１３ｃとの各処理機能を実行する。
【０１９２】
さらに、ＣＰＵ（制御部）としてのジョブ制御手段（ジョブスケジューラ１３１）は、制御プログラムに基づいて、図９および図１５に示すように、ジョブ登録手段１３ａによるジョブ登録時に第１記憶部のジョブ管理テーブルに登録ジョブの管理情報を記録させるジョブ情報記録手段１３ｄの処理機能を実行する。
【０１９３】
さらに、ＣＰＵ（制御部）としてのジョブ制御手段（ジョブスケジューラ１３１）は、制御プログラムに基づいて、図１０および図１５に示すように、サーバ計算機に「空き」状態のものがない場合に、ユーザ毎に、「実行中」のジョブがいくつあるかを集計した集計結果がユーザジョブリミットを越えているユーザを検索するユーザジョブリミット超過ユーザ選択手段１３ｅと、このユーザジョブリミットを越えているユーザがあり、かつ当該ユーザの中に、ジョブキューの最後尾のジョブに対応した他のユーザがいない場合に、ユーザジョブリミットを越えているユーザに対応するジョブから中止対象ジョブを選択する中止対象ジョブ選択手段１３ｆと、選択された中止対象ジョブの実行を中止指示するジョブ中止指示手段１３ｇと、ジョブ中止指示した「空き」状態のサーバ計算機に、ジョブキューの最後尾のジョブの実行を指示するジョブ実行指示手段１３ｃとの各処理機能を実行する。
【０１９４】
さらに、ＣＰＵ（制御部）としてのジョブ制御手段（ジョブスケジューラ１３１）は、制御プログラムに基づいて、図１０および図１５に示すように、中止対象ジョブを選択時に、ジョブ管理テーブル上の該中止対象ジョブの管理情報を更新して該中止対象ジョブをジョブキューの先頭位置に移動させると共に、中止対象ジョブのその時点でのジョブ情報をチェックポイントとして複製して情報保存するジョブ情報記録手段１３ｄの処理機能を実行する。
【０１９５】
さらに、ＣＰＵ（制御部）としてのジョブ制御手段（ジョブスケジューラ１３１）は、制御プログラムに基づいて、図１１および図１５に示すように、サーバ計算機に空きができたときに、中止・実行中のジョブを検索するジョブ検索手段１３ｈと、検索された中止・実行中のジョブのうち、投入時間の最も早いジョブを選択するジョブ選択手段１３ｉと、選択されたジョブの再開が可能かどうかを判定するジョブ再開判定手段１３ｋと、ジョブの再開が不可能な場合、または、ジョブの再開が可能な場合でかつ、現在のジョブの進捗状況が、該中止・実行中のジョブよりも進んでいる場合に、投入時間が次に早いジョブを選択して、ジョブ再開判定手段１３ｋを動作させるジョブ再開判定起動手段１３ｊと、中止・実行中のジョブの進捗状況が、現在のジョブよりも進んでいる場合に、実行中のジョブを中止するジョブ中止指示手段１３ｇと、空きサーバ計算機上でチェックポイントからジョブを再開するように実行指示するジョブ再開指示手段１３ｌとの各処理機能を実行する。
【０１９６】
さらに、ＣＰＵ（制御部）としてのジョブ制御手段（ジョブスケジューラ１３１）は、制御プログラムに基づいて、図１２および図１５に示すように、サーバ計算機に空きができた場合に、実行待ちまたは中止・実行待ちのジョブを検索するジョブ検索手段１３ｈと、検索した実行待ちまたは中止・実行待ちのジョブのうち先頭ジョブを選択する先頭ジョブ選択手段１３ｎと、選択したジョブのユーザに対して実行中のジョブを集計するジョブ集計手段１３ｐと、このジョブ集計手段１３ｐによる集計結果がユーザジョブリミットを越えているか否かを判定するユーザジョブリミット超過判定手段１３ｍと、当該ジョブのユーザがユーザジョブリミットを越えている場合に、次のジョブの集計処理に進むジョブ集計起動手段１３ｑと、当該ジョブのユーザがユーザジョブリミットを越えていない場合でかつ、当該ジョブの実行がはじめての場合に、当該ジョブの実行を空きサーバ計算機に指示するジョブ実行指示手段１３ｃとの各処理機能を実行する。
【０１９７】
さらに、ＣＰＵ（制御部）としてのジョブ制御手段（ジョブスケジューラ１３１）は、制御プログラムに基づいて、図１３および図１５に示すように、サーバ計算機に空きができた場合に、実行待ちまたは中止・実行待ちのジョブを検索するジョブ検索手段１３ｈと、検索した実行待ちまたは中止・実行待ちのジョブのうち先頭ジョブを選択する先頭ジョブ選択手段１３ｎと、選択したジョブのユーザに対して実行中のジョブを集計するジョブ集計手段１３ｐと、このジョブ集計手段１３ｐによる集計結果がユーザジョブリミットを越えているか否かを判定するユーザジョブリミット超過判定手段１３ｍと、当該ジョブのユーザがユーザジョブリミットを越えていない場合に、次のジョブの集計処理に進む第２ジョブ集計起動手段１３ｑと、当該ジョブのユーザがユーザジョブリミットを越えている場合でかつ、当該ジョブの実行がはじめての場合に、当該ジョブの実行を空きサーバ計算機に指示するジョブ実行指示手段１３ｃとの各処理機能を実行する。
【０１９８】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【産業上の利用可能性】
【０１９９】
本発明は、例えばシミュレーションの計算処理などの各種ジョブに使用される資源がネットワークを介して複数の計算機に分散して配置されるシステムに対してジョブキューの管理および実行を制御するジョブキューシステムおよびこれを用いたジョブ管理方法、このジョブ管理方法の各ステップをコンピュータに実行させるための制御プログラム、この制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体の分野において、空きの計算機がある場合に、ユーザユーザジョブリミットを越えてその計算機にジョブを実行させ、他のユーザからジョブが投入されたときには、そのジョブの実行を中止させてデータおよび状態の複製を作成し、そのジョブをジョブキューの先頭に戻して次の処理のために待機させるようにしたため、単一のユーザにより計算機を独占させることなく、空き状態の計算機をも利用して、連続投入されたジョブをより短時間で完了させることができる。
【図面の簡単な説明】
【０２００】
【図１】本発明が適用される計算機システムの構成例を説明するためのシステム構成図である。
【図２】本発明の実施形態に係るジョブキューシステムの構成例を示すブロック図である。
【図３】図２の外部記憶装置の記憶部に保存された上記各データのディレクトリ構成例を示す図である。
【図４】図２のジョブ管理テーブルの一例を示す図である。
【図５】図２のユーザ管理テーブルの一例を示す図である。
【図６】図２のサーバ管理テーブルの一例を示す図である。
【図７】図２の再開マトリックスの一例を示す図である。
【図８】図２のログファイルの一例を示す図である。
【図９】図２のジョブキューシステムのジョブ投入時の動作を示すフローチャートである。
【図１０】図２のジョブキューシステムのユーザジョブリミットによるジョブの中止と飛び越し動作を示すフローチャートである。
【図１１】図２のジョブキューシステムにおいて、再開ジョブのチェックポイントを有効利用する動作を示すフローチャートである。
【図１２】図２のジョブキューシステムにおいて、ユーザジョブリミットに達しないユーザジョブを実行する場合の動作を示すフローチャートである。
【図１３】図２のジョブキューシステムにおいて、ユーザジョブリミットに達したユーザジョブを実行する場合の動作を示すフローチャートである。
【図１４】図２のジョブキューシステムにおいて、ジョブ再開処理および終了処理を実行する場合の動作を示すフローチャートである。
【図１５】図２のジョブスケジューラをソフトウェア構成にした場合の機能構成図である。
【図１６】従来のジョブキューシステムの動作例を説明するための図である。
【図１７】図１６のジョブキューシステムの更なる動作例を説明するための図である。
【符号の説明】
【０２０１】
１１  クライアント
１１１  ジョブ投入コマンド
１１２、１２２、１３２  オペレーティングシステム
１２  サーバ
１２１  ジョブ実行制御プログラム
１３  ジョブキューイングサーバ
１３１  ジョブスケジューラ
１３１ａ  ジョブ管理テーブル
１３１ｂ  ユーザ管理テーブル
１３１ｃ  サーバ管理テーブル
１３１ｄ  再開マトリックス
１３１ｅ  ログファイル
１４  ネットワーク
１５  外部記憶装置
１５１  記憶部
１３ａ  ジョブ登録手段
１３ｂ  サーバ選択手段
１３ｃ  ジョブ実行指示手段
１３ｄ  ジョブ情報記録手段
１３ｅ  ユーザジョブリミット超過ユーザ選択手段
１３ｆ  中止対象ジョブ選択手段
１３ｇ  ジョブ中止指示手段
１３ｈ  ジョブ検索手段
１３ｉ  ジョブ選択手段
１３ｊ  ジョブ再開判定起動手段
１３ｋ  ジョブ再開判定手段
１３ｌ  ジョブ再開指示手段
１３ｍ  ユーザジョブリミット超過判定手段
１３ｎ  先頭ジョブ選択手段
１３ｐ  ジョブ集計手段
１３ｑ  ジョブ集計起動手段
【図１】
2007179100.tif 000003
【図２】
2007179100.tif 000004
【図３】
2007179100.tif 000005
【図４】
2007179100.tif 000006
【図５】
2007179100.tif 000007
【図６】
2007179100.tif 000008
【図７】
2007179100.tif 000009
【図８】
2007179100.tif 000010
【図９】
2007179100.tif 000011
【図１０】
2007179100.tif 000012
【図１１】
2007179100.tif 000013
【図１２】
2007179100.tif 000014
【図１３】
2007179100.tif 000015
【図１４】
2007179100.tif 000016
【図１５】
2007179100.tif 000017
【図１６】
2007179100.tif 000018
【図１７】
2007179100.tif 000019