(57)【要約】      （修正有）【課題】ヘテロコンピューティング環境においてどのプラットフォームでジョブを実行させると早く終了するかを決定するジョブ管理システムを提供する。【解決手段】ジョブ管理システム１０は、複数のコンピュータ装置の各々にプログラムの進行度合を判定するためのチェックポイント到達判定条件を定めた情報を通知するチェックポイント判定条件通知部１３１と、複数のコンピュータ装置の各々で実行したプログラムのうち、最初にチェックポイントに到達したプログラムが実行されたコンピュータ装置から取得したチェックポイントへの到達を示す情報に基づいて、当該プログラムを実行するコンピュータ装置を決定するジョブ実行装置決定部１３２と、を備える。【選択図】図１
2017157136.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンピュータ装置の各々にプログラムの進行度合を判定するためのチェックポイント到達判定条件を定めた情報を通知するチェックポイント判定条件通知部と、
前記複数のコンピュータ装置の各々で実行した前記プログラムのうち、最初にチェックポイントに到達したプログラムが実行されたコンピュータ装置から取得したチェックポイントへの到達を示す情報に基づいて、当該プログラムを実行するコンピュータ装置を決定するジョブ実行装置決定部と、
を備えるジョブ管理システム。
【請求項２】
前記チェックポイント到達判定条件は、前記コンピュータ装置が備える基盤ソフトウェアでの前記プログラムの実行に伴って変化する、前記基盤ソフトウェアが提供する情報に基づく判定条件である、
請求項１に記載のジョブ管理システム。
【請求項３】
前記基盤ソフトウェアが提供する情報は、前記コンピュータ装置が有する自装置のコンピュータリソースへのアクセス手段の実行に関する情報、または、前記アクセス手段の実行によって得られる情報に基づく判定条件である、
請求項２に記載のジョブ管理システム。
【請求項４】
前記チェックポイント到達判定条件は、前記コンピュータ装置におけるシステムコールの実行回数が所定の閾値に達することである、
請求項１から請求項３の何れか１項に記載のジョブ管理システム。
【請求項５】
前記チェックポイント到達判定条件は、前記コンピュータ装置におけるコンピュータリソースの消費量が所定の閾値に達することである、
請求項１から請求項４の何れか１項に記載のジョブ管理システム。
【請求項６】
前記チェックポイント到達判定条件には、前記コンピュータ装置の各々の実行環境に対して最適化された前記プログラムに応じて、異なる前記コンピュータ装置ごとに異なる判定条件が設定されている、
請求項１から請求項５の何れか１項に記載のジョブ管理システム。
【請求項７】
前記複数のコンピュータ装置の各々において、前記チェックポイント到達判定条件を取得し、取得したチェックポイント到達判定条件に基づいて、自装置で実行されている前記プログラムの実行を監視し、前記チェックポイント到達判定条件を満たした場合、前記ジョブ実行装置決定部へチェックポイントへの到達を示す情報を通知するチェックポイント監視部、
をさらに備える請求項１から請求項６の何れか１項に記載のジョブ管理システム。
【請求項８】
前記プログラムの実行を前記複数のコンピュータ装置の各々で同時に開始させ、前記ジョブ実行装置決定部が当該プログラムを実行するコンピュータ装置を決定すると、そのコンピュータ装置以外で実行されている前記プログラムを終了させるジョブ制御部、
をさらに備える請求項１から請求項７の何れか１項に記載のジョブ管理システム。
【請求項９】
複数のコンピュータ装置の各々にプログラムの進行度合を判定するためのチェックポイント到達判定条件を定めた情報を前記コンピュータ装置の各々に通知し、
前記複数のコンピュータ装置の各々で実行した前記プログラムのうち、最初にチェックポイントに到達したプログラムが実行されたコンピュータ装置から取得した、チェックポイント到達通知情報に基づいて、当該プログラムを実行するコンピュータ装置を決定する、
プログラム実行装置の決定方法。
【請求項１０】
ジョブ管理システムのコンピュータを、
複数のコンピュータ装置の各々にプログラムの進行度合を判定するためのチェックポイント到達判定条件を定めた情報を前記コンピュータ装置の各々に通知する手段、
前記複数のコンピュータ装置の各々で実行した前記プログラムのうち、最初にチェックポイントに到達したプログラムが実行されたコンピュータ装置から取得した、チェックポイント到達通知情報に基づいて、当該プログラムを実行するコンピュータ装置を決定する手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブ管理システム、プログラム実行装置の決定方法及びプログラムに関する。
【背景技術】
【０００２】
複数の異なるプラットフォームが疎結合されているヘテロジニアス・コンピューティング環境において、どのプラットフォームでプログラムを実行するのがよいかを判断することは難しい。たとえば、あるプログラムを、ベクトルコンピュータで実行するのがよいか、いわゆるＰＣサーバで構成されたクラスタで実行するのがよいか、あるいはＧＰＧＰＵ（General-purpose computing on graphics processing units）のようなアクセラレータ環境で実行するのがよいかを判断するのは容易なことではない。利用者が、プログラムの特性を理解している場合は、ある程度判断できる場合もあるかもしれないが、状況や条件(システムの負荷状況、入力データの種類やサイズなど)によって変化することも考えられる。
【０００３】
このような課題に対処するために、一般的には、以下のような方法が試されてきた。
（方法１）すべてのプラットフォームでプログラムを実際に実行する。この方法では、例えば、プログラムＸをプラットフォームＡ、プラットフォームＢ、プラットフォームＣのすべてで実行し、最短で実行が完了したプラットフォームの結果を参照する。
（方法２）方法１と同様、すべてのプラットフォームでプログラムを実際に実行する。そして、その実行状況を、何等かの方法で監視して最速で実行が完了しそうなプラットフォームを選択する。選択したプラットフォームでの実行だけを残し、他のプラットフォームで実行中のプログラムを途中で終了させる。
（方法３）過去の実行履歴を参考にして、最速で実行が完了しそうなプラットフォームを選択する。
（方法４）プログラム特性により利用者自身がどのプラットフォームでプログラムを実行するかを決定する。
【０００４】
また、特許文献１には、複数のプロセッサが存在するコンピューティング環境において、同一ジョブを複数のプロセッサで同時に開始し、最初に予め定められたチェックポイントへの到達の報告があったプロセッサを搭載したコンピュータ装置を、そのプログラムの実行環境として選択する技術が記載されている。なお、特許文献１には、対象となるジョブは、プログラム実行中の所定のチェックポイントを通過したときに第１プロセッサに報告するようなジョブでなければならず、また、ＯＳ（operating system）には、ＣＰ通知部なる上位のプロセッサにチェックポイントの通過を通知する機能が組み込まれていなければならないことが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１５８０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、上述の（方法１）には、最速で実行が完了しなかったプラットフォームでの実行が無駄になり、システム全体の効率の観点からみると望ましくないという欠点がある。（方法２）の場合、実行状況を監視する方法としては、途中結果を出力してそれを監視する方法などが考えられるが、そのためにはプログラムの内容を熟知している必要がある。また、利用者が実行状況を監視し続けなければいけないという欠点も存在する。（方法３）には、少なくとも1回はすべてのプラットフォームで実行する必要があり、また、そのときの負荷状況やデータの種類、データサイズなどの条件によって過去の履歴が参考になるとは限らないといった欠点がある。（方法４）には、利用者がプログラム特性を理解していなければ使用できず、また、そのときの負荷状況やデータ特性などの条件によって最適なプラットフォームが変わる可能性があるといった欠点がある。
また、特許文献１の方法には、実行するプログラムおよびプラットフォーム側ＯＳ（Operating System）に改造を加える必要があるという欠点がある。
【０００７】
そこでこの発明は、上述した課題を解決するジョブ管理システム、プログラム実行装置の決定方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
本発明は、複数のコンピュータ装置の各々にプログラムの進行度合を判定するためのチェックポイント到達判定条件を定めた情報を通知するチェックポイント判定条件通知部と、前記複数のコンピュータ装置の各々で実行したプログラムのうち、最初にチェックポイントに到達したプログラムが実行されたコンピュータ装置から取得したチェックポイントへの到達を示す情報に基づいて、当該プログラムを実行するコンピュータ装置を決定するジョブ実行装置決定部と、を備えるジョブ管理システムである。
【０００９】
また本発明は、複数のコンピュータ装置の各々にプログラムの進行度合を判定するためのチェックポイント到達判定条件を定めた情報を前記コンピュータ装置の各々に通知し、前記複数のコンピュータ装置の各々で実行した前記プログラムのうち、最初にチェックポイントに到達したプログラムが実行されたコンピュータ装置から取得した、チェックポイント到達通知情報に基づいて、当該プログラムを実行するコンピュータ装置を決定する、プログラム実行装置の決定方法である。
【００１０】
また本発明は、ジョブ管理システムのコンピュータを、複数のコンピュータ装置の各々にプログラムの進行度合を判定するためのチェックポイント到達判定条件を定めた情報を前記コンピュータ装置の各々に通知する手段、前記複数のコンピュータ装置の各々で実行した前記プログラムのうち、最初にチェックポイントに到達したプログラムが実行されたコンピュータ装置から取得した、チェックポイント到達通知情報に基づいて、当該プログラムを実行するコンピュータ装置を決定する手段、として機能させるためのプログラムである。
【発明の効果】
【００１１】
本発明によれば、複数のコンピュータ装置からなるコンピューティング環境において、利用者のプログラムを最も早く実行できるコンピュータ装置を高い確度で自動的に選択し、プログラムを実行することが可能になるという効果が得られる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態によるジョブ管理システムの最小構成を示すブロック図である。
【図２】本発明の一実施形態によるジョブ管理システムの一例を示す図である。
【図３】本発明の一実施形態によるプログラム実行装置の決定方法を説明する第一の図である。
【図４】本発明の一実施形態によるプログラム実行装置の決定方法を説明する第二の図である。
【図５】本発明の一実施形態によるプログラム実行装置の決定処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
＜実施形態＞
以下、本発明の一実施形態によるジョブ管理システムを図１〜図５を参照して説明する。
図１は、本発明の一実施形態によるジョブ管理システムの最小構成を示すブロック図である。
図１におけるジョブ管理システム１０は、チェックポイント判定条件通知部１３１と、ジョブ実行装置決定部１３２とを少なくとも備えている。
チェックポイント判定条件通知部１３１は、複数のコンピュータ装置の各々に各コンピュータ装置で実行するプログラムの進行度合を判定するためのチェックポイント到達判定条件を定めた情報を、複数のコンピュータ装置に通知する。
ジョブ実行装置決定部１３２は、複数のコンピュータ装置の各々で実行したプログラムのうち、最初にチェックポイントに到達したプログラムが実行されたコンピュータ装置から取得したチェックポイント到達通知情報に基づいて、当該チェックポイント到達通知情報を送信したコンピュータ装置を、当該プログラムを実行するコンピュータ装置として決定する。
【００１４】
図２は、本発明の一実施形態によるジョブ管理システムの一例を示す図である。
図２に示す通り、コンピュータシステム１００は、複数のコンピュータ装置２０Ａ、２０Ｂと、ジョブ管理装置３０と、を含む。なお、コンピュータ装置２０Ａ、２０Ｂなどを総称してコンピュータ装置２０と呼ぶ。ジョブ管理装置３０とコンピュータ装置２０とは通信可能に接続されている。コンピュータシステム１００は、コンピュータ装置２０Ａ、２０Ｂが異なる種類のプロセッサを搭載したヘテロジニアス・コンピューティング環境であってもよいし、同一のプロセッサが搭載されたホモジニアス・コンピューティング環境であってもよい。また、コンピュータシステム１００に含まれるコンピュータ装置２０の台数は２台以上であってもよい。
【００１５】
ジョブ管理システム１０は、後述する受付部１１と、ジョブ制御部１２と、中断判定部１３と、エージェント部１４と、チェックポイント監視部１５と、を含んで構成される。これらのうち、受付部１１と、ジョブ制御部１２と、中断判定部１３とは、ジョブ管理装置３０に実装され、エージェント部１４と、チェックポイント監視部１５とは、各コンピュータ装置２０に実装される。ジョブ管理システム１０は、あるプログラムに対応するプログラムを実行する際に、コンピュータ装置２０Ａとコンピュータ装置２０Ｂのどちらで実行すればより速く実行が完了するかを判定し、より早くプログラムの実行ができるコンピュータ装置２０で当該プログラムを実行させる。特に本実施形態において、ジョブ管理システム１０は、どのコンピュータ装置２０でプログラムを実行すれば早く完了するかを判定する条件（チェックポイント到達判定条件）を、実行するプログラムと共にコンピュータ装置２０へ通知し、当該条件を最も早く満たすコンピュータ装置２０を、当該プログラムを実行するコンピュータ装置２０として選択する。
【００１６】
図２に示すようにジョブ管理装置３０は、受付部１１と、ジョブ制御部１２と、中断判定部１３とを備える。
受付部１１は、利用者による、実行する対象となるプログラムとチェックポイント到達判定条件の情報の入力を受け付ける。
ジョブ制御部１２は、後述するエージェント部１４と連携して、コンピュータ装置２０でのプログラムの実行（開始、終了等）を制御する。ジョブ制御部１２は、例えば、ジョブの実行スケジュールに従って所定のプログラムを所定のコンピュータ装置２０に割り当てて実行させる機能を有している。また、例えば、ジョブ制御部１２は、対象となるプログラムの実行を、複数のコンピュータ装置２０の各々で同時に開始する。また、ジョブ制御部１２は、例えば、ジョブ実行装置決定部１３２がプログラムを実行するプラットフォームをコンピュータ装置２０Ａと決定すると、コンピュータ装置２０Ａ以外（つまり、コンピュータ装置２０Ｂ）で実行されている対象プログラムを終了させる。
【００１７】
中断判定部１３は、図１で説明したチェックポイント判定条件通知部１３１と、ジョブ実行装置決定部１３２とを有している。つまり、チェックポイント判定条件通知部１３１は、ジョブ制御部１２と連携して、チェックポイント到達判定条件を各コンピュータ装置２０（２０Ａ、２０Ｂ）の後述するチェックポイント監視部１５（１５Ａ、１５Ｂ）に通知する機能を有している。また、チェックポイント判定条件通知部１３１は、チェックポイント監視部１５からプログラムの実行がチェックポイントへ到達したことを通知するチェックポイント到達通知情報を取得する機能を有している。また、ジョブ実行装置決定部１３２は、あるコンピュータ装置２０（例えば２０Ａ）からチェックポイント到達通知情報を受け取ると、それ以外のコンピュータ装置２０（例えば２０Ｂ）でのジョブの実行を終了させる指示情報を、ジョブ制御部１２に出力する機能を有している。
ジョブ管理装置３０の受付部１１、ジョブ制御部１２は、一般的なジョブ管理システムが有しているものと同様の機能を有したものであってよい。本実施形態では、中断判定部１３と後述するチェックポイント監視部１５が連携して、プログラムを最速で実行できるプラットフォームを選択する。
【００１８】
次にコンピュータ装置２０について説明する。図２に示すようにコンピュータ装置２０は、エージェント部１４と、プログラム２１と、基盤ソフトウェア２２とを備える。
エージェント部１４は、ジョブ制御部１２の指示に基づいて動作するジョブ管理用のソフトウェアである。エージェント部１４は、各コンピュータ装置２０上で動作し、実行ノードの負荷状況や実行中のプログラムの状態を採取してジョブ制御部１２に送信する機能等を有している。また、本実施形態のエージェント部１４は、チェックポイント監視部１５を有している。
チェックポイント監視部１５は、チェックポイント判定条件通知部１３１からチェックポイント到達判定条件を取得する機能を有している。また、チェックポイント監視部１５は、各コンピュータ装置２０においてチェックポイント到達判定条件が満たされたかどうかを監視する機能を有している。また、チェックポイント監視部１５は、チェックポイント到達判定条件が満たされた場合に、プログラム２１の実行がチェックポイントに到達したことを示すチェックポイント到達通知情報を、チェックポイント判定条件通知部１３１に通知する機能を有している。
【００１９】
プログラム２１は、利用者が実行を指示したジョブに対応する実行形式のプログラムである。プログラム２１は、ジョブ制御部１２によって、実行または終了させられる。
基盤ソフトウェア２２は、コンピュータ装置２０が備える（実装された）ＯＳ、各種ミドルウェア等である。基盤ソフトウェア２２は、各種コマンド（例えば、ｔｒａｃｅコマンド）等を介して、基盤ソフトウェア２２上で稼働するプログラム（例えば、チェックポイント監視部１５）に、ジョブの実行状況に関する情報を提供することができる。ジョブの実行状況に関する情報とは、例えば、ジョブの実行に伴い当該ジョブから発行されるシステムコールの回数、ジョブの実行に伴い消費されるコンピュータリソース（例えば、メモリ、ハードディスク、ＣＰＵ等の使用率）の状況などである。
【００２０】
チェックポイント監視部１５を除くエージェント部１４は、一般的なジョブ管理システムで用いられるエージェントソフトウェアと同様なものであってよい。また、プログラム２１、基盤ソフトウェア２２についても、一般的なものであってよい。本実施形態では、エージェント部１４に組み込んだチェックポイント監視部１５と前述の中断判定部１３が連携して、ジョブを最速で実行できるプラットフォームを選択する。
なお、以下において、コンピュータ装置２０Ａが備えるエージェント部１４をエージェント部１４Ａと呼ぶ。また、エージェント部１４Ａ、エージェント部１４Ｂ等を総称してエージェント部１４と呼ぶ。他の機能部についても同様である。
【００２１】
次に図３、図４を用いて本実施形態におけるジョブを実行するプラットフォームの決定方法について説明する。
図３は、本発明の一実施形態によるプログラム実行装置の決定方法を説明する第一の図である。
図４は、本発明の一実施形態によるプログラム実行装置の決定方法を説明する第二の図である。
以降では図３、図４を参照して、本実施形態に係るジョブ管理システム１０の動作を、コンピュータ装置２０Ａ、コンピュータ装置２０Ｂ、ジョブ管理装置３０からなるヘテロジニアス・コンピューティング環境であるコンピュータシステム１００を例に説明する。
【００２２】
ソースコード１１０は、利用者が実行したいジョブに係るプログラム２１のソースコードである。実行形式ファイル「ａ．ｅｘｅ」や「ｂ．ｅｘｅ」は、ソースコード１１０を各プラットフォーム用のコンパイラでコンパイルして作成した実行プログラムである。「ａ．ｅｘｅ」は、コンピュータ装置２０Ａ向けのプログラムで、図２のプログラム２１Ａに対応する。「ｂ．ｅｘｅ」は、コンピュータ装置２０Ｂ向けのプログラムで、図２のプログラム２１Ｂに対応する。
【００２３】
ジョブスクリプト１２０は、「ａ．ｅｘｅ」および「ｂ．ｅｘｅ」の実行を指示するプログラムである。また、ジョブスクリプト１２０には、ジョブの実行に加えて、チェックポイント到達判定条件が記載されている。具体的には、図３の例の場合、１行目の「ｑｓｕｂ  −ｑ  ｑｕｅｕｅＡ  ａ．ｅｘｅ」との記載が「ａ．ｅｘｅ」をプラットフォームＡで実行することを指定している。また、「−ｆａｓｔｅｒ  ｂ．ｅｘｅ，  ｗｒｉｔｅ＝１０」との記載は、「ａ．ｅｘｅ」が「ｂ．ｅｘｅ」よりも早くチェックポイントに到達するかどうかを監視すること、および、チェックポイントに到達したかどうかの判定条件としてｗｒｉｔｅシステムコールが１０回実行されたことにより当該判定を行うことを指定している。同様に、２行目の記載により、「ｂ．ｅｘｅ」をコンピュータ装置２０Ｂで実行し、「ｂ．ｅｘｅ」が「ａ．ｅｘｅ」よりも早くチェックポイントに到達するかどうかを監視し、チェックポイントへの到達の判定をｗｒｉｔｅシステムコールが１０回実行された時点と指定している。
【００２４】
チェックポイント到達判定条件としてこのようにｗｒｉｔｅシステムコールが所定の回数実行された時点と指定することは理にかなっている。なぜならば、科学技術計算で用いられるプログラムでは、メインの計算処理を多数回ループさせて実行し、各ループの実行後に計算の途中結果を、ｗｒｉｔｅシステムコールを用いて書き出すという構成を持つプログラムが多いからである。
【００２５】
なお、チェックポイントの指定方法としては、本例のようにジョブスクリプト１２０を使ってジョブ管理装置３０に投入する際に指定する方法でもよいし、ジョブ管理システム１０でデフォルト値を設定しておいてもよい。
【００２６】
利用者は、ジョブスクリプト１２０、「ａ．ｅｘｅ」、「ｂ．ｅｘｅ」をジョブ管理装置３０に投入する。ジョブ管理装置３０は、利用者からのジョブの実行指示を受け付けて、コンピュータ装置２０Ａおよびコンピュータ装置２０Ｂに実行させる。より具体的には、ジョブ管理システム１０のジョブ制御部１２が、コンピュータ装置２０Ａのエージェント部１４Ａに「ａ．ｅｘｅ」の実行を指示し、コンピュータ装置２０Ｂのエージェント部１４Ｂに「ｂ．ｅｘｅ」の実行を指示する。すると、エージェント部１４Ａが「ａ．ｅｘｅ」を実行する。また、エージェント部１４Ｂが「ｂ．ｅｘｅ」を実行する。これらの処理は、ジョブ管理機能として一般的に提供されているジョブの実行処理と同様であってよい。
【００２７】
ジョブ制御部１２が、実行プログラム「ａ．ｅｘｅ」および「ｂ．ｅｘｅ」をそれぞれの実行ノードに割り付けるときに、中断判定部１３のチェックポイント判定条件通知部１３１は、エージェント部１４Ａおよびエージェント部１４Ｂ内のチェックポイント監視部１５Ａ、１５Ｂと通信して、チェックポイント到達判定条件を通知する。チェックポイント監視部１５Ａは、「ａ．ｅｘｅ」の実行がチェックポイントに到達したかどうかを監視し、チェックポイントに到達したら（チェックポイント到達判定条件を満たしたら）、ジョブ管理システム１０の中断判定部１３にその旨（チェックポイント到達通知情報）を通知する。同様にチェックポイント監視部１５Ｂは、「ｂ．ｅｘｅ」の実行がチェックポイントに到達したら、ジョブ管理システム１０の中断判定部１３と通信を行い、チェックポイント到達通知情報を通知する。
【００２８】
中断判定部１３ではジョブ実行装置決定部１３２が、チェックポイント監視部１５Ａ、または、チェックポイント監視部１５Ｂからチェックポイント到達通知情報を取得すると、ジョブ制御部１２を介して最も早くチェックポイント到達判定条件を満たしたプログラム２１の実行だけを残し、そうでない実行を強制的に終了させる。ここで、図４を参照する。図４（ａ）は、各コンピュータ装置２０で実行したプログラムの終了時刻とチェックポイントへの到達時刻との関係を示している。図４（ａ）が示すように、「ａ．ｅｘｅ」は「ｂ．ｅｘｅ」よりも早くチェックポイントへ到達している。また、早くチェックポイントに到達した「ａ．ｅｘｅ」は、「ｂ．ｅｘｅ」に比べ、最終的に時間Ｔ１だけ早く実行を終了している。このように、チェックポイントへ早く到達したプログラムの実行は、他の実行に比べ、その後も高速に処理が実行され、全体の実行も速く終了する可能性が高いと考えられる。そこで、図４（ｂ）が示すように「ａ．ｅｘｅ」が早くチェックポイントへ到達した時点で、「ａ．ｅｘｅ」の実行が早く終了すると予測し、その時点（時刻ｔ２）で「ｂ．ｅｘｅ」の実行を中止する。なお、実行中のプログラムを途中で強制終了させるには、一般的なジョブ管理機能に備わっている機能を用いて、ジョブ制御部１２からチェックポイント監視部１５Ａ、１５Ｂに対して終了命令を発行すればよい。
【００２９】
本実施形態では、一般的なジョブ管理システムの構成に対して、中断判定部１３とエージェント部１４内のチェックポイント監視部１５を追加することで、ジョブを最速で実行できる装置を決定する方法を提供する。チェックポイントへの到達を判定する条件としては、所定のシステムコール（ｗｒｉｔｅシステムコールなど）が指定された回数だけ発行されたことをもってチェックポイントに到達したと判定してもよいが、これに限定するものではない。例えば、プログラム２１を実行しているコンピュータ装置２０のコンピュータリソースの消費量が所定の閾値に達することに基づいてチェックポイントに到達したと判定してもよい。例えば、「ａ．ｅｘｅ」と「ｂ．ｅｘｅ」のジョブの進捗に伴うメモリ消費量が予め分かっているような場合、チェックポイント監視部１５は、定期的にＯＳ等が提供するコマンドを発行し、プログラムの使用しているメモリサイズの情報を取得する。そして、取得したメモリサイズが、プログラム２１のチェックポイントへの到達を示す所定の閾値に達すると、チェックポイント監視部１５は、プログラム２１の実行がチェックポイントへ到達したと判定してもよい。
【００３０】
また、上記では、チェックポイント到達の判定条件として、ｗｒｉｔｅシステムコールを１０回実行したこととする例を示したが、チェックポイント到達の判定条件は、全てのコンピュータ装置２０で必ずしも同じものである必要はない。例えば、コンピュータ装置２０Ａとコンピュータ装置２０Ｂとで、ｗｒｉｔｅシステムコールに対する特性が異なり、その実行環境に対して最適化するために「ｂ．ｅｘｅ」のソースコードに対して、「ａ．ｅｘｅ」と比べてｗｒｉｔｅの回数を半分とし１回あたりの出力サイズを２倍にする変更が加えられているとする。その場合、利用者が投入するジョブスクリプト１２０には、以下のような記載を行うことができる。
ｑｓｕｂ  −ｑ  ｑｕｅｕｅＡ  ａ．ｅｘｅ 
−ｆａｓｔｅｒ  ｂ．ｅｘｅ，ｗｒｉｔｅ＝１０
ｑｓｕｂ  −ｑ  ｑｕｅｕｅＢ  ｂ．ｅｘｅ 
−ｆａｓｔｅｒ  ａ．ｅｘｅ，ｗｒｉｔｅ＝５
このジョブスクリプト１２０によれば、チェックポイント監視部１５Ａは、「ａ．ｅｘｅ」の実行中にｗｒｉｔｅシステムコールが１０回発行されたことをもってチェックポイントへの到達と判定する。また、チェックポイント監視部１５Ｂは、「ｂ．ｅｘｅ」の実行中にｗｒｉｔｅシステムコールが５回発行されたことをもってチェックポイントへの到達と判定する。このように本実施形態によれば、実行環境の違いに応じて、コンピュータ装置２０ごとに異なるチェックポイント到達判定条件を設定することが可能である。
【００３１】
また、チェックポイント監視部１５で監視できる内容であればチェックポイント到達判定条件は他の方法にすることも考えられる。チェックポイント監視部１５で監視できる内容とは、例えば、プログラム２１の実行に伴う基盤ソフトウェア２２が提供するコマンドの発行等に対して応答される情報である。基盤ソフトウェア２２が提供する情報であれば、チェックポイント監視部１５は、コマンドを発行することで容易に情報を取得し、チェックポイントの到達を監視することができる。つまり、予め用意されたインタフェースを利用して情報を取得できるので、実行ノードごとにプログラムの開発や改修などを行う必要が無い。また、コマンドの発行などに応答して基盤ソフトウェア２２が提供する情報とは、例えば、コンピュータリソースへのアクセス手段の実行（例えば、ｗｒｉｔｅシステムコール）に関する情報（例えば、実行回数）、または、アクセス手段の実行によって得られる情報（例えば、プログラム２１が使用するメモリサイズ）である。これらの情報は、プログラム２１の実行の進行と共に、そのプログラム２１の処理内容に基づいて変化する値であるので、プログラム２１の実行の進行度合いを示すチェックポイントとして用いることができる。
【００３２】
図５は、本発明の一実施形態によるプログラム実行装置の決定処理の一例を示すフローチャートである。
図５を用いて、これまで説明したプラットフォーム決定方法を含む処理の流れについて図３、図４で例示した構成を用いて説明を行う。
まず、利用者は、ソースコード１１０をコンパイルしてコンピュータ装置２０Ａ、コンピュータ装置２０Ｂ向けの実行プログラム２１「ａ．ｅｘｅ」および「ｂ．ｅｘｅ」を作成する（ステップＳ１０）。また、利用者は、ジョブスクリプト１２０を作成する。次に利用者は、実行プログラム２１「ａ．ｅｘｅ」および「ｂ．ｅｘｅ」およびジョブスクリプト１２０を、ジョブ管理装置３０に投入する（ステップＳ１１）。次に、ジョブ管理装置３０では、受付部１１が投入を受け付け、ジョブ制御部１２が、投入された実行プログラム２１を各コンピュータ装置２０Ａ，２０Ｂに割り付ける（ステップＳ１２）。具体的には、ジョブ制御部１２が、「ａ．ｅｘｅ」をコンピュータ装置２０Ａに送信し、実行リソースを割り付ける。また、ジョブ制御部１２が、「ｂ．ｅｘｅ」をコンピュータ装置２０Ｂに送信し、実行リソースを割り付ける。また、ジョブ制御部１２は、チェックポイント到達判定条件の通知を中断判定部１３に指示する。中断判定部１３では、チェックポイント判定条件通知部１３１が、ジョブスクリプト１２０に記載されたチェックポイント到達判定条件をジョブ制御部１２から取得して、コンピュータ装置２０Ａ用のチェックポイント到達判定条件を含む情報を、コンピュータ装置２０Ａに送信する。また、チェックポイント判定条件通知部１３１は、コンピュータ装置２０Ｂ用のチェックポイント到達判定条件を含む情報を、コンピュータ装置２０Ｂに送信する（ステップＳ１３）。コンピュータ装置２０Ａでは、エージェント部１４Ａのチェックポイント監視部１５Ａが、チェックポイント到達判定条件を含む情報を取得する。同様に、コンピュータ装置２０Ｂでは、チェックポイント監視部１５Ｂが、チェックポイント到達判定条件を含む情報を取得する。
【００３３】
コンピュータ装置２０Ａでは、ジョブ制御部１２の指示に基づき、割り付けられたプログラム２１の実行が開始される（ステップＳ１４）。具体的には、コンピュータ装置２０Ａでは、「ａ．ｅｘｅ」が実行され、それと同時に、コンピュータ装置２０Ｂでは、「ｂ．ｅｘｅ」の実行が開始される。プログラム２１の実行が開始されると、次にチェックポイント監視部１５は、プログラム２１の実行がチェックポイントに到達したか否かの監視を開始する（ステップＳ１５）。具体的には、チェックポイント監視部１５Ａが「ａ．ｅｘｅ」がチェックポイントへ到達したかどうかを監視する。また、図示されていないが、コンピュータ装置２０Ｂにおいてもチェックポイント監視部１５Ｂが「ｂ．ｅｘｅ」がチェックポイントへ到達したかどうかを監視する。図３の例ではチェックポイントへの到達を、ｗｒｉｔｅシステムコールが１０回実行された時点と指定されているので、チェックポイント監視部１５は定期的にｓｔｒａｃｅなどのコマンドを発行してチェックポイント到達条件が満たされたかどうかを確認する。なお、ｓｔｒａｃｅとは、プログラムが呼び出すシステムコールをトレースする機能を有するＬｉｎｕｘ（登録商標）のコマンドである。また、同様の機能を有したコマンドはＵＮＩＸ（登録商標）をはじめとする他のプラットフォームでも提供されている。
【００３４】
図５の例は、コンピュータ装置２０Ａで実行している「ａ．ｅｘｅ」が最初にチェックポイントに到達した場合を示している。「ａ．ｅｘｅ」がチェックポイントに到達すると、チェックポイント監視部１５Ａは、それを検知し、中断判定部１３と通信を行い、チェックポイント到達通知情報を送信する（ステップＳ１６）。中断判定部１３では、ジョブ実行装置決定部１３２が、チェックポイントへ最も早く到達したプログラム２１が実行されているコンピュータ装置２０Ａを、プログラム２１を実行させる装置であると決定する。一方、ジョブ実行装置決定部１３２は、ジョブスクリプト１２０の内容と上記の決定に基づいて、最も早くチェックポイントに到達した実行以外の実行（今回の例ではコンピュータ装置２０Ｂの「ｂ．ｅｘｅ」）を中断することを判定する（ステップＳ１７）。また、ジョブ実行装置決定部１３２は、「ｂ．ｅｘｅ」の終了を指示する情報をジョブ制御部１２に出力する。
【００３５】
次に、ジョブ制御部１２は中断判定部１３（ジョブ実行装置決定部１３２）からの指示に基づいて、チェックポイントに最速で到達しなかったプログラム２１Ｂの実行を強制終了させる指示情報を、コンピュータ装置２０Ｂへ送信する（ステップＳ１８）。コンピュータ装置２０Ｂでは、エージェント部１４Ｂがその指示情報を取得し、そのプログラム２１Ｂ（「ｂ．ｅｘｅ」）を終了させる（ステップＳ１９）。一方、最速でチェックポイントに到達したプログラム２１Ａ（「ａ．ｅｘｅ」）には強制終了命令が発行されず、最後まで実行される。プログラム２１Ａの実行が終了すると、エージェント部１４Ａは、ジョブ制御部１２にプログラム２１Ａの実行が終了したことを示す情報を送信する（ステップＳ２０）。この情報を取得すると、ジョブ制御部１２はプログラム２１の実行が完了したことを利用者に通知する（ステップＳ２１）。利用者は、その結果を確認する（ステップＳ２２）。
【００３６】
このように本実施形態におけるジョブ管理システム１０によれば、複数のコンピュータ装置２０からなるコンピューティング環境において利用者のプログラムを最も早く実行できる環境を高い確度で自動的に選択して実行することが可能になる。また、最速のコンピュータ装置２０の選択においては、実際に各コンピュータ装置２０上で途中まで実行することで高い確度を保証する一方で、最速でチェックポイントに到達しなかったプログラムの実行に関しては強制終了させるので、コンピュータリソースの無駄使いを最小限に抑えてコンピュータシステム１００全体の利用効率を向上させることが可能である。さらに、本実施形態によるプログラム実行装置の決定方法では、過去の履歴に頼らないので、各コンピュータ装置２０の負荷状況やプログラムへの入力データの種類やサイズが変わった場合でも対応可能である。また、利用者がプログラムの特性を知らなくても利用可能でプログラムのソースコード修正が不要である。また、本実施形態の方法は、実行するプログラムや基盤ソフトウェアに手を加えることなく実施することができ利便性に優れる。
【００３７】
なお、上記の実施例では２つのコンピュータ装置２０Ａ、２０Ｂにおいて、プログラム２１の実行を行うプラットフォームを決定する例を示したが、コンピュータ装置２０が３台以上存在する場合も同様の処理で、プログラム２１を実行するプラットフォームを決定することができる。また、上記の例ではコンピュータ装置２０Ａ、２０Ｂが異なるアーキテクチャ（プロセッサ）であったが、各プラットフォームが異なるアーキテクチャである必要はなく、コンピュータ装置２０Ａ、２０Ｂが同一のアーキテクチャ、システムである場合にも適用が可能である。この場合、利用可能なノード数（障害等で利用不可能になっている実行ノードがある可能性がある）や負荷状況等の影響でコンピュータ装置２０Ａ、２０Ｂのどちらでプログラム２１を実行するか判断する必要がある場合などに有効である。本実施形態のジョブ管理システム１０は、データセンターや大学の計算機センターなど、複数のプラットフォームから構成されるコンピュータシステムに対して適用可能である。
【００３８】
なお、上述のジョブ管理システム１０に係る各装置は内部にコンピュータを有している。そして、上述したジョブ管理システム１０の各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしてもよい。また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００３９】
その他、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
【符号の説明】
【００４０】
１０・・・ジョブ管理システム
１１・・・受付部
１２・・・ジョブ制御部
１３・・・中断判定部
１３１・・・チェックポイント判定条件通知部
１３２・・・ジョブ実行装置決定部
１４・・・エージェント部
１５・・・チェックポイント監視部
２０、２０Ａ、２０Ｂ・・・コンピュータ装置
２１、２１Ａ、２１Ｂ・・・プログラム
２２、２２Ａ、２２Ｂ・・・基盤ソフトウェア
３０・・・ジョブ管理装置
１００・・・コンピュータシステム
１１０・・・ソースコード
１２０・・・ジョブスクリプト
【図１】
2017157136.tif 000003
【図２】
2017157136.tif 000004
【図３】
2017157136.tif 000005
【図４】
2017157136.tif 000006
【図５】
2017157136.tif 000007