(57)【特許請求の範囲】
【請求項１】
複数のジョブを処理する一つ以上の実行計算機と、前記一つ以上の実行計算機と接続され、前記複数のジョブを前記一つ以上の実行計算機に割り当てる管理計算機であって、
前記各ジョブは、複数のサービスを含み、
前記サービスは、前記実行計算機によって処理されるプログラムモジュールを含み、
前記管理計算機は、
所定の係数と、前記各ジョブの終了時間とを取得し、
前記取得された所定の係数が示す回数分実行されるように、前記各サービスを前記実行計算機に割り当て、
前記各サービスが前記実行計算機によって処理されている間に、前記サービスが割り当てられた前記実行計算機において障害が発生した場合、前記割り当てられたサービスを、前記実行計算機によって再度処理させることを特徴とする管理計算機。
【請求項２】
前記管理計算機は、
前記取得された所定の係数が示す回数分実行されるように、前記各サービスを第１の前記実行計算機に割り当て、
前記割り当てられた各サービスを処理するために要する時間の総和に基づいて、前記ジョブを処理するために要する時間を算出し、
前記算出された時間が、前記取得されたジョブの終了時間を超過する場合、前記第１の実行計算機に割り当てられた複数のサービスのうち、前記ジョブの終了時間内に処理可能な前記サービスを前記第１の実行計算機に割り当て、
前記第１の実行計算機に割り当てられなかったサービスを、第２の前記実行計算機に割り当てることを特徴とする請求項１に記載の管理計算機。
【請求項３】
前記管理計算機は、
前記所定の係数が示す回数分実行されるように、前記第１の実行計算機に割り当てられた複数のサービスのうち、並行して処理することができる前記サービスを抽出し、
前記第１の実行計算機と前記第２の実行計算機とに、前記抽出されたサービスを割り当てることを特徴とする請求項２に記載の管理計算機。
【請求項４】
前記管理計算機は、
前記所定の係数が示す回数分実行されるように前記第１の実行計算機に割り当てられた複数のサービスのうち、前記処理するために要する時間が長い前記サービスを抽出し、
前記抽出されたサービスを前記第２の実行計算機に割り当てることを特徴とする請求項３に記載の管理計算機。
【請求項５】
前記サービスの処理は、前記サービスの準備処理、及び前記サービスの実行処理を含み、
前記管理計算機は、
前記サービスの準備処理が済んでいる前記実行計算機を選択し、
前記選択された実行計算機においてサービスの準備処理が済んでいるサービスを、前記選択された実行計算機に割り当てることを特徴とする請求項１に記載の管理計算機。
【請求項６】
前記サービスの処理は、前記サービスの準備処理、及び前記サービスの実行処理を含み、
前記管理計算機は、
前記第２の実行計算機に割り当てられたサービスのうち、前記第２の実行計算機においてサービスが処理されていない時間において、前記サービスの準備処理が可能な前記サービスを抽出し、
前記サービスが処理されていない時間に、前記抽出されたサービスの準備処理を割り当てることを特徴とする請求項２に記載の管理計算機。
【請求項７】
複数のジョブを処理する一つ以上の実行計算機と、前記一つ以上の実行計算機と接続され、前記複数のジョブを前記一つ以上の実行計算機に割り当てるジョブスケジューリング方法であって、
前記各ジョブは、複数のサービスを含み、
前記サービスは、前記実行計算機によって処理されるプログラムモジュールを含み、
前記方法は、
管理計算機が、所定の係数と、前記各ジョブの終了時間とを取得する手順と、
前記管理計算機が、前記取得された所定の係数が示す回数分実行されるように、前記各サービスを前記実行計算機に割り当てる手順と、
前記各サービスが前記実行計算機によって処理されている間に、前記サービスが割り当てられた前記実行計算機において障害が発生した場合、前記管理計算機が、前記割り当てられたサービスを、前記実行計算機によって再度処理させる手順と、を含むことを特徴とするジョブスケジューリング方法。
【請求項８】
前記サービスを実行計算機に割り当てる手順は、
前記管理計算機が、前記取得された所定の係数が示す回数分実行されるように、前記各サービスを第１の前記実行計算機に割り当てる手順と、
前記管理計算機が、前記割り当てられた各サービスを処理するために要する時間の総和に基づいて、前記ジョブを処理するために要する時間を算出する手順と、
前記算出された時間が、前記取得されたジョブの終了時間を超過する場合、前記管理計算機が、前記第１の実行計算機に割り当てられた複数のサービスのうち、前記ジョブの終了時間内に処理可能な前記サービスを前記第１の実行計算機に割り当てる手順と、
前記管理計算機が、前記第１の実行計算機に割り当てられなかったサービスを、第２の前記実行計算機に割り当てる手順と、を含むことを特徴とする請求項７に記載のジョブスケジューリング方法。
【請求項９】
前記サービスを実行計算機に割り当てる手順は、
前記管理計算機が、前記所定の係数が示す回数分実行されるように、前記第１の実行計算機に割り当てられた複数のサービスのうち、並行して処理することができる前記サービスを抽出する手順と、
前記管理計算機が、前記第１の実行計算機と前記第２の実行計算機とに、前記抽出されたサービスを割り当てる手順と、を含むことを特徴とする請求項８に記載のジョブスケジューリング方法。
【請求項１０】
前記サービスを実行計算機に割り当てる手順は、
前記管理計算機が、前記所定の係数が示す回数分実行されるように、前記第１の実行計算機に割り当てられた複数のサービスのうち、前記処理するために要する時間が長い前記サービスを抽出する手順と、
前記管理計算機が、前記抽出されたサービスを前記第２の実行計算機に割り当てる手順とを含むことを特徴とする請求項９に記載のジョブスケジューリング方法。
【請求項１１】
前記サービスの処理は、前記サービスの準備処理、及び前記サービスの実行処理を含み、
前記サービスを実行計算機に割り当てる手順は、
前記管理計算機が、前記サービスの準備処理が済んでいる前記実行計算機を選択する手順と、
前記選択された実行計算機においてサービスの準備処理が済んでいるサービスを、前記選択された実行計算機に割り当てる手順と、を含むことを特徴とする請求項７に記載のジョブスケジューリング方法。
【請求項１２】
前記サービスの処理は、前記サービスの準備処理、及び前記サービスの実行処理を含み、
前記サービスを実行計算機に割り当てる手順は、
前記管理計算機が、前記第２の実行計算機に割り当てられたサービスのうち、前記第２の実行計算機においてサービスが処理されていない時間において、前記サービスの準備処理が可能な前記サービスを抽出する手順と、
前記サービスが処理されていない時間に、前記抽出されたサービスの準備処理を割り当てる手順と、を含むことを特徴とする請求項８に記載のジョブスケジューリング方法。
【請求項１３】
複数のジョブを処理する一つ以上の実行計算機と、前記一つ以上の実行計算機と接続され、前記複数のジョブを前記一つ以上の実行計算機に割り当てるジョブスケジューリングプログラムであって、
前記各ジョブは、複数のサービスを含み、
前記サービスは、前記実行計算機によって処理されるプログラムモジュールを含み、
前記ジョブスケジューリングプログラムは、
管理計算機に、所定の係数と、前記各ジョブの終了時間とを取得させ、
前記管理計算機に、前記取得された所定の係数が示す回数分実行されるように、前記各サービスを前記実行計算機に割り当てさせ、
前記各サービスが前記実行計算機によって処理されている間に、前記サービスが割り当てられた前記実行計算機において障害が発生した場合、前記管理計算機に、前記割り当てられたサービスを、前記実行計算機によって再度処理させることを特徴とするジョブスケジューリングプログラム。
【請求項１４】
前記ジョブスケジューリングプログラムは、
前記管理計算機に、前記取得された所定の係数が示す回数分実行されるように、前記各サービスを第１の前記実行計算機に割り当てさせ、
前記管理計算機に、前記割り当てられた各サービスを処理するために要する時間の総和に基づいて、前記ジョブを処理するために要する時間を算出させ、
前記算出された時間が、前記取得されたジョブの終了時間を超過する場合、前記管理計算機に、前記第１の実行計算機に割り当てられた複数のサービスのうち、前記ジョブの終了時間内に処理可能な前記サービスを前記第１の実行計算機に割り当てさせ、
前記管理計算機に、前記第１の実行計算機に割り当てられなかったサービスを、第２の前記実行計算機に割り当てさせることを特徴とする請求項１３に記載のジョブスケジューリングプログラム。
【請求項１５】
前記ジョブスケジューリングプログラムは、
前記管理計算機に、前記所定の係数が示す回数分実行されるように、前記第１の実行計算機に割り当てられた複数のサービスのうち、並行して処理することができる前記サービスを抽出させ、
前記管理計算機に、前記第１の実行計算機と前記第２の実行計算機とに、前記抽出されたサービスを割り当てさせることを特徴とする請求項１４に記載のジョブスケジューリングプログラム。
【請求項１６】
前記ジョブスケジューリングプログラムは、
前記管理計算機に、前記所定の係数が示す回数分実行されるように、前記第１の実行計算機に割り当てられた複数のサービスのうち、前記処理するために要する時間が長い前記サービスを抽出させ、
前記管理計算機に、前記抽出されたサービスを前記第２の実行計算機に割り当てさせることを特徴とする請求項１５に記載のジョブスケジューリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、管理計算機、ジョブスケジューリング方法及びジョブスケジューリングプログラムに係り、特に、ジョブの実行をスケジュールする管理計算機、ジョブスケジューリング方法及びジョブスケジューリングプログラムに関する。
【背景技術】
【０００２】
従来、バッチジョブは、メインフレーム、又は少数台の計算機等、事前に構成された計算機上でジョブスケジューリングされ、実行されていた。このため、バッチジョブに含まれるサービスの割り当て及びジョブ終了時間の見積もりは、事前に設計可能であった。
【０００３】
近年の計算機の高速化、及びネットワークの高速化などに伴い、サーバの仮想化又は並列分散による処理が増加している。このようにサーバの仮想化又は並列分散が実装された環境における処理は、従来に比べて多くの物理計算機、又は仮想計算機を用いたクラスタシステムによって実行される。このようなクラスタシステムにおいて処理可能な計算機の構成は、台数の増減、及びリソース使用量の増減といった要因によって変化するため、クラスタシステムにおいてバッチジョブをスケジューリングする際にサービスの割り当てを手動で設定するのは従来に比べて困難となる。
【０００４】
そこで、クラスタシステムにおいてジョブを実行し、計算機が障害になった場合又は計算機の性能が低下した場合、あらかじめ用意した計算機を含むプール領域から代替計算機を割り当てて処理を続行する技術が開示されている（例えば、特許文献１参照）。特許文献１に開示された技術では、代替計算機をスタンバイプール、ベアメタルプール、及び、共用プールに分類し、障害からの回復や負荷変動へ高速に対応する方法を提案されている。
【０００５】
また、過去のジョブ実行履歴情報からジョブの実行時間を求め、ジョブスケジュール案を提供する技術が開示されている（例えば、特許文献２参照）。特許文献２に開示された技術によって、ジョブ多重度増減などのパラメタ情報によって各ジョブの実行シミュレーションを行い、ジョブスケジューリングを解析する方法が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−３４６２０４号公報
【特許文献２】特開平８−２８６９５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献１に開示された技術は、ジョブが実行中に障害が発生した場合、代替のための計算機に、障害によって中断されていたサービスを割り当てて処理を続行する。このため、特許文献１に開示された技術を用いた場合、ジョブ実行前に予定されていたジョブ終了時間を超過する可能性がある。
【０００８】
また、特許文献２に開示された技術は、短時間でバッチジョブが完了するように、ジョブを並列実行して効率のよいジョブスケジュールを生成するが、ジョブ実行中に計算機に障害が発生した場合について考慮されていない。このため、特許文献２に開示された技術を用いた場合、障害が発生した場合、ジョブ実行前に予定されていたジョブ終了時間を超過する可能性がある。
【０００９】
本発明の目的は、ジョブ実行中に計算機において、障害等による想定外なシステム停止が発生しても、事前に予定されたジョブ終了時間を満たすように、ジョブをスケジューリングする手段を提供する。
【課題を解決するための手段】
【００１０】
本発明の代表的な一形態によると、複数のジョブを処理する一つ以上の実行計算機と、前記一つ以上の実行計算機と接続され、前記複数のジョブを前記一つ以上の実行計算機に割り当てる管理計算機であって、前記各ジョブは、複数のサービスを含み、前記サービスは、前記実行計算機によって処理されるプログラムモジュールを含み、前記管理計算機は、所定の係数と、前記各ジョブの終了時間とを取得し、前記取得された所定の係数が示す回数分実行されるように、前記各サービスを前記実行計算機に割り当て、前記各サービスが前記実行計算機によって処理されている間に、前記サービスが割り当てられた前記実行計算機において障害が発生した場合、前記割り当てられたサービスを、前記実行計算機によって再度処理させる。
【発明の効果】
【００１１】
本発明の一実施形態によると、ジョブ実行中に計算機に想定外なシステム停止が発生した場合でも、計算機リソースを有効利用しながら、ジョブの終了時間を見積もることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施形態のクラスタシステムの構成を示すブロック図である。
【図２】本発明の第１の実施形態のスケジュール管理計算機のハードウェアの構成を示すブロック図である。
【図３】本発明の第１の実施形態の実行計算機のハードウェアの構成を示すブロック図である。
【図４】本発明の第１の実施形態のスケジュール管理テーブルの構成を示す説明図である。
【図５】本発明の第１の実施形態の統計情報管理テーブルの構成を示す説明図である。
【図６】本発明の第１の実施形態のジョブ及びサービスの関係の例を示す説明図である。
【図７】本発明の第１の実施形態のジョブスケジューリング部によるジョブスケジューリング処理の手順を示す説明図である。
【図８】本発明の第１の実施形態のジョブスケジューリング部によるサービス振り分け処理４０７の手順を示す説明図である。
【図９Ａ】本発明の第１の実施形態のジョブスケジューリング処理のサービスの具体例を示す説明図である。
【図９Ｂ】本発明の第１の実施形態の統計情報管理テーブルの具体例を示す説明図である。
【図１０Ａ】本発明の第１の実施形態のケース１における入力値の具体例を示す説明図である。
【図１０Ｂ】本発明の第１の実施形態のケース１におけるジョブスケジューリング結果を示す説明図である。
【図１０Ｃ】本発明の第１の実施形態のケース１におけるスケジュール管理テーブルを示す説明図である。
【図１１Ａ】本発明の第１の実施形態のケース２における入力値の具体例を示す説明図である。
【図１１Ｂ】本発明の第１の実施形態のケース２におけるジョブスケジューリング結果を示す説明図である。
【図１１Ｃ】本発明の第１の実施形態のケース２におけるスケジュール管理テーブルを示す説明図である。
【図１２】本発明の第１の実施形態のディスプレイ装置に表示されるジョブ投入画面を示す説明図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態を、図面を参照して説明する。
【００１４】
図１は、本発明の第１の実施形態のクラスタシステムの構成を示すブロック図である。
【００１５】
本発明のクラスタシステムは、スケジュール管理計算機１１、複数の実行計算機１０−１〜１０−ｎ（ｎは任意の正の数）、及び処理データ１４１を格納するディスク装置を備える。なお、実行計算機１０−１〜１０−ｎを総称して、実行計算機１０と記載する。
【００１６】
本発明のクラスタシステムにおいてジョブスケジューリングする場合、スケジュール管理計算機１１は、入力値１０１を入力される。入力値１０１は、入力データ量１０２、ジョブ終了時間１０３、及び障害安全係数１０４を含む。
【００１７】
入力データ量１０２は、ジョブが処理する入力データの量である。入力データの量は、ジョブ実行時間が増減する要因となる値である。入力データの量以外の要因によって、ジョブの処理時間が増減する場合、入力値１０１には、ジョブの処理時間を増減する要因を数値化した値が保持されてもよい。また、入力値１０１がジョブに含まれるサービス毎に異なる場合、入力値１０１は、入力データ量１０２をサービス毎に複数保持してもよい。なおサービスとは、ジョブに含まれる実行単位である。サービスについては詳細を後述する。
【００１８】
ジョブ終了時間１０３は、ジョブ及びジョブに含まれるすべてのサービスが終了すべき時間を示す時間である。ジョブ及びジョブに含まれるサービスは、ジョブ終了時間１０３が示す終了時間を超過しないようにスケジューリングされる。
【００１９】
障害安全係数１０４は、０以上の整数値であり、ジョブが実行される間に、実行計算機１０において障害が発生した場合においても、ジョブ終了時間１０３を満たすことができる、ジョブの再実行回数を示す。すなわち、障害安全係数１０４をｎとした場合、ジョブ実行中に実行計算機１０にｎ回障害が発生した場合においても、ジョブ終了時間１０３を超過しないようにジョブがスケジューリングされる。
【００２０】
障害安全係数１０４は、ジョブの重要度、又は、ジョブに含まれるサービスを実行するための実行計算機１０の稼働率などに従って、ユーザ又はシステムによって値を指定されてもよい。また、システムにおける固定値として保持されてもよい。
【００２１】
例えばユーザは、必ず実行される必要があるジョブには、障害安全係数１０４に高い値を指定する。これによって、高い値を指定されたジョブは、実行中に障害が発生しても、障害安全係数１０４の値分繰り返して実行される。
【００２２】
ジョブの重要度に従って障害安全係数１０４を判定する方法には、ジョブに含まれるサービスが、データを参照するサービス、又は、重要度の低いデータを更新するサービスでしかなく、ジョブの実行を中断しても後続ジョブの動作に影響を与えないようなサービスである場合、障害安全係数１０４が低く指定される方法がある。また、この方法を用いた場合、重要度の高いデータを更新するサービス、又は、ジョブを中断すると後続ジョブの動作に影響を与えるようなサービスには、障害安全係数１０４が高く指定される。
【００２３】
実行計算機１０の稼働率に従って障害安全係数１０４を判定する方法は、過去のシステム停止発生件数、実行計算機の稼働年数、又は、ハードウェア構成などの情報に基づいて、システム停止の可能性が高いと判定された実行計算機１０を備えるクラスタシステムには、障害安全係数１０４を高く指定するという方法である。
【００２４】
スケジュール管理計算機１１は、ジョブ受付部１１１、ジョブスケジューリング部１１２、実行指示部１１３、及び、統計情報管理部１１４を備える。
【００２５】
ジョブ受付部１１１は、ユーザ等から前述の入力値１０１をスケジュール管理計算機１１に入力するためのインターフェースである。ジョブスケジューリング部１１２は、入力された入力値１０１と統計情報管理テーブル１３２のデータとに基づいて、ジョブをスケジューリングする。そして、ジョブをスケジューリングした結果を、スケジュール管理テーブル１３１に格納する。
【００２６】
実行指示部１１３は、スケジュール管理テーブル１３１に格納されたデータに基づいて、実行計算機１０−１〜１０−ｎにサービスのデプロイ及びサービスの実行を指示する。
【００２７】
実行計算機１０−１〜１０−ｎは、サービスデプロイ部１２１、サービス実行部１２２、統計情報転送部１２３を備える。
【００２８】
サービスデプロイ部１２１は、実行指示部１１３から受けた指示に従って、サービスを計算機上にデプロイする。デプロイとは、サービスが用いるアプリケーションのローディング、及び、アプリケーションの各種設定を行い、サービスを実行可能な状態に、実行計算機１０を構築するための処理である。
【００２９】
サービス実行部１２２は、実行指示部１１３から受けた指示に従って、処理データ１４１を参照及び更新しながら、サービスを実行する。統計情報転送部１２３は、サービスデプロイ部１２１及びサービス実行部１２２において、サービスを実行するために経過した時間を、統計情報管理部１１４に転送する。
【００３０】
統計情報管理部１１４は、統計情報転送部１２３から転送された、サービスデプロイ部１２１において経過した時間及びサービス実行部１２２において経過した時間を、統計情報管理テーブル１３２に格納する。
【００３１】
スケジュール管理計算機１１は、実行中の実行計算機１０−１〜１０−ｎに障害が発生した場合、障害を検出する手段を備える。障害を検出する手段は、サービスのデプロイ、又は、サービスの実行終了の時刻までに、統計情報管理部１１４に統計情報が転送されないことを契機として、障害を検出する方法であってもよい。また、実行指示部１１３の通信が途絶えることを契機として障害を検出する方法であってもよい。また、前記以外の別の通信によって直接あるいは間接的に監視する方法を用いてもよい。
【００３２】
図２は、本発明の第１の実施形態のスケジュール管理計算機１１のハードウェアの構成を示すブロック図である。
【００３３】
スケジュール管理計算機１１は、ＣＰＵ２１、ディスプレイ装置２２、キーボード２３、マウス２４、ネットワークインタフェースカード（ＮＩＣ）２５、ハードディスク２６及びメモリ２７を備える。ＣＰＵ２１、ディスプレイ装置２２、キーボード２３、マウス２４、ＮＩＣ２５、ハードディスク２６及びメモリ２７は、バス２８によって接続される。
【００３４】
スケジュール管理計算機１１は、ＮＩＣ２５を介してネットワークに接続され、実行計算機１０及び他のスケジュール管理計算機１１と相互に通信する。ネットワークは、ＬＡＮ、ＷＡＮなどいずれのネットワークでもよい。
【００３５】
ＣＰＵ２１は、メモリ２７に記憶されたプログラムを実行する。メモリ２７は、ＣＰＵ２１によって実行されるプログラム及び当該プログラムの実行に必要なデータを記憶する。メモリ２７には、オペレーティングシステム３０、スケジューリング制御プログラム９１、ジョブ受付部１１１、ジョブスケジューリング部１１２、実行指示部１１３、統計情報管理部１１４、スケジュール管理テーブル１３１及び統計情報管理テーブル１３２などのプログラムが格納される。
【００３６】
スケジューリング制御プログラム９１は、オペレーティングシステム３０上で実行されるプログラムである。ジョブ受付部１１１、ジョブスケジューリング部１１２、実行指示部１１３及び統計情報管理部１１４は、スケジューリング制御プログラム９１によって呼び出されるプログラムである。ジョブ受付部１１１、ジョブスケジューリング部１１２、実行指示部１１３及び統計情報管理部１１４は、図１において説明した処理を実行する。
【００３７】
スケジュール管理テーブル１３１には、図１において説明したように、ジョブのスケジュールに関する情報が格納される。統計情報管理テーブル１３２は、図１において説明したように、サービスのデプロイ時間及び実行時間に関する情報が格納される。
【００３８】
ディスプレイ装置２２は、業務処理の実行結果、すなわちジョブの実行結果などの各種情報を表示する。キーボード２３及びマウス２４は、利用者が入力値１０１を入力する際に、利用者によって用いられる装置である。
【００３９】
ＮＩＣ２５は、スケジュール管理計算機１１がネットワークに接続するためのインターフェースである。ハードディスク２６は、メモリ２７に格納される処理データ、及び、メモリ２７にロードされるプログラムなどが格納される。
【００４０】
スケジュール管理計算機１１は、仮想計算機上で実行されるプログラムによって実装されてもよい。
【００４１】
図３は、本発明の第１の実施形態の実行計算機１０−１〜１０−ｎのハードウェアの構成を示すブロック図である。
【００４２】
実行計算機１０−１〜１０−ｎは、図２において説明したスケジュール管理計算機１１のハードウェア構成と同様なハードウェアを備える。実行計算機１０のＣＰＵ３１、ディスプレイ装置３２、キーボード３３、マウス３４、ネットワークインタフェースカード（ＮＩＣ）３５、ハードディスク３６及びメモリ３７は、スケジュール管理計算機１１のＣＰＵ２１、ディスプレイ装置２２、キーボード２３、マウス２４、ＮＩＣ２５、ハードディスク２６及びメモリ２７と同じ装置である。
【００４３】
ただし、実行計算機１０に備わるメモリ３７には、オペレーティングシステム３０、実行制御プログラム９２、サービスデプロイ部１２１、サービス実行部１２２、統計情報転送部１２３及びサービス９９が格納される。
【００４４】
実行制御プログラム９２は、オペレーティングシステム３０上で実行されるプログラムである。サービスデプロイ部１２１、サービス実行部１２２、及び、統計情報転送部１２３は、実行制御プログラム９２によって呼び出されるプログラムである。サービスデプロイ部１２１、サービス実行部１２２、及び、統計情報転送部１２３は、図１において説明した処理を実行する。サービス９９は、サービスデプロイ部１２１によってメモリ２７上に複数格納されるプログラムであり、サービス実行部１２２の指示によって実行される。
【００４５】
実行計算機１０−１〜１０−ｎは、仮想計算機上で実行されるプログラムによって実装されてもよい。
【００４６】
図４は、本発明の第１の実施形態のスケジュール管理テーブル１３１の構成を示す説明図である。
【００４７】
スケジュール管理テーブル１３１は、各実行計算機１０において実行されるサービスデプロイ処理及びサービス実行処理の、開始時刻と終了時刻とを各々保持する。サービスデプロイ処理及びサービス実行処理は、ジョブスケジューリング部１１２によってスケジューリングされる。
【００４８】
スケジュール管理テーブル１３１は、実行計算機名１３１−１、開始時刻１３１−２、終了時刻１３１−３、処理内容１３１−４、及び、対象処理１３１−５を含む。実行計算機名１３１−１は、サービス９９が実行される実行計算機１０を一意に示す名称が格納される。
【００４９】
開始時刻１３１−２は、実行計算機名１３１−１に示される実行計算機１０においてサービス９９が開始される時刻を示す。終了時刻１３１−３は、実行計算機名１３１−１に示される実行計算機１０においてサービス９９が終了する時刻を示す。
【００５０】
処理内容１３１−４は、サービス９９が処理される内容を示し、「デプロイ」又は「処理実行」の二つの内容を保持する。対象処理１３１−５は、処理されるサービス９９を一意に示す名称が格納される。
【００５１】
図４に示すスケジュール管理テーブル１３１は、全ての実行計算機１０におけるサービス９９を、一つのテーブルによって管理する場合の、テーブル例である。なお、サービス９９は、実行計算機１０毎に分けられたテーブルによって、管理されてもよい。
【００５２】
図５は、本発明の第１の実施形態の統計情報管理テーブル１３２の構成を示す説明図である。
【００５３】
統計情報管理テーブル１３２によって、各サービス９９のデプロイ時間及び実行時間の履歴情報が管理される。統計情報管理テーブル１３２は、サービス名１３２−１、デプロイ時間１３２−２、及び、実行時間１３２−３を含む。各実行計算機１０の統計情報転送部１２３は、サービス９９が実行された後、デプロイ処理に要した時間、及び実行処理に要した時間を、統計情報管理部１１４に送信し、統計情報管理部１１４によって統計情報管理テーブル１３２が更新される。
【００５４】
サービス名１３２−１は、処理されるサービス９９を一意に示す名称である。デプロイ時間１３２−２は、サービス名１３２−１が示すサービス９９がデプロイに要する時間を示す。実行時間１３２−３は、サービス名１３２−１が示すサービス９９が実行されるために要する時間を示す。
【００５５】
統計情報管理テーブル１３２は、図１において説明したとおり、サービスデプロイ部１２１によってサービス９９がデプロイされた時間（デプロイ時間１３２−２）、及び、サービス実行部１２２によってサービス９９が実行された時間（実行時間１３２−３）の履歴情報を保持する。統計情報管理テーブル１３２は、前述のとおり統計情報管理部１１３によって値が格納される。また、統計情報管理部１１３は、統計情報転送部１２３から転送されたジョブ９８の実行結果に基づいて、統計情報管理テーブル１３２に格納する値を算出する。
【００５６】
統計情報管理テーブル１３２のデプロイ時間１３２−２及び実行時間１３２−３は、入力データ量１０２によって比例して増減する。このため統計情報管理テーブル１３２は、実行済みのジョブ９８の入力データ量１０２を”１００”とすることによって、ジョブ９８に含まれるサービス９９が、デプロイ処理に要した時間及び実行処理に要した時間を、相対時間に変換し、変換された各々の時間をデプロイ時間１３２−２及び実行時間１３２−３に格納する。
【００５７】
例えば、実行されたジョブ９８の入力データ量１０２が４００（バイト）であり、ジョブ９８に含まれるサービスＡのデプロイ処理に要した時間が４０（分）であった場合、デプロイ時間１３２−２には「１０」が格納される。
【００５８】
入力データ量１０２以外の要因によって、サービスの処理時間が増減する場合は、当該要因を数値化した値に基づいて相対時間を算出し、算出された相対時間を統計情報管理テーブル１３２に格納してもよい。また、統計情報管理テーブル１３２に格納する時間は、過去の履歴情報における最大値を格納してもよい。
【００５９】
この場合、初回実行時は履歴情報が存在しないため、本発明によるジョブスケジューリングを行わずに各サービスのデプロイ及び実行を、手動で起動することによって、あらかじめデプロイ時間１３２−２及び実行時間１３２−３に値を格納する。
【００６０】
図６は、本発明の第１の実施形態のジョブ９８及びサービス９９の関係の例を示す説明図である。
【００６１】
サービス９９は、ジョブ９８を構成する実行単位であり、ジョブ９８は、一つ以上のサービス９９を含む。図中の矢印は、サービス９９の依存関係であり、後続のサービス９９を実行する前に、先行するサービス９９を実行する必要があることを示す。例えば、サービス９９Ａは、サービス９９Ｂ、サービス９９Ｃ、及び、サービス９９Ｅよりも先行して実行され、サービス９９Ｂ、サービス９９Ｃ、及び、サービス９９Ｅは、サービス９９Ａが実行された後に、実行される。
【００６２】
また、各サービス９９の実行前には、そのサービス９９がデプロイされている必要がある。すなわち、サービス９９Ｂが実行される前には、サービス９９Ｂがデプロイされている必要がある。
【００６３】
ジョブ９８の依存関係に対応するため、サービス９９は、サービス９９の実行順序に対応した情報を各々保持する。サービス９９が保持する実行順序は、例えば、図６に示すように所定の命名ルールによって生成されたサービス９９を一意に示す識別子によって、示されてもよい。識別子の命名ルールによってサービス９９の実行順序を示す場合、サービス名の末尾に英文字（Ａ−Ｚ）の識別子を付与する。
【００６４】
例えば識別子は、英文字の先頭文字Ａから付与され、あるサービス９９に先行するサービス９９がある場合、識別子は、先行するサービス９９に付与した英文字よりも後となる英文字が付与される。ジョブ９８に含まれるサービル９９のうち、最後に実行されるサービス９９は、サービス９９中で一番後となる英文字を識別子として付与される。図６ではサービス９９Ａ〜９９Ｆの６つのサービス９９が、一つのジョブ９８に含まれる例を示す。
【００６５】
図６に示すジョブ９８を実行計算機１０−１〜１０−ｎ上で実行する場合、まずサービス９９Ａを実行する。そして、サービス９９Ａ実行終了後、サービス９９Ｂ、サービス９９Ｃ、及び、サービス９９Ｅを実行する。サービス９９Ｂ、サービス９９Ｃ、及び、サービス９９Ｅの実行順序は問わない。
【００６６】
またサービス９９は、複数の実行計算機１０上で並列に実行されてもよい。例えば、サービス９９Ｂ及びサービス９９Ｃの処理内容に関連がなく、別々の実行計算機１０によって並列に実行されてもよい場合、ジョブスケジューリング１１２は、サービス９９Ｂ及びサービス９９Ｃを別々の実行計算機１０にスケジューリングする。
【００６７】
サービス９９Ｂ、サービス９９Ｃの実行終了後、サービス９９Ｄを実行する。サービス９９Ｄ、サービス９９Ｅの実行終了後、サービス９９Ｆを実行する。サービス９９Ｆの実行終了をもってジョブ９８が終了する。
【００６８】
図７は、本発明の第１の実施形態のジョブスケジューリング部１１２によるジョブスケジューリング処理４０１の手順を示す説明図である。
【００６９】
ＣＰＵ２１は、ジョブ受付部１１１が実行するべきジョブ９８を受け付けた場合、ジョブスケジューリング部１１２によって、図７に示す処理を行う。
【００７０】
ＣＰＵ２１は、各実行計算機１０のメモリ２７の空き容量及びＣＰＵ２１の使用状況などに基づいて、ジョブスケジューリング可能な実行計算機１０が存在するか否かを判定する（ステップ４０２）。ジョブスケジューリング可能な実行計算機１０が１台もないと判定された場合、ＣＰＵ２１は実行不可と判定し、ジョブスケジューリング処理４０１を終了する。
【００７１】
ＣＰＵ２１は、ステップ４０２においてジョブスケジューリング可能と判定された実行計算機１０に、サービスのデプロイ処理及び処理実行の組を割り当て、各実行計算機１０に対応するスケジュール管理テーブル１３１を更新する（ステップ４０５）。デプロイ処理及び実行処理のために要する時間は、統計情報管理テーブル１３２に格納された値に入力データ量１０２の相対値を掛け合わせることによって算出される。
【００７２】
ＣＰＵ２１は、障害安全係数１０４の値に１を加算した値分、ステップ４０５の処理を、繰り返し実行する（ステップ４０４）。そして、ステップ４０４の処理によって、デプロイ処理及び実行処理の組を、同一実行計算機１０に複数回割り当てる。障害安全係数１０４の値に１を加算する理由は、最初の１回目の処理回数を加算するためである。
【００７３】
またＣＰＵ２１は、ジョブ９８を構成するサービス９９の実行順序毎に、ステップ４０４における繰り返し処理を、繰り返し実行する（ステップ４０３）。ステップ４０３の処理によって、各サービス９９のデプロイ処理及び実行処理の複数の組を、同一実行計算機１０に割り当てる。
【００７４】
ＣＰＵ２１は、サービス９９を割り当てた各実行計算機１０において、ジョブ９８の終了予定時刻がジョブ終了時間１０３を超過するか否かを判定する（ステップ４０６）。超過していない場合は、実行可能と判定し、ジョブスケジューリング処理４０１を終了する。
【００７５】
その後、ＣＰＵ２１は、実行指示部１１３によって、スケジューリングされたサービス９９を各実行計算機１０に送信する。そして、実行計算機１０におけるサービスデプロイ部１２１及びサービス実行部１２２は、スケジュール管理計算機１１から送信されたサービス９９を実行する。
【００７６】
ステップ４０６において超過すると判定された場合、ＣＰＵ２１は、後述するサービス振り分け処理を実施する（ステップ４０７）。ステップ４０７は、図８にて詳細に説明する。
【００７７】
その後ＣＰＵ２１は、ステップ４０７の処理において振り分け可能であるか否かを判定し（ステップ４０８）、振り分け可能であると判定された場合、ステップ４０６の処理に戻る。振り分け不可であると判定された場合、実行不可と判定し、ジョブスケジューリング処理４０１を終了する。
【００７８】
なお、ステップ４０６においてＣＰＵ２１は、ジョブ９８の終了予定時刻がジョブ終了時間１０３以下になった場合に、実行可能と判定するため、不要な実行計算機１０にサービス９９を振り分けることがない。このため本実施形態のスケジュール管理計算機１１は、実行計算機１０のリソースを最低限に抑えつつ、サービス９９を振り分けることができる。
【００７９】
図８は、本発明の第１の実施形態のジョブスケジューリング部１１２によるサービス振り分け処理４０７の手順を示す説明図である。
【００８０】
ＣＰＵ２１は、ジョブ９８の終了予定時刻がジョブ終了時間１０３を超過すると判定された実行計算機１０を１台選択する（ステップ４２１）。そして、選択された実行計算機１０に、後述する処理を実行する。
【００８１】
ＣＰＵ２１は、ステップ４２１において選択された実行計算機１０に振り分けられたサービス９９毎に、ステップ４２３〜ステップ４２５の処理を繰り返す（ステップ４２２）。
【００８２】
同一サービス９９に割り当てられたデプロイ処理及び実行処理が、２以上か否か判定する（ステップ４２３）。そして、同一サービス９９に２以上のデプロイ処理及び実行処理が割り当てられている場合、ＣＰＵ２１は、振り分け対象として当該サービス９９を仮選択する（ステップ４２５）。
【００８３】
また、図６で説明したとおり、サービス９９を別実行計算機１０上で並列に実行可能か否かを判定する（ステップ４２４）。なおサービス９９には、並列に実行可能であるか否かを示す情報があらかじめ含まれている。サービス９９が並列に実行可能な場合、ＣＰＵ２１は、並列に実行可能なサービス９９を、振り分け対象として仮選択する（ステップ４２５）。
【００８４】
その後ＣＰＵ２１は、振り分け対象として仮選択したサービス９９があるか否かを判定する（ステップ４２６）。そして、仮選択したサービス９９がないと判定した場合、振り分け不可と判定し、サービス振り分け処理４０７を終了する。
【００８５】
ＣＰＵ２１は、仮選択したサービス９９のうち、サービス９９のデプロイ処理及び実行処理の合計時間が最大のサービス９９を、振り分け対象サービス９９として選択する（ステップ４２７）。そして別実行計算機１０のうち、実行計算機１０においてサービス９９が実行された後の時間帯に、選択された振り分け対象サービス９９を割り当て可能な実行計算機１０が存在するか否かを判定する（ステップ４２８）。
【００８６】
ステップ４２８において、振り分け対象サービス９９を振り分ける別の実行計算機１０が存在しない場合、ＣＰＵ２１は、振り分け不可と判定し、サービス振り分け処理４０７を終了する。
【００８７】
ステップ４２８において、振り分け対象サービス９９を振り分ける別の実行計算機１０が存在する場合、ＣＰＵ２１は、ステップ４２５において選択された振り分け対象サービス９９のデプロイ処理及び実行処理を、ステップ４２８において判定された実行計算機１０に、割り当て直し、スケジュール管理テーブル１３１を更新する（ステップ４２９）。そして、振り分け可能と判定し、サービス振り分け処理４０７を終了する。
【００８８】
図９Ａは、本発明の第１の実施形態のジョブスケジューリング処理のサービス９９の具体例を示す説明図である。
【００８９】
後述するケース１及びケース２におけるジョブ９８は、サービス９９Ａ、サービス９９Ｂ、サービス９９Ｃ及びサービス９９Ｄを含む。サービス９９Ａは、サービス９９Ｂ及びサービス９９Ｃに先行して実行され、サービス９９Ｂ及びサービス９９Ｃは、サービス９９Ａの実行が終了した後に実行される。サービス９９Ｄは、サービス９９Ｂ及びサービス９９Ｃに後続して実行され、サービス９９Ｂ及びサービス９９Ｃは、サービス９９Ｄに先行して実行される。
【００９０】
また、サービス９９Ｂ及びサービス９９Ｃは、お互いに並列に実行可能である。さらに、サービスＡ及びサービスＤは、自らのサービスＡ及びサービスＤと並行に実行可能である。
【００９１】
図９Ｂは、本発明の第１の実施形態の統計情報管理テーブル１３２の具体例を示す説明図である。
【００９２】
統計情報管理テーブル１３２は、図９Ａに示す各サービス９９のデプロイ時間１３２−２及び実行時間１３２−３を、入力データ量１０２に対する相対時間として保持する。図９Ｂに示す統計情報管理テーブル１３２は、サービス９９Ａ、サービス９９Ｂ、サービス９９Ｃ及びサービス９９Ｄのデプロイ時間１３２−２及び実行時間１３２−３を保持する。
【００９３】
図１０Ａは、本発明の第１の実施形態のケース１における入力値１０１の具体例を示す説明図である。
【００９４】
ケース１におけるジョブ９８の実行開始時刻は、２：００であり、ジョブ終了時間１０３の値は、単位が分である。また、図１０Ａに示すケース１における入力値１０１は、入力データ量１０２が１００であり、ジョブ終了時間１０３が１３０（分）であり、障害安全係数１０４が１である。
【００９５】
図１０Ｂは、本発明の第１の実施形態のケース１におけるジョブスケジューリング結果を示す説明図である。
【００９６】
図１０Ｂは、実行計算機１０−１へ割り当てられたサービス９９を示す。また、図１０Ｂは、ジョブスケジューリング部１１２が、図９Ａに示すジョブ９８、図９Ｂに示す統計情報管理テーブル１３２及び図１０Ａに示す入力値１０１に基づいて、実行計算機１０−１においてサービス９９Ａ〜サービス９９Ｄをスケジューリングした結果を示す。図１０Ｂにおいて、「Ａデ」は、「サービスＡのデプロイ処理」を示し、「Ａ実」は、「サービスＡの実行処理」を示す。
【００９７】
ケース１におけるＣＰＵ２１は、図７に示すステップ４０３〜４０５において、障害安全係数１０４「１」に１を加算して「２」を取得する。そして、各サービス９９のデプロイ処理及び実行処理を２回ずつ割り当てる。また、ステップ４０６において、ジョブ終了予定時間が、ジョブ終了時間１０３よりも小さいと判定し、ジョブスケジューリング処理を終了する。
【００９８】
図１０Ｃは、本発明の第１の実施形態のケース１におけるスケジュール管理テーブルを示す説明図である。
【００９９】
ジョブスケジューリング部１１２は、図１０Ｂに示すスケジュール結果を、スケジュール管理テーブル１３１に格納する。図１０Ｃに示す実行計算機名１３１−１の値は、すべて実行計算機１０−１である。ＣＰＵ２１は、図１０Ｃに示すスケジュール管理テーブル１３１によって、各実行計算機１０にサービス９９を割り当てる。そして実行計算機１０−１は、割り当てられたサービス９９終了後、処理結果を処理データ１４１に送信する。
【０１００】
ケース１におけるＣＰＵ２１は、図９Ａに示すジョブ９８と、図１０Ａに示す入力値１０１を受信した場合、統計情報管理テーブル１３２の情報に従って、図１０Ｂに示すタイムスケジュールのようにジョブ９８をスケジュールする。ケース１におけるＣＰＵ２１は、図７に示すステップ４０６において、１台の実行計算機１０−１において１２０分以内に、ジョブ９８を実行可能と判定する。このため、ケース１におけるジョブ９８は、すべて１台の実行計算機１０−１においてスケジュールされる。
【０１０１】
図１０Ｂにおいて示すタイムチャートにおける各サービス９９のデプロイ処理及び実行処理の開始時刻１３１−２、終了時刻１３１−３は、スケジュール管理テーブル１３１に格納される。ＣＰＵ２１は、入力値１０１の障害安全係数１０４に基づいて、実行計算機１０−１において全てのサービス９９のデプロイ処理及び実行処理を、２回ずつスケジューリングする。このため、スケジュール管理テーブル１３１には、すべてのサービス９９のデプロイ処理及び実行処理の組が二つずつ格納される。
【０１０２】
ジョブ９８が実行され、サービス９９が正常に実行された場合、複数回スケジューリングされたサービス９９のデプロイ処理及び実行処理は、スキップされ、実行されない。また、ジョブ９８が実行され、サービス９９のデプロイ処理時又は実行処理時に障害が発生した場合、ＣＰＵ２１は、障害が発生した旨を検知し、障害の要因に従って、処理を継続する実行計算機１０を選択する。
【０１０３】
障害の要因がサービス９９のソフトウェア障害等であり、実行制御プログラム９２が処理可能な場合、ＣＰＵ２１は、同一実行計算機１０において再度サービス９９のデプロイ処理及び実行処理を実行させる。
【０１０４】
障害の要因が実行計算機１０におけるハードウェア障害又はネットワーク障害等であり、実行制御プログラム９２が処理不可能な場合、ＣＰＵ２１は、直ちに別の実行計算機１０に残りのサービス９９のスケジュールを割り当て直し、処理を続行させる。残りのサービス９９を新たに割り当てられた実行計算機１０は、障害の発生した実行計算機１０において実行されていたサービス９９のデプロイ処理から実行する。
【０１０５】
これによって、ＣＰＵ２１は、ジョブ９８実行中に障害安全係数１０４によって指定された数である、「１」回の障害が発生した場合においても、ジョブ終了時間１０３の１３０分以内にジョブを終了可能である。
【０１０６】
ケース２は、ケース１と異なり、ジョブ終了時間１０３が７５分である場合、ジョブスケジューリング部１１２によってスケジューリングされた各実行計算機１０へのサービス９９の割り当てを示す。
【０１０７】
図１１Ａは、本発明の第１の実施形態のケース２における入力値１０１の具体例を示す説明図である。
【０１０８】
ケース２の入力値１０１は、入力データ量１０２が１００であり、ジョブ終了時間１０３が７５（分）であり、障害安全係数１０４が１である。
【０１０９】
ケース２におけるＣＰＵ２１は、図７に示す４０６においてジョブ終了予定時刻が、ジョブ終了時間１０３よりも多いため、図８に示すサービス振り分け処理を行う。
【０１１０】
図１１Ｂは、本発明の第１の実施形態のケース２におけるジョブスケジューリング結果を示す説明図である。
【０１１１】
図１１Ｂは、実行計算機１０−１及び実行計算機１０−２へ割り当てられたサービス９９を示す。サービス９９Ａは、二つの実行計算機１０において並列に実行される。
【０１１２】
サービス９９Ｃは、サービス９９Ａの実行後であり、サービス９９Ｂと並列に実行されてもよいため、実行計算機１０−２の２：１５からと、実行計算機１０−１の２：３５にスケジュールされる。サービス９９Ｄは、サービス９９Ｂ及びサービス９９Ｃの後続にスケジュールされる。
【０１１３】
ケース２におけるＣＰＵ２１は、図８に示すステップ４２３〜ステップ４２５において、サービス９９Ａ〜サービス９９Ｄの全てを仮選択する。そして、ステップ４２７において、仮選択したサービス９９の中から、デプロイ処理及び実行処理の合計時間が最大のサービス９９を選択し、実行計算機１０−２に割り当てる。
【０１１４】
ここで、サービス９９Ｂは、最もデプロイ処理及び実行処理に要する時間が少ないため、実行計算機１０−２に振り分けられる順番は遅くなる。ケース２におけるＣＰＵ２１は、デプロイ処理及び実行処理に要する時間の多い順に、サービス９９Ｄ、サービス９９Ａ、サービス９９Ｃを実行計算機１０−２に振り分け（ステップ４０７）、その後、ジョブ終了時間内にジョブ９８が終了する予定であると判定する（ステップ４０６）。このため、ケース２におけるサービス９９Ｂは、実行計算機１０−２に振り分けられない。
【０１１５】
図１１Ｃは、本発明の第１の実施形態のケース２におけるスケジュール管理テーブル１３１を示す説明図である。
【０１１６】
図１１Ｃに示す実行計算機名１３１−１は、実行計算機１０−１と実行計算機１０−２とが格納される。図１１に示すスケジュール管理テーブル１３１には、図１１Ｂに示すスケジュールに基づいて、値が格納される。ケース２において、ジョブ９８の終了予定時刻は、サービス９９Ｄの終了時刻１３１−３が示す３：１０であり、ジョブ９８が実行されてから７５分間で終了する予定である。
【０１１７】
ケース２におけるＣＰＵ２１は、図９Ａに示すジョブ９８と、図１１Ａに示す入力値１０１を受信した場合、統計情報管理テーブル１３２の情報に従って、図１１Ｂに示すタイムスケジュールのようにジョブ９８をスケジュールする。ケース２におけるＣＰＵ２１は、図７に示すステップ４０６において、２台の実行計算機１０−１及び実行計算機１０−２において７０分以内に、ジョブ９８を実行可能と判定する。このため、ケース２におけるジョブ９８は、２台の実行計算機１０−１及び実行計算機１０−２においてスケジュールされる。
【０１１８】
ケース１とは異なり、ケース２におけるＣＰＵ２１は、複数のサービス９９のデプロイ処理及び実行処理を２台の実行計算機１０に割り当てる。ジョブ９８が実行され、複数の実行計算機１０に割り当てられたサービス９９が正常に実行された場合、いずれか一つの実行計算機１０は、処理結果を処理データ１４１に反映する。
【０１１９】
スケジュール管理計算機１１は、実行計算機１０毎に優先順位を設けることによって、いずれの実行計算機１０の処理結果を処理データ１４１に反映するかを定めてもよい。また、一つの実行計算機１０が、処理結果を反映している間、スケジュール管理計算機１１上又は処理データ１４１上に、処理結果を反映中であることを示す情報を保持してもよい。そして、処理結果を反映中であることを示す情報を他の実行計算機１０が参照することによって、他の実行計算機１０が反映処理をスキップしてもよい。
【０１２０】
本実施形態によれば、各実行計算機１０において、割り当てられたサービス９９のデプロイ処理時及び実行処理時に障害が発生した場合、残りの実行計算機１０によって同一のサービス９９が実行されるため、ジョブ９８は、継続して実行される。ジョブ実行中に１回の障害が発生した場合、障害安全係数１０４によって「１」が指定されていれば、ジョブ終了時間１０３の７５分以内にジョブを終了させることができる。
【０１２１】
例えば、実行計算機１０−１においてサービス９９Ａが実行されている際に、障害が発生した場合、実行計算機１０−２においてもサービス９９Ａが同時に実行されているため、サービス９９Ｂ及びサービス９９Ｃは、継続してスケジュール通り実行される。なお、実行計算機１０−１及び１０−２においてサービス９９Ａが正常に実行された場合、前述の通り、優先順位に従っていずれかの実行計算機１０による処理結果が処理データ１４１に反映されてもよいし、より早く送信された処理結果が処理データ１４１に反映されてもよい。
【０１２２】
また例えば、実行計算機１０−２においてサービス９９Ｃが実行されている際に、障害が発生した場合、二つ目のサービス９９Ｃがスケジュール通り実行されるため、後続のサービス９９Ｄもスケジュール通り実行される。なお、サービス９９Ｃが正常に実行された場合、サービス９９Ｃはスキップされ、サービス９９Ｄはスケジュール通り実行される。
【０１２３】
また、図１１Ｂに示すサービス９９Ｂは直列に実行されるが、サービス９９Ｂにおいて障害が発生した場合、ケース１と同様に、スケジュール管理計算機１１は、障害の内容に従って実行計算機１０を選択すればよい。
【０１２４】
前述のスケジューリングによって、スケジュール管理計算機１１は、障害が発生しても、予定した３：１０にジョブ９８を終了させることができる。
【０１２５】
図１２は、本発明の第１の実施形態のディスプレイ装置２２に表示されるジョブ投入画面を示す説明図である。
【０１２６】
前述したジョブスケジューリングシステムに対するジョブ９８の投入は、システムが自動的に行う場合、又は、ユーザによってジョブ９８の投入がオペレーションされる場合が考えられる。ジョブ９８の投入とは、実行されるジョブ９８の情報をシステムに入力することである。
【０１２７】
ユーザがジョブを投入する場合、スケジュール管理計算機１１は、図１２に示すジョブ投入画面５０１をディスプレイ装置２２に表示する。そしてユーザは、ジョブ９８を実行するために必要な情報を、ジョブ投入画面５０１を介して入力する。そしてスケジュール管理計算機１１は、図７及び図８に示すジョブスケジューリングを行い、ジョブ９８の実行可否情報をユーザに通知する。
【０１２８】
ジョブ投入画面５０１は、ジョブ名５０２、入力データファイル名５０３、ジョブ実行時刻５０４、障害安全係数５０５及びジョブ投入ボタン５０６を含む入力情報領域と、ジョブ投入結果５０７を含む結果情報領域とを含む。
【０１２９】
ジョブ名５０２は、実行するジョブを指定するための領域である。
【０１３０】
入力データファイル名５０３は、入力データ量１０２を指定するための領域である。また、入力データファイル名５０３に示される入力データファイル以外の形式によってジョブ９８の入力データ量を指定する場合、別の入力値から算出した値を用いてもよい。
【０１３１】
ジョブ実行時刻５０４は、ジョブ終了時間１０３、すなわち、スケジュール管理テーブル１３１の開始時刻１３１−２、終了時刻１３１−３を指定するための領域である。
【０１３２】
障害安全係数５０５は、障害安全係数１０４を入力するための領域である。当該指定値については、図１において説明したように、ジョブ９８の重要度を示す数値によってユーザに候補となる指定値を提示してもよく、実行計算機１０の稼働率などの情報に基づいて、システムが自動的に指定してもよい。
【０１３３】
ジョブ投入ボタン５０６は、システムにジョブ投入を指示するためのボタンである。システムは、ジョブ投入後、前述したように、ジョブ９８をスケジューリングする。
【０１３４】
ジョブ投入結果５０７は、ジョブ９８をスケジューリングした結果として、ジョブ９８のスケジューリング可否、ジョブ９８の予定開始時刻及び予定終了時刻をユーザに通知するための領域である。ジョブ投入結果５０７には、サービス９９が割り当てられる実行計算機１０の台数、又は、実行計算機１０毎のサービス実行予定などの情報を含めてもよい。
【０１３５】
本発明の実施の形態によれば、ジョブ実行時に障害が発生してもジョブ終了時間を満たすようにジョブ９８のサービス９９を実行計算機１０に割り当てることが可能となる。また本発明は、ジョブ終了時間１０３を満たす範囲で、サービス９９を実行計算機１０へ振り分け、サービス９９を冗長してスケジューリングしないため、実行計算機１０のリソースを有効活用するようにジョブ９８をスケジューリングすることができる。
【０１３６】
以上、本発明の最適な実施形態を示したが、本発明は前記実施形態に限定されず、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。例えば以下のような実施形態が考えられる。
【０１３７】
（第２の実施形態）
第１の実施形態におけるサービス９９は、各実行計算機１０においてデプロイされていない状態において、ジョブスケジューリングされた。実行計算機１０上に振り分け対象のサービス９９がデプロイ済みであった場合、第２の実施形態におけるスケジュール管理計算機１１は、初回のサービス９９のデプロイ処理を省略することによって、ジョブ９８の実行時間を短縮することができる。
【０１３８】
さらに、スケジュール管理計算機１１は、各実行計算機１０においてデプロイ済みのサービス９９の一覧を管理し、図７に示すステップ４０２及び図８に示すステップ４２８において、サービス９９に対するデプロイが済んでいる実行計算機１０を優先的に割り当てることによって、ジョブ９８の実行時間を短縮することができる。
【０１３９】
（第３の実施形態）
第１の実施形態では、図８に示すステップ４２９において、先行するサービスが終了した後の時間帯に別の実行計算機１０へ後続のサービス９９を割り当てていたが、先行するサービス９９が実行される前に、サービス９９のデプロイ処理に要する時間以上の空き時間が存在した場合、その空き時間に初回のサービス９９のデプロイ処理を割り当てることによって、ジョブ９８の実行時間を短縮することができる。なお、デプロイ処理は一般的に他のサービスと並行して実行されることができる。
【符号の説明】
【０１４０】
１０、１０−１〜１０−ｎ  実行計算機
１１    スケジュール管理計算機
２１    ＣＰＵ
２２    ディスプレイ装置
２３    キーボード
２４    マウス
２５    ネットワークインタフェースカード（ＮＩＣ）
２６    ハードディスク
２７    メモリ
２８    バス
３０    オペレーティングシステム
９１    スケジューリング制御プログラム
９２    実行制御プログラム
９９、９９Ａ〜９９Ｆ    サービス
１０１  入力値
１０２  入力データ量
１０３  ジョブ終了時間
１０４  障害安全係数
１１１  ジョブ受付部
１１２  ジョブスケジューリング部
１１３  実行指示部
１１４  統計情報管理部
１２１  サービスデプロイ部
１２２  サービス実行部
１２３  統計情報転送部
１３１  スケジュール管理テーブル
１３２  統計情報管理テーブル
１４１  処理データ
【図１】
0005417626.tif 000002
【図２】
0005417626.tif 000003
【図３】
0005417626.tif 000004
【図４】
0005417626.tif 000005
【図５】
0005417626.tif 000006
【図６】
0005417626.tif 000007
【図７】
0005417626.tif 000008
【図８】
0005417626.tif 000009
【図９Ａ】
0005417626.tif 000010
【図９Ｂ】
0005417626.tif 000011
【図１０Ａ】
0005417626.tif 000012
【図１０Ｂ】
0005417626.tif 000013
【図１０Ｃ】
0005417626.tif 000014
【図１１Ａ】
0005417626.tif 000015
【図１１Ｂ】
0005417626.tif 000016
【図１１Ｃ】
0005417626.tif 000017
【図１２】
0005417626.tif 000018