(57)【要約】  予め分割されたデータブロックを前記記憶装置に格納し、データブロックを処理するタスクを並列して実行する複数の並列分散処理実行サーバと、複数の並列分散処理実行サーバを制御する管理計算機と、を備え、前記管理計算機は、複数の並列分散処理実行サーバのリソース使用量をそれぞれ収集し、並列分散処理実行サーバが保持するデータブロックとタスクの状態を取得し、並列分散処理実行サーバがそれぞれ保持するデータブロックの処理の進行状況と前記複数の並列分散処理実行サーバのリソース使用量に基づいて、前記第１の並列分散処理実行サーバへデータブロックを転送する第２の並列分散処理実行サーバを選択し、前記選択した第２の並列分散処理実行サーバに対して前記データブロックを前記第１の並列分散処理実行サーバへ転送する指令を送信する。
2012105056.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと記憶装置とを備えて処理対象のデータとして予め分割されたデータブロックを前記記憶装置に格納し、前記プロセッサが前記データブロックを処理するタスクを並列して実行する複数の並列分散処理実行サーバと、前記複数の並列分散処理実行サーバを制御する管理計算機と、を備えた並列分散処理システムで、前記管理計算機が、第１の並列分散処理実行サーバのタスクに割り当てるデータブロックの送信元となる第２の並列分散処理実行サーバを選択する並列分散処理システムのデータ転送制御方法であって、
前記管理計算機が、前記第１の並列分散処理実行サーバから前記タスクが完了したことを示す完了通知を受信する第１のステップと、
前記管理計算機が、前記複数の並列分散処理実行サーバのリソース使用量をそれぞれ収集する第２のステップと、
前記管理計算機が、前記複数の並列分散処理実行サーバが保持するデータブロックとタスクの状態を取得する第３のステップと、
前記管理計算機が、前記複数の並列分散処理実行サーバがそれぞれ保持するデータブロックの処理の進行状況と前記複数の並列分散処理実行サーバのリソース使用量に基づいて、前記第１の並列分散処理実行サーバへデータブロックを転送する第２の並列分散処理実行サーバを選択する第４のステップと、
前記管理計算機が、前記選択した第２の並列分散処理実行サーバに対して前記データブロックを前記第１の並列分散処理実行サーバへ転送する指令を送信する第５のステップと、
前記管理計算機が、前記第１の並列分散処理実行サーバに対して前記転送されたデータブロックを処理するタスクを実行する指令を送信する第６のステップと、
を含むことを特徴とする並列分散処理システムのデータ転送制御方法。
【請求項２】
請求項１に記載の並列分散処理システムのデータ転送制御方法であって、
前記第４のステップは、
前記複数の並列分散処理実行サーバが保持するデータブロックのうち、タスクによる処理が完了した処理済みのデータブロックの比率を処理済みデータ率として演算する第７のステップと、
前記処理済みデータ率が、予め設定した閾値未満の並列分散処理実行サーバを処理遅延サーバとして抽出する第８のステップと、
前記抽出された処理遅延サーバから前記第２の並列分散処理実行サーバを選択する第９のステップと、
を含むことを特徴とする並列分散処理システムのデータ転送制御方法。
【請求項３】
請求項２に記載の並列分散処理システムのデータ転送制御方法であって、
前記第９のステップは、
前記並列分散処理実行サーバの単位時間当たりの処理能力として前記タスクの実行多重度を取得し、前記実行多重度が最も少ない処理遅延サーバを前記第２の並列分散処理実行サーバとして選択することを特徴とする並列分散処理システムのデータ転送制御方法。
【請求項４】
請求項２に記載の並列分散処理システムのデータ転送制御方法であって、
前記第９のステップは、
前記並列分散処理実行サーバの単位時間当たりの処理能力として前記並列分散処理実行サーバのハードウェアスペックを示す値を取得し、前記ハードウェアスペックを示す値が最も低い処理遅延サーバを前記第２の並列分散処理実行サーバとして選択することを特徴とする並列分散処理システムのデータ転送制御方法。
【請求項５】
請求項２に記載の並列分散処理システムのデータ転送制御方法であって、
前記第９のステップは、
前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量を求める第１０のステップと、
前記処理遅延サーバの空きＩ／Ｏリソース量を求める第１１のステップと、
前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量と、前記処理遅延サーバの空きＩ／Ｏリソース量の差が最も小さい前記処理遅延サーバを第２の並列分散処理実行サーバを選択する第１２のステップと、
を含むことを特徴とする並列分散処理システムのデータ転送制御方法。
【請求項６】
請求項５に記載の並列分散処理システムのデータ転送制御方法であって、
前記第１０のステップは、
前記第１の並列分散処理実行サーバのネットワークの空きＩ／Ｏリソース量と、ディスクＩ／Ｏの空きリソース量とを求め、
前記第１１のステップは、
前記処理遅延サーバのネットワークの空きＩ／Ｏリソース量と、ディスクＩ／Ｏの空きリソース量とを求め、
前記第１２のステップは、
前記第１の並列分散処理実行サーバのネットワークＩ／Ｏの空きリソース量と、処理遅延サーバのネットワークＩ／Ｏの空きリソース量との差の絶対値を第１の絶対値として求め、
第１の並列分散処理実行サーバのディスクＩ／Ｏの空きリソース量と、処理遅延サーバのディスクＩ／Ｏの空きリソース量との差の絶対値を第２の絶対値として求め、
前記第１の絶対値と第２の絶対値のうち大きい方の値を前記処理遅延サーバの絶対値として選択し、当該処理遅延サーバの絶対値のうち最も小さい値の処理遅延サーバを前記第２の並列分散処理実行サーバとして選択することを特徴とする並列分散処理システムのデータ転送制御方法。
【請求項７】
請求項２に記載の並列分散処理システムのデータ転送制御方法であって、
前記第９のステップは、
前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量を求める第１０のステップと、
前記処理遅延サーバの空きＩ／Ｏリソース量を求める第１１のステップと、
前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量よりも多い空きＩ／Ｏリソース量を有する処理遅延サーバのうち、前記空きＩ／Ｏリソース量の差が最も小さい前記処理遅延サーバを第２の並列分散処理実行サーバを選択する第１２のステップと、
を含むことを特徴とする並列分散処理システムのデータ転送制御方法。
【請求項８】
請求項１に記載の並列分散処理システムのデータ転送制御方法であって、
前記並列分散処理実行サーバは、物理サーバ上で実行される仮想化部が提供する仮想サーバとして実行され、
前記第４のステップは、
前記第１の並列分散処理実行サーバを実行する物理サーバと同一の物理サーバで実行される仮想サーバを優先して前記第２の並列分散処理実行サーバとして選択することを特徴とする並列分散処理システムのデータ転送制御方法。
【請求項９】
プロセッサと記憶装置とを備えて処理対象のデータとして予め分割されたデータブロックを前記記憶装置に格納し、前記プロセッサが前記データブロックを処理するタスクを並列して実行する複数の並列分散処理実行サーバと、
前記複数の並列分散処理実行サーバを制御する管理計算機と、を備えた並列分散処理システムであって、
前記管理計算機は、
前記複数の並列分散処理実行サーバのデータブロックに対すタスクを制御する並列分散処理制御部と、
前記複数の並列分散処理実行サーバのうち、タスクにデータブロックを割り当てる第１の並列分散処理実行サーバ対して、前記データブロックの送信元となる第２の並列分散処理実行サーバを選択するデータ転送制御部と、
前記複数の並列分散処理実行サーバのリソース使用量をそれぞれ管理するリソース使用量管理部と、
を有する並列分散処理システムであって、
前記並列分散処理制御部は、
前記第１の並列分散処理実行サーバから前記タスクが完了したことを示す完了通知を受信し、前記複数の並列分散処理実行サーバが保持するデータブロックとタスクの状態を取得し、
前記データ転送制御部は、
前記複数の並列分散処理実行サーバがそれぞれ保持するデータブロックの処理の進行状況と前記複数の並列分散処理実行サーバのリソース使用量に基づいて、前記第１の並列分散処理実行サーバへデータブロックを転送する第２の並列分散処理実行サーバを選択し、前記選択した第２の並列分散処理実行サーバに対して前記データブロックを前記第１の並列分散処理実行サーバへ転送する指令を送信し、
前記並列分散処理制御部は、
前記第１の並列分散処理実行サーバに対して前記転送されたデータブロックを処理するタスクを実行する指令を送信することを特徴とする並列分散処理システム。
【請求項１０】
請求項９に記載の並列分散処理システムであって、
前記データ転送制御部は、
前記複数の並列分散処理実行サーバが保持するデータブロックのうち、タスクによる処理が完了した処理済みのデータブロックの比率を処理済みデータ率として演算し、前記処理済みデータ率が、予め設定した閾値未満の並列分散処理実行サーバを処理遅延サーバとして抽出し、前記抽出された処理遅延サーバから前記第２の並列分散処理実行サーバを選択することを特徴とする並列分散処理システム。
【請求項１１】
請求項１０に記載の並列分散処理システムであって、
前記データ転送制御部は、
前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量を求め、前記処理遅延サーバの空きＩ／Ｏリソース量を求めて、前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量と、前記処理遅延サーバの空きＩ／Ｏリソース量の差が最も小さい前記処理遅延サーバを第２の並列分散処理実行サーバを選択することを特徴とする並列分散処理システム。
【請求項１２】
請求項９に記載の並列分散処理システムであって、
前記並列分散処理実行サーバは、物理サーバ上で実行される仮想化部が提供する仮想サーバとして実行され、
前記データ転送制御部は、
前記第１の並列分散処理実行サーバを実行する物理サーバと同一の物理サーバ上の仮想サーバを優先して前記第２の並列分散処理実行サーバとして選択することを特徴とする並列分散処理システム。
【請求項１３】
複数の並列分散処理実行サーバのうち、第１の並列分散処理実行サーバのタスクに割り当てるデータブロックの送信元となる第２の並列分散処理実行サーバを選択するプログラムを格納した記憶媒体であって、
前記第１の並列分散処理実行サーバから前記タスクが完了したことを示す完了通知を受信する第１の手順と、
前記複数の並列分散処理実行サーバのリソース使用量をそれぞれ収集する第２の手順と、
前記複数の並列分散処理実行サーバが保持するデータブロックとタスクの状態を取得する第３の手順と、
前記複数の並列分散処理実行サーバがそれぞれ保持するデータブロックの処理の進行状況と前記複数の並列分散処理実行サーバのリソース使用量に基づいて、前記第１の並列分散処理実行サーバへデータブロックを転送する第２の並列分散処理実行サーバを選択する第４の手順と、
前記選択した第２の並列分散処理実行サーバに対して前記データブロックを前記第１の並列分散処理実行サーバへ転送する指令を送信する第５の手順と、
前記第１の並列分散処理実行サーバに対して前記転送されたデータブロックを処理するタスクを実行する指令を送信する第６の手順と、
を計算機に実行させるプログラムを格納した非一時的な計算機読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理履歴情報やサーバ稼動履歴情報などを利用したデータ転送制御方法及び装置に関する。
【背景技術】
【０００２】
近年、記憶媒体の大容量化、低価格化により、ＲＦＩＤ（Radio Frequency Identification）等のセンサ装置から取得するデータや、Ｗｅｂサイトのアクセスログ等、大量データの蓄積が可能となっている。そこで、企業や団体などでは、これまで蓄積されていたが、活用されていない大量データを分析し、その分析結果を事業に活かすことが試みられている。大量データを短時間で分析する技術として並列分散処理技術が注目を集めている。しかし、これまで活用されていないログデータ等は、データの活用方法や分析方法が明確に決まっておらず、試行錯誤が必要となる。並列分散処理では、処理を分割して複数のサーバに割り当て、処理を分散して並列的に実行するため、多数のサーバを用意する必要がある。そのため、初期段階での並列分散処理システム導入による投資対効果が不明瞭であるため、顧客の導入障壁が高い。【０００３】
そこで、並列分散処理システムの導入において、新たにサーバを用意するのではなく、既存のシステムが利用しているサーバの空きリソースを有効活用し、既存のシステムと並列分散処理システムを共存させることが考えられる。【０００４】
並列分散処理では、処理対象のデータが規定サイズのブロックに分割され、各ブロックが独立して、複数サーバにおいて同時並行的に処理されるため、大量データを短時間で処理することが可能である。処理対象データが、並列分散処理を実行する各サーバ上に分散して保存されている状況下では、あるサーバ上のタスクに他サーバに保存されているデータの処理を割り当てた場合、サーバ間でデータの転送が発生し、処理遅延の原因となる。そこで、並列分散処理の処理効率を考慮し、処理を割り当てる際に、処理対象データが保存されているサーバに、ネットワーク的に最も近いサーバのタスクへ処理を割り当てるスケジューリング方法が開示されている（非特許文献１参照）。【０００５】
また、サーバ間のデータ転送の回数を減らすために、他サーバに保存されているデータの処理を割り当てる場合に、各サーバにおいて、保存されているデータに対する処理割り当て済みデータの割合を算出し、その割合が最も小さいサーバに保存されているデータの処理を割り当てるスケジューリング方法が開示されている（特許文献１参照）。【０００６】
既存システムと並列分散処理システムを共存稼動させる場合、既存システムの優先度は並列分散処理システムより高いことが想定される。よって、並列分散処理システムは、既存システムの稼働を妨げないように、サーバの空きリソースを利用して処理を実行する必要がある。そのため、サーバ毎に既存システムの負荷変動に合わせて、動的に実行多重度を変更する必要があり、各サーバが単位時間あたりに処理可能なデータ量に差が生じやすい。また、動的に実行多重度を変更するため、並列分散処理実行前に、各サーバの処理能力に応じて、データ転送が少なくなるように各サーバにデータを配置することが困難であり、大量のデータ転送処理が発生する可能性がある。よって、動的に実行多重度を変更する環境下において、並列分散処理実行中に、データ転送コストが少なくなるよう、如何に各サーバにデータの処理を割り当てるかが、並列分散処理の効率化という点において、重要なポイントになる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−２３１５０２号公報
【非特許文献】
【０００８】
【非特許文献１】Tom White著、Hadoop: The Definitive Guide、First Edition、Oreilly Media刊、2010年01月  発行、第155頁
【発明の概要】
【発明が解決しようとする課題】
【０００９】
非特許文献１に記載の技術を用いることにより、出来るだけ自サーバに保存されているデータを処理できるため、データ転送の発生を抑制できる。さらに、他サーバに保存されているデータの処理を割り当てる場合には、ネットワーク的に最も近いサーバに保存されているデータの処理を割り当てるため、データ転送コストを抑制できる。【００１０】
しかしながら、上記非特許文献１の技術では、優先度の高い既存のシステムと、並列分散処理システムが共存して稼働する状況下では、必ずしもデータ転送コストを抑制できるとは限らない。【００１１】
例えば、既存のシステムと共存して稼働する並列分散処理システムでは、各サーバの単位時間当たりの処理能力に差が生まれやすく、各サーバの未処理データ量に偏りが生じる可能性がある。そのため、あるサーバ上のタスクに処理を割り当てる際に、最も近いサーバの未処理データが少ない場合、転送元サーバのタスクでは、自サーバの未処理データが早い段階で無くなってしまう。よって、他サーバからデータを取得する回数が多くなり、データ転送が多発してしまう。【００１２】
並列分散処理システムにおいて、データ転送が多発するのを抑制する方法の１つとして、特許文献１が知られている。特許文献１に記載の技術を用いることにより、他サーバに保存されているデータの処理を自サーバのタスクに割り当てる場合に、各サーバの割り当て済みデータの割合を算出し、どのサーバに保存されているデータの処理を割り当てるのかを決定する。この決定の際には、未割り当てデータの少ないサーバから自サーバへデータを転送して取得する可能性が低くなる。よって、各サーバが可能な限り自サーバに保存されているデータを処理できるようになり、データ転送回数の削減するものである。【００１３】
しかしながら、優先度の高い既存のシステムに、並列分散処理システムを共存させて稼動する状況下においては、前記特許文献１等の従来技術では必ずしも十分とは言えない。【００１４】
例えば、並列分散処理システムは、既存のシステムの負荷変動やリソースの変動に合わせて実行多重度を変更する必要がある。このため、既存のシステムの負荷が増加した場合、優先度が低い並列分散処理実行システムでは実行多重度を減らさなければならない。このため、既に処理を割り当てられていたタスクが、実行多重度の減少により、処理を実行できなくなる可能性がある。また、各サーバの実行多重度が異なるため、各サーバで単位時間あたりに処理できるデータ量も異なる。そのため、割り当て済みデータの割合が小さい場合でも、単位時間当たりに処理可能なデータ量が多く、他のサーバより未処理データを短時間で処理できる可能性がある。【００１５】
さらに、並列分散処理システムが既存システムと共存する状況下では、並列分散処理システムがデータ転送に利用できるＩ／Ｏリソース量もサーバ毎に異なる。そのため、データの転送先サーバの空きＩ／Ｏリソース量が多く、一度に大量のデータを転送可能な場合でも、転送元サーバに利用可能なＩ／Ｏリソース量の小さいサーバを選んだ場合、空きＩ／Ｏリソース量の小さい方に合わせてデータを転送する必要があり、転送先サーバの空きＩ／Ｏリソースを最大限利用できない。これにより、データ転送時間が長くなり、並列分散処理システム全体の処理時間に影響を与える可能性がある。【００１６】
従って、優先度の高い既存システムに、並列分散処理システムを共存させて稼働する環境下のように、並列分散処理システムに割り当て可能な計算機資源が変動して、並列分散処理システムの実効多重度が変化した場合であっても、以降の並列処理をデータ転送の回数、使用するリソース量の点で効率的に実行できるように、各サーバにデータを割り当てることが課題になる。【００１７】
本発明は上記問題点に鑑みてなされたもので、並列分散処理システムに割当可能な計算機資源が変化して、並列分散処理の実行多重度が変化する状況で、データ転送回数を削減することを目的とする。
【課題を解決するための手段】
【００１８】
本発明は、プロセッサと記憶装置とを備えて処理対象のデータとして予め分割されたデータブロックを前記記憶装置に格納し、前記プロセッサが前記データブロックを処理するタスクを並列して実行する複数の並列分散処理実行サーバと、前記複数の並列分散処理実行サーバを制御する管理計算機と、を備えた並列分散処理システムで、前記管理計算機が、第１の並列分散処理実行サーバのタスクに割り当てるデータブロックの送信元となる第２の並列分散処理実行サーバを選択する並列分散処理システムのデータ転送制御方法であって、前記管理計算機が、前記第１の並列分散処理実行サーバから前記タスクが完了したことを示す完了通知を受信する第１のステップと、前記管理計算機が、前記複数の並列分散処理実行サーバのリソース使用量をそれぞれ収集する第２のステップと、前記管理計算機が、前記複数の並列分散処理実行サーバが保持するデータブロックとタスクの状態を取得する第３のステップと、前記管理計算機が、前記複数の並列分散処理実行サーバがそれぞれ保持するデータブロックの処理の進行状況と前記複数の並列分散処理実行サーバのリソース使用量に基づいて、前記第１の並列分散処理実行サーバへデータブロックを転送する第２の並列分散処理実行サーバを選択する第４のステップと、前記管理計算機が、前記選択した第２の並列分散処理実行サーバに対して前記データブロックを前記第１の並列分散処理実行サーバへ転送する指令を送信する第５のステップと、前記管理計算機が、前記第１の並列分散処理実行サーバに対して前記転送されたデータブロックを処理するタスクを実行する指令を送信する第６のステップと、を含む。
【発明の効果】
【００１９】
本発明によれば、並列分散処理の実行中に利用可能なコンピュータリソースが変化し、並列分散処理の実行多重度が変化する並列分散処理システムにおいて、データ転送回数を削減し、さらに、データ転送時間を短縮することにより、並列分散処理全体を効率的に実行可能なデータ転送制御方法及び装置を提供することができる。
【図面の簡単な説明】
【００２０】
【図１Ａ】本発明の第１の実施形態を示し、計算機システムの一例を示すブロック図である。
【図１Ｂ】本発明の第１の実施形態を示し、計算機システムのうち各サーバの詳細なブロック図である。
【図２Ａ】本発明の第１の実施形態を示し、並列分散処理の全体の処理を示すフローチャートである。
【図２Ｂ】本発明の第１の実施形態を示し、図２Ａの割当処理Ｓ１１６で行われる詳細な処理を示すフローチャートである。
【図３】本発明の第１の実施形態を示し、データ情報管理テーブルの一例を示す図である。
【図４Ａ】本発明の第１の実施形態を示し、図２ＢのステップＳ１０７からＳ１１４の並列分散処理実行サーバ１２０への処理の割り当てに関する処理の一例を示すフローチャートである。
【図４Ｂ】本発明の第１の実施形態を示し、図４ＡのステップＳ２０５の条件分岐がＮＯのときに行われる処理の一例を示すフローチャートである。
【図５】本発明の第１の実施形態を示し、処理実行サーバ管理テーブルの一例を示す図である。
【図６】本発明の第１の実施形態を示し、タスク管理テーブルの一例を示す図である。
【図７Ａ】図４ＢのステップＳ２０８の処理の詳細を示すフローチャートである。
【図７Ｂ】図７ＡのステップＳ３０５の条件分岐がＹＥＳのときに行われる処理の一例を示すフローチャートである。
【図８】本発明の第１の実施形態を示し、処理状況管理テーブルの一例を示す図である。
【図９】本発明の第１の実施形態を示し、処理状況管理テーブルの変形例を示す図である。
【図１０】本発明の第１の実施形態を示し、処理遅延閾値管理テーブルの例を示す図である。
【図１１】本発明の第１の実施形態を示し、図７ＡのステップＳ３１６の処理の詳細な手順を示すフローチャートである。
【図１２】本発明の第１の実施形態を示し、リソース使用量管理テーブルの例を示す図である。
【図１３】本発明の第１の実施形態を示し、他の並列分散処理実行サーバ１２０に保存されているデータブロックの処理を割り当てる場合におけるデータブロックの転送元となる並列分散処理実行サーバ選択の一例を示すブロック図である。
【図１４Ａ】本発明の第２の実施形態を示し、計算機システムの構成の一例を示すブロック図である。
【図１４Ｂ】本発明の第２の実施形態を示し、計算機システムのうち各サーバの一例を示すブロック図である。
【図１５Ａ】本発明の第２の実施形態を示し、並列分散処理の全体を示すフローチャートである。
【図１５Ｂ】本発明の第２の実施形態を示し、図１５ＡのステップＳ５０７の条件分岐がＮＯのときに行われる処理の一例を示すフローチャートである。
【図１６Ａ】図１５ＡのステップＳ５０７からＳ５１６の並列分散処理実行サーバ１２０への処理の割り当てに関する詳細な手順を示すフローチャートである。
【図１６Ｂ】図１６ＡのステップＳ６０５の条件分岐がＮＯのときに行われる処理の一例を示すフローチャートである。
【図１７】本発明の第２の実施形態を示し、処理実行サーバ管理テーブルの一例を示す図である。
【図１８】本発明の第２の実施形態を示し、処理状況管理テーブルの例を示す図である。
【発明を実施するための形態】
【００２１】
本発明を実施するための形態（以下、「実施形態」という）について、適宜図面を参照しながら詳細に説明する。
【００２２】
＜第１実施形態＞
【００２３】
まず、図１〜図１３を参照して、本発明の第１実施形態に係わる説明を行なう。
【００２４】
＜システム構成＞
【００２５】
図１Ａ、図１Ｂは、本発明の第１の実施形態を示し、計算機システムの構成の一例を示すブロック図である。
【００２６】
計算機システム１０は、クライアント装置１１０、複数の並列分散処理実行サーバ１２０−１〜１２０−ｎ、並列分散処理制御サーバ１３０、データ転送制御サーバ１４０、リソース使用量管理サーバ１５０がネットワーク１００を介して互いに接続されている。なお、ネットワーク１００は、ＬＡＮ（Local Area Network）や、ＷＡＮ（Wide Area Network）や、インターネットなどのグローバルネットワークである。また、ネットワーク１００は、複数のネットワーク１００に分けられても良い。また、並列分散処理実行サーバ１２０−１〜１２０−ｎの総称は並列分散処理実行サーバ１２０とする。
【００２７】
＜クライアント装置＞
【００２８】
クライアント装置１１０は、ネットワークインタフェース１１１、ＣＰＵ１１２、主記憶装置１１３、二次記憶装置１１４、及び、これらを相互に接続するバス（またはインターコネクト）１１５を備える計算機である。
【００２９】
ネットワークインタフェース１１１は、クライアント装置１１０がネットワーク１００に接続するためのインタフェースである。ＣＰＵ１１２は、主記憶装置１１３に記憶されているプログラムを実行することによってクライアント装置１１０の所定の機能を実現する演算処理装置である。主記憶装置１１３は、ＣＰＵ１１２によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するＲＡＭ等の記憶装置である。プログラムとは、例えば、図示しないＯＳや、クライアント処理部１１３１の機能を実現するためのプログラムである。二次記憶装置１１４は、クライアント装置１１０の所定の機能を実現するために必要なプログラム、及び、データ等を格納するハードディスク装置等の不揮発性記憶媒体である。なお、二次記憶装置１１４は、ハードディスク装置等の磁気的記憶媒体に限定されるものではなく、フラッシュメモリ等の不揮発性の半導体記憶媒体であってもよい。
【００３０】
＜並列分散処理実行サーバ＞
【００３１】
並列分散処理実行サーバ１２０は、ネットワークインタフェース１２１、ＣＰＵ１２２、主記憶装置１２３、二次記憶装置１２４、及び、これらを相互に接続するバス（またはインターコネクト）１２５を備える計算機である。なお、並列分散処理実行サーバ１２０−１〜１２０−ｎの構成は同様とする。
【００３２】
ネットワークインタフェース１２１は、並列分散処理実行サーバ１２０がネットワーク１００に接続するためのインタフェースである。ＣＰＵ１２２は主記憶装置１３３に記憶されているプログラムを実行することによって並列分散処理実行サーバの所定の機能を実現する演算処理装置である。主記憶装置１２３は、ＣＰＵ１２２によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するＲＡＭ等の記憶装置である。プログラムとは、例えば、不図示のＯＳ、及び、ユーザ定義処理実行部１２３１、データ管理部１２３２の機能を実現するためのプログラムである。二次記憶装置１２４は、並列分散処理実行サーバ１２０が所定の機能を実現するために必要なプログラム、及び、入力データ１２４１、出力データ１２４２、データ管理テーブル１２４３等のデータを格納するハードディスク装置等の不揮発性記憶媒体である。なお、二次記憶装置１２４は、ハードディスク装置等の磁気的記憶媒体に限定されるものではなく、フラッシュメモリなどの不揮発性の半導体記憶媒体であってもよい。
【００３３】
入力データ１２４１、出力データ１２４２について補足する。入力データ１２４１は、規定のサイズに分割された複数のデータブロックからなる論理的なデータであり、名前と構成するデータブロックを識別するための情報とを含む。入力データ１２４１のデータブロックを識別するための情報とは、例えば、データブロックを格納する並列分散処理実行サーバ１２０のアドレス情報とデータブロックの名前である。データの実体はデータブロックとして並列分散処理実行サーバ１２０に格納される。出力データ１２４２は、前述の並列分散処理によって出力されるデータである。
【００３４】
ユーザ定義処理実行部１２３１は、割り当てられたタスクを実行する。データ管理部１２３２は、タスクに対するデータブロック（入力データ１２４１）の割り当てを管理する。
【００３５】
＜並列分散処理制御サーバ＞
【００３６】
並列分散処理制御サーバ１３０は、各並列分散処理実行サーバ１２０に処理を割り当て、並列分散処理全体の実行を制御するためのサーバであり、並列分散処理ネットワークインタフェース１３１、ＣＰＵ１３２、主記憶装置１３３、二次記憶装置１３４、及び、これらを相互に接続するバス１３５を備える。
【００３７】
ネットワークインタフェース１３１は、並列分散処理制御サーバ１３０がネットワーク１００に接続するためのインタフェースである。ＣＰＵ１３２は、主記憶装置１３３に記憶されているプログラムを実行することによって並列分散処理制御サーバの所定の機能を実現する演算処理装置である。主記憶装置１３３は、ＣＰＵ１３２によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するＲＡＭ等の記憶装置である。プログラムとは、例えば、不図示のＯＳ、及び、処理割当制御部１３３１、データ情報管理部１３３２、処理実行サーバ管理部１３３３、タスク管理部１３３４の機能を実現するためのプログラムである。二次記憶装置１３４は、並列分散処理制御サーバ１３０が所定の機能を実現するために必要なプログラム、及び、データ情報管理テーブル３００、処理実行サーバ管理テーブル５００、タスク管理テーブル６００等のデータを格納するハードディスク装置等の不揮発性記憶媒体である。なお、二次記憶装置１３４は、ハードディスク装置等の磁気的記憶媒体に限定されるものではなく、フラッシュメモリ等の不揮発性の半導体記憶媒体であってもよい。
【００３８】
なお、各処理割当制御部１３３１、データ情報管理部１３３２、処理実行サーバ管理部１３３３、タスク管理部１３３４の機能については、処理の説明において後述する。
【００３９】
＜データ転送制御サーバ＞
【００４０】
データ転送制御サーバ１４０は、処理を割り当てる並列分散処理実行サーバ１２０とは別の並列分散処理実行サーバ１２０に格納されているデータブロックの処理を割り当てる場合に、処理するデータブロックを格納している並列分散処理実行サーバの選択を行うサーバであり、ネットワークインタフェース１４１、ＣＰＵ１４２、主記憶装置１４３、二次記憶装置１４４、及び、これらを相互に接続するバス１４５を備える。
【００４１】
ネットワークインタフェース１４１は、データ転送制御サーバ１４０がネットワーク１００に接続するためのインタフェースである。ＣＰＵ１４２は、主記憶装置１４３に記憶されているプログラムを実行することによってデータ転送制御サーバ１４０の所定の機能を実現する演算処理装置である。主記憶装置１４３は、ＣＰＵ１４２によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するＲＡＭ等の記憶装置である。プログラムとは、例えば、図示しないＯＳ、及び、処理遅延サーバ抽出処理部１４３１、空きＩ／Ｏリソース比較処理部１４３２、処理状況管理部１４３３の機能を実現するためのプログラムである。二次記憶装置１４４は、データ転送制御サーバ１４０が所定の機能を実現するために必要なプログラム、及び、処理状況管理テーブル８００、処理遅延閾値管理テーブル１０００等のデータを格納するハードディスク装置等の不揮発性記憶媒体である。なお、二次記憶装置１４４は、ハードディスク装置等の磁気的記憶媒体に限定されるものではなく、フラッシュメモリ等の不揮発性の半導体記憶媒体であってもよい。
【００４２】
なお、処理遅延サーバ抽出処理部１４３１、空きＩ／Ｏリソース量比較処理部１４３２、処理状況管理部１４３３の各機能については、処理の説明において後述する。
【００４３】
＜リソース使用量管理サーバ＞
【００４４】
リソース使用量管理サーバ１５０は、各サーバのＩ／Ｏリソース使用量を管理するためのサーバであり、ネットワークインタフェース１５１、ＣＰＵ１５２、主記憶装置１５３、二次記憶装置１５４、及び、これらを相互に接続するバス１５５を備える。
【００４５】
ネットワークインタフェース１５１は、リソース使用量管理サーバ１５０がネットワーク１００に接続するためのインタフェースである。ＣＰＵ１５２は、主記憶装置１５３に記憶されているプログラムを実行することによってリソース使用量管理サーバ１５０の所定の機能を実現する演算処理装置である。主記憶装置１５３は、ＣＰＵ１５２によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するＲＡＭ等の記憶装置である。プログラムとは、例えば、図示しないＯＳ、及び、リソース使用量管理部１５３１、リソース使用量監視部１５３２の機能を実現するためのプログラムである。二次記憶装置１５４は、リソース使用量管理サーバ１５０が所定の機能を実現するために必要なプログラム、及びリソース使用量管理テーブル１２００等のデータを格納するハードディスク装置等の不揮発性記憶媒体である。なお、二次記憶装置１５４は、ハードディスク装置等の磁気的記憶媒体に限定されるものではなく、フラッシュメモリ等の不揮発性の半導体記憶媒体であってもよい。
【００４６】
なお、リソース使用量管理部１５３１、リソース使用量監視部１５３２の各機能については、処理の説明において後述する。
【００４７】
以上、各装置のハードウェア構成、及び、ソフトウェア構成について説明してきたが、クライアント装置１１０、並列分散処理実行サーバ１２０、並列分散処理制御サーバ１３０、データ転送制御サーバ１４０、及び、リソース使用量管理サーバ１５０の構成は、図１Ａ、図１Ｂに示す構成に限定されるものではない。例えば、並列分散処理制御サーバ１３０、データ転送制御サーバ１４０、及び、リソース使用量管理サーバは、クライアント装置１１０、または、並列分散処理実行サーバ１２０の何れかのサーバ上で稼動する構成でも構わない。さらに、図１Ａ、図１Ｂでは、並列分散処理制御サーバ１３０、データ転送制御サーバ１４０、及び、リソース使用量管理サーバ１５０は異なるサーバ上で実行される構成を示したが、これらの全部、または一部が同一のサーバ上で実行されても構わない。ひとつのサーバで、並列分散処理制御サーバ１３０、データ転送制御サーバ１４０及びリソース使用量管理サーバ１５０を実行する場合には、各サーバのプログラムは、並列分散処理制御部、データ転送制御部及びリソース使用量管理部として機能すればよい。また、並列分散処理制御部、データ転送制御部及びリソース使用量管理部のプログラムは、プログラム配布サーバや非一時的計算機読み取り可能な記憶媒体によって同一のサーバにインストールすることができる。
【００４８】
次に、図１Ａ、図１Ｂを参照しつつ、図２Ａ〜図１３に沿って本発明の第１の実施形態を示し、処理の説明を行う。
【００４９】
＜全体処理＞
【００５０】
図２Ａ、図２Ｂは、本発明の第１の実施形態を示し、並列分散処理に関する全体的な処理の流れを示すフローチャートである。
【００５１】
まず、クライアント装置１１０から並列分散処理制御サーバ１３０へ、処理対象データ（入力データ１２４１）のデータロードの要求が送信される。データロードの要求を受信した並列分散処理制御サーバ１３０は、ロード対象データを規定のサイズのデータブロック（入力データ１２４１）に分割し、複数の並列分散処理実行サーバ１２０に分散してロードする（Ｓ１０１）。
【００５２】
次に、クライアント装置１１０から並列分散処理制御サーバ１３０へ、並列分散処理実行要求が送信される。並列分散処理実行要求を受信した並列分散処理制御サーバ１３０の処理割当制御部１３３１は、各並列分散処理実行サーバ１２０に、ロードされたデータブロックの処理実行要求を送信し、データ情報管理部１３３２がデータ情報管理テーブル３００の処理対象となるデータブロックの割当状態３０３を「割当済み」に更新する（Ｓ１０２）。なお、処理割当制御部１３３１が送信する処理実行要求は、処理対象のデータブロックのデータブロックＩＤと、各データブロックの処理を実行するタスクのタスクＩＤとを含む。ここでタスクは、処理対象のデータブロックを入力データ１２４１として所定の処理を実行するプログラムである。
【００５３】
続いて、処理実行要求を受信した並列分散処理実行サーバ１２０のユーザ定義処理実行部１２３１は、各タスクにおいて処理実行要求で指定されたデータブロックを入力データ１２４１として所定の処理を実行する（Ｓ１０３）。すなわち、並列分散処理実行サーバ１２０のユーザ定義処理実行部１２３１は、処理実行要求で指定されたタスクを起動し、各タスクに対して処理実行要求で指定されたデータブロックを入力データ１２４１として割り当てて処理を実行させる。
【００５４】
並列分散処理実行サーバ１２０は、割り当てられたタスクに入力データ１２４１として指定されたデータブロックの処理が完了すると、当該並列分散処理実行サーバ１２０から並列分散処理制御サーバ１３０へ、処理完了通知として処理の完了したタスクのタスクＩＤを送信する（Ｓ１０４）。
【００５５】
そして、処理完了通知を受信した並列分散処理制御サーバ１３０のデータ情報管理部１３３２が、データ情報管理テーブル３００の該当するデータブロックＩＤ３０２の処理状態３０４を「処理済み」に更新する（Ｓ１０５）。
【００５６】
続いて、並列分散処理制御サーバ１３０の処理割当制御部１３３１がデータ管理情報テーブル３００を参照し、全てのデータブロックの処理状態３０４が「処理済み」であるか否かを判定する（Ｓ１０６）。
【００５７】
ステップＳ１０６の判定の結果、全てのデータブロックが「処理済み」である場合（Ｓ１０６→Ｙｅｓ）は、並列分散処理制御サーバ１３０の処理割当制御部１３３１が、クライアント装置１１０に並列分散処理完了通知を送信し、計算機システム１０は並列分散処理を終了する。
【００５８】
ステップＳ１０６判定の結果、何れかのデータブロックが「処理済み」ではない場合（Ｓ１０６→Ｎｏ）は、並列分散処理制御サーバ１３０は、ステップＳ１１６で図２Ｂの割り当て処理（Ｓ１１６）を行った後に、ステップＳ１０３に戻って上記処理を繰り返す。
【００５９】
図２Ｂの割当処理では、並列分散処理制御サーバ１３０が、データ管理情報テーブル３００を参照し、処理完了通知を送信した並列分散処理実行サーバ１２０に、割当状態４０３が「未割当」のデータブロックが存在するか否かを判定する（Ｓ１０７）。
【００６０】
ステップＳ１０７の判定の結果、処理完了通知を送信した並列分散処理実行サーバ１２０に未割当のデータブロックが存在する場合（Ｓ１０７→Ｙｅｓ）は、並列分散処理制御サーバ１３０の処理割当制御部１３３１が、処理完了通知を送信した並列分散処理実行サーバ１２０に存在する未割当のデータブロックの中から、任意に一つのデータブロックを選択する（Ｓ１０８）。
【００６１】
ステップＳ１０７の判定の結果、処理完了通知を送信した並列分散処理実行サーバ１２０に未割当のデータブロックが存在しない場合（Ｓ１０７→Ｎｏ）は、ステップＳ１０９に進む。並列分散処理制御サーバ１３０の処理割当制御部１３３１が、処理完了通知を送信した並列分散処理実行サーバ１２０のサーバ名と、未割当のデータブロックを持つ並列分散処理実行サーバ１２０のサーバ名リストをデータ情報管理テーブル３００から生成してデータ転送制御サーバ１４０に送信する（Ｓ１０９）。
【００６２】
次に、データ転送制御サーバ１４０の処理遅延サーバ抽出処理部１４３１が、受信した未割当のデータブロックを持つサーバ名リストに含まれる並列分散処理実行サーバ１２０の中から、処理遅延サーバを抽出する。
【００６３】
ここで、処理遅延サーバは、処理の進捗が遅延している並列分散処理実行サーバ１２０を指す。本実施形態では、後述するように、並列分散処理実行サーバ１２０が保持するデータブロックの総数と、既にタスクの実行によって処理が完了した処理済みのデータブロック数の比率を処理済みデータ率として求め、処理済みデータ率が閾値１００１未満の並列分散処理実行サーバ１２０を、処理の進捗が遅延している処理遅延サーバとして抽出する。
【００６４】
データ転送制御サーバ１４０の処理遅延サーバ抽出処理部１４３１は、処理完了通知を送信した並列分散処理実行サーバ１２０のサーバ名と、抽出したサーバのサーバ名リストと、をリソース使用量管理サーバ１５０へ送信し、各並列分散処理実行サーバ１２０の空きＩ／Ｏリソース量を要求する（Ｓ１１０）。
【００６５】
続いて、リソース使用量管理サーバ１５０のリソース使用量管理部１５３１が、リソース使用量管理テーブル１２００を参照し、処理完了通知を送信した並列分散処理実行サーバ１２０と、サーバ名リストに含まれる並列分散処理実行サーバ１２０の空きＩ／Ｏリソース量を取得してデータ転送制御サーバ１４０へ送信する（Ｓ１１１）。なお、空きＩ／Ｏリソース量は、ネットワークＩ／Ｏの空きＩ／Ｏリソース量と、ディスクＩ／Ｏの空きＩ／Ｏリソース量とを含む。
【００６６】
ここで、ネットワークＩ／Ｏの空きＩ／Ｏリソース量は、並列分散処理実行サーバ１２０のネットワークインターフェース１２１で利用可能なデータ転送速度（Ｇｂｉｔ／ｓｅｃ）を比率で示す。ネットワークインターフェース１２１で利用可能なデータ転送速度は、ネットワークインターフェース１２１で転送可能なデータ転送速度の理論値から、現在使用している帯域（転送速度）を差し引いた値を、データ転送速度の理論値で除した比率で表した値である。すなわち、
ネットワークＩ／Ｏの空きＩ／Ｏリソース量  ＝（理論値−現在使用帯域）÷  理論値
である。現在使用している帯域は、所定時間（例えば、１分間）のデータ転送速度の平均値などを用いることができる。また、データ転送速度の理論値に代わって、ネットワークインターフェース１２１のリンク速度の実効値または理論値に所定の比率を乗じた値を用いてもよい。
【００６７】
ディスクＩ／Ｏの空きＩ／Ｏリソース量は、並列分散処理実行サーバ１２０の二次記憶装置１２４で利用可能なデータ転送速度（ＭＢｙｔｅ／ｓｅｃ）を比率で示す。二次記憶装置１２４で利用可能なデータ転送速度は、二次記憶装置１２４で転送可能なデータ転送速度の理論値から、現在使用している帯域（転送速度）を差し引いた値を、理論値で除した比率である。すなわち、
ディスクＩ／Ｏの空きＩ／Ｏリソース量  ＝（理論値−現在使用帯域）÷  理論値
である。現在使用している帯域は、所定時間（例えば、１分間）のデータ転送速度の平均値などを用いることができる。また、二次記憶装置１２４のデータ転送速度の実効値または理論値に所定の比率を乗じた値を用いてもよい。
【００６８】
そして、データ転送制御サーバ１４０の空きＩ／Ｏリソース量比較処理部１４３２が、処理完了通知を送信した並列分散処理実行サーバ１２０の空きＩ／Ｏリソース量と、各処理遅延サーバの空きＩ／Ｏリソース量を比較し、最も空きＩ／Ｏリソース量の差が小さい処理遅延サーバを選択し、当該選択した処理遅延サーバの名称を並列分散処理制御サーバ１３０へ送信する（Ｓ１１２）。
【００６９】
次に、並列分散処理制御サーバ１３０の処理割当制御部１３３１が、データ転送制御サーバ１４０から受信した処理遅延サーバ名に該当する並列分散処理実行サーバ１２０に存在する未割当のデータブロックの中から、任意に一つのデータブロックを選択する（Ｓ１１３）。すなわち、処理割当制御部１３３１は、データ情報管理テーブル３００を参照して、データ転送制御サーバ１４０から受信した処理遅延サーバ名と一致するデータ配置サーバ名３０２のうち、割当状態３０３が未割当のデータブロックＩＤから、ひとつのデータブロックＩＤを任意に選択する。この選択はデータブロックＩＤの昇順やラウンドロビンなど周知または公知の手法で選択すればよい。
【００７０】
そして、並列分散処理制御サーバ１３０のデータ情報管理部１３３２が、データ情報管理テーブル３００において選択したデータブロックの割当状態３０３を「割当済み」に更新する。また、処理割当制御部１３３１が、処理完了通知を送信した並列分散処理実行サーバ１２０に、上記「割当済み」に更新したデータブロックの処理要求を送信し、計算機システム１０は処理を図２ＡのステップＳ１０３に戻す（Ｓ１１４）。なお、並列分散処理実行サーバ１２０に対して送信されるデータブロックの処理要求は、選択したデータブロックのデータブロックＩＤと、前記データブロックの処理を実行するタスクＩＤとを含む。
【００７１】
なお、ステップＳ１０７〜Ｓ１１４の詳細は後述する。
【００７２】
＜データ情報管理テーブル＞
【００７３】
図３は、本発明の第１の実施形態を示し、データ情報管理テーブル３００の一例を示す図である。
【００７４】
データ情報管理テーブル３００は、入力データ１２４１を規定サイズで分割した複数のデータブロックで構成され、各データブロックを管理するための属性情報として、各データブロックを識別するためのデータブロックＩＤ３０１と、データ配置サーバ名３０２と、データブロックの処理が既に割り当てられたか否かを示す割当状態３０３と、データブロックの処理が終了したか否かを示す処理状態３０４からひとつのエントリが構成される。
【００７５】
割当状態３０３の欄には、「割当済み」、「未割当」等の情報が格納され、処理状態３０４の欄には、「処理済み」、「未処理」等の情報が格納される。データ配置サーバ名３０２には、並列分散処理実行サーバ１２０の名称または識別子が格納される。図示の例では、「サーバＡ」が図１Ａの並列分散処理実行サーバ１２０−１に相当し、「サーバＢ」が並列分散処理実行サーバ１２０−１に相当するものとする。
【００７６】
＜Ｓ１０７〜Ｓ１１４の詳細（並列分散処理実行サーバへの処理の割り当て）＞
【００７７】
図４Ａ、図４Ｂは、図２ＡのＳ１１６の割当処理を示し、図２ＢのステップＳ１０７からＳ１１４の並列分散処理実行サーバ１２０への処理の割り当てに関する詳細な手順を示すフローチャートである。なお、図４Ａ、図４Ｂの処理は、並列分散処理制御サーバ１３０上の処理割当制御部１３３１、データ情報管理部１３３２、タスク管理部１３３４が行なう処理である。
【００７８】
まず、並列分散処理実行サーバ１２０から処理完了通知としてタスクＩＤを受信した処理割当制御部１３３１が、タスク管理部１３３４にタスク管理テーブル６００の更新を要求する。また、処理割当制御部１３３１が、データ情報管理部１３３２に未割当のデータブロックを持つ並列分散処理実行サーバ１２０のサーバ名リストを要求する（Ｓ２０１）。
【００７９】
次に、タスク管理テーブル６００の更新要求を受信したタスク管理部１３３４が、タスク管理テーブル６００で該当するタスクの実行状態６０３を「待ち」に更新し、処理データブロックＩＤ６０４をＮＵＬＬ値に更新する（Ｓ２０２）。
【００８０】
続いて、データ情報管理部１３３２が、データ情報管理テーブル３００を参照し、処理完了通知を送信した並列分散処理実行サーバ１２０の処理済みデータ率を算出して、データ転送制御サーバ１４０に処理済みデータ率と並列分散処理実行サーバ１２０の名称を送信する。処理済みデータ率を受信したデータ転送制御サーバ１４０は、受信したサーバ名の処理状況管理テーブル８００の処理済みデータ率８０２を更新する（Ｓ２０３）。
【００８１】
なお、処理済みデータ率の算出方法は、データ情報管理部１３３２が、並列分散処理実行サーバ１２０に格納されているデータブロック数に対する、データ情報管理テーブル３００の処理状態３０４が「処理済み」のデータブロック数の比率を求めることで行われる。すなわち、処理済みデータ率は、並列分散処理実行サーバ１２０が格納している全データブロックに対して、現時点までに処理が完了したデータブロックの割合であり、以下の式（１）で算出されるものである。
【００８２】
処理済みデータ率  ＝  格納されている「処理済み」のデータブロック数
【００８３】
÷  格納されているデータブロック数  ・・・  （１）
【００８４】
そして、データ情報管理部１３３２が、データ情報管理テーブル３００を参照し、割当状態３０３が「未割当」のデータブロックを持つ並列分散処理実行サーバ１２０のサーバ名リストを作成し、処理割当制御部１３３１に送信する（Ｓ２０４）。
【００８５】
未割当のデータブロックを持つ並列分散処理実行サーバ１２０のサーバ名リストを受信した処理割当制御部１３３１は、処理完了通知を送信した並列分散処理実行サーバ１２０がリストに存在するか否かを判定する（Ｓ２０５）。
【００８６】
ステップＳ２０５の判定の結果、処理完了通知を送信した並列分散処理実行サーバ１２０がリストに存在する場合（Ｓ２０５→Ｙｅｓ）は、処理割当制御部１３３１が、データ情報管理テーブル３００を参照し、処理完了通知を送信した並列分散処理実行サーバ１２０に保存されている未割当のデータブロックの中から、任意に一つのデータブロックを選択する（Ｓ２０６）。
【００８７】
ステップＳ２０５の判定の結果、処理完了通知を送信した並列分散処理実行サーバ１２０がリストに存在しない場合（Ｓ２０５→Ｎｏ）は図４Ｂの処理に進む。処理割当制御部１３３１は、処理完了通知を送信した並列分散処理実行サーバ１２０のタスクが次に処理するデータブロックを持つ並列分散処理実行サーバ１２０のサーバ名をデータ転送制御サーバ１４０に要求する（Ｓ２０７）。なお、サーバ名の要求は、処理完了通知を送信した並列分散処理実行サーバ１２０のサーバ名と、未割当のデータブロックを持つ並列分散処理実行サーバ１２０のサーバ名リストとを含む。
【００８８】
次に、データ転送制御サーバ１４０が、処理完了通知を送信した並列分散処理実行サーバが次に処理するデータブロックを格納している並列分散処理実行サーバ１２０を抽出し、並列分散処理制御サーバ１３０の処理割当制御部１３３１に送信する（Ｓ２０８）。このステップＳ２０８の処理の詳細については後述する。
【００８９】
続いて、処理割当制御部１３３１が、データ転送制御サーバ１４０から受信したサーバ名に該当する並列分散処理実行サーバ１２０に格納されている未割当のデータブロックの中から、任意に一つのデータブロックを選択する（Ｓ２０９）。
【００９０】
そして、処理割当制御部１３３１は、上記受信したサーバ名に該当する並列分散処理実行サーバ１２０に、処理完了通知を送信した並列分散処理実行サーバ１２０へ、選択したデータブロックの転送を実行するよう要求する（Ｓ２１０）。なお、データブロックの転送要求は、選択したデータブロックのデータブロックＩＤと、処理完了通知を送信した並列分散処理実行サーバ１２０のサーバ名とを含む。
【００９１】
そして、処理割当制御部１３３１は、データ情報管理部１３３２にデータ情報管理テーブル３００の更新を要求し、タスク管理部１３３４にタスク管理テーブル６００の更新を要求する（Ｓ２１１）。なお、データ情報管理テーブル３００の更新要求は、選択したデータブロックのデータブロックＩＤ３０１とデータ配置サーバ名３０２を含み、タスク管理テーブル６００の更新要求は、並列分散処理実行サーバ１２０から処理完了通知として受信したタスクＩＤ６０１と、選択したデータブロックの処理データブロックＩＤ６０４を含む。
【００９２】
データ情報管理部１３３２は、受信した更新要求に含まれるデータブロックＩＤ３０１に該当するデータブロックの割当状態３０３を「割当済み」に更新し、タスク管理部１３３４は、受信したタスクＩＤに該当するタスク管理テーブル６００のタスクの実行状態６０３を「実行中」に更新し、受信したデータブロックＩＤで処理対象データブロックＩＤ６０４を更新する（Ｓ２１２）。
【００９３】
そして、処理割当制御部１３３１は、処理完了通知を送信した並列分散処理実行サーバ１２０に、選択したデータブロックの処理実行要求を送信する（Ｓ２１３）。なお、処理実行要求は、選択したデータブロックのデータブロックＩＤと、処理を割り当てるタスクＩＤとを含む。
【００９４】
＜処理実行サーバ管理テーブル＞
【００９５】
図５は、本発明の第１の実施形態を示し、処理実行サーバ管理テーブル５００の一例を示す図である。
【００９６】
処理実行サーバ管理テーブル５００は、並列分散処理実行サーバ１２０を管理する属性情報として、各並列分散処理実行サーバ１２０を識別するためのサーバ名５０１の情報を有する。
【００９７】
＜タスク管理テーブル＞
【００９８】
図６は、本発明の第１の実施形態を示し、タスク管理部１３３４が管理するタスク管理テーブル６００の一例を示す図である。
【００９９】
タスク管理テーブル６００は、並列分散処理実行サーバ１２０の各タスクを管理する属性情報として、各タスクを識別する識別子を格納するタスクＩＤ６０１と、タスクが存在する並列分散処理実行サーバ１２０の名称または識別子を格納するサーバ名６０２と、タスクが処理を実行中であるか否かを示す実行状態６０３と、タスクが処理しているデータブロックの識別子を示す処理データブロックＩＤ６０４から一つのエントリを構成する。実行状態６０３の欄には、「実行中」、「待ち」等の情報が格納される。
【０１００】
＜Ｓ２０８の詳細（データブロックの転送元サーバの決定）＞
【０１０１】
図７Ａ、図７Ｂは、図４ＢのステップＳ２０８の詳細な処理手順を示すフローチャートである。なお、図７Ａ、図７Ｂの処理は、データ転送制御サーバ１４０上の処理遅延サーバ抽出処理部１４３１、空きリソース量比較処理部１４３２、処理状況管理部１４３３が行なう処理である。
【０１０２】
上記ステップＳ２０８は、データ転送制御サーバ１４０が、処理完了通知を送信した並列分散処理実行サーバが次に処理するデータブロックを格納している並列分散処理実行サーバ１２０を抽出し、並列分散処理制御サーバ１３０の処理割当制御部１３３１にデータブロックを有するサーバ名を送信する処理である。
【０１０３】
まず、データ転送制御サーバ１４０の処理遅延サーバ抽出処理部１４３１が、処理完了通知を送信した並列分散処理実行サーバ１２０のサーバ名と、未割当のデータブロックを持つ並列分散処理実行サーバ１２０のサーバ名のリストとを、並列分散処理制御サーバ１３０から受信する（Ｓ３０１）。このサーバ名のリストは、図４ＢのステップＳ２０７で処理割当制御部１３３１が生成した未割当のデータブロックを持つ並列分散処理実行サーバ１２０のサーバ名リストである。
【０１０４】
次に、処理遅延サーバ抽出処理部１４３１は、処理状況管理部１４３３に、未割当のデータブロックをもつ並列分散処理実行サーバ１２０の処理済みデータ率を要求する（Ｓ３０２）。なお、処理済みデータ率の要求は、データ転送制御サーバ１４０の処理遅延サーバ抽出処理部１４３１が図４ＡのステップＳ２０３で受信した、未割当のデータブロックを持つ並列分散処理実行サーバ１２０のサーバ名リストを含む。
【０１０５】
続いて、サーバ名リストを受信した処理状況管理部１４３３は、処理状況管理テーブル８００を参照し、サーバ名リストに含まれる並列分散処理実行サーバ１２０の処理済みデータ率を抽出し、処理遅延サーバ抽出処理部１４３１に処理済みデータ率を送信する（Ｓ３０３）。
【０１０６】
そして、処理遅延サーバ抽出処理部１４３１は、処理遅延閾値テーブル１０００を参照して、処理遅延閾値１００１を取得する。処理遅延サーバ抽出処理部１４３１は、並列分散処理制御サーバ１３０から受信したサーバ名リストに含まれる並列分散処理実行サーバ１２０の処理済みデータ率と、処理遅延閾値１００１を比較して、処理遅延閾値１００１より処理済みデータ率が小さく、処理の進捗が遅い並列分散処理実行サーバ１２０を抽出する（Ｓ３０４）。なお、処理遅延閾値１００１は、並列分散処理処理実行以前に予めユーザや管理者などが設定しておく。
【０１０７】
続いて、処理遅延サーバ抽出処理部１４３１が、ステップＳ３０４で抽出した処理の進捗の遅い並列分散処理実行サーバ１２０が存在するか否かを判定する（Ｓ３０５）。
【０１０８】
ステップＳ３０５の判定の結果、処理の進捗の遅い並列分散処理実行サーバ１２０が存在する場合（Ｓ３０５→Ｙｅｓ）は、処理遅延サーバ抽出処理部１４３１が、処理の進捗の遅い並列分散処理実行サーバ１２０のサーバ数が１台であるか判定する（図７ＢのＳ３０８）。
【０１０９】
ステップＳ３０８の判定の結果、処理の進捗の遅い並列分散処理実行サーバ１２０が１台の場合（Ｓ３０８→Ｙｅｓ）、処理遅延サーバ抽出処理部１４３１が、並列分散処理制御サーバ１３０に、処理完了通知を送信した並列分散処理実行サーバ１２０が次に処理するデータブロックの転送元サーバとして、処理の進捗の遅い並列分散処理実行サーバのサーバ名を送信する（Ｓ３１５）。
【０１１０】
ステップＳ３０８の判定の結果、処理の進捗の遅い並列分散処理実行サーバ１２０が複数ある場合（Ｓ３０８→Ｎｏ）、処理遅延サーバ抽出処理部１４３１が、処理状況管理部１４３３に、処理の進捗の遅い並列分散処理実行サーバ１２０の実行多重度を要求する（Ｓ３０９）。並列分散処理実行サーバ１２０の実行多重度は、同時に実行するタスクの数を示す。そして、ステップＳ３０９では、実行多重度を各並列分散処理実行サーバ１２０の単位時間当たりの処理性能として扱う。なお、実行多重度の要求は、処理の進捗の遅い並列分散処理実行サーバ１２０のサーバ名リストを含む。また、単位時間当たりの処理性能を示す値として、ＣＰＵの処理能力やメモリの容量等のハードウェアスペックを示す値を利用しても構わない。
【０１１１】
続いて、処理の進捗の遅いサーバの実行多重度を受信した処理状況管理部１４３３が、処理状況管理テーブル８００を参照し、サーバ名リストに含まれる各並列分散処理実行サーバ１２０の実行多重度８０３を取得して、処理遅延サーバ抽出処理部１４３１に送信する（Ｓ３１１）。
【０１１２】
そして、処理遅延サーバ抽出処理部１４３１は、処理の進捗の遅い並列分散処理実行サーバ１２０の中で、実行多重度の最も少ない並列分散処理実行サーバ１２０を、処理遅延サーバとして抽出する（Ｓ３１１）。
【０１１３】
なお、単位時間当たりの処理性能として、ＣＰＵの処理能力やメモリ容量等のハードウェアスペックを利用した場合、処理遅延サーバ抽出処理部１４３１は、処理の進捗の遅い並列分散処理実行サーバ１２０の中で、ハードウェアスペックの最も低い並列分散処理実行サーバ１２０を処理遅延サーバとして抽出する。
【０１１４】
図９は、処理状況管理テーブルの変形例を示し、図８に示した処理状況管理テーブル８００の実行多重度８０３に代わって、ハードウェアスペック９０３〜９０５を用いるようにしたものである。
【０１１５】
図９の処理状況管理テーブル８００'は、図８に示した処理状況管理テーブル８００の実行多重度８０３に代わって、並列分散処理実行サーバ１２０のＣＰＵ１２２の種別を格納するＣＰＵ種別９０３と、ＣＰＵ１２２のコア数９０４と、主記憶装置１２３の種別を格納するメモリ種別９０５からひとつのエントリを構成する。
【０１１６】
処理状況管理テーブル８００'において、ＣＰＵ種別９０３＝「ＣＰＵ１」は高スペック（高性能）のＣＰＵ１２２であることを示し、「ＣＰＵ２」は低スペックのＣＰＵを示し、メモリ種別の「メモリ１」は高スペック（高性能）のメモリ、「メモリ２」は低スペックのメモリを示しており、ハードウェアスペックの最も低い並列分散処理実行サーバ１２０は、１コアの「ＣＰＵ２」と、低スペックの「メモリ２」と、を備えるサーバＤである。なおＣＰＵ種別９０３に代わって、ＣＰＵ１２２の動作クロック数とコア数及びキャッシュの容量でＣＰＵの処理能力を表すようにしてもよい。
【０１１７】
続いて、処理遅延サーバ抽出処理部１４３１は、ステップＳ３１１で抽出した処理遅延サーバ数が１台であるか否かを判定する（Ｓ３１２）。
【０１１８】
ステップＳ３１２の判定の結果、処理遅延サーバ数が１台の場合（Ｓ３１２→Ｙｅｓ）、ステップＳ３１５の処理に進み、処理遅延サーバのサーバ名を並列分散処理制御サーバ１３０に送信する（Ｓ３１５）。
【０１１９】
ステップＳ３１２の判定の結果、処理遅延サーバ数が複数である場合（Ｓ３１２→Ｎｏ）、処理遅延サーバ抽出処理部１４３１が、処理完了通知を送信した並列分散処理実行サーバ１２０のサーバ名と、処理遅延サーバのサーバ名リストを空きＩ／Ｏリソース量比較処理部１４３２に送信する（Ｓ３１３）。
【０１２０】
続いて、空きＩ／Ｏリソース量比較処理部１４３２が、リソース使用量管理サーバ１５０に、処理完了通知を送信した並列分散処理実行サーバ１２０と、処理遅延サーバの空きＩ／Ｏリソース量を要求する（Ｓ３１４）。なお、空きＩ／Ｏリソース量の要求は、処理完了通知を送信した並列分散処理実行サーバ１２０のサーバ名と、処理遅延サーバのサーバ名リストを含む。
【０１２１】
ステップＳ３０５の結果、処理の進捗の遅い並列分散処理実行サーバ１２０が存在しない場合（Ｓ３０５→Ｎｏ）、処理遅延サーバ抽出処理部１４３１が、空きＩ／Ｏリソース量比較処理部１４３２に、処理完了通知を送信した並列分散処理実行サーバ１２０のサーバ名と、未割当のデータブロックを持つ並列分散処理実行サーバ１２０のサーバ名リストを送信する（Ｓ３０６）。
【０１２２】
そして、空きＩ／Ｏリソース量比較処理部１４３２が、リソース使用量管理サーバ１５０に処理完了通知を送信した並列分散処理実行サーバ１２０と、未割当のデータブロックを持つ並列分散処理実行サーバ１２０のサーバ名リストを送信し、各並列分散処理実行サーバ１２０の空きＩ／Ｏリソース量を要求する（Ｓ３０７）。なお、空きＩ／Ｏリソース量の要求は、処理完了通知を送信した並列分散処理実行サーバのサーバ名と、未割当のデータブロックを持つ並列分散処理実行サーバ１２０のサーバ名リストを含む。
【０１２３】
次に、リソース使用量管理サーバ１５０が、データ転送制御サーバ１４０から受信した処理完了通知を送信した並列分散処理実行サーバ１２０と、サーバ名リストに含まれる並列分散処理実行サーバ１２０の空きＩ／Ｏリソース量を、空きＩ／Ｏリソース量比較処理部１４３２に送信する（図７ＡのＳ３１６）。なお、空きＩ／Ｏリソース量は、ネットワークＩ／Ｏの空きリソース量と、ディスクＩ／Ｏの空きリソース量とを含む。ステップＳ３１６の処理の詳細については後述する。
【０１２４】
そして、空きＩ／Ｏリソース量比較処理部１４３２が、処理完了通知を送信した並列分散処理実行サーバ１２０の空きＩ／Ｏリソース量と、各並列分散処理実行サーバ１２０の空きＩ／Ｏリソース量を比較し、最も空きＩ／Ｏリソース量の差が小さい並列分散処理実行サーバ１２０を、処理完了通知を送信した並列分散処理実行サーバ１２０が次に処理するデータブロックの転送元サーバとして抽出する。空きＩ／Ｏリソース量比較処理部１４３２は、抽出した並列分散処理実行サーバ１２０のサーバ名を並列分散処理制御サーバ１３０へ送信する（Ｓ３１７）。
【０１２５】
なお、空きＩ／Ｏリソース量の比較方法は、空きＩ／Ｏリソース量比較処理部１４３２が、ディスクＩ／Ｏの空きリソース量の差の絶対値と、ネットワークＩ／Ｏの空きリソース量の差の絶対値を求め、各空きＩ／Ｏリソース量の差の絶対値が大きい方の値を求めることで行なわれる。すなわち、空きＩ／Ｏリソース量の差は以下の式（２）で算出されるものである。
【０１２６】
空きＩ／Ｏリソース量の差  ＝  ｍａｘ｛｜ディスクＩ／Ｏの空きリソース量の差｜、｜ネットワークＩ／Ｏの空きリソース量の差｜｝  ・・・  （２）
【０１２７】
なお、処理完了通知を送信した並列分散処理実行サーバ１２０が次に処理するデータブロックの転送元サーバ抽出のバリエーションとして、処理完了通知を送信した並列分散処理実行サーバの空きＩ／Ｏリソース量を、可能な限りデータブロックの転送に利用するために、ディスクＩ／ＯとネットワークＩ／Ｏの空きリソース量が、処理完了通知を送信した並列分散処理実行サーバ１２０より多い空きＩ／Ｏリソース量を持つ並列分散処理実行サーバ１２０の中から、最も空きＩ／Ｏリソース量の差が小さい並列分散処理実行サーバを抽出してもよい。
【０１２８】
＜処理状況管理テーブル＞
【０１２９】
図８は、本発明の第１の実施形態を示し、処理状況管理テーブル８００の一例を示す図である。図９は、処理状況管理テーブルの変形例を示し、図８に示した処理状況管理テーブル８００の実行多重度８０３に代わって、ハードウェアスペック９０３〜９０５を用いるようにしたものである。
【０１３０】
ここで、図８は並列分散処理実行サーバ１２０の単位時間当たりの処理性能として、実行多重度を利用した場合を示し、図９は並列分散処理実行サーバの単位時間当たりの処理性能として、ＣＰＵやメモリ等のハードウェアスペックを利用した場合を示している。
処理状況管理テーブル８００は、各並列分散処理実行サーバ１２０の処理の進捗状況を管理する属性情報として、各並列分散処理実行サーバ１２０を識別するためのサーバ名８０１、各並列分散処理実行サーバに格納されているデータブロックに対する、処理済みのデータブロックの割合を示す処理済みデータ率８０２、各並列分散処理実行サーバ１２０の単位時間当たりの処理性能を示す実行多重度８０３の各情報を有する。
【０１３１】
図９の処理状況管理テーブル８００'は、前記処理状況管理テーブル８００から、実行多重度８０３が削除され、各並列分散処理実行サーバ１２０の単位時間当たりの処理性能としてＣＰＵのスペック名称を示すＣＰＵ種別９０３、ＣＰＵコア数９０４、メモリのスペック名称を示すメモリ種別９０４の各情報が追加されている。
【０１３２】
＜処理遅延閾値管理テーブル＞
【０１３３】
図１０は、本発明の第１の実施形態を示し、処理遅延閾値管理テーブルの一例を示す図である。
【０１３４】
処理遅延閾値管理テーブル１０００は、各並列分散処理実行サーバ１２０の処理の進捗が遅延しているか判定するための基準を管理する属性情報として、並列分散処理実行サーバ１２０の処理済みデータ率が小さく、処理が遅れているか否かを判定するための閾値の情報を有する。
【０１３５】
＜Ｓ３１６の詳細（空きＩ／Ｏリソース量の取得）＞
【０１３６】
図１１は、図７ＡのステップＳ３１６の詳細な処理手順を示すフローチャートである。なお、図１１の処理は、リソース使用量管理サーバ１５０上のリソース使用量管理部１５３１が行なう処理である。
【０１３７】
まず、リソース使用量管理部１５３１が、処理完了通知を送信した並列分散処理実行サーバ１２０のサーバ名と、サーバ名リストを、データ転送制御サーバ１４０から受信する（Ｓ４０１）。
【０１３８】
続いて、リソース使用量管理部１５３１が、リソース使用量管理テーブル１２００を参照し、各並列分散処理実行サーバ１２０のネットワークＩ／Ｏの空きＩ／Ｏリソース量と、ディスクＩ／Ｏの空きＩ／Ｏリソース量を算出し、データ転送制御サーバ１４０へ送信する（Ｓ３１６）。
【０１３９】
＜リソース使用量管理テーブル＞
【０１４０】
図１２は、本発明の第１の実施形態を示し、リソース使用量管理テーブル１２００の一例を示す図である。
【０１４１】
リソース使用量管理テーブル１２００は、各並列分散処理実行サーバ１２０のＩ／Ｏリソース使用量を管理する属性情報として、各並列分散処理実行サーバ１２０を識別するためのサーバ名１２０１、ネットワークＩ／Ｏ使用量１２０２、ディスクＩ／Ｏ使用量１２０３の各情報を有する。
【０１４２】
なお、リソース使用量管理テーブル１２００では、ネットワークＩ／Ｏ使用量、ディスクＩ／Ｏ使用量を各並列分散処理実行サーバ全体のＩ／Ｏ帯域幅に対する使用している帯域幅の割合で示したが、使用しているＩ／Ｏ帯域幅をそのまま利用しても構わない。
【０１４３】
＜データブロックの転送元となる並列分散処理実行サーバ選択の概念図＞
【０１４４】
次に、図１３を参照して、本発明の第１の実施形態を示し、データブロックの転送元となる並列分散処理実行サーバ１２０を選択する処理の概念を説明する。
【０１４５】
図１３は、並列分散処理実行サーバが４台の並列分散処理実行サーバ１２０−１〜１２０−４が稼動する環境下で、並列分散処理実行サーバＡからタスクＡ３の処理完了通知を並列分散処理制御サーバ１３０が受信した際の、データブロックの転送元サーバ選択の例を示すものである。なお、並列分散処理実行サーバ１２０−１は並列分散処理実行サーバＡで示し、並列分散処理実行サーバ１２０−２〜１２０−４を並列分散処理実行サーバＢ〜Ｄで示す。
【０１４６】
図１３において、データ情報管理テーブル３００から、未処理のデータブロックがまだ存在し、処理完了通知を送信した並列分散処理実行サーバＡに格納されているデータブロック１〜１０は全て割当済みであることを示している。
【０１４７】
処理割当制御部１３３１は、データ情報管理部１３３２から未割当のデータブロックを持つ並列分散処理実行サーバ１２０のサーバ名リスト「サーバＢ、サーバＣ、サーバＤ」を取得し、処理完了通知を送信した並列分散処理実行サーバＡに未割当のデータブロックが存在しないことを確認する。続いて、処理割当制御部１３３１は、データ転送制御サーバ１４０に処理完了通知を送信した並列分散処理実行サーバ１２０のサーバ名「サーバＡ」と、未割当のデータブロック２０、３０、４０を持つ並列分散処理実行サーバ１２０のサーバ名リスト「サーバＢ、サーバＣ、サーバＤ」を送信する。
【０１４８】
次に、データ転送制御サーバ１４０の処理遅延サーバ抽出処理部１４３１が、受信したサーバ名リストに含まれる並列分散処理実行サーバＢ、Ｃ、Ｄの処理済みデータ率を、処理状況管理部１４３３から取得する。そして、処理遅延閾値管理テーブル１０００に格納されている閾値と、各並列分散処理実行サーバＢ、Ｃ、Ｄの処理済みデータ率をそれぞれ比較する。比較の結果、処理の進捗の遅い並列分散処理実行サーバ１２０として、閾値５０％よりも処理済みデータ率が小さい並列分散処理実行サーバＣ、Ｄが抽出され、抽出した並列分散処理実行サーバ１２０のサーバ名リスト「サーバＣ、サーバＤ」を処理状況管理部１４３３に送信し、各並列分散処理実行サーバ１２０の実行多重度を得る。
【０１４９】
そして、各並列分散処理実行サーバ１２０の実行多重度を比較し、並列分散処理実行サーバＣ、Ｄともに実行多重度は１であるため、並列分散処理実行サーバＣ、Ｄを処理遅延サーバとして抽出し、処理完了通知を送信した並列分散処理実行サーバＡのサーバ名と共に、空きＩ／Ｏリソース量比較処理部１４３２に送信する。
【０１５０】
続いて、空きＩ／Ｏリソース量比較処理部１４３２は、処理完了通知を送信した並列分散処理実行サーバＡと、処理遅延サーバＢ、Ｃの空きＩ／Ｏリソース量をリソース使用量管理サーバ１５０から取得する。そして、処理完了通知を送信した並列分散処理実行サーバＡと、各処理遅延サーバＣ、Ｄの空きＩ／Ｏリソース量を比較する。比較の結果、並列分散処理実行サーバＡと並列分散処理実行サーバＣの空きＩ／Ｏリソース量の差は３０％、並列分散処理実行サーバＡと並列分散処理実行サーバＤの空きＩ／Ｏリソース量の差は５％となり、空きＩ／Ｏリソース量比較処理部１４３２は、空きＩ／Ｏリソース量の差の小さい並列分散処理実行サーバＤをデータブロックの転送元サーバとして選択する。続いて、空きＩ／Ｏリソース量比較処理部１４２３は、並列分散処理制御サーバ１３０に、選択した並列分散処理実行サーバ１２０のサーバ名「サーバＤ」を送信する。
【０１５１】
サーバ名「サーバＤ」を受信した並列分散処理制御サーバ１３０の処理割当制御部１３３１は、並列分散処理実行サーバＤに格納されている未割当のデータブロックの中から「データ４０」を選択し、並列分散処理実行サーバＤに対して、「データ４０」の並列分散処理実行サーバＡへの転送を要求する。そして、処理割当制御部１３３１は、並列分散処理実行サーバＡに対して、転送したデータブロック「データ４０」のタスクＡ３での処理実行要求を送信する。
【０１５２】
＜まとめ＞
【０１５３】
以上のように第１の実施形態によれば、並列分散処理の実行中に利用可能なコンピュータリソースが変化し、並列分散処理の実行多重度が変化する並列分散処理システムであっても、ある並列分散処理実行サーバに他の並列分散処理実行サーバ上に格納されたデータブロックの処理を割り当てる際に、各並列分散処理実行サーバの処理の進捗状況と、単位時間当たりのデータ処理能力から、処理の進捗の遅いサーバを抽出し、抽出した並列分散処理実行サーバと、データブロックの処理を割り当てる並列分散処理実行サーバの空きＩ／Ｏリソース量を比較し、最も差の小さい並列分散処理実行サーバをデータブロックの転送元サーバとして選択することで、データ転送回数を削減し、データ転送時間を短縮して、並列分散処理全体を効率的に実行することができる。
【０１５４】
なお、上記第１実施形態では、上記図７ＢのステップＳ３１１の処理で、最も性能の低い並列分散処理実行サーバ１２０を選択する例として、実行多重度を用いたが、上述のようにハードウェアスペックの値を用いて、最もハードウェアスペックの低い並列分散処理実行サーバ１２０を最も処理性能の低い計算機として選択することができる。
【０１５５】
また、単位時間当たりの処理性能として、ＣＰＵの処理能力やメモリ容量等のハードウェアスペックを利用した場合、処理遅延サーバ抽出処理部１４３１は、処理の進捗の遅い並列分散処理実行サーバ１２０の中で、ハードウェアスペックの最も低い並列分散処理実行サーバ１２０を処理遅延サーバとして抽出するようにしてもよい。
【０１５６】
また、処理遅延サーバの判定は、上述の処理済みデータ率と閾値１００１に限定されるものではなく、処理（タスク）の実行開始から所定時間を経過しても処理完了通知を送信していない並列分散処理実行サーバ１２０を処理遅延サーバとしてもよい。処理遅延サーバの判定は、この他、所定時間経過後のデータブロックの未処理の比率と閾値を比較するようにしても良い。
【０１５７】
また、空きＩ／Ｏリソース量を実使用量と理論値の比率で表す例を示したが、ネットワークインターフェース１２１や二次記憶装置１２４の実効値や、理論値に所定比率を乗じた値を用いることができる。すなわち、
ネットワークＩ／Ｏの空きＩ／Ｏリソース量  ＝  （実効値−現在使用帯域）÷  実効値
である。また、二次記憶装置１２４で利用可能なデータ転送速度（ＭＢｙｔｅ／ｓｅｃ）も、
ディスクＩ／Ｏの空きＩ／Ｏリソース量  ＝  （実効値−現在使用帯域）÷  実効値
とすることができる。なお、実効値に代わって、理論値に所定の比率を乗じた値を用いてもよい。
【０１５８】
＜第２実施形態＞
【０１５９】
次に、図１４Ａ〜図１８を参照して、本発明の第２の実施形態について説明する。
【０１６０】
前述の第１の実施形態では、各並列分散処理実行サーバ１２０は１台の物理サーバとして稼動し、ある並列分散処理実行サーバ１２０に、他の並列分散処理実行サーバ１２０に格納されたデータブロックの処理を割り当てる際に、各並列分散処理実行サーバ１２０の処理の進捗率と、空きリソース量を基に、データブロックの転送元サーバを選択していた。しかし、物理サーバ上で複数の並列分散処理実行サーバ１２０が仮想サーバとして実行される場合、同一物理サーバ上で稼動する並列分散処理実行サーバ１２０間のデータ転送は、ネットワーク１００を経由したデータの転送を必要とせず、物理サーバの内部での通信となるため、異なる物理サーバ上で稼動する並列分散処理実行サーバ１２０間のデータ転送よりも、データブロックの転送時間が短くなる可能性がある。
【０１６１】
そこで、第２の実施形態では、物理サーバ上に複数の並列分散処理実行サーバ１２０が仮想サーバとして稼動する環境下において、ある並列分散処理実行サーバ１２０に、他の並列分散処理実行サーバ１２０に格納されたデータブロックの処理を割り当てる際に、同一物理サーバ上で稼動する並列分散処理実行サーバ１２０からデータブロックの転送元サーバを選択することを優先した上で、各並列分散処理実行サーバ１２０の処理の進捗率と、空きリソース量を基に、データブロックの転送元サーバとして選択するものである。
【０１６２】
＜システム構成＞
【０１６３】
図１４Ａ、図１４Ｂは、本発明の第２の実施形態を示し、計算機システム２０の一例を示すブロック図である。
【０１６４】
図１４Ａ、図１４Ｂに示す計算機システム２０には、並列分散処理実行サーバ１２０は、並列分散処理を実行する仮想サーバとして物理サーバ２１０−１で実行される。物理サーバ２１０−１〜２１０−ｎの総称は物理サーバ２１０とする。
【０１６５】
物理サーバ２１０は、物理リソース２２０上で実行される仮想化部２３０が複数の仮想サーバを提供し、各仮想サーバは並列分散処理実行サーバ１２０として実行される。仮想化部２３０は、物理リソース２２０を複数の並列分散処理実行サーバ１２０に割り当てるハイパーバイザやＶＭＭ（Virtual Machine Monitor）で構成される。物理リソース２２０は、ＣＰＵ１２２、主記憶装置１２３、ネットワークインターフェース１２１、二次記憶装置１２４から構成される。
【０１６６】
仮想化部２３０は、各並列分散処理実行サーバ１２０に対して、仮想（または論理）ＣＰＵ１２２ｖ、仮想主記憶装置１２３ｖ、仮想ネットワークインターフェース１２１ｖ、仮想化された二次記憶装置１２４ｖを提供する。
【０１６７】
各並列分散処理実行サーバ１２０の機能要素は前記第１実施形態と同様である。また、並列分散処理制御サーバ１３０、データ転送制御サーバ１４０及びリソース使用量管理サーバ１５０も前記第１実施形態同様に構成される。ただし、処理実行サーバ管理テーブル１７００と、処理状況管理テーブル１８００は、前記第１実施形態の構成に、物理サーバ２１０と仮想サーバの対応関係が加えられた点が、前記第１実施形態との相違点である。
【０１６８】
＜全体処理＞
【０１６９】
図１５Ａ、図１５Ｂは、本発明の第２の実施形態を示し、並列分散処理実行方法に関する全体処理の手順を示すフローチャートである。なお、図１５Ａ、図１５Ｂは、第１実施形態の図２Ａ、図２Ｂに対応する処理である。
【０１７０】
まず、クライアント装置１１０から並列分散処理制御サーバ１３０へ、処理対象データ（入力データ１２４１）のデータロードの要求が送信される。データロードの要求を受信した並列分散処理制御サーバ１３０は、ロード対象データを規定のサイズのデータブロック（入力データ１２４１）に分割し、複数の並列分散処理実行サーバ１２０に分散してロードする（Ｓ５０１）。
【０１７１】
次に、クライアント装置１１０から並列分散処理制御サーバ１３０へ、並列分散処理実行要求が送信される。並列分散処理実行要求を受信した並列分散処理制御サーバ１３０の処理割当制御部１３３１は、各並列分散処理実行サーバ１２０に、ロードされたデータブロックの処理実行要求を送信し、データ情報管理部１３３２がデータ情報管理テーブル３００の処理対象となるデータブロックの割当状態３０３を「割当済み」に更新する（Ｓ５０２）。なお、処理割当制御部１３３１が送信するデータブロックの処理実行要求は、処理対象のデータブロックのデータブロックＩＤと、各データブロックの処理を実行するタスクのタスクＩＤとを含む。なお、ここでタスクは、処理対象のデータブロックを入力データ１２４１として所定の処理を実行するプログラムである。
【０１７２】
続いて、処理実行要求を受信した並列分散処理実行サーバ１２０のユーザ定義処理実行部１２３１は、各タスクにおいて処理実行要求で指定されたデータブロックを入力データ１２４１として所定の処理を実行する（Ｓ５０３）。すなわち、並列分散処理実行サーバ１２０のユーザ定義処理実行部１２３１は、処理実行要求で指定されたタスクを起動し、各タスクに対して処理実行要求で指定されたデータブロックを入力データ１２４１として割り当てて処理を実行させる。
【０１７３】
並列分散処理実行サーバ１２０は、割り当てられたタスクに入力データ１２４１として指定されたデータブロックの処理が完了すると、並列分散処理実行サーバ１２０から並列分散処理制御サーバ１３０へ、処理完了通知として処理の完了したタスクのタスクＩＤを送信する（Ｓ５０４）。
【０１７４】
そして、処理完了通知を受信した並列分散処理制御サーバ１３０のデータ情報管理部１３３２が、データ情報管理テーブル３００の該当するデータブロックＩＤ３０１の処理状態３０４を「処理済み」に更新する（Ｓ５０５）。
【０１７５】
続いて、並列分散処理制御サーバ１３０の処理割当制御部１３３１がデータ情報管理テーブル３００を参照し、全てのデータブロックの処理状態３０４が「処理済み」であるか否かを判定する（Ｓ５０６）。
【０１７６】
ステップＳ５０６の判定の結果、全てのデータブロックが「処理済み」である場合（Ｓ５０６→Ｙｅｓ）、並列分散処理制御サーバ１３０の処理割当制御部１３３１が、クライアント装置１１０に並列分散処理完了通知を送信し、計算機システム１０は処理を終了する。
【０１７７】
ステップＳ５０６の判定の結果、何れかのデータブロックが「処理済み」でない場合（Ｓ５０６→Ｎｏ）、並列分散処理制御サーバ１３０は、データ管理情報テーブル３００を参照し、処理完了通知を送信した並列分散処理実行サーバ１２０に、割当状態４０３が「未割当」のデータブロックが存在するか否かを判定する（Ｓ５０７）。
【０１７８】
ステップＳ５０７の判定の結果、処理完了通知を送信した並列分散処理実行サーバ１２０に未割当のデータブロックが存在する場合（Ｓ５０７→Ｙｅｓ）、並列分散処理制御サーバ１３０の処理割当制御部１３３１が、処理完了通知を送信した並列分散処理実行サーバ１２０に存在する未割当のデータブロックの中から、任意に一つのデータブロックを選択する（Ｓ５０８）。
【０１７９】
ステップＳ５０７の判定の結果、処理完了通知を送信した並列分散処理実行サーバ１２０に未割当のデータブロックが存在しない場合（Ｓ５０７→Ｎｏ）は、図１５Ｂに進む。図１５Ｂでは、並列分散処理制御サーバ１３０がデータ情報管理テーブル３００を参照して、処理完了通知を送信した並列分散処理実行サーバ１２０が稼動する物理サーバ２１０上の他の並列分散処理実行サーバ１２０に、割当状態３０３が「未割当」のデータブロックが存在するか否かを判定する（Ｓ５０９）。つまり、同一の物理サーバ２１０上で未割当のデータブロックを有する仮想サーバを抽出する。
【０１８０】
ステップＳ５０９の判定の結果、未割当のデータブロックが存在する場合（Ｓ５０９→Ｙｅｓ）、並列分散処理制御サーバ１３０は、処理完了通知を送信した並列分散処理実行サーバ１２０の仮想サーバ名と、前記並列分散処理実行サーバ１２０と同一の物理サーバ上で稼動し、未割当のデータブロックを格納している並列分散処理実行サーバ１２０の仮想サーバ名リストをデータ転送制御サーバ１４０に送信する（Ｓ５１０）。
【０１８１】
ステップＳ５０９の判定の結果、同一の物理サーバ２１０上で未割当のデータブロックが存在しない場合（Ｓ５０９→Ｎｏ）、並列分散処理制御サーバ１３０の処理割当制御部１３３１が、処理完了通知を送信した並列分散処理実行サーバ１２０の仮想サーバ名と、未割当のデータブロックを持つ並列分散処理実行サーバ１２０の仮想サーバ名リストをデータ転送制御サーバ１４０に送信する（Ｓ５１１）。
【０１８２】
次に、データ転送制御サーバ１４０の処理遅延サーバ抽出処理部１４３１が、並列分散処理制御サーバ１３０から受信した未割当のデータブロックを持つ仮想サーバ名リストに含まれる並列分散処理実行サーバ１２０の中から、処理遅延サーバを抽出し、処理完了通知を送信した並列分散処理実行サーバ１２０の仮想サーバ名と、抽出したサーバの仮想サーバ名リストと、をリソース使用量管理サーバ１５０へ送信し、各並列分散処理実行サーバ１２０の空きＩ／Ｏリソース量を要求する（Ｓ５１２）。
【０１８３】
続いて、リソース使用量管理サーバ１５０のリソース使用量管理部１５３１が、リソース使用量管理テーブル１２００を参照し、処理完了通知を送信した並列分散処理実行サーバ１２０と、仮想サーバ名リストに含まれる並列分散処理実行サーバ１２０の空きＩ／Ｏリソース量を転送制御サーバ１４０へ送信する（Ｓ５１３）。なお、空きＩ／Ｏリソース量は、前記第１実施形態と同様であり、ネットワークＩ／Ｏの空きＩ／Ｏリソース量と、ディスクＩ／Ｏの空きＩ／Ｏリソース量とを含む。
【０１８４】
そして、データ転送制御サーバ１４０の空きＩ／Ｏリソース量比較処理部１４３２が、処理完了通知を送信した並列分散処理実行サーバ１２０と、各処理遅延サーバの空きＩ／Ｏリソース量を比較し、最も空きＩ／Ｏリソース量の差が小さい処理遅延サーバを抽出し、抽出した前記処理遅延サーバの仮想サーバ名を並列分散処理制御サーバ１３０へ送信する（Ｓ５１４）。
【０１８５】
次に、並列分散処理制御サーバ１３０の処理割当制御部１３３１が、データ転送制御サーバ１４０から受信した仮想サーバ名に該当する並列分散処理実行サーバ１２０に存在する未割当のデータブロックの中から、任意に一つのデータブロックを選択する（Ｓ５１５）。
【０１８６】
そして、並列分散処理制御サーバ１３０のデータ情報管理部１３３２が、データ情報管理テーブル３００において選択したデータブロックの割当状態３０３を「割当済み」に更新する。また、処理割当制御部１３３１が、処理完了通知を送信した並列分散処理実行サーバ１２０に、選択したデータブロックの処理要求を送信し、計算機システム２０は処理をステップＳ５０３に戻す（Ｓ５１６）。なお、データブロックの処理要求は、選択したデータブロックのデータブロックＩＤと、前記データブロックの処理を実行するタスクＩＤとを含む。
【０１８７】
なお、ステップＳ５０７〜Ｓ５１６の詳細については後述する。
【０１８８】
＜Ｓ５０７〜Ｓ５１６の詳細（並列分散処理実行サーバへの処理の割り当て）＞
【０１８９】
図１６Ａ、図１６Ｂは、図１５Ａ、図１５Ｂに示したステップＳ５０７からステップＳ５１６の並列分散処理実行サーバ１２０への処理の割り当てに関する詳細な手順を示すフローチャートである。なお、図１６Ａ、図１６Ｂの処理は、並列分散処理制御サーバ１３０上の処理割当制御部１３３１、データ情報管理部１３３２、タスク管理部１３３４が行なう処理であり、第１実施形態の図４Ａ、図４Ｂに対応する処理である。
【０１９０】
まず、並列分散処理実行サーバ１２０から処理完了通知としてタスクＩＤを受信した、処理割当制御部１３３１が、タスク管理部１３３４にタスク管理テーブル６００の更新を要求する。また、処理割当制御部１３３１がデータ情報管理部１３３２に未割当のデータブロックを持つ並列分散処理実行サーバ１２０の仮想サーバ名リストを要求する（Ｓ６０１）。
【０１９１】
次に、タスク管理テーブル６００の更新要求を受信したタスク管理部１３３４が、タスク管理テーブル６００で該当するタスクの実行状態６０３を「待ち」に更新し、処理データブロックＩＤ６０４をＮＵＬＬ値更新する（Ｓ６０２）。
【０１９２】
続いて、データ情報管理部１３３２が、データ情報管理テーブル３００を参照し、処理完了通知を送信した並列分散処理実行サーバ１２０の処理済みデータ率を算出して、データ転送制御サーバ１４０に処理済みデータ率と並列分散処理実行サーバ１２０の名称を送信する。処理済みデータ率を受信した転送制御サーバ１４０は、受信した仮想サーバ名について処理状況管理テーブル１８００から処理済みデータ率１８０３を更新する（Ｓ６０３）。なお、処理済みデータ率の算出方法は、前記第１実施形態と同様であり、データ情報管理部１３３２が、並列分散処理実行サーバ１２０に格納されているデータブロック数に対する、データ情報管理テーブル３００の処理状態３０４が「処理済み」のデータブロック数の比率を求めることで行われる。すなわち、処理済みデータ率は、並列分散処理実行サーバ１２０が格納している全データブロックに対して、現時点までに処理が完了したデータブロックの割合であり、前記第１実施形態に示した式（１）で算出されるものである。
【０１９３】
そして、データ情報管理部１３３２が、データ情報管理テーブル３００を参照し、割当状態３０３が「未割当」のデータブロックを持つ並列分散処理実行サーバ１２０の仮想サーバ名リストを作成し、処理割当制御部１３３１に送信する（Ｓ６０４）。
【０１９４】
未割当のデータブロックを持つ並列分散処理実行サーバ１２０の仮想サーバ名リストを受信した処理割当制御部１３３１は、処理完了通知を送信した並列分散処理実行サーバ１２０が仮想サーバ名リストに含まれるか否かを判定する（Ｓ６０５）。
【０１９５】
ステップＳ６０５の判定の結果、処理完了通知を送信した並列分散処理実行サーバ１２０がリストに存在する場合（Ｓ６０５→Ｙｅｓ）、処理割当制御部１３３１が、データ情報管理テーブル３００を参照し、処理完了通知を送信した並列分散処理実行サーバ１２０に保存されている未割当のデータブロックの中から、任意に一つのデータブロックを選択する（Ｓ６０６）。
【０１９６】
ステップＳ６０５の結果、処理完了通知を送信した並列分散処理実行サーバ１２０がリストに存在しない場合（Ｓ６０５→Ｎｏ）は、図１６Ｂの処理へ進む。図１６Ｂにおいて、処理割当制御部１３３１は、処理実行サーバ管理部１３３３に処理完了通知を送信した並列分散処理実行サーバ１２０と同一物理サーバ上で稼動する並列分散処理実行サーバ１２０の仮想サーバ名リストを要求する（Ｓ６０７）。なお、仮想サーバ名リストの要求は、処理完了通知を送信した並列分散処理実行サーバ１２０の仮想サーバ名を含む。
【０１９７】
続いて、処理実行サーバ管理部１３３３は、受信した仮想サーバ名に該当する並列分散処理実行サーバ１２０と同一の物理サーバ上の他の並列分散処理実行サーバ１２０の仮想サーバ名リストを処理割当制御部１３３１に送信する（Ｓ６０８）。
【０１９８】
そして、処理割当制御部１３３１が受信した仮想サーバ名リスト内に、処理完了通知を送信した並列分散処理実行サーバ１２０が稼動する物理サーバ２１０上の他の並列分散処理実行サーバ１２０が存在するか否かを判定する（Ｓ６０９）。
【０１９９】
ステップＳ６０９の判定の結果、他の並列分散処理実行サーバ１２０が存在する場合（Ｓ６０９→Ｙｅｓ）、処理割当制御部１３３１は、処理完了通知を送信した並列分散処理実行サーバ１２０の仮想サーバ名と、同一物理サーバ上で稼動し、未割当のデータブロックを持つ並列分散処理実行サーバ１２０の仮想サーバ名リストをデータ転送制御サーバ１４０に送信する。次に処理するデータブロックを保持する並列分散処理実行サーバ１２０を要求する（Ｓ６１１）。
【０２００】
ステップＳ６０９の結果、他の並列分散処理実行サーバ１２０が存在しない場合（Ｓ６０９→Ｎｏ）、処理割当制御部１３３１は、処理完了通知を送信した並列分散処理実行サーバ１２０のタスクが次に処理するデータブロックを持つ並列分散処理実行サーバ１２０の仮想サーバ名を要求する（Ｓ６１０）。なお、仮想サーバ名の要求は、処理完了通知を送信した並列分散処理実行サーバ１２０の仮想サーバ名と、未割当のデータブロックを持つ並列分散処理実行サーバ１２０の仮想サーバ名リストとを含む。
【０２０１】
データ転送制御サーバ１４０が、処理完了通知を送信した並列分散処理実行サーバが次に処理するデータブロックを格納している並列分散処理実行サーバ１２０を抽出し、並列分散処理制御サーバ１３０に送信する（Ｓ６１２）。なお、ステップＳ６１２の処理は前記第１実施形態の図７Ａ、図７Ｂの処理に対応する処理である。
【０２０２】
続いて、処理割当制御部１３３１が、受信した仮想サーバ名に該当する並列分散処理実行サーバ１２０に格納されている未割当のデータブロックの中から、任意に一つのデータブロックを選択する（Ｓ６１３）。
【０２０３】
そして、処理割当制御部１３３１は、データ転送制御サーバ１４０から受信した仮想サーバ名に該当する並列分散処理実行サーバ１２０に対して、処理完了通知を送信した並列分散処理実行サーバ１２０へ、上記ステップＳ６１３で選択したデータブロックを転送するよう要求する（Ｓ６１４）。なお、データブロックの転送要求は、選択したデータブロックのデータブロックＩＤと、処理完了通知を送信した並列分散処理実行サーバ１２０の仮想サーバ名とを含む。
【０２０４】
そして、処理割当制御部１３３１は、図１６Ａの処理に戻って、データ情報管理部１３３２にデータ情報管理テーブル３００の更新を要求し、タスク管理部１３３４にタスク管理テーブル６００の更新を要求する（Ｓ６１５）。なお、データ情報管理テーブル３００の更新要求は、選択したデータブロックのデータブロックＩＤ３０１を含み、タスク管理テーブル６００の更新要求は、並列分散処理実行サーバ１２０から処理完了通知として受信したタスクＩＤと、選択したデータブロックのデータブロックＩＤ６０１を含む。
【０２０５】
データ情報管理部１３３２は、受信した更新要求に含まれるデータブロックＩＤに該当するデータブロックに対応するデータ情報管理テーブル３００の割当状態３０３を「割当済み」に更新する。タスク管理部１３３４は、受信したタスクＩＤに該当するタスク管理テーブル６００のタスクの実行状態６０３を「実行中」に更新し、受信したデータブロックＩＤで処理対象データブロックＩＤ６０４を更新する（Ｓ６１６）。
【０２０６】
そして、処理割当制御部１３３１は、処理完了通知を送信した並列分散処理実行サーバ１２０に、選択したデータブロックの処理実行要求を送信する（Ｓ６１７）。なお、処理実行要求は、選択したデータブロックのデータブロックＩＤと、処理を割り当てるタスクＩＤとを含む。
【０２０７】
＜処理実行サーバ管理テーブル＞
【０２０８】
図１７は、本発明の第２の実施形態を示し、処理実行サーバ管理テーブル１７００の一例を示す図である。なお、図１７は、第１実施形態の図５に示した処理実行サーバ管理テーブル５００に対応するテーブルである。
【０２０９】
処理実行サーバ管理テーブル１７００は、物理サーバ２１０と並列分散処理実行サーバ１２０を管理する属性情報として、各物理サーバ２１０を識別するための物理サーバ名１７０１と、仮想サーバで構成された各並列分散処理実行サーバ１２０を識別するための仮想サーバ名１７０２からひとつのエントリが構成される。
【０２１０】
＜処理状況管理テーブル＞
【０２１１】
図１８は、本発明の第２の実施形態を示し、処理状況管理テーブル１８００の他の例を示す図である。なお、図１８は、第１実施形態の図８に示した処理状況管理テーブル８００に対応するテーブルである。
【０２１２】
処理状況管理テーブル１８００は、各並列分散処理実行サーバ１２０の処理の進捗状況を管理する属性情報として、各物理サーバ２１０を識別するための物理サーバ名１８０１、各並列分散処理実行サーバ１２０を識別するための仮想サーバ名１８０２、各並列分散処理実行サーバに格納されているデータブロックに対する処理済みのデータブロックの割合を示す処理済みデータ率１８０３、各並列分散処理実行サーバの単位時間当たりの処理性能を示す実行多重度１８０４からひとつのエントリが構成される。
【０２１３】
なお、処理状況管理テーブル１８００には、ＣＰＵやメモリ等のハードウェアスペックの属性情報が示されていないが、これらのハードウェアスペックを含むようにしても良い。
【０２１４】
＜まとめ＞
【０２１５】
以上のように、第２の実施形態によれば、複数の並列分散処理実行サーバ１２０が仮想サーバとして物理サーバ２１０上で稼動する環境下において、処理実行中に利用可能なコンピュータリソースが変化し、並列分散処理の実行多重度が変化する並列分散処理システムであっても、ある並列分散処理実行サーバ１２０に他の並列分散処理実行サーバ１２０上に格納されたデータブロック４０の処理を割り当てる際に、同一の物理サーバ２１０上で稼動する並列分散処理実行サーバ１２０から優先して、各並列分散処理実行サーバ１２０の処理の進捗状況と、単位時間当たりのデータ処理能力と、空きＩ／Ｏリソース量と、を基にデータブロックの転送元サーバとして選択することで、並列分散処理全体を効率的に実行することが出来る。
【産業上の利用可能性】
【０２１６】
本発明は、並列分散処理システムに適用することができ、特に、物理リソースの割り当てが変動する並列分散処理実行サーバを含む並列分散処理システムに好適である。
【図１Ａ】
2012105056.tif 000003
【図１Ｂ】
2012105056.tif 000004
【図２Ａ】
2012105056.tif 000005
【図２Ｂ】
2012105056.tif 000006
【図３】
2012105056.tif 000007
【図４Ａ】
2012105056.tif 000008
【図４Ｂ】
2012105056.tif 000009
【図５】
2012105056.tif 000010
【図６】
2012105056.tif 000011
【図７Ａ】
2012105056.tif 000012
【図７Ｂ】
2012105056.tif 000013
【図８】
2012105056.tif 000014
【図９】
2012105056.tif 000015
【図１０】
2012105056.tif 000016
【図１１】
2012105056.tif 000017
【図１２】
2012105056.tif 000018
【図１３】
2012105056.tif 000019
【図１４Ａ】
2012105056.tif 000020
【図１４Ｂ】
2012105056.tif 000021
【図１５Ａ】
2012105056.tif 000022
【図１５Ｂ】
2012105056.tif 000023
【図１６Ａ】
2012105056.tif 000024
【図１６Ｂ】
2012105056.tif 000025
【図１７】
2012105056.tif 000026
【図１８】
2012105056.tif 000027
【手続補正書】
【提出日】平成26年1月14日(2014.1.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサと記憶装置とを備えて処理対象のデータとして予め分割されたデータブロックを前記記憶装置に格納し、前記プロセッサが前記データブロックを処理するタスクを並列して実行する複数の並列分散処理実行サーバと、前記複数の並列分散処理実行サーバを制御する管理計算機と、を備えた並列分散処理システムで、前記管理計算機が、第１の並列分散処理実行サーバのタスクに割り当てるデータブロックの送信元となる第２の並列分散処理実行サーバを選択する並列分散処理システムのデータ転送制御方法であって、
前記管理計算機が、前記第１の並列分散処理実行サーバから前記タスクが完了したことを示す完了通知を受信する第１のステップと、
前記管理計算機が、前記複数の並列分散処理実行サーバのリソース使用量をそれぞれ収集する第２のステップと、
前記管理計算機が、前記複数の並列分散処理実行サーバが保持するデータブロックとタスクの状態を取得する第３のステップと、
前記管理計算機が、前記複数の並列分散処理実行サーバがそれぞれ保持するデータブロックの処理の進行状況と前記複数の並列分散処理実行サーバのリソース使用量に基づいて、前記第１の並列分散処理実行サーバへデータブロックを転送する第２の並列分散処理実行サーバを選択する第４のステップと、
前記管理計算機が、前記選択した第２の並列分散処理実行サーバに対して前記データブロックを前記第１の並列分散処理実行サーバへ転送する指令を送信する第５のステップと、
前記管理計算機が、前記第１の並列分散処理実行サーバに対して前記転送されたデータブロックを処理するタスクを実行する指令を送信する第６のステップと、
を含み、
前記第４のステップは、
前記複数の並列分散処理実行サーバが保持するデータブロックのうち、タスクによる処理が完了した処理済みのデータブロックの比率を処理済みデータ率として演算する第７のステップと、
前記処理済みデータ率が、予め設定した閾値未満の並列分散処理実行サーバを処理遅延サーバとして抽出する第８のステップと、
前記抽出された処理遅延サーバから前記第２の並列分散処理実行サーバを選択する第９のステップと、を含み、
前記第９のステップは、
前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量を求める第１０のステップと、
前記処理遅延サーバの空きＩ／Ｏリソース量を求める第１１のステップと、
前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量と、前記処理遅延サーバの空きＩ／Ｏリソース量の差が最も小さい前記処理遅延サーバを第２の並列分散処理実行サーバを選択する第１２のステップと、
を含むことを特徴とする並列分散処理システムのデータ転送制御方法。
【請求項２】
請求項１に記載の並列分散処理システムのデータ転送制御方法であって、
前記第１０のステップは、
前記第１の並列分散処理実行サーバのネットワークの空きＩ／Ｏリソース量と、ディスクＩ／Ｏの空きリソース量とを求め、
前記第１１のステップは、
前記処理遅延サーバのネットワークの空きＩ／Ｏリソース量と、ディスクＩ／Ｏの空きリソース量とを求め、
前記第１２のステップは、
前記第１の並列分散処理実行サーバのネットワークＩ／Ｏの空きリソース量と、処理遅延サーバのネットワークＩ／Ｏの空きリソース量との差の絶対値を第１の絶対値として求め、
第１の並列分散処理実行サーバのディスクＩ／Ｏの空きリソース量と、処理遅延サーバのディスクＩ／Ｏの空きリソース量との差の絶対値を第２の絶対値として求め、
前記第１の絶対値と第２の絶対値のうち大きい方の値を前記処理遅延サーバの絶対値として選択し、当該処理遅延サーバの絶対値のうち最も小さい値の処理遅延サーバを前記第２の並列分散処理実行サーバとして選択することを特徴とする並列分散処理システムのデータ転送制御方法。
【請求項３】
プロセッサと記憶装置とを備えて処理対象のデータとして予め分割されたデータブロックを前記記憶装置に格納し、前記プロセッサが前記データブロックを処理するタスクを並列して実行する複数の並列分散処理実行サーバと、前記複数の並列分散処理実行サーバを制御する管理計算機と、を備えた並列分散処理システムで、前記管理計算機が、第１の並列分散処理実行サーバのタスクに割り当てるデータブロックの送信元となる第２の並列分散処理実行サーバを選択する並列分散処理システムのデータ転送制御方法であって、
前記管理計算機が、前記第１の並列分散処理実行サーバから前記タスクが完了したことを示す完了通知を受信する第１のステップと、
前記管理計算機が、前記複数の並列分散処理実行サーバのリソース使用量をそれぞれ収集する第２のステップと、
前記管理計算機が、前記複数の並列分散処理実行サーバが保持するデータブロックとタスクの状態を取得する第３のステップと、
前記管理計算機が、前記複数の並列分散処理実行サーバがそれぞれ保持するデータブロックの処理の進行状況と前記複数の並列分散処理実行サーバのリソース使用量に基づいて、前記第１の並列分散処理実行サーバへデータブロックを転送する第２の並列分散処理実行サーバを選択する第４のステップと、
前記管理計算機が、前記選択した第２の並列分散処理実行サーバに対して前記データブロックを前記第１の並列分散処理実行サーバへ転送する指令を送信する第５のステップと、
前記管理計算機が、前記第１の並列分散処理実行サーバに対して前記転送されたデータブロックを処理するタスクを実行する指令を送信する第６のステップと、
を含み、
前記第４のステップは、
前記複数の並列分散処理実行サーバが保持するデータブロックのうち、タスクによる処理が完了した処理済みのデータブロックの比率を処理済みデータ率として演算する第７のステップと、
前記処理済みデータ率が、予め設定した閾値未満の並列分散処理実行サーバを処理遅延サーバとして抽出する第８のステップと、
前記抽出された処理遅延サーバから前記第２の並列分散処理実行サーバを選択する第９のステップと、を含み、
前記第９のステップは、
前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量を求める第１０のステップと、
前記処理遅延サーバの空きＩ／Ｏリソース量を求める第１１のステップと、
前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量よりも多い空きＩ／Ｏリソース量を有する処理遅延サーバのうち、前記空きＩ／Ｏリソース量の差が最も小さい前記処理遅延サーバを第２の並列分散処理実行サーバを選択する第１２のステップと、
を含むことを特徴とする並列分散処理システムのデータ転送制御方法。
【請求項４】
プロセッサと記憶装置とを備えて処理対象のデータとして予め分割されたデータブロックを前記記憶装置に格納し、前記プロセッサが前記データブロックを処理するタスクを並列して実行する複数の並列分散処理実行サーバと、
前記複数の並列分散処理実行サーバを制御する管理計算機と、を備えた並列分散処理システムであって、
前記管理計算機は、
前記複数の並列分散処理実行サーバのデータブロックに対すタスクを制御する並列分散処理制御部と、
前記複数の並列分散処理実行サーバのうち、タスクにデータブロックを割り当てる第１の並列分散処理実行サーバ対して、前記データブロックの送信元となる第２の並列分散処理実行サーバを選択するデータ転送制御部と、
前記複数の並列分散処理実行サーバのリソース使用量をそれぞれ管理するリソース使用量管理部と、
を有する並列分散処理システムであって、
前記並列分散処理制御部は、
前記第１の並列分散処理実行サーバから前記タスクが完了したことを示す完了通知を受信し、前記複数の並列分散処理実行サーバが保持するデータブロックとタスクの状態を取得し、
前記データ転送制御部は、
前記複数の並列分散処理実行サーバがそれぞれ保持するデータブロックの処理の進行状況と前記複数の並列分散処理実行サーバのリソース使用量に基づいて、前記複数の並列分散処理実行サーバが保持するデータブロックのうち、タスクによる処理が完了した処理済みのデータブロックの比率を処理済みデータ率として演算し、前記処理済みデータ率が、予め設定した閾値未満の並列分散処理実行サーバを処理遅延サーバとして抽出し、前記抽出された処理遅延サーバから前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量を求め、前記処理遅延サーバの空きＩ／Ｏリソース量を求め、前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量と、前記処理遅延サーバの空きＩ／Ｏリソース量の差が最も小さい前記処理遅延サーバを前記第１の並列分散処理実行サーバへデータブロックを転送する第２の並列分散処理実行サーバとして選択し、前記選択した第２の並列分散処理実行サーバに対して前記データブロックを前記第１の並列分散処理実行サーバへ転送する指令を送信し、
前記並列分散処理制御部は、
前記第１の並列分散処理実行サーバに対して前記転送されたデータブロックを処理するタスクを実行する指令を送信することを特徴とする並列分散処理システム。
【請求項５】
複数の並列分散処理実行サーバのうち、第１の並列分散処理実行サーバのタスクに割り当てるデータブロックの送信元となる第２の並列分散処理実行サーバを選択するプログラムを格納した記憶媒体であって、
前記第１の並列分散処理実行サーバから前記タスクが完了したことを示す完了通知を受信する第１の手順と、
前記複数の並列分散処理実行サーバのリソース使用量をそれぞれ収集する第２の手順と、
前記複数の並列分散処理実行サーバが保持するデータブロックとタスクの状態を取得する第３の手順と、
前記複数の並列分散処理実行サーバがそれぞれ保持するデータブロックの処理の進行状況と前記複数の並列分散処理実行サーバのリソース使用量に基づいて、前記第１の並列分散処理実行サーバへデータブロックを転送する第２の並列分散処理実行サーバを選択する第４の手順と、
前記選択した第２の並列分散処理実行サーバに対して前記データブロックを前記第１の並列分散処理実行サーバへ転送する指令を送信する第５の手順と、
前記第１の並列分散処理実行サーバに対して前記転送されたデータブロックを処理するタスクを実行する指令を送信する第６の手順と、を計算機に実行させ、
前記第４の手順は、
前記複数の並列分散処理実行サーバが保持するデータブロックのうち、タスクによる処理が完了した処理済みのデータブロックの比率を処理済みデータ率として演算する第７の手順と、
前記処理済みデータ率が、予め設定した閾値未満の並列分散処理実行サーバを処理遅延サーバとして抽出する第８の手順と、
前記抽出された処理遅延サーバから前記第２の並列分散処理実行サーバを選択する第９の手順と、を含み、
前記第９の手順は、
前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量を求める第１０の手順と、
前記処理遅延サーバの空きＩ／Ｏリソース量を求める第１１の手順と、
前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量と、前記処理遅延サーバの空きＩ／Ｏリソース量の差が最も小さい前記処理遅延サーバを第２の並列分散処理実行サーバを選択する第１２の手順と、を含むプログラムを格納した非一時的な計算機読み取り可能な記憶媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
本発明は、プロセッサと記憶装置とを備えて処理対象のデータとして予め分割されたデータブロックを前記記憶装置に格納し、前記プロセッサが前記データブロックを処理するタスクを並列して実行する複数の並列分散処理実行サーバと、前記複数の並列分散処理実行サーバを制御する管理計算機と、を備えた並列分散処理システムで、前記管理計算機が、第１の並列分散処理実行サーバのタスクに割り当てるデータブロックの送信元となる第２の並列分散処理実行サーバを選択する並列分散処理システムのデータ転送制御方法であって、前記管理計算機が、前記第１の並列分散処理実行サーバから前記タスクが完了したことを示す完了通知を受信する第１のステップと、前記管理計算機が、前記複数の並列分散処理実行サーバのリソース使用量をそれぞれ収集する第２のステップと、前記管理計算機が、前記複数の並列分散処理実行サーバが保持するデータブロックとタスクの状態を取得する第３のステップと、前記管理計算機が、前記複数の並列分散処理実行サーバがそれぞれ保持するデータブロックの処理の進行状況と前記複数の並列分散処理実行サーバのリソース使用量に基づいて、前記第１の並列分散処理実行サーバへデータブロックを転送する第２の並列分散処理実行サーバを選択する第４のステップと、前記管理計算機が、前記選択した第２の並列分散処理実行サーバに対して前記データブロックを前記第１の並列分散処理実行サーバへ転送する指令を送信する第５のステップと、前記管理計算機が、前記第１の並列分散処理実行サーバに対して前記転送されたデータブロックを処理するタスクを実行する指令を送信する第６のステップと、を含み、前記第４のステップは、前記複数の並列分散処理実行サーバが保持するデータブロックのうち、タスクによる処理が完了した処理済みのデータブロックの比率を処理済みデータ率として演算する第７のステップと、前記処理済みデータ率が、予め設定した閾値未満の並列分散処理実行サーバを処理遅延サーバとして抽出する第８のステップと、前記抽出された処理遅延サーバから前記第２の並列分散処理実行サーバを選択する第９のステップと、を含み、前記第９のステップは、前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量を求める第１０のステップと、前記処理遅延サーバの空きＩ／Ｏリソース量を求める第１１のステップと、前記第１の並列分散処理実行サーバの空きＩ／Ｏリソース量と、前記処理遅延サーバの空きＩ／Ｏリソース量の差が最も小さい前記処理遅延サーバを第２の並列分散処理実行サーバを選択する第１２のステップと、を含む。
【国際調査報告】
2012105056.tif 000028
2012105056.tif 000029
2012105056.tif 000030
2012105056.tif 000031