特許第5834092号(P5834092)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧
特許5834092計算機システム、分割ジョブ処理方法及びプログラム
<>
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000002
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000003
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000004
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000005
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000006
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000007
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000008
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000009
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000010
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000011
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000012
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000013
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000014
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000015
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000016
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000017
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000018
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000019
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000020
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000021
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000022
  • 特許5834092-計算機システム、分割ジョブ処理方法及びプログラム 図000023
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5834092
(24)【登録日】2015年11月6日
(45)【発行日】2015年12月16日
(54)【発明の名称】計算機システム、分割ジョブ処理方法及びプログラム
(51)【国際特許分類】
   G06F 9/50 20060101AFI20151126BHJP
【FI】
   G06F9/46 465E
   G06F9/46 465D
【請求項の数】11
【全頁数】26
(21)【出願番号】特願2013-545656(P2013-545656)
(86)(22)【出願日】2011年11月24日
(86)【国際出願番号】JP2011006549
(87)【国際公開番号】WO2013076775
(87)【国際公開日】20130530
【審査請求日】2014年2月10日
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】100093861
【弁理士】
【氏名又は名称】大賀 眞司
(74)【代理人】
【識別番号】100129218
【弁理士】
【氏名又は名称】百本 宏之
(72)【発明者】
【氏名】今野 和弥
(72)【発明者】
【氏名】渡辺 和彦
【審査官】 井上 宏一
(56)【参考文献】
【文献】 特開平11−232232(JP,A)
【文献】 特開平 3−262074(JP,A)
【文献】 特開昭57− 757(JP,A)
【文献】 特開2005− 31771(JP,A)
【文献】 特開平 6−348663(JP,A)
【文献】 特開2001−160040(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/46 −9/54
(57)【特許請求の範囲】
【請求項1】
複数の計算機のうち、データ量が均一な複数の分割データと当該分割データを処理するプログラムを含むジョブを複数の分割ジョブに分けて管理する管理計算機と、前記複数の分割ジョブのうち前記管理計算機により割り当てられる分割ジョブを実行する複数の実行計算機とを有する計算機システムにおいて、
前記各実行計算機は、
前記各実行計算機の負荷として、負荷状況観測時間毎に、単位時間当たりに処理できる分割ジョブの数を示すスループット値と、実行する分割ジョブの数を示す実行ジョブ数をそれぞれ測定し、前記測定したスループット値が、前回の負荷状況観測時間で測定されたスループット値よりも増加傾向にある場合には、前記各実行計算機が、同時に実行可能な分割ジョブの数を示す多重度であって、今回の多重度を、前回の負荷状況観測時間で決定した多重度よりも増加させた値であって、前記スループット値が最大値となる多重度よりも低い値に決定し、前記測定したスループット値が、前回の負荷状況観測時間で測定されたスループット値よりも減少傾向にある場合には、今回の多重度を、前回の負荷状況観測時間で決定した多重度よりも減少させた値であって、前記スループット値が最大値となる多重度よりも高い値に決定し、前記決定した多重度と前記測定した実行ジョブ数との差を算出し、前記算出した差を、要求分割ジョブ数とするジョブ要求を生成し、前記生成したジョブ要求を前記管理計算機に送信し、
前記管理計算機は、
前記ジョブ要求を前記各実行計算機から受信した場合、前記受信したジョブ要求に含まれる要求分割ジョブ数に応じた数の分割ジョブを前記各実行計算機に割り当てることを特徴とする計算機システム。
【請求項2】
請求項に記載の計算機システムであって、
前記各実行計算機は、
前記負荷として、前記分割ジョブの処理を実行するCPUが、単位時間当たりに処理できる分割ジョブの数を示すスループット値と、前記CPUが、少なくとも前記分割ジョブの処理を実行する際の使用率を示すCPU使用率と、前記CPUが、前記分割ジョブの処理を実行する際にメモリを使用する使用率を示すメモリ使用率と、前記CPUが、データ入出力処理を実行する際の使用率を示すI/O使用率のうち、少なくとも一つを測定することを特徴とする計算機システム。
【請求項3】
請求項に記載の計算機システムであって、
前記各実行計算機は、
前記負荷状況観測時間毎に測定したスループット値のうち最新のスループット値を前記ジョブ要求に付加し、
前記管理計算機は、
前記ジョブ要求に付加された最新のスループット値が、高い順に前記分割ジョブの割当先となる実行計算機を決定することを特徴とする計算機システム。
【請求項4】
請求項1に記載の計算機システムであって、
前記各実行計算機は、
前記管理計算機から割り当てられた分割ジョブの実行を終了した場合、前記管理計算機に前記分割ジョブの終了通知を送信し、
前記管理計算機は、
前記分割ジョブの割当先となる実行計算機で、前記分割ジョブの実行が終了する終了予定時間と、前記いずれかの実行計算機に対する前記分割ジョブの割当ての有無を示すスケジュール状態を前記分割ジョブに対応づけて管理し、
前記各実行計算機から、前記終了予定時間までに、前記分割ジョブの終了通知を受信したことを条件に、前記スケジュール状態が、未割当を示す分割ジョブを前記分割ジョブの終了通知を送信した実行計算機に割り当て、
前記いずれかの実行計算機の中に、前記終了予定時間までに、前記分割ジョブの終了通知を送信できない実行計算機が存在する場合、当該実行計算機に割り当てるべき分割ジョブを、前記終了予定時間までに、前記分割ジョブの終了通知を送信した実行計算機に割り当てることを特徴とする計算機システム。
【請求項5】
請求項に記載の計算機システムであって、
前記各実行計算機は、
前記管理計算機から割り当てられた分割ジョブを実行する過程で、前記測定した実行ジョブ数の推移を、前記分割ジョブを実行する実行時間に対応づけて監視画面上に表示すると共に、前記算出した要求分割ジョブ数と、前記測定したスループット値を前記各実行計算機に対応づけて前記監視画面上に表示することを特徴とする計算機システム。
【請求項6】
複数の計算機のうち、データ量が均一な複数の分割データと当該分割データを処理するプログラムを含むジョブを複数の分割ジョブに分けて管理する管理計算機と、前記複数の分割ジョブのうち前記管理計算機により割り当てられる分割ジョブを実行する複数の計算機とを有する計算機システムにおける分割ジョブ処理方法において、
前記各実行計算機が、前記各実行計算機の負荷として、負荷状況観測時間毎に、単位時間当たりに処理できる分割ジョブの数を示すスループット値と、実行する分割ジョブの数を示す実行ジョブ数をそれぞれ測定する測定ステップと、
前記各実行計算機が、前記測定したスループット値が、前回の負荷状況観測時間で測定されたスループット値よりも増加傾向にある場合には、前記各実行計算機が、同時に実行可能な分割ジョブの数を示す多重度であって、今回の多重度を、前回の負荷状況観測時間で決定した多重度よりも増加させた値であって、前記スループット値が最大値となる多重度よりも低い値に決定し、前記測定したスループット値が、前回の負荷状況観測時間で測定されたスループット値よりも減少傾向にある場合には、今回の多重度を、前回の負荷状況観測時間で決定した多重度よりも減少させた値であって、前記スループット値が最大値となる多重度よりも高い値に決定する決定ステップと、
前記各実行計算機が、前記決定した多重度と前記測定した実行ジョブ数との差を算出し、前記算出した差を、要求分割ジョブ数とするジョブ要求を生成する生成ステップと、
前記各実行計算機が、前記生成したジョブ要求を前記管理計算機に送信する送信ステップと、
前記管理計算機が、前記ジョブ要求を前記各実行計算機から受信した場合、前記受信したジョブ要求に含まれる要求分割ジョブ数に応じた数の分割ジョブを前記各実行計算機に割り当てる割当てステップと、を含むことを特徴とする分割ジョブ処理方法。
【請求項7】
請求項に記載の分割ジョブ処理方法であって、
前記各実行計算機は、
前記生成ステップでは、前記負荷として、前記分割ジョブの処理を実行するCPUが、単位時間当たりに処理できる分割ジョブの数を示すスループット値と、前記CPUが、少なくとも前記分割ジョブの処理を実行する際の使用率を示すCPU使用率と、前記CPUが、前記分割ジョブの処理を実行する際にメモリを使用する使用率を示すメモリ使用率と、前記CPUが、データ入出力処理を実行する際の使用率を示すI/O使用率のうち、少なくとも一つを測定することを特徴とする分割ジョブ処理方法。
【請求項8】
請求項に記載の分割ジョブ処理方法であって、
前記各実行計算機は、
前記生成ステップでは、前記負荷状況観測時間毎に測定したスループット値のうち最新のスループット値を前記ジョブ要求に付加し、
前記管理計算機は、
前記割当てステップでは、前記ジョブ要求に付加された最新のスループット値が、高い順に前記分割ジョブの割当先となる実行計算機を決定することを特徴とする分割ジョブ処理方法。
【請求項9】
請求項に記載の分割ジョブ処理方法であって、
前記各実行計算機は、
前記送信ステップでは、前記管理計算機から割り当てられた分割ジョブの実行を終了した場合、前記管理計算機に前記分割ジョブの終了通知を送信し、
前記管理計算機は、
前記割当てステップでは、前記分割ジョブの割当先となる実行計算機で、前記分割ジョブの実行が終了する終了予定時間と、前記いずれかの実行計算機に対する前記分割ジョブの割当ての有無を示すスケジュール状態を前記分割ジョブに対応づけて管理し、
前記各実行計算機から、前記終了予定時間までに、前記分割ジョブの終了通知を受信したことを条件に、前記スケジュール状態が、未割当を示す分割ジョブを前記分割ジョブの終了通知を送信した実行計算機に割り当て、
前記いずれかの実行計算機の中に、前記終了予定時間までに、前記分割ジョブの終了通知を送信できない実行計算機が存在する場合、当該実行計算機に割り当てるべき分割ジョブを、前記終了予定時間までに、前記分割ジョブの終了通知を送信した実行計算機に割り当てることを特徴とする分割ジョブ処理方法。
【請求項10】
請求項に記載の分割ジョブ処理方法であって、
前記各実行計算機が、前記管理計算機から割り当てられた分割ジョブを実行する過程で、前記測定した実行ジョブ数の推移を、前記分割ジョブを実行する実行時間に対応づけて監視画面上に表示すると共に、前記算出した要求分割ジョブ数と、前記測定したスループット値を前記各実行計算機に対応づけて前記監視画面上に表示するステップを含むことを特徴とする分割ジョブ処理方法。
【請求項11】
データ量が均一な複数の分割データと当該分割データを処理するプログラムを含むジョブを複数の分割ジョブに分けて管理する管理計算機から割り当てられる分割ジョブを実行する複数の実行計算機に、
前記各実行計算機の負荷として、負荷状況観測時間毎に、単位時間当たりに処理できる分割ジョブの数を示すスループット値と、実行する分割ジョブの数を示す実行ジョブ数をそれぞれ測定する機能と、
前記測定したスループット値が、前回の負荷状況観測時間で測定されたスループット値よりも増加傾向にある場合には、前記各実行計算機が、同時に実行可能な分割ジョブの数を示す多重度であって、今回の多重度を、前回の負荷状況観測時間で決定した多重度よりも増加させた値であって、前記スループット値が最大値となる多重度よりも低い値に決定し、前記測定したスループット値が、前回の負荷状況観測時間で測定されたスループット値よりも減少傾向にある場合には、今回の多重度を、前回の負荷状況観測時間で決定した多重度よりも減少させた値であって、前記スループット値が最大値となる多重度よりも高い値に決定する機能と、
前記決定した多重度と前記測定した実行ジョブ数との差を算出し、前記算出した差を、要求分割ジョブ数とするジョブ要求を生成する機能と、
前記生成したジョブ要求を前記管理計算機に送信する機能と、
前記ジョブ要求に応じて前記管理計算機から割り当てられた分割ジョブを実行する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データを処理するプログラムを含むジョブを複数の分割ジョブに分けて管理する計算機システム、分割ジョブ処理方法及びプログラムに関する。
【背景技術】
【0002】
金融機関などにおいて、日時処理・月次処理などを行う場合、大量のデータをオフラインでバッチ処理することがある。この際、コンピュータ機器のクラスタ上で、大量のデータを分散して並列処理する方法が提案されている(特許文献1参照)。
【0003】
特許文献1には、マスタプロセスが入力データを受信した場合、受信した入力データをより細かい単位に分割し、分割されたデータを複数のワーカープロセスに配置し、各ワーカープロセスが、より細かい単位に分割されたデータを処理し、処理結果をマスタプロセスに返却し、マスタプロセスが各ワーカープロセスの処理結果を集約することが記載されている。
【0004】
特許文献1に記載された方法によれば、複数のサーバやストレージなどの障害で、処理ができないワーカープロセスが発生した場合でも、障害の生じたワーカープロセスの代わりに、他のワーカープロセスに処理を再設定させることができる。
【0005】
また、データを処理するに際して、複数の分散処理装置(実行計算機)にデータを分散させて処理させ、各分散処理装置の処理状況を1台の分散処理制御装置(管理計算機)で管理する方法が提案されている(特許文献2参照)。特許文献2には、管理計算機が、各実行計算機の負荷を監視し、負荷の小さい実行計算機に対して優先的にジョブを分散させることが記載されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許7,650,331号
【特許文献2】国際公開WO2004/086246号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1では、ジョブのスケジュールを1つのマスタプロセスが行っているため、多くのジョブを1度に各ワーカープロセスに分散させる場合には、マスタプロセスの負荷が非常に大きくなる。また、特許文献2では、ジョブの実行状況や各ジョブの負荷を管理計算機が行っているため、管理計算機が多くのジョブを1度に各実行計算機に分散させる場合には、管理計算機が、各実行計算機の状況を把握しなければならず、管理計算機の負荷が非常に大きくなる。
【0008】
本発明は、上述の課題に鑑みて為されたものであり、その目的の一つは、複数の実行計算機を管理する管理計算機の負荷を低減することができる計算機システムと分割ジョブ処理方法及びそのプログラムを提供することにある。
【課題を解決するための手段】
【0009】
前記目的を達成するために、本発明は、複数の計算機のうち、データと当該データを処理するプログラムを含むジョブを複数の分割ジョブに分けて管理する計算機を管理計算機として用い、前記複数の分割ジョブのうち前記管理計算機により割り当てられる分割ジョブを実行する複数の実行計算機とを有する計算機システムにおいて、前記各実行計算機は、前記各実行計算機の負荷を基に前記分割ジョブの数の情報を含むジョブ要求を生成し、前記生成したジョブ要求を前記管理計算機に送信し、前記管理計算機は、前記ジョブ要求を前記各実行計算機から受信した場合、前記受信したジョブ要求に応じた分割ジョブを前記各実行計算機に割り当てることを特徴とする。
【発明の効果】
【0010】
本発明によれば、複数の実行計算機を管理する管理計算機の負荷を低減することができる。
【図面の簡単な説明】
【0011】
図1】本発明を適用した一実施形態である計算機システムの全体構成を説明するための構成図である。
図2】管理計算機で管理されるジョブ情報テーブルの構成図である。
図3】管理計算機で管理される実行状況テーブルの構成図である。
図4】管理計算機で管理される要求応答テーブルの構成図である。
図5】実行計算機で管理される実行状況テーブルの構成図である。
図6】実行計算機で管理される計算機情報テーブルの構成図である。
図7】実行計算機で管理される分割ジョブ要求テーブルの構成図である。
図8】実行計算機全体の処理を説明するためのフローチャートである。
図9】ジョブ要求部の処理を説明するためのフローチャートである。
図10】多重度測定部の処理を説明するためのフローチャートである。
図11】スループット値と多重度との関係を説明するための線図である。
図12】スループット値と多重度との関係を説明するための線図である。
図13】負荷状況測定部の処理を説明するためのフローチャートである。
図14】ジョブ実行部の処理を説明するためのフローチャートである。
図15】管理計算機の処理を説明するためのフローチャートである。
図16】ジョブ入力部の処理を説明するためのフローチャートである。
図17】データ分割部の処理を説明するためのフローチャートである。
図18】ジョブ入力部とデータ分割部の処理を説明するための図である。
図19】ジョブ監視部の処理を説明するためのフローチャートである。
図20】ジョブスケジュール部の処理を説明するためのフローチャートである。
図21】各実行計算機における分割ジョブの分散方法を説明するための図である。
図22】各実行計算機における同時実行ジョブ数の監視画面の表示例を示す図である。
【発明を実施するための形態】
【0012】
本実施形態は、複数の計算機のうち、ジョブを複数の分割ジョブに分けて管理する管理計算機と、この管理計算機により割り当てられる分割ジョブを実行する2以上の実行計算機を有するシステムであって、各実行計算機は、自計算機の負荷を測定し、測定した負荷を基に実行可能な分割ジョブの数の情報を含むジョブ要求を生成し、生成したジョブ要求を管理計算機に送信し、管理計算機は、受信したジョブ要求で指定された数の分割ジョブを、要求先の実行計算機に割り当てるものである。
【0013】
以下、本発明の一実施形態を図面に基づいて説明する。図1は、本発明を適用した計算機システムの一例を示す構成図である。
【0014】
図1において、計算機システム10は、管理計算機12と、複数の実行計算機14、16、18から構成され、管理計算機10と、各実行計算機14、16、18は、それぞれネットワーク20を介して互いに接続される。
【0015】
管理計算機12は、例えば、CPU(Central Processing Unit)、記憶装置、メモリ、入出力装置(いずれも図示せず)等を有する計算機であって、記憶装置には、各種テーブル等が格納され、メモリには、各種プログラム等が格納される。
【0016】
例えば、複数の記憶デバイスで構成される記憶装置には、ジョブ情報テーブル30が格納され、メモリには、ジョブ入力部32と、データ分割部34と、ジョブ監視部36と、ジョブスケジュール部38が格納される。
【0017】
ジョブ入力部32は、CPUが、メモリに格納されたプログラム、例えば、ジョブ入力プログラムを起動することによって構成される。同様に、データ分割部34、ジョブ監視部36、ジョブスケジュール部38は、CPUが、メモリに格納されたプログラム、例えば、データ分割プログラム、ジョブ監視プログラム、ジョブスケジュールプログラムをそれぞれ起動することによって構成される。
【0018】
各実行マシン14、16、18は、CPU、記憶装置、メモリ、入出力装置(いずれも図示せず)等を有する計算機であって、記憶装置には、各種テーブル等が格納され、メモリには、各種プログラム等が格納される。
【0019】
例えば、複数の記憶デバイスで構成される記憶装置には、実行状況テーブル40と、計算機情報テーブル42が格納され、メモリには、ジョブ要求部44と、多重度測定部46と、負荷状況測定部48と、ジョブ実行部50が格納される。
【0020】
ジョブ要求部44は、CPUが、メモリに格納されたプログラム、例えば、ジョブ要求プログラムを起動することによって構成される。同様に、多重度測定部46と、負荷状況測定部48と、ジョブ実行部50は、CPUが、多重度測定プログラム、負荷状況測定プログラム、ジョブ実行プログラムをそれぞれ実行することによって構成される。
【0021】
管理計算機12は、データと、このデータを処理するプログラムを含むジョブ、例えば、グリッドジョブを複数の分割ジョブに分けて管理する。この際、管理計算機12は、各種テーブルを用いて分割ジョブを管理する。
【0022】
次に、図2に、ジョブ情報テーブル30の構成図を示す。
【0023】
図2において、ジョブ情報テーブル30は、グリッドジョブを複数の分割ジョブに分けて管理するためのテーブルであって、グリッドジョブ名フィールド30Aと、分割数フィールド30Bと、分割ジョブ名フィールド30Cと、プログラム名フィールド30Dと、分割データフィールド30Eと、終了予定時間フィールド30Fと、スケジュール状態フィールド30Gから構成される。
【0024】
グリッドジョブ名は、グリッドジョブを特定する名称である。グリッドジョブ名フィールド30Aのエントリには、グリッド名として、例えば、「グリッドジョブA」が格納される。
【0025】
分割数は、グリッドジョブを複数の分割ジョブに分割する際に用いる分割数である。分割数フィールド30Bのエントリには、例えば、グリッドジョブを100個の分割ジョブに分割する場合、「100」が格納される。
【0026】
分割ジョブ名は、各分割ジョブを特定する名称に関する情報である。分割ジョブ名フィールド30Cのエントリには、例えば、分割ジョブの名称として、「ジョブ1」が格納される。
【0027】
プログラム名は、各分割ジョブに用いられるプログラムの名称を特定する情報である。プログラム名フィールド30Dのエントリには、各分割ジョブに用いられるプログラムの名称として、例えば、「プログラムA」が格納される。
【0028】
分割データは、各分割ジョブに用いられる分割データを特定する名称に関する情報である。分割データフィールド30Eのエントリには、各分割ジョブに用いられる分割データの名前が、プログラムに対応付けて格納される。例えば、ジョブ1に用いられる分割データが「データ1」である場合には、ジョブ1に用いられる分割データとして、「データ1」が、分割データフィールド30Eのエントリに格納される。
【0029】
ここで、分割ジョブとは、分割データと、分割データを処理するためのプログラムを含むジョブを意味する。また、各分割ジョブに含まれる分割データのデータ量は均一に設定されている。
【0030】
終了予定時間は、各分割ジョブが実行計算機で実行される際に、その終了予定時間を示す情報である。終了予定時間フィールド30Fのエントリには、各分割ジョブが実行計算機で実行される際の終了予定時間が格納される。
【0031】
スケジュール状態は、各分割ジョブのスケジュール状態を示す情報である。スケジュール状態フィールド30Eのエントリには、各分割ジョブが、実行計算機によって、その実行が終了した場合には、「TRUE」が格納され、各分割ジョブが、実行計算機で実行中である場合には、「RUN」が格納される。また、各分割ジョブが、まだ実行計算機で実行されない状態、即ち、未スケジュール状態である場合には、スケジュール状態フィールド30Eのエントリには、「FALSE」が格納される。
【0032】
次に、図3に、実行状況テーブル60の構成図を示す。
【0033】
図3において、実行状況テーブル60は、ジョブ監視部36が、各実行計算機14、16、18から取得した情報を基に各実行計算機14、16、18の実行状況を管理するためのテーブルであって、実行計算機名フィールド60Aと、要求分割ジョブ数フィールド60Bと、スループット値フィールド60Cと、実行ジョブ数フィールド60Dと、予定時間フィールド60Eから構成される。
【0034】
実行計算機名は、実行計算機14、16、18を特定する名称である。実行計算機名フィールド60Aのエントリには、例えば、実行計算機14の名称を「実行計算機A」とした場合、第1のエントリには、「実行計算機A」が格納される。また、実行計算機16の名称を「実行計算機B」とした場合、実行計算機名フィールド60Aの第2のエントリには、「実行計算機B」が格納される。同様に、実行計算機18の名称を「実行計算機C」とした場合、実行計算機名フィールド60Aの第3のエントリには、「実行計算機C」が格納される。
【0035】
要求分割ジョブ数は、各実行計算機14、16、18が要求した分割ジョブの数を示す情報である。要求分割ジョブ数フィールド60Bのエントリには、各実行計算機14、16、18が要求した分割ジョブの数が格納される。例えば、実行計算機14が、分割ジョブとして3個の分割ジョブを要求した場合、要求分割ジョブ数フィールド60Bの第1のエントリには、「3」が格納される。
【0036】
スループット値は、各実行計算機14、16、18が、単位時間(sec)に処理できる分割ジョブの数を示す情報である。
【0037】
スループット値フィールド60Cのエントリには、各実行計算機14、16、18が、単位時間(sec)に処理できる実行ジョブの数が格納される。例えば、実行計算機14が、単位時間(sec)に6個の分割ジョブを処理できる場合には、スループット値フィールド60Cの第1のエントリには、「6」が格納される。
【0038】
実行ジョブ数は、各実行計算機14、16、18が、実行中の分割ジョブの数を示す情報である。
【0039】
実行ジョブ数フィールド60Dのエントリには、各実行計算機14、16、18が、実行中の分割ジョブの数が格納される。例えば、実行計算機14が、3つの分割ジョブを処理する場合には、実行ジョブ数フィールド60Dの第1のエントリには、「3」が格納される。
【0040】
予定時間(sec)は、各実行計算機14、16、18が、1つの分割ジョブを実行するのに要する予想時間(sec)を示す情報である。
【0041】
予定時間フィールド60Eのエントリには、各実行計算機14、16、18が、1つの分割ジョブを実行するのに要する予想時間(sec)が格納される。例えば、実行計算機14が、1つの分割ジョブを実行するに要する時間が、5秒であるとすると、予定時間フィールド60Eの第1のエントリには、「5」が格納される。
【0042】
次に、図4に、要求応答テーブル62の構成図を示す。
【0043】
図4において、要求応答テーブル62は、ジョブスケジュール部38が、各実行計算機14、16、18に分割ジョブを割り当てる際に用いるテーブルであって、分散する実行計算機名フィールド62Aと、プログラム名62Bと、分割データフィールド62Cから構成される。
【0044】
分散する実行名計算機名は、ジョブスケジュール部38が、分割ジョブを実行計算機に割り当てる際に、その割り当て先を特定するための実行計算機の名称に関する情報である。
【0045】
分散実行計算機名フィールド62Aのエントリには、ジョブスケジュール部38が、各分割ジョブを実行計算機に割り当てる際に、その割り当て先を特定する実行計算機の名称が格納される。例えば、分割ジョブの割り当て先が、実行計算機14である場合、分散する実行計算機名フィールド62Aの第1のエントリには、「実行計算機A」が格納される。
【0046】
プログラム名は、分割ジョブに用いるプログラムの名称に関する情報である。プログラム名フィールド62Bのエントリには、分割ジョブが割り当てられる実行計算機で用いるプログラムの名称を特定する情報が格納される。例えば、実行計算機14でプログラムとして、「プログラムA」を用いる場合は、プログラム名フィールド62Bの第1のエントリには、「プログラムA」が格納される。
【0047】
分割データは、各分割ジョブに用いられる分割データを特定する名称である。
【0048】
分割データフィールド62Cのエントリには、各分割ジョブで用いられる分割データが、プログラムに対応して格納される。例えば、実行計算機14で用いられる分割データが、「データ3、データ4、データ5」である場合には、分割データフィールド62Cの第1のエントリには、「データ3、データ4、データ5」が格納される。
【0049】
次に、図5に、実行状況テーブル40の構成図を示す。
【0050】
図5において、実行状況テーブル40は、各実行計算機14、16、18が、各分割ジョブを実行する際に、その実行状況を管理するためのテーブルであって、ジョブIDフィールド40Aと、分割ジョブ名フィールド40Bと、ジョブ終了時間フィールド40Cから構成される。なお、実行状況テーブル40に、各実行計算機14、16、18が、各分割ジョブの実行を開始する時間を特定するジョブ開始時間を付加することもできる。
【0051】
ジョブIDは、各分割ジョブを一意に識別するための識別子である。
【0052】
ジョブIDフィールド40Aのエントリには、各分割ジョブを識別するための識別子が格納される。ジョブIDフィールド40Aのエントリには、例えば、分割ジョブの識別子が、「1」である場合には、「1」の情報が格納される。
【0053】
分割ジョブ名は、各分割ジョブを特定する名称に関する情報である。
【0054】
分割ジョブ名フィールド40Bのエントリには、各分割ジョブを特定する名称が格納される。例えば、分割ジョブの名称が、「ジョブ2」である場合には、「ジョブ2」が、ジョブ名フィールド40Bのエントリに格納される。
【0055】
ジョブ終了時間は、各実行計算機が、各分割ジョブを実行した際に、その終了時間を示す情報である。ジョブ終了時間フィールド40Cのエントリには、各実行計算機が、各分割ジョブを実行した際の終了時刻が、年月日とともに格納される。
【0056】
次に、図6に、計算機情報テーブル42の構成図を示す。
【0057】
図6において、計算機情報テーブル42は、各実行計算機14、16、18が、各分割ジョブを実行する際に用いる情報を管理するためのテーブルであって、多重度フィールド42Aと、実行ジョブ数フィールド42Bと、負荷状況観測時間フィールド42Cと、前回のスループット値フィールド42Dと、最新のスループット値フィールド42Eから構成される。
【0058】
多重度は、各実行計算機14、16、18が、各分割ジョブを実行する際に、それぞれ同時に実行可能な分割ジョブの数を示す情報である。
【0059】
各多重度フィールド42Aのエントリには、各実行計算機14、16、18が、それぞれ同時に実行可能な分割ジョブ数の数が格納される。例えば、実行計算機14が、同時に9個の分割ジョブを実行可能である場合には、多重度フィールド42Aのエントリには、「9」が格納される。
【0060】
実行ジョブ数は、各実行計算機14、16、18が、実行中の分割ジョブの数を示す情報である。
【0061】
実行ジョブ数フィールド42Bのエントリには、各実行計算機14、16、18が、実行中の分割ジョブの数が格納される。例えば、実行計算機14が、6個の分割ジョブを実行中である場合には、実行ジョブ数フィールド42Bのエントリには、「6」が格納される。
【0062】
負荷状況観測時間T(sec)は、負荷状況測定部48が、負荷の状況を観測する時間(sec)である。例えば、負荷状況測定部48が、1秒毎に負荷状況を観測する場合には、負荷状況観測時間フィールド42Cのエントリには、「1」が格納される。
【0063】
前回のスループット値は、各実行計算機14、16、18が、前回の負荷状況観測時間T内の処理で、単位時間(sec)に実行した分割ジョブの数を示す情報である。前回のスループット値フィールド42Dのエントリには、各実行計算機14、16、18が、前回の処理で、単位時間(sec)に実行した分割ジョブの数を示す情報が、スループット値として格納される。
【0064】
最新のスループット値は、各実行計算機14、16、18が、単位時間(sec)に処理した分割ジョブの数を示す情報のうち、最新の情報である。最新のスループット値フィールド42Eのエントリには、各実行計算機14、16、18が、単位時間(sec)に処理した分割ジョブの数を示す情報のうち、最新の情報が、スループット値として格納される。
【0065】
次に、図7に、分割ジョブ要求テーブル64の構成図を示す。
【0066】
図7において、分割ジョブ要求テーブル64は、各実行計算機14、16、18が、実行可能な分割ジョブを管理計算機12に要求するための情報を管理するテーブルであって、実行計算機名フィールド64Aと、要求分割ジョブ数フィールド64Bと、スループット値フィールド64Cと、実行ジョブ数フィールド64Dと、予定時間フィールド64Eから構成される。
【0067】
実行計算機名は、実行計算機14、16、18を特定する名称である。実行計算機名フィールド64Aのエントリには、例えば、実行計算機14の名称を「実行計算機A」とした場合、第1のエントリには、「実行計算機A」が格納される。
【0068】
要求分割ジョブ数は、各実行計算機14、16、18が要求する分割ジョブの数を示す情報である。要求分割ジョブ数フィールド64Bのエントリには、各実行計算機14、16、18が要求する分割ジョブの数が格納される。例えば、実行計算機14が、分割ジョブとして3個の分割ジョブを要求する場合、要求分割ジョブ数フィールド64Bの第1のエントリには、「3」が格納される。
【0069】
スループット値は、各実行計算機14、16、18が、単位時間(sec)に処理できる分割ジョブの数を示す情報である。
【0070】
スループット値フィールド64のエントリには、各実行計算機14、16、18が、単位時間(sec)に処理できる実行ジョブの数が格納される。例えば、実行計算機14が、単位時間(sec)に6個の分割ジョブを処理できる場合には、スループット値フィールド64Cの第1のエントリには、「6」が格納される。
【0071】
実行ジョブ数は、各実行計算機14、16、18が、実行中の分割ジョブの数を示す情報である。
【0072】
実行ジョブ数フィールド64のエントリには、各実行計算機14、16、18が、実行中(若しくは実行した)分割ジョブの数が格納される。例えば、実行計算機14が、2の分割ジョブを処理中である場合には、実行ジョブ数フィールド64Dの第1のエントリには、「3」が格納される。
【0073】
予定時間(sec)は、各実行計算機14、16、18が、分割ジョブを実行するのに要する予想時間(sec)を示す情報である。
【0074】
予定時間フィールド64Eのエントリには、各実行計算機14、16、18が、分割ジョブを実行するのに要する予想時間(sec)が格納される。例えば、実行計算機14が、分割ジョブを実行するに要する時間が、5秒であるとすると、予定時間フィールド64Eの第1のエントリには、「5」が格納される。
【0075】
(実行計算機の処理)
各実行計算機14、16、18では、負荷状況測定部48が、負荷状況観測時間Tが来る毎に、スループット値を測定し、その測定結果の履歴を基に、多重度測定部46において、最も多くの分割ジョブを処理できる多重度を決定する。ジョブ要求部44は、多重度測定部46で決定された多重度と、実行されている分割ジョブ数との差を算出し、算出した差を、要求分割ジョブ数として分割ジョブ要求テーブル64に記録し、記録された分割ジョブ要求テーブル64の情報を管理計算機12のジョブスケジュール部38に送信する。ジョブ実行部50は、ジョブスケジュール部38から送信された分割ジョブを実行する。以下、具体的な内容について説明する。
【0076】
次に、各実行計算機の処理を図8のフローチャートに従って説明する。
【0077】
まず、実行計算機14、16、18は、ジョブ要求部44が、分割ジョブ要求テーブル64に記録された情報を基に分割ジョブを管理計算機12に要求する(S11)。
【0078】
この後、各実行計算機14、16、18は、管理計算機12から分割ジョブを受信したか否かを判定する(S12)。
【0079】
ステップS12で肯定の判定結果を得た場合、各実行計算機14、16、18は、ジョブ実行部50が、管理計算機12から送信された分割ジョブを実行し(S13)、計算機情報テーブル42の実行ジョブ数を+1とし(S14)、ステップS15の処理に移行する。
【0080】
各実行計算機14、16、18は、ステップS12で否定の判定結果を得た場合、または、ステップS14の処理が終了した後、管理計算機12から受信した分割ジョブの実行を終了したか否かを判定する(S15)。
【0081】
ステップS15で肯定の判定結果を得た場合、各実行計算機14、16、18は、分割ジョブの実行結果として、ジョブ終了時間を実行状況テーブル40に登録し(S16)、その後、計算機情報テーブル42の実行ジョブ数を−1とし(S17)、次に、分割ジョブの終了を管理計算機12に送信し(S18)、ステップS11の処理に戻る。
【0082】
一方、ステップS15で否定の判定結果を得た場合、分割ジョブが終了していないので、各実行計算機14、16、18は、ステップS11の処理に戻る。
【0083】
各実行計算機14、16、18は、ステップS11〜S18の処理を繰り返すことで、最も多くの分割ジョブを処理できる多重度で、分割ジョブを実行することができる。
【0084】
次に、各実行計算機におけるジョブ要求部の処理を図9のフローチャートに従って説明する。
【0085】
この処理は、図8のステップS11の具体的な内容であって、CPUが、ジョブ要求部44を起動することによって開始される。
【0086】
ジョブ要求部44は、計算機情報テーブル42を参照し、多重度と、実行ジョブ数と、最新のスループット値を計算機情報テーブル42から取得する(S21)。
【0087】
次に、ジョブ要求部44は、(多重度−実行ジョブ数)の値を、各実行計算機に対応づけて分割ジョブ要求テーブル64の分割ジョブ数に設定する(S22)。例えば、実行計算機14について、多重度が、「9」であって、実行ジョブ数が、「6」である場合、実行計算機14に対応した分割ジョブ要求テーブル64の要求分割ジョブ数に、「3」を設定する。
【0088】
次に、ジョブ要求部44は、分割ジョブ要求テーブル64の予定時間に、前回の実行時間の平均(平均時間)を設定する(S23)。例えば、前回の処理で、複数の分割ジョブを処理した際に、実行時間の平均時間が5秒である場合には、分割ジョブ要求テーブル64の予定時間に、「5」を設定する。
【0089】
次に、ジョブ要求部44は、計算機情報テーブル42を参照し、最新のスループット値を、分割ジョブ要求テーブル64のスループット値に設定する(S24)。
【0090】
次に、ジョブ要求部44は、分割ジョブ要求テーブル64に登録された情報をジョブ要求として生成し、生成したジョブ要求を一括して管理計算機12のジョブスケジュール部38に送信し(S25)、このルーチンでの処理を終了する。
【0091】
次に、各実行計算機における多重度測定部の処理を図10のフローチャートに従って説明する。
【0092】
この処理は、CPUが、多重度測定部46を起動することによって開始される。
【0093】
多重度測定部46は、タイマーを起動し、その起動時間を実行時間として測定し(S31)、負荷状況観測時間Tが、(現在の時間−前回負荷状況を観測した時間)よりも大きいか否かを判定する(S32)。
【0094】
多重度測定部46は、ステップS32で否定の判定結果を得た場合、即ち、タイマーの起動時間が、負荷状況観測時間Tを超えていない場合には、ステップS31の処理に戻り、ステップS31〜S32の処理を繰り返し、ステップS32で肯定の判定結果を得た場合には、即ち、タイマーの起動時間が、負荷状況観測時間Tを超えた場合には、ステップS33の処理に移行する。
【0095】
ステップS33では、負荷状況測定部48が、実行計算機の負荷状況を測定する。
【0096】
この後、多重度測定部46は、負荷状況測定部48の測定結果を基に、前回よりもスループットが増加した場合、多重度を増加させる処理を実行し、前回よりもスループットが減少した場合には、多重度を減少させる処理を実行する(S34)。
【0097】
例えば、多重度測定部46は、負荷状況観測時間T毎に、負荷状況測定部48で測定したスループット値が、前回の負荷状況観測時間Tで測定されたスループット値よりも増加傾向にある場合には、今回の多重度を、前回の負荷状況観測時間Tで決定した多重度よりも増加させた値に決定し、負荷状況測定部48で測定したスループット値が、前回の負荷状況観測時間Tで測定されたスループット値よりも減少傾向にある場合には、今回の多重度を、前回の負荷状況観測時間Tで決定した多重度よりも減少させた値に決定する。
【0098】
次に、多重度測定部46は、ステップS34で決定された多重度を計算機情報テーブル42に登録し(S35)、このルーチンでの処理を終了する。
【0099】
なお、多重度測定部46は、分割ジョブ等を実行するCPUが、単一のコア又は複数のコアで構成される場合でも、単一のコア又は複数のコアが、例えば、負荷状況観測時間T内にそれぞれ同時に実行可能な分割ジョブの数を測定することになる。
【0100】
また、各分割データが均等なデータ量である場合、多重度の代わりに、データ量を分割ジョブの数を示すパラメータとして用いることができる。
【0101】
次に、図11に、スループット値と多重度との関係を説明するための線図を示す。
【0102】
図11において、各実行計算機で多重度を決定する場合、スループット値の変化を基に多重度が決定される。
【0103】
例えば、時間0〜t6の間に、スループット値が、一定時間(sec)毎に、a、b、c、d、e、f、gと変化した場合、時間0と時間t1のスループット値を比較すると、スループット値は、a−bであって負となるので、時間t1と時間t2間における多重度を、時間0と時間t1における多重度Aよりも低い多重度Bに減少させる。
【0104】
一方、時間t1と時間t2のスループット値を比較すると、スループット値は、bからcに上昇し、時間t1と時間t2間のスループット値は、c−bであって、正となるので、時間t2と時間t3における多重度を、多重度Bよりも高い多重度Cに増加させる。
【0105】
即ち、一定時間(sec)毎にスループット値を測定し、測定したスループット値が減少傾向にあるときには、多重度を減少させ、測定したスループット値が増加傾向にある場合には、多重度を増加させることとしている。
【0106】
スループット値が減少傾向にある場合には、各実行計算機の処理能力が低下しているので、多重度を減少させ、逆に、スループット値が増加傾向にある場合には、各実行計算機の処理能力に余裕があるので、多重度を増加させることとしている。
【0107】
次に、図12に、スループット最大値と多重度との関係を説明するための線図を示す。
【0108】
図12において、多重度X1を増加させた場合、多重度がX2になると、スループット値が、スループット最大値Y1で飽和し、多重度をX2より増加させても、スループット値は、スループット最大値Y1よりも漸次低下する。
【0109】
このため、スループット値を基に多重度を決定する場合、スループット値が増加傾向にある場合には、多重度X2より低い多重度を選択し、スループット値が減少傾向にある場合には、多重度X2より高い多重度を選択することが望ましい。
【0110】
次に、各実行計算機における負荷状況測定部の処理を図13のフローチャートに従って説明する。
【0111】
この処理は、CPUが、負荷状況測定部48を起動することによって開始される。
【0112】
負荷状況測定部48は、実行状況テーブル40を参照し、実行状況テーブル40から、T(負荷状況観測時間)時間の間に終了した分割ジョブの分割ジョブ数を取得する(S41)。即ち、負荷状況測定部48は、T時間の間に、ジョブ終了時間が登録されている分割ジョブ名の数を基に分割ジョブ数を取得する。
【0113】
次に、負荷状況測定部48は、T時間の間に終了した分割ジョブの分割ジョブ数を基にスループット値を算出し(S42)、算出したスループット値を最新のスループット値として、計算機情報テーブル42に登録し(S43)、このルーチンでの処理を終了する。この際、負荷状況測定部48は、T時間の間に終了した分割ジョブの分割ジョブ数を、実行ジョブ数として計算機情報テーブル42に登録する。
【0114】
なお、各実行計算機14、16、18における負荷状況測定部48は、各実行計算機14、16、18の負荷として、分割ジョブの処理等を実行するCPUが、少なくとも分割ジョブの処理を実行する際の使用率を示すCPU使用率と、分割ジョブの処理等を実行するCPUが、分割ジョブの処理を実行する際にメモリを使用する使用率を示すメモリ使用率と、分割ジョブの処理等を実行するCPUが、データ入出力処理を実行する際の使用率を示すI/O使用率をそれぞれ測定することもできる。
【0115】
次に、各実行計算機におけるジョブ実行部の処理を図14のフローチャートに従って説明する。
【0116】
この処理は、CPUが、ジョブ実行部44を起動することによって開始される。
【0117】
ジョブ実行部44は、管理計算機12のジョブスケジュール部38から送信された分割ジョブを受信し、受信した分割ジョブを実行する(S51)。この際、ジョブ実行部44は、受信した分割ジョブに付加された分割データを、受信した分割ジョブに付加されたプログラムに従って処理し、分割ジョブの実行を終了した後、実行終了(分割ジョブの終了通知)を管理計算機12のジョブ監視部36に送信し、このルーチンでの処理を終了する。
【0118】
また、各実行計算機14、16、18のうち、いずれかのジョブ実行部44は、各実行計算機14、16、18の処理内容を集約し、集約した処理を実行する。
【0119】
(管理計算機の処理)
管理計算機12では、グリッドジョブをジョブ入力部32が受け付けた後、データ分割部34でグリッドジョブを複数の分割ジョブに分割し、分割された分割ジョブをプログラムと関連付けてジョブ情報テーブル30に登録し、分割ジョブを作成する。ジョブスケジュール部38では、各実行計算機から分割ジョブの要求(ジョブ要求)がある毎に、ジョブ情報テーブル30を参照し、ジョブ要求があった実行計算機に対して、要求応答テーブル62を作成し、作成した要求応答テーブル62の内容に従ってスケジュールを実行する。
【0120】
次に、管理計算機12の全体の処理内容を図15のフローチャートに従って説明する。
【0121】
まず、管理計算機12では、ジョブ入力部12が、ユーザの操作を基にグリッドジョブを入力する(S61)。
【0122】
この後、管理計算機12では、データ分割部34が、ジョブ入力部32に入力されたグリッドジョブを複数の分割ジョブに分割し(S62)、このルーチンでの処理を終了する。
【0123】
次に、管理計算機12におけるジョブ入力部の処理を図16のフローチャートに従って説明する。
【0124】
この処理は、CPUが、ジョブ入力部32を起動することによって開始される。
【0125】
ジョブ入力部32は、ユーザの操作を基にグリッドジョブが入力された場合、入力されたグリッドジョブを、ジョブ情報としてジョブ情報テーブル30に登録する(S71)。この場合のジョブ情報としては、グリッドジョブ名と、分割数と、プログラム名が挙げられる。
【0126】
次に、管理計算機12におけるデータ分割部の処理を図17のフローチャートに従って説明する。
【0127】
この処理は、CPUが、データ分割部34を起動することによって開始される。
【0128】
データ分割部34は、ジョブ情報テーブル30を参照し、ジョブ情報テーブル30に登録されているジョブ情報を取得し(S81)、取得したジョブ情報に含まれる分割数、例えば、100でデータを分割する(S82)。
【0129】
次に、データ分割部34は、分割したデータと、ジョブ情報に含まれるプログラムとを関連付けてジョブ情報テーブル30に登録し(S83)、このルーチンでの処理を終了する。
【0130】
この場合のジョブ情報には、グリッドジョブ名、分割数、分割ジョブ名、プログラム名が含まれる。
【0131】
次に、データの分割方法と分割ジョブの生成方法を図18に従って説明する。
【0132】
ジョブ入力部32に、グリッドジョブが入力された場合、ジョブ入力部32は、ジョブ情報テーブル30に、グリッドジョブを処理するためのプログラム70と、グリッドジョブに含まれるマスタデータ72をジョブ情報テーブル30に登録する。
【0133】
この後、データ分割部34は、マスタデータ72を、入力された分割数を用いて、例えば、n個に分割し、分割された各データ74をそれぞれプログラム70に関連付けてジョブ情報テーブル30に登録する。
【0134】
この際、データ分割部34は、グリッドジョブを複数の分割ジョブに分割し、各分割ジョブをプログラム70に対応付けてジョブ情報テーブル30に登録するとともに、各データ74とプログラム70とを対応付けてジョブ情報テーブル30に登録する。
【0135】
次に、管理計算機12におけるジョブ監視部36の処理を図19のフローチャートに従って説明する。
【0136】
この処理は、CPUが、ジョブ監視部36を起動することによって開始される。
【0137】
ジョブ監視部36は、タイマーを起動し、タイマーの起動時間を実行時間として測定し(S91)、ジョブ情報テーブル30から、ジョブ情報テーブル30に登録されているジョブ情報を取得する(S92)。この場合のジョブ情報は、ジョブ情報テーブル30に登録されている全ての情報である。
【0138】
次に、ジョブ監視部36は、実行計算機から要求された分割ジョブを監視する過程で、監視対象の分割ジョブに関する情報として、実行計算機から終了通知が来たか否かを判定する(S93)。
【0139】
ステップS93で、分割ジョブの終了通知を受信したと判定した場合には、ジョブ監視部36は、ジョブ情報テーブル30からジョブ情報を取得し(S94)、管理対象となる分割ジョブのスケジュール状態を判定する(S95)。
【0140】
ステップS95において、監視対象の分割ジョブのスケジュール状態が、「TRUE」である場合には、そのままステップS97の処理に移行し、監視対象となる分割ジョブのスケジュール状態が、「RUN」(実行中)である場合には、分割ジョブの終了通知を受信したことを条件に、ジョブ情報テーブル30のスケジュール状態を「RUN」から「TRUE」に変更し(S96)、ステップS97の処理に移行する。
【0141】
また、ステップS93で否定の判定結果を得た場合、即ち、分割ジョブの終了通知を受信していないと判定した場合、ジョブ監視部36は、ステップS97の処理に移行する。
【0142】
ステップS97において、ジョブ監視部36は、タイマーの起動時間を基に、現在の時間が、終了予定時間よりも小さいか否かを判定し、ステップS97で否定の判定結果を得た場合、即ち、現在の時間が、終了予定時間よりも小さい場合には、ステップS91の処理に戻り、ステップS91〜S96の処理を繰り返す。
【0143】
一方、ステップS97で肯定の判定結果を得た場合、即ち、現在の時間が、終了予定時間を超えた場合、ジョブ監視部36は、ジョブ情報テーブル30から、分割ジョブ名に対応した分割ジョブを取り出し、取り出した分割ジョブに対応するスケジュール状態を「FALSE」に設定し(S98)、その後、ステップS91の処理に戻り、ステップS91〜S98の処理を繰り返す。
【0144】
ステップS98では、ジョブ監視部36は、監視対象となる分割ジョブのうち、未スケジュール状態にある分割ジョブのスケジュール状態を「FALSE」とすることになる。
【0145】
次に、ジョブスケジュール部の処理を図20のフローチャートに従って説明する。
【0146】
この処理は、CPUが、ジョブスケジュール部38を起動することによって開始される。
【0147】
ジョブスケジュール部38は、タイマーを起し、タイマーの起動時間を実行時間として測定し(S101)、ジョブスケジュール時間Tが、(現在の時間−前回スケジュールした時間)よりも小さいか否かを判定する(S102)。
【0148】
ステップS102で否定の判定結果を得た場合、即ち、タイマーの起動時間が、ジョブスケジュール時間Tに達していない場合、ジョブスケジュール部38は、ステップS101の処理に戻り、ステップS101〜S102の処理を繰り返す。
【0149】
一方、ステップS102で肯定の判定結果を得た場合、即ち、タイマーの起動時間が、ジョブスケジュール時間Tを超えた場合、ジョブスケジュール部38は、各実行計算機から送信された分割ジョブ要求テーブル64に登録された情報を全て取り出し(S103)、分割ジョブ要求テーブル64に登録されたスループット値を基に、各実行計算機のジョブ要求をスループット順に並び変える(S104)。
【0150】
この後、ジョブスケジュール部38は、スループット値の最も高い分割ジョブ要求テーブル64の中から要求分割ジョブ数を取り出す(S105)。
【0151】
次に、ジョブスケジュール部38は、ジョブ情報テーブル30から、分割ジョブ名に対応した分割ジョブを取り出し、取り出した分割ジョブに対応したスケジュール状態を「RUN」から「TRUE」に設定する(S106)。
【0152】
次に、ジョブスケジュール部38は、ジョブ情報テーブル30から、分割ジョブ名に対応した分割ジョブの情報を取得し(S107)、取得した情報のうち、スケジュール状態が「FALSE」になっている分割ジョブを取り出す(S108)。
【0153】
次に、ジョブスケジュール部38は、分割ジョブ要求テーブル64から、分割ジョブの終了時間の情報として予定時間を取得し、取得した予定時間を基に分割ジョブの終了予定時間を算出する(S109)。
【0154】
次に、ジョブスケジュール部38は、スケジュール状態が、「FALSE」に設定されている分割ジョブに対して、算出した終了予定時間をジョブ情報テーブル30に登録する(S110)。
【0155】
次に、ジョブスケジュール部38は、スケジュール状態が、「FALSE」になっている分割ジョブのデータと、プログラムとを関連付けて実行計算機毎に要求応答テーブル62を作成し、作成した要求応答テーブル62の内容を各実行計算機のジョブ実行部50に送信する(S111)。
【0156】
次に、ジョブスケジュール部38は、各実行計算機から分割ジョブの要求があるか否かを判定し(S112)、ステップS112で肯定の判定結果を得た場合、即ち、各実行計算機から分割ジョブの要求がある場合、ステップS106に戻り、ステップS106〜S112の処理を繰り返す。
【0157】
一方、ステップS112で否定の判定結果を得た場合、即ち、各実行計算機から分割ジョブの要求がない場合、ジョブスケジュール部38は、ステップS101の処理に戻り、次の処理を実行するために、ステップS101〜S112の処理を繰り返す。
【0158】
この際、ジョブスケジュール部38は、分割ジョブの割当先となる実行計算機で、分割ジョブの実行が終了する終了予定時間と、各実行計算機に対する分割ジョブの割当ての有無を示すスケジュール状態を分割ジョブに対応づけて管理し、各実行計算機14、16、18から、終了予定時間までに、分割ジョブの終了通知を受信したことを条件に、スケジュール状態が、未割当を示す分割ジョブ(FALSEに設定された分割データを含む分割ジョブ)を分割ジョブの終了通知を送信した実行計算機に割り当てることになる。
【0159】
また、ジョブスケジュール部38は、実行計算機14、16、18の中に、終了予定時間までに、分割ジョブの終了通知を送信できない実行計算機が存在する場合、当該実行計算機に割り当てるべき分割ジョブを、終了予定時間までに、分割ジョブの終了通知を送信した実行計算機に割り当てることもできる。
【0160】
次に、各実行計算機に分割ジョブを分散させる際の処理を図21に従って説明する。
【0161】
各実行計算機14、16、18が、所定時間(sec)毎に分割ジョブを実行するに際して、各実行計算機14、16、18は、例えば、多重度を基に分割ジョブを管理計算機12に要求する。
【0162】
例えば、図21に示すように、各実行計算機14、16、18は、多重度=1(カッコ内の数値)である場合、実行する予定の分割ジョブとして、1つの分割ジョブを管理計算機12に要求する。この場合、管理計算機12は、各実行計算機14、16、18にそれぞれ1つの分割ジョブを割り当てることになり、3つの分割ジョブが、各実行計算機14、16、18に分散して割り当てられる。
【0163】
これにより、第1の時間では、各実行計算機14、16、18が、それぞれ1つの分割ジョブを実行することで、実行された分割ジョブの累計は、3となる。
【0164】
第2の実行時間では、実行計算機14の多重度=3、実行計算機16、18の多重度=2であるので、実行計算機14、16、18から管理計算機12に対して、7つの分割ジョブが要求される。この場合、管理計算機12は、実行計算機14に3つの分割ジョブを割り当て、実行計算機16、18にそれぞれ2つの分割ジョブを割り当てることになり、7つの分割ジョブが、各実行計算機14、16、18に分散して割り当てられる。
【0165】
これにより、第2の時間では、実行計算機14が3つの分割ジョブを実行し、実行計算機16、18がそれぞれ2つの分割ジョブを実行することで、実行された分割ジョブの累計は、10となる。
【0166】
このような処理が、第1の時間〜第11の時間まで実行され、実行計算機14が、分割ジョブを54個(1、3、4、5、5、6、6、6、6、7、5=54)を実行し、実行計算機16、分割ジョブを27個(1、2、2、2、3、3、3、3、4、4=27)を実行し、実行計算機18が、分割ジョブを19個(1、2、2、2、2、2、2、2、2、2=19)を実行すると、実行された分割ジョブの累計は、100となる。
【0167】
即ち、管理計算機12が、グリッドジョブを100個の分割ジョブに分割した場合、各実行計算機14、16、18が多重度に応じて分割ジョブを管理計算機12に要求し、管理計算機12が、各実行計算機14、16、18に対して、要求された分割ジョブを分散して割り当て、各実行計算機14、16、18が、割り当てられた分割ジョブを、第1の時間〜第11の時間まで実行することで、全体で100個の分割ジョブを実行することができる。
【0168】
また、第11の実行時間では、実行計算機14の多重度=8、実行計算機16の多重度=4、実行計算機18の多重度=3であるので、実行計算機14、16、18から管理計算機12に対して、15個の分割ジョブが要求される。
【0169】
この場合、管理計算機12は、処理すべき分割ジョブの残りの数が5であるので、多重度=8であって、多重度の最も大きい実行計算機14にのみ、要求された分割ジョブとして、5つの分割ジョブを割り当てる。即ち、管理計算機12は、第11の実行時間では、処理能力の最も高い実行計算機14にのみ分割ジョブを割り当てる。なお、管理計算機12は、第11の実行時間において、例えば、実行計算機14に3つの分割ジョブを割り当て、実行計算機16、18にそれぞれ1つの分割ジョブを割り当てることもできる。
【0170】
次に、図22に、各実行計算機における同時実行ジョブ数を監視するための監視画面の表示例を示す。
【0171】
図22において、監視画面80は、例えば、各実行計算機14、16、18の出力装置の表示画面として構成される。監視画面80には、横軸を実行時間(sec)とし、縦軸を実行ジョブ数とするグラフ82が、実行計算機14、16、18に対応付けて表示される。
【0172】
グラフ82は、実行計算機14のグラフ84と、実行計算機16のグラフ86と、実行計算機18のグラフ88から構成される。
【0173】
各グラム84、86、88は、各実行計算機14、16、18が、同時に実行した際の実行ジョブ数の推移を表示したものである。この際、グラフ84、86、88は、各実行計算機14、16、18に対応付けて異なる色で表示される。
【0174】
グラフ82より下の表示領域には、各実行計算機14、16、18の実行状況を示す実行状況テーブル90が表示される。テーブル90は、実行計算機名92と、要求分割ジョブ94と、スループット値96と、実行ジョブ数98と、予定時間(sec)100から構成され、この実行状況テーブル90には、実行状況テーブル60の情報が表示される。
【0175】
実行状況テーブル90の表示内容を確認することで、各実行計算機14、16、18から要求されている分割ジョブ数を把握することができるとともに、スループット値・実行ジョブ数・予定時間(sec)を把握することもできる。
【0176】
また、グラフ84〜88の表示内容を確認することで、各実行計算機14、16、18の実行ジョブ数の推移を実行時間(sec)とともに把握することができる。
【0177】
本実施形態によれば、各実行計算機14、16、18に同時に分割ジョブを割り当てる場合でも、管理計算機12の負荷を低減することができる。
【0178】
また、本実施形態によれば、管理計算機12は、要求された分割ジョブの数(要求分割ジョブ数)が多い実行計算機に対して、より多くの分割ジョブを割り当てることができるので、結果的に、管理計算機12に負荷が集中することなく、計算機システム全体の分割ジョブの処理数を向上させることができる。
【0179】
また、管理計算機12は、各分割ジョブの実行時間と終了予定時間を管理し、ある分割ジョブを実行する実行計算機から、終了予定時間を過ぎても終了通知が来なかった場合には、ジョブ情報テーブル30のスケジュール状態をFALSEに設定すると共に、終了通知が来なかった実行計算機(故障の生じた実行計算機)に割り当てるべき分割ジョブを、他の実行計算機に割り当てることで、いずれかの実行計算機に故障が発生しても、分割ジョブを正常な実行計算機に確実に実行させることができる。
【0180】
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、各実行計算機14、16、18のうちいずれかの実行計算機に、管理計算機12の機能を付加することもできる。
更に、本実施形態では、管理計算機12と、実行計算機14、16、18を物理計算機として用いる例について説明したが、本発明は、これらの全部又は一部を仮想計算機として、1台又は複数台の物理計算機に実装する構成にも適用することができる。
【0181】
また、各実行計算機14、16、18の出力装置に監視画面80を表示すると共に、管理計算機12の出力装置に監視画面を表示し、この監視画面に、実行ジョブ数の推移を、実行時間に対応づけて表示すると共に、要求分割ジョブ数と、スループット値等を有するテーブル90の内容を表示することもできる。
【0182】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、IC(Integrated Circuit)カード、SD(Secure Digital)メモリカード、DVD(Digital Versatile Disc)等の記録媒体に記録して置くことができる。
【0183】
例えば、プログラムとして、ジョブを複数の分割ジョブに分けて管理する管理用計算機(管理計算機12)と、複数の分割ジョブのうち管理用計算機により割り当てられる分割ジョブを実行する複数の実行用計算機(実行計算機14、16、18)のうち、各実行用計算機に、各実行用計算機の負荷を測定する機能と、測定された負荷を基に分割ジョブの数の情報を含むジョブ要求を生成する機能と、生成したジョブ要求を管理用計算機に送信する機能と、を実現させ、管理用計算機に、ジョブ要求を各実行用計算機から受信した場合、受信したジョブ要求に応じた分割ジョブを各実行用計算機に割り当てる機能を実現させる分割ジョブ処理プログラムを記録媒体に記録することができる。
【符号の説明】
【0184】
10 計算機システム、12 管理計算機、14、16、18 実行計算機、20 ネットワーク、30 ジョブ情報テーブル、32 ジョブ入力部、34 データ分割部、36 ジョブ監視部、38 ジョブスケジュール部、40、実行状況テーブル、42 計算機情報テーブル、44 ジョブ要求部、46 多重度測定部、48 負荷状況測定部、50 ジョブ実行部、60 実行状況テーブル、62 要求応答テーブル、64 分割ジョブ要求テーブル。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22