(57)【要約】【課題】異常終了した場合に業務へ与える影響の大きいジョブの正常終了確率を向上させ、障害が発生した場合の業務への影響を低減する。【解決手段】  ジョブの属性から障害影響度を評価し、稼動実績などから実行サーバの障害リスク度を、ジョブを投入するごとに評価する。障害影響度の高いジョブは、障害影響度の高いジョブをリスク度の低い実行サーバで実行する。障害影響度の高いジョブを実行中または実行が予定されている実行サーバの多重度を下げて、高負荷状態にせずに障害リスク度が低い状態に保つ。【選択図】  図２
2011215661.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算機から構成される計算機システムにおいて、
ジョブが異常終了したときに業務に与える影響の大きさである障害影響度を算出する手段と、
計算機の障害発生確率の大きさを示すリスク度を算出する手段と、
前記リスク度を有する前記計算機で実行を許容することができるジョブの前記障害影響度の最大値である許容最大障害影響度を求める手段と、
前記ジョブの障害影響度が前記許容最大障害影響度以下の前記計算機を選択する手段と、
前記ジョブの実行を選択した前記計算機にジョブの実行を依頼する手段と、
前記計算機にて前記ジョブを実行する手段と、
を有することを特徴とするジョブスケジュールシステム。
【請求項２】
請求項１に記載のジョブスケジュールシステムにおいて、
前記リスク度を算出する手段は、通算稼働時間またはソフトウェアを更新してからの通算稼働時間が、あらかじめ指定された時間より短い計算機のリスク度として、その他の計算機のリスク度より大きい値を算出することを特徴とするジョブスケジュールシステム。
【請求項３】
請求項１記載のジョブスケジュールシステムにおいて、
前記計算機ごとに、前記ジョブの稼動実績の有無を示す稼動実績情報を記録する手段と、
前記稼動実績情報を収集する手段と、を更に有し、
前記リスク度を算出する手段は、前記稼動実績情報を参照して、前記ジョブの稼動実績が有る前記計算機のリスク度として、前記ジョブの稼動実績が無い前記計算機のリスク度より小さい値を算出することを特徴とするジョブスケジュールシステム。
【請求項４】
複数の計算機から構成される計算機システムにおいて、
ジョブが異常終了したときに業務に与える影響の大きさである障害影響度を算出する手段と、
計算機で実行中または実行しようとする少なくとも１つのジョブの前記障害影響度の最大値である最大障害影響度を求める手段と、
前記最大障害影響度に対応した多重度を算出する手段と、
を有することを特徴とするジョブスケジュールシステム。
【請求項５】
請求項４に記載のジョブスケジュールシステムにおいて、
同一ジョブで処理するデータを分割し、該分割したデータを複数のジョブで処理可能であることを示す分割可能属性を有する前記ジョブの前記障害影響度として、前記分割可能属性を有さない前記ジョブの前記障害影響度より小さい値を算出することを特徴とするジョブスケジュールシステム
【請求項６】
請求項４記載のジョブスケジュールシステムにおいて、  ジョブが実行中に異常終了した場合に、該ジョブを問題なく再実行可能であることを示す自動再実行不可能属性を有する前記ジョブの障害影響度として、前記自動再実行不可能属性を有さない前記ジョブの前記障害影響度より大きい値を算出することを特徴とするジョブスケジュールシステム。
【請求項７】
複数の計算機から構成される計算機システムで実行されるジョブのスケジュールを管理するジョブスケジュール管理方法であって、
前記複数の計算機と通信可能な管理計算機が、
ジョブが異常終了したときに業務に与える影響の大きさである障害影響度を算出し、
計算機の障害発生確率の大きさを示すリスク度を算出し、
前記リスク度を有する前記計算機で実行を許容することができるジョブの前記障害影響度の最大値である許容最大障害影響度を求め、
前記ジョブの障害影響度が前記許容最大障害影響度以下の前記計算機を選択し、
前記ジョブの実行を選択した前記計算機にジョブの実行を依頼する、
ことを特徴とするジョブスケジュール管理方法。
【請求項８】
複数の計算機から構成される計算機システムで実行されるジョブのスケジュールを管理するジョブスケジュール管理計算機に、
ジョブが異常終了したときに業務に与える影響の大きさである障害影響度を算出し、
計算機の障害発生確率の大きさを示すリスク度を算出する機能と、
前記リスク度を有する前記計算機で実行を許容することができるジョブの前記障害影響度の最大値である許容最大障害影響度を求める機能と、
前記ジョブの障害影響度が前記許容最大障害影響度以下の前記計算機を選択する機能と、
前記ジョブの実行を選択した前記計算機にジョブの実行を依頼する機能と、
を実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブスケジュールシステム、ジョブスケジュール管理方法及びプログラムに係り、特に、ジョブの障害影響度と実行サーバの障害リスク度を評価し、障害影響度の高いジョブを障害リスク度が低い状態に保った実行サーバで実行させるジョブスケジュールシステム、ジョブスケジュール管理方法及びプログラムに関する。
【背景技術】
【０００２】
データを一括処理するバッチ処理の制御単位であるジョブを実行する計算機である実行サーバを選択する方法が、例えば文献１に開示されている。一般的には、各実行サーバの負荷を平均化するように負荷の少ない実行サーバを選択するが、特許文献１に開示された技術では、実行サーバのハードウェアの信頼性をユーザが評価したランクパラメータに基づいて実行サーバを選択する方法を開示している。
また、同時に実行できるジョブ数の最大値である多重度を、ジョブの負荷の大きさとジョブクラスの待ち行列キューのジョブ数とに応じて変更する方法が特許文献２に開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−８５７０７号公報
【特許文献２】特開２０００−２１５０６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ジョブが異常終了した場合に業務へ与える影響の大きさ（影響を与える確率または影響を与えた場合の損失額）である障害影響度は、ジョブにより異なる。所定時間内に終了させないと次の業務を開始できなくなるジョブ、再実行するだけの余裕がないジョブ又はそのまま再実行できず確認や回復処理をしてから再実行が必要なジョブと、後続の業務に影響のないジョブ、数回再実行しても余裕があるジョブ又は自動再実行が可能なジョブとでは、ジョブが異常終了したとき業務に影響を与える確率や影響を与える場合の損害額の大きさが異なる。
【０００５】
一方、実行サーバの障害発生確率も異なる。ハードウェア障害だけでなく、オペレーティングシステム、ミドルウェア或いはユーザアプリケーションなどのソフトウェア障害も考慮する必要がある。ソフトウェアの導入直後や更新直後は、障害発生確率が高い傾向にあり、高負荷時のシステム障害報告例も多い。
【０００６】
ジョブを後続の業務に影響のないように所定時間内に終了させるためには、負荷を平均化して早く終わらせるだけでなく、特に業務に影響を与える度合いの高いジョブに対して、確実に実行させる必要がある。特許文献１の方法では、ユーザが評価した静的なハードウェア障害リスクしか考慮しておらず、動的に変動する障害リスク、ソフトウェア障害リスク及びジョブの障害影響度が考慮されていない。特許文献２のように性能優先で多重度を変更してしまうと、負荷上昇により、障害影響度の高いジョブも含めて障害発生確率が増加し、業務に影響をあたえる確率が増加してしまう。
【０００７】
本発明の目的は、異常終了した場合に業務へ与える影響の大きいジョブの正常終了確率を向上させ、障害が発生した場合の業務への影響を低減することである。
【課題を解決するための手段】
【０００８】
上述の課題を解決するために、本発明の一側面は、複数の計算機から構成される計算機システムにおいて、ジョブが異常終了したときに業務に与える影響の大きさである障害影響度を算出する手段と、計算機の障害発生確率の大きさを示すリスク度を算出する手段と、前記リスク度を有する前記計算機で実行を許容することができるジョブの前記障害影響度の最大値である許容最大障害影響度を求める手段と、前記ジョブの障害影響度が前記許容最大障害影響度以下の前記計算機を選択する手段と、前記ジョブの実行を選択した前記計算機にジョブの実行を依頼する手段と、前記計算機にて前記ジョブを実行する手段と、を有することを特徴とする。
【０００９】
更に本発明の他の側面は、複数の計算機から構成される計算機システムにおいて、ジョブが異常終了したときに業務に与える影響の大きさである障害影響度を算出する手段と、計算機で実行中または実行しようとする少なくとも１つのジョブの前記障害影響度の最大値である最大障害影響度を求める手段と、前記最大障害影響度に対応した多重度を算出する手段と、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ジョブの障害影響度と実行サーバの障害リスク度をジョブを投入するごとに評価し、障害影響度の高いジョブを障害リスク度が低い状態に保った実行サーバで実行させるため、異常終了した場合に業務へ与える影響の大きいジョブの正常終了確率を向上させ、障害が発生した場合の業務への影響を低減することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明を適用した一実施形態のハードウェア構成を示したブロック図である。
【図２】本発明を適用した一実施形態の処理を示したブロックダイアグラム図である。
【図３】本発明を適用した一実施形態のジョブ管理テーブル１００の構造を示した図である。
【図４】本発明を適用した一実施形態のジョブ定義ファイル３０の記述例を示した図である。
【図５】本発明を適用した一実施形態のサーバ管理テーブル２００の構造を示した図である。
【図６】本発明を適用した一実施形態の実行サーバ定義ファイル４０の記述例を示した図である。
【図７】本発明を適用した一実施形態の実行プログラム稼動実績管理テーブル７００の構造を示した図である。
【図８】本発明を適用した一実施形態の障害影響度算出テーブル３００の構造を示した図である。
【図９】本発明を適用した一実施形態のリスク度算出テーブル４００の構造を示した図である。
【図１０】本発明を適用した一実施形態の許容最大障害影響度算出テーブル５００の構造を示した図である。
【図１１】本発明を適用した一実施形態の多重度制限率算出テーブル６００の構造を示した図である。
【図１２】本発明を適用した一実施形態のジョブスケジュール処理部１０００の処理フローチャート図である。
【図１３】本発明を適用した一実施形態のジョブスケジュール処理部１０００におけるテーブル生成処理の処理フローチャート図である。
【図１４】本発明を適用した一実施形態のジョブスケジュール処理部１０００における実行サーバ選択処理の処理フローチャート図である。
【図１５】本発明を適用した一実施形態のジョブ実行制御処理部２０００の処理フローチャート図である。
【発明を実施するための形態】
【００１２】
以下、各図を参照しながら本発明の実施形態について詳細に説明する。なお、以下の種々の構成は一例であり、特許請求の範囲を限定するものではなく又本実施形態で説明する特徴の全てが、本発明を解決する手段に必須であるとは限らない。
【００１３】
図１は、本発明を適用した計算機システム１のハードウェア構成を示した図である。計算機システム１には、ジョブスケジュール処理部１０００のプログラムコードが動作する計算機であるスケジュールサーバ１０と、スケジュールサーバ１０から要求を受けてジョブを実行するジョブ実行制御処理部２０００のプログラムコードが動作する計算機である少なくとも１つの複数の実行サーバ２０とが含まれる。
【００１４】
スケジュールサーバ１０には、ジョブスケジュール処理部１０００のプログラムの命令コードを格納した主記憶装置１１ａ、処理部１０００のプログラム命令コードをロードして解釈実行するＣＰＵ(Central Processing Unit)１２ａ、通信路２を介して１つないし複数のサーバ２０と実行要求や実行結果を送受信する通信インタフェース１３ａ及び入出力インタフェース１４ａが含まれる。
【００１５】
実行サーバ２０には、ジョブ実行制御処理部２０００のプログラムの命令コードを格納した主記憶装置１１ｂ、処理部２０００のプログラムの命令コードをロードして解釈実行するＣＰＵ１２ｂ及び通信路２を介してスケジュールサーバ１０と実行要求や実行結果を送受信する通信インタフェース１３ｂが含まれる。
【００１６】
主記憶装置１１ａには、ジョブスケジュール処理部１０００が割り当てて参照または更新する管理テーブルである、ジョブ管理テーブル１００、サーバ管理テーブル２００、障害影響度算出テーブル３００、リスク度算出テーブル４００、許容最大障害影響度算出テーブル５００、多重度制限率算出テーブル６００及び実行プログラム稼動実績管理テーブル７００、が含まれる。
【００１７】
記憶装置１５ａは、インタフェース１４ａを介してスケジュールサーバ１０からアクセス可能な記憶装置である。記憶装置１５ａには、ジョブの属性や実行内容が記述された少なくとも１つの定義ファイル３０及びサーバ２０の名称や属性が記述された実行サーバ定義ファイル４０が格納される。
【００１８】
図２に、計算機システム１の処理概要を表したブロックダイアグラムを示す。計算機システム１では、ジョブが異常終了ないし実行サーバ２０の障害により継続不可能な状態に陥ったときにジョブを終了目標時刻までに終了できなくなる確率や終了できなくなった場合に業務に影響を与える影響(損失)の大きさの評価ランクを、障害影響度として評価するようになっている。また、サーバ２０が障害となりジョブ実行を継続できなくなるサーバ障害発生確率の評価ランクを、リスク度として、負荷などにより動的に変動するためジョブを実行するごとに評価する。障害影響度の高いジョブをリスク度の少ないサーバ２０上で実行させることで確実に実行させ、計算機システム１全体の耐障害性を向上させるようになっている。
【００１９】
ジョブの障害影響度は、業務にジョブ定義ファイルから抽出したジョブの属性値を障害影響度算出テーブル３００内の条件式に当てはめて算出する。
【００２０】
サーバ２０のリスク度は、サーバ２０から収集したサーバ情報が示す動的に変動する障害要因の大きさと、稼動実績管理テーブル７００が示すサーバ２０でのジョブプログラム稼動実績の有無を、リスク度算出テーブル４００中の各条件にあてはめて算出する。
【００２１】
ジョブを実行するサーバ２０を決定する実行サーバ決定処理では、サーバ２０内で同時に実行できるジョブ数の最大値である多重度に余裕があり、ジョブの障害影響度がサーバ２０の許容最大障害影響度より小さいサーバ２０を、ジョブを実行するサーバ２０とする。許容最大障害影響度は、サーバ２０で実行を許容できるジョブの障害影響度の最大値であり、サーバ２０のリスク度に対応した値を許容最大障害影響度算出テーブル５００から求める。
【００２２】
障害となっても影響が比較少ないジョブのために高障害影響度ジョブを低障害リスクで実行できなくなることがないように、障害影響度の高いジョブは、ジョブのスケジュール時間に達していなくても、ジョブを実行するサーバ２０を事前に決定する（実行サーバの予約）。
【００２３】
サーバ２０の多重度は、サーバ定義ファイル４０にて指定された最大多重度を上限として、サーバ２０にて実行中のジョブの障害影響度の大きさに応じて制限する。制限する多重度の割合は、多重度制限率算出テーブル６００によって求める。実行中のジョブの障害影響度の大きさに応じて多重度を制限することで、低負荷状態で実行させることで、高負荷状態で発生確率が上昇する、リソース不足によるジョブ異常終了や、タイミングにより発生する不良による異常終了などのソフトウェア障害発生頻度を削減し、障害となっては困るジョブを確実に実行させる。
【００２４】
図３に、ジョブ管理テーブル１００の構造を示す。ジョブごとに設けられるテーブル１００のエントリには、ジョブ名１０１と、実行プログラム名１０２と、ジョブ開始時刻１０３と、終了目標時刻１０４と、予想実行時間１０５と、分割可能属性１０６と、自動再実行可能属性１０７と、ジョブ重要度ランク１１１と、障害影響度１０８と、実行状態１０９と、実行サーバ名１１０とが含まれる。
【００２５】
ジョブ名１０１は、ジョブを計算機システム１内で一意に識別する名称である。実行プログラム名１０２は、サーバ２０でジョブとして起動されるプログラムやコマンドの名称である。ジョブ開始時刻１０３は、サーバ２０に実行依頼した時刻である。終了目標時刻１０４は、その時刻までにジョブを終了することが望まれるデッドライン時刻である。予想実行時間１０５は、ジョブの実行時間の見積り値である。
【００２６】
分割可能属性１０６は、同一ジョブから複数のジョブを生成して、その同一ジョブで処理するデータを分割した一部分のデータを、生成した各ジョブが処理可能とするジョブである場合は「有」に、それ以外では「無」にする。複数のジョブでデータを分割並列処理することで、ジョブの実行時間が短縮され、異常終了した場合の影響は分割不可能なジョブよりも低減することが可能である。
【００２７】
自動再実行可能属性１０７は、ジョブが実行中に異常終了した場合に、そのジョブを再実行しても問題ない場合は「有」にする。これに対し、そのジョブが状態検査や回復処理などのなんらかのユーザアクションを介在する必要がある場合は「無」にする。
【００２８】
ジョブ重要度ランク１１１は、ジョブが異常終了して業務に損失を与えた場合の損失額の大きさを評価した数値である。
【００２９】
実行状態１０９は、ジョブがまだ実行されておらずジョブを実行するサーバ２０も決まっていない状態である場合に「未実行」、ジョブはまだ実行されていないが、ジョブを実行するサーバ２０は決まっている状態である場合に「予約中」、ジョブをサーバ２０に実行依頼して完了通知を受信していない状態である場合に「実行中」又サーバ２０から完了通知を受信した状態である場合に「完了」のいずれかの値が登録される。実行サーバ名１１０は、ジョブを実行中またはジョブの実行先として選択したサーバ２０の名称である。
【００３０】
図４に、ジョブ定義ファイル３０の記述例を示す。ジョブ名、実行プログラム名、ジョブ開始時刻、終了目標時刻、予想実行時間、分割可能属性及び自動再実行可能属性、などの値を記述する。ジョブ管理テーブルの１０１〜１０７および１１１の要素には、ジョブ定義ファイル３０に記述された値が登録される。
【００３１】
図５に、サーバ管理テーブル２００の構造を示す。サーバ２０ごとに設けられるテーブル２００のエントリには、実行サーバ名２０１と、最大多重度２０２と、最終更新日時２０３と、通算稼働時間２０４と、リスク度２０５と、許容最大障害影響度２０６と、最大障害影響度２０７と、多重度２０８と、実行ジョブ数２０９、障害予兆２１０、ハード信頼度２１１とが含まれる。
【００３２】
実行サーバ名２０１は、サーバ２０を計算機システム１内で一意に識別する名称である。最大多重度２０２は、サーバ２０で同時実行可能なジョブ数の最大値である。最終更新日時２０３は、サーバ２０を初めて起動した日時と、サーバ２０のオペレーティングシステムなどのシステムソフトウェアを最後にモジュール更新または設定変更した日時とのうち現在時刻に近いほうの値である。最大障害影響度２０７は、サーバ２０で実行中またはサーバ２０で実行することが予約されたジョブの障害影響度の最大値である。多重度２０８は、サーバ２０で同時実行可能なジョブ数の最大値の現在値である。実行ジョブ数２０９は、サーバ２０で実行中のジョブ数である。
【００３３】
障害予兆２１０は、サーバ２０にて、障害メッセージや統計情報などから、システムダウンまたはサーバ２０を構成する部品の故障の可能性があると判断されたときに「有」、ないときに「無」の値が登録される。
【００３４】
ハード信頼度２１１は、サーバ２０の部品などのハードウェアの信頼性の高さをユーザが評価した値である。サーバ２０の物理障害確率が高いほど高い値を設定する。
【００３５】
図６に、実行サーバ定義ファイル４０の記述例を示す。サーバ２０の名称であるサーバ名、サーバ２０の多重度の最大値である最大多重度及びサーバ２０のハード信頼度などの値を記述する。サーバ管理テーブルの２０１、２０２、２１１には、実行サーバ定義ファイル４０に記述された値が登録される。
【００３６】
図７に、実行プログラム稼動実績管理テーブル７００の構造を示す。実行プログラム稼動実績管理テーブル７００は、サーバ２０のリスク度２０５（図５参照）の値を算出するための指標の１つとして用いられる。実行プログラム稼動実績管理テーブル７００の各エントリには、各実行サーバの名称７０１と、そのサーバ２０で実行済のジョブの実行プログラム名７０２（プログラム名１０２と同じ値）とのリストを保持する。リストは、サーバ２０に問い合わせて取得する。ジョブで動作させるプログラムを一度実行したサーバ２０は、そのプログラムを一度も実行していないサーバ２０よりも、ジョブが異常終了する確率が低いため、サーバ２０のリスク度を判定するための条件の１つとする。
【００３７】
図８に、障害影響度算出テーブル３００の構造を示す。テーブル３００は、ジョブの障害影響度１０８の値を算出するための指標として用いられる。テーブル３００の各エントリには、ジョブの障害影響度を算出するための条件式である条件３０１と、条件式にテーブル１００の要素１０１〜１０６の値をあてはめたときに条件３０１が成立した場合のジョブの障害影響度３０２とが含まれる。条件３０１が成立するすべての障害影響度３０２の値のうち、最も大きい値が、ジョブの障害影響度１０８（図３参照）となる。図８では、障害影響度が「３」である、「終了目標時刻−（ジョブ開始時刻+予想実行時間）≦２時間」が最も大きい値である例を示している。
【００３８】
図９に、リスク度算出テーブル４００の構造を示す。テーブルリスク度算出テーブル４００は、サーバ２０のリスク度２０５の値を算出するための指標として用いられる。リスク度算出テーブル４００の各エントリには、サーバ２０のリスク度を算出するための条件式である条件４０１と、条件式にサーバ管理テーブル２００の要素２０３、２０４、２１０、２１１の値をあてはめたときに条件４０１が成立した場合のサーバ２０のリスク度４０２とが含まれる。条件４０１が成立するすべてのリスク度４０２の値のうち、最も大きい値が、サーバ２０のリスク度２０５（図５参照）となる。図９では、リスク度が「３」である、「ハード信頼度＝１」の条件が最も大きい値である例を示している。
【００３９】
図１０に、許容最大障害影響度算出テーブル５００の構造を示す。許容最大障害影響度算出テーブル５００は、サーバ２０の許容最大障害影響度２０６（図５参照）の値を算出するための指標として用いられる。許容最大障害影響度算出テーブル５００のエントリには、サーバ２０のリスク度５０１と、そのリスク度のときのサーバ２０の許容最大障害影響度５０２とが含まれる。リスク度２０５の値と同じ値のリスク度５０１のエントリの影響度５０２の値が、そのサーバ２０の許容最大障害影響度２０６の値となる。
【００４０】
図１１に、多重度制限率算出テーブル６００の構造を示す。多重度制限率算出テーブル６００は、サーバ２０の多重度２０８の値を算出するための指標として用いられる。だ重度制限率算出テーブル６００のエントリには、ジョブの最大障害影響度６０１と、多重度制限率６０２とが含まれる。サーバ２０の最大障害影響度２０７（図５参照）と同じ値の最大障害影響度６０１のエントリの多重度制限率６０２の値に最大多重度を乗算した値が、そのサーバ２０の多重度２０８の値（図５参照）となる。
【００４１】
次に、以上の構成を有する計算機システム１の各処理部の動作について、フロー図を用いて説明する。
【００４２】
図１２に、ジョブスケジュール処理部１０００の処理の流れを示したフローチャートを示す。ジョブスケジュール処理部１０００は、まず、テーブル生成処理１１００を実行して、テーブル１００〜６００の領域を主記憶装置１１aに割り当てて初期化する（テーブル生成処理１１００の詳細については後述する。）。
【００４３】
ユーザからの指示などでジョブの実行要求があった場合（ステップ１００１：Ｙｅｓ）、実行要求されたジョブのジョブ定義ファイル３０を読み込み、ジョブ管理テーブル１００にエントリを割り当てて、ファイルに記述された内容を、割り当てたエントリのジョブ名１０１、実行プログラム名１０２、ジョブ開始時刻１０３、終了目標時刻１０４、予想実行時間１０５、分割可能属性１０６、自動再実行可能属性１０７及びジョブ重要度ランク１１１、にそれぞれ代入する（ステップ１００２）。ジョブ管理テーブル１００の要素のうち、ファイル３０に含まれない要素は、実行状態１０９＝「未起動」、障害影響度１０８＝「０」、実行サーバ名１１０＝「空欄」で初期化する。また、ファイル３０に値の記述がない場合、ジョブ開始時刻１０３には「現在時刻」を、終了目標時刻１０４は「値無し」を、予想実行時間１０５には「０」を、分割可能属性１０６並びに自動再実行可能属性１０７には「無」を、重要度ランク１１１には「１」を、それぞれ代入する。
【００４４】
次いで、ジョブスケジュール管理処理部１０００は、実行要求されたジョブを実行するサーバ２０の選択処理１２００を実行する(ステップ１００２)(実行サーバ選択処理１２００の詳細は、後述する。)。選択が成功（すなわち実行サーバ名１１０が空欄でない）かつジョブの実行状態１０９が「予約中」でない（実行可能）であれば（ステップ１００３：Ｙｅｓ）、選択したサーバ２０のジョブ実行制御処理部２０００に、ジョブ名１０１と実行プログラム名１０２とを送信して、ジョブの実行を依頼し（ステップ１００４）、実行状態１０９を「実行中」に変更する（ステップ１００５）。
【００４５】
次いで、ジョブスケジュール処理部１０００は、ステップ１００１の判断を行った後(ステップ１００１：Ｎｏ)、選択したサーバ２０のジョブ制御処理部２０００からジョブ完了通知を受信したか否かを判断し（ステップ１００６）、受信したと判断する場合（ステップ１００６：Ｙｅｓ）、ジョブ実行制御処理部２０００から処理が完了したジョブの名称を受信し、その名称とジョブ名１０１とが一致するジョブ管理テーブル１００のエントリの実行状態１０９を「完了」にする（ステップ１００７）。
【００４６】
なお、ジョブスケジュール処理部１０００は、ステップ１００６の判断で、ジョブ実行制御処理部２０００からジョブ完了通知を受信していないと判断する場合（ステップ１００６：Ｎｏ）、ジョブ管理テーブル１００に、ジョブ開始時刻１０３が現在時刻以降かつ実行状態１０９が「未実行」のエントリが存在するか否かを判断する（ステップ１００８）。ジョブ開始時刻１０３が現在時刻以降かつ実行状態１０９が「未実行」のエントリが存在すると判断する場合（ステップ１００８：Ｙｅｓ）、そのエントリのジョブに対して、実行サーバ選択処理１２００とステップ１００３〜１００５とを実行し、スケジュール時刻に達した未実行のジョブを実行する。
【００４７】
次いで、ジョブスケジュール処理部１０００は、ステップ１００８の判断において、ジョブ開始時刻１０３が現在時刻以降かつ実行状態１０９が「未実行」のエントリが存在しないと判断する場合(ステップ１００８：Ｎｏ)、ジョブ管理テーブル１００に、ジョブ開始時刻１０３が現在時刻以降かつ実行状態１０９が「予約中」のエントリが存在するか否かの判断をする（ステップ１００９）。ジョブ開始時刻１０３が現在時刻以降かつ実行状態１０９が「予約中」のエントリが存在する場合（ステップ１００９：Ｙｅｓ）、そのエントリのジョブに対して、ステップ１００４〜１００５を実行し、スケジュール時刻に達した予約中のジョブを実行する。逆に、存在しないと判断する場合、ステップ１００１に戻る。
【００４８】
次に、上述したジョブスケジュール処理部１０００におけるテーブル生成処理について詳細に説明する。図１３に、テーブル生成処理の流れを表したフローチャートを示す。
【００４９】
ジョブスケジュール処理部１０００は、まず、ジョブ管理テーブル１００を生成する（ステップ１１０１）。次いで、ジョブスケジュール処理部１０００は、サーバ管理テーブル２００を生成し、実行サーバ定義４０を読み込んで、テーブル２００にエントリを割り当て、読み込んだサーバ名と、最大多重度と、ハード信頼度ランクの値とを、割り当てたエントリのサーバ名２０１と、最大多重度２０２と、ハード信頼度ランクに夫々代入する（ステップ１１０２）。  次いで、ジョブスケジュール処理部１０００は、障害影響度算出テーブル３００、リスク度算出テーブル４００、許容最大障害影響度算出テーブル５００及び多重度制限率算出テーブル６００を生成する（ステップ１１０３）。なお、生成したこれらのテーブルの各エントリの値は、図８〜図１１の値とせずに、ファイルなどで指定された条件や値を読み込み設定するようにしてもよい。  次に、上述したジョブスケジュール処理部１０００における実行サーバ選択処理について詳細に説明する。図１４に、実行サーバ選択処理の流れを表したフローチャートを示す。
【００５０】
ジョブスケジュール処理部１０００は、まず、実行要求されたジョブの障害影響度を算出し、障害影響度１０８に代入する（ステップ１２０１）。具体的には、障害影響度算出テーブル３００を参照し、テーブル３００内の各条件３０１が示す式に、ジョブ管理テーブル１００の項目１０３〜１０７の値を当てはめて、条件が成立するか否かをチェックする。条件が成立する場合、その条件に対応した障害影響度３０２のうち最も大きい値を障害影響度１０８とする。例えば、図３のＪＯＢ１では、図８に示す全ての条件３０１を満たすため、これら条件に対応する障害影響度３０２のうち、最も値の大きい「３」を障害影響度１０８として登録する。
【００５１】
より詳細には、図８の条件３０１の『デフォルト』は、全てのジョブが満たす条件である。
図８の条件３０１の『終了目標時刻−(ジョブ開始時刻+予想実行時間)≦３０分』は、「０１：３０−（０１：０１＋００：０５）＝００：２４」で、「≦３０分」を満たす。
図８の条件３０１の『終了目標時刻−(ジョブ開始時刻+予想実行時間)≦２時間』は、同様に「≦２時間」を満たす。
図８の条件３０１の『分割可能属性』及び『自動再実行可能属性』はいずれも「無」であり、条件を満たす。同様に、図８の条件３０１の『ジョブ重要度ランク１＞』も条件を満たす。従って、図８に示すように、これら条件に対応する障害影響度３０２のうち、最も値の大きい「３」を、ＪＯＢ１の障害影響度１０８として、ジョブ管理テーブル１００に登録する。
【００５２】
次いで、ジョブスケジュール処理部１０００は、ジョブ開始時刻１０３が現在時刻以前又は障害影響度１０８が最大値であるかを判断する（ステップ１２０２）。ジョブスケジュール処理部１０００は、ジョブ開始時刻１０３が現在時刻以降又は障害影響度１０８が最大値で無い場合(ステップ１２０２：Ｎｏ)、即時にジョブを実行できず又予約のためにサーバ２０を決定する必要もないため、ステップ１２０３以降のサーバ選択処理は行わずに終了する。
【００５３】
逆に、ジョブ開始時刻１０３が現在時刻以前又は障害影響度１０８が最大値である場合（ステップ１２０２：Ｙｅｓ）、ジョブスケジュール処理部１０００は、サーバ情報を収集する（ステップ１２０３）。具体的には、ジョブスケジュール処理部１０００は、サーバ管理テーブル２００のサーバ名２０１が示す全てのサーバ２０に対して、サーバ情報収集要求を送信する。ジョブスケジュール処理部１０００は、サーバ２０からの応答を待ち、応答からサーバ情報を抽出して、応答のあったサーバ２０とサーバ名２０１とが等しいエントリの最終更新日時２０３、通算稼働時間２０４及び障害予兆２１０に夫々値を代入する。また、応答から、サーバ２０で稼動実績のあるプログラムのリストを取り出して、テーブル７００にエントリを割り当てて、サーバ２０の名称７０１とプログラム名７０２とを記録する。
【００５４】
次いで、ジョブスケジュール処理部１０００は、各サーバ２０のリスク度を算出し、リスク度２０５に代入する（ステップ１２０４）。具体的には、図９に示すリスク度算出テーブル４００を参照し、リスク度算出テーブル４００内の各条件４０１が示す式に、サーバ管理テーブル２００内の全サーバ２０に対して、ステップ１２０３で収集したサーバ情報２０３〜２０４の値を当てはめて条件が成立するか否かをチェックする。条件が成立する場合、その条件に対応したリスク度４０２のうち最も大きい値をリスク度２０５とする。
【００５５】
例えば、サーバＡでは、デフォルト（すべてのジョブ）のみが成立し、他の条件は成立しないため、デフォルトのリスク度である「１」をリスク度２０５に代入する。
【００５６】
次いで、ジョブスケジュール処理部１０００は、各サーバ２０の実行中のジョブ数を求める（ステップ１２０５）。すなわち、テーブル２００中の全エントリに対して、実行サーバ名２０１と実行サーバ名１１０とが一致し、かつ実行状態１０９が「実行中」である数を求め、実行ジョブ数２０９に代入する。
【００５７】
次いで、ジョブスケジュール処理部１０００は、各サーバ２０の最大障害影響度を求める（ステップ１２０６）。すなわち、サーバ管理テーブル２００中の全エントリに対して、実行サーバ名２０１と実行サーバ名１１０とが一致し、かつ実行状態１０９が「実行中」または「未実行」であるテーブル１００のエントリの障害影響度１０８のうち、最も大きい値を求め、最大障害影響度２０７に代入する。
【００５８】
次いで、ジョブスケジュール処理部１０００は、各サーバ２０のリスク度２０５に対応した許容最大障害影響度を、許容最大障害影響度算出テーブル５００を参照して算出する（ステップ１２０７）。すなわち、テーブル２００中の全エントリに対して、リスク度２０５の値とリスク度５００の値が一致するエントリをテーブル５００から検索し、一致したエントリの許容最大障害影響度５０２の値を、テーブル２００許容最大障害影響度２０６に代入する。
【００５９】
次いで、ジョブスケジュール処理部１０００は、各サーバ２０の最大障害影響度２０７に対応した多重度制限率を、図１１に示す多重度制限率算出テーブル６００を参照して算出し、最大多重度を乗算して多重度を求める（ステップ１２０８）。すなわち、サーバ管理テーブル２００中の全エントリに対して、最大障害影響度２０７の値と最大障害影響度６０１の値が一致するエントリをテーブル６００から検索し、一致したエントリの多重度制限率６０２の値に、最大多重度２０２の値を乗算した値を、多重度２０８に代入する。
【００６０】
次に、多重度に余裕があり、ジョブの障害影響度１０８が、サーバ２０の許容最大障害影響度２０６を超えないサーバ２０を、ジョブを実行するサーバ２０として選択する。サーバ管理テーブル２００から、「多重度２０８−実行ジョブ数２０９＞＝１」かつ「許容最大障害影響度２０６＞＝投入するジョブの障害影響度１０８」の条件をみたすエントリを１つ選択し、選択したエントリの実行サーバ名２０１が示すサーバ２０を、ジョブを実行するサーバ２０とする。
【００６１】
ジョブスケジュール処理部１０００は、選択可能な実行サーバが存在するか否かを判断し（ステップ１２１０）、存在する場合は（ステップ１２１０：Ｙｅｓ）、選択したサーバ２０の名称２０１を実行サーバ名１１０に代入する（ステップ１２１１）。逆に、存在しないと判断する場合（ステップ１２１０：Ｎｏ）、サーバの選択を失敗として処理を終了する。
【００６２】
次いで、ジョブスケジュール処理部１０００は、ジョブ開始時刻が現在時刻以前かを判断する（ステップ１２１２）。ジョブ開始時刻が現在時刻以前であれば（ステップ１２１２：Ｙｅｓ）、実行状態１０９の値を「予約中」にする（ステップ１２１３）。逆に、ジョブ開始時刻が現在時刻より後である場合、サーバの選択を成功として処理を終了する。
【００６３】
最後に、サーバ２０のジョブ実行制御処理部２０００の処理を説明する。図１５に、ジョブ実行制御処理部２０００の処理の流れを表したフローチャートを示す。まず、ジョブ実行制御部２０００は、スケジュールサーバ１０からの要求を受信又は実行中のジョブプログラムの完了を待つ（ステップ２００１）。
【００６４】
次いで、ジョブ実行処理部２０００は、スケジュールサーバ１０から受信した要求が、サーバ情報収集要求であるかを判断し（ステップ２００２）、サーバ情報収集要求である場合は（ステップ２００２：Ｙｅｓ）、サーバ情報である最終更新日時、予兆の有無及び実行プログラム稼動実績を収集してスケジュールサーバ１０に送信する（ステップ２００３）。最終更新日時は、例えば、サーバ２０で更新作業をしたときにファイルに記録した日時を読み出して送信する。予兆の有無は、例えば、ハードウェアの障害メッセージを監視して記録する。実行プログラム稼動実績は、例えば、ステップ２００５において記録したプログラム名を送信する。
【００６５】
逆に、ジョブ実行処理部２０００は、ステップ２００２の判断が、サーバ情報収集要求で無いと判断した場合（ステップ２００２：Ｎｏ）、その要求がジョブ実行要求であるかを判断し（ステップ２００４）、ジョブ実行要求である場合は（ステップ２００４：Ｙｅｓ）、受信した名称のプログラムを起動し、プログラムの処理完了を待つ（ステップ２００５）。
【００６６】
逆に、ジョブ実行処理部２０００は、ステップ２００４の判断が、ジョブ実行要求でないと判断する場合、ジョブのプログラムが完了したか否かを判断する（ステップ２００６）。ジョブのプログラムが完了したと判断する場合（ステップ２００６：Ｙｅｓ）、完了したプログラムのジョブ名を送信してスケジュールサーバ１０に完了通知する（ステップ２００７）。
【００６７】
以上のように、本発明を適用した計算機システム１によれば、異常終了した場合に業務へ与える影響の大きいジョブを正常に終了させる確率を向上させ、障害が発生した場合の業務への影響を低減することができる。
【符号の説明】
【００６８】
１  計算機システム
２  通信路
１０  スケジュールサーバ計算機
１１  主記憶装置
１２  ＣＰＵ
１３  通信インタフェース
１４  入出力インタフェース
１５  記憶装置
２０  スケジュールサーバ計算機
３０  ジョブ定義ファイル
４０  実行サーバ定義ファイル
１００  ジョブ管理テーブル
２００  サーバ管理テーブル
３００  障害影響度算出テーブル
４００  リスク度算出テーブル
５００  許容最大障害影響度算出テーブル
６００  多重度制限率算出テーブル
７００  実行プログラム稼動実績管理テーブル
１０００  ジョブスケジュール処理部
２０００  ジョブ実行制御処理部
【図１】
2011215661.tif 000003
【図２】
2011215661.tif 000004
【図３】
2011215661.tif 000005
【図４】
2011215661.tif 000006
【図５】
2011215661.tif 000007
【図６】
2011215661.tif 000008
【図７】
2011215661.tif 000009
【図８】
2011215661.tif 000010
【図９】
2011215661.tif 000011
【図１０】
2011215661.tif 000012
【図１１】
2011215661.tif 000013
【図１２】
2011215661.tif 000014
【図１３】
2011215661.tif 000015
【図１４】
2011215661.tif 000016
【図１５】
2011215661.tif 000017