(57)【要約】  分散システム（３０００）は、複数のデータ格納装置（３２００）と、処理データ（２０）の入力又は出力を行う処理プロセス（１０）を実行するプロセス実行装置（３１００）とを有する。分散システム制御装置（２０００）は、各データ格納装置（３２００）の処理負荷を示すデータ格納装置負荷情報を取得するデータ格納装置負荷情報取得部（２０４０）、及び各処理プロセス（１０）が処理データ（２０）の入力又は出力を行うデータ格納装置（３２００）の候補を示す候補情報を取得する候補情報取得部（２０６０）を有する。さらに、分散システム制御装置（２０００）は、処理プロセス（１０）に関する候補のデータ格納装置（３２００）の中から、処理負荷が低いデータ格納装置（３２００）を優先して選択して各処理プロセス（１０）と対応づける入出力先情報を生成する入出力先情報生成部（２０２０）を有する。
2014020795.tif 000002
【特許請求の範囲】
【請求項１】
データの入力又は出力を行う複数の処理プロセスを分散処理する分散システムを制御する分散システム制御装置であって、
前記分散システムは、
複数のデータ格納装置と、
前記処理プロセスを実行し、前記複数のデータ格納装置と通信可能に接続されている処理プロセス実行装置を有し、
前記分散システム制御装置は、
前記各データ格納装置の処理負荷を表すデータ格納装置負荷情報を取得するデータ格納装置負荷情報取得手段と、
前記各処理プロセスが前記データの入力又は出力を行う前記データ格納装置の候補を示す候補情報を取得する候補情報取得手段と、
前記各処理プロセスに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データの入力又は出力を行う前記データ格納装置とをそれぞれ対応づけた入出力先情報を生成する入出力先情報生成手段を有する分散システム制御装置。
【請求項２】
前記候補情報は、前記各処理プロセスが前記データの入力又は出力を行う前記データ格納装置の候補を前記データごとに示し、
前記入出力先情報生成手段は、前記処理プロセスと該処理プロセスが入力又は出力する前記データとの各組み合わせに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが入力又は出力する前記データとの各組み合わせに対して前記データ格納装置をそれぞれ対応づけた入出力先情報を生成する請求項１記載の分散システム制御装置。
【請求項３】
前記処理プロセスは、前記データの入力及び出力を行い、
前記候補情報は、前記各処理プロセスについて、前記データの入力を行う前記データ格納装置の候補と、前記データの出力を行う前記データ格納装置の候補をそれぞれ示し、
前記入出力先情報生成手段は、前記処理プロセスと該処理プロセスが前記データを入力するか出力するかを示す情報との各組み合わせに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データを入力するか出力するかを示す情報の各組み合わせに対し、前記データ格納装置をそれぞれ対応づけた入出力先情報を生成する請求項１又は２記載の分散システム制御装置。
【請求項４】
前記入出力先情報生成手段は、「前記処理プロセス、該処理プロセスが前記データを入力するか出力するかを示す情報、前記データ」の各組み合わせに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、「前記処理プロセス、該処理プロセスが前記データを入力するか出力するかを示す情報、前記データ」の各組み合わせに対し、前記データ格納装置をそれぞれ対応づけた入出力先情報を生成する請求項１乃至３いずれか一項に記載の分散システム制御装置。
【請求項５】
前記各処理プロセスについて、該処理プロセスを実行している前記プロセス実行装置と前記複数のデータ格納装置の間の通信路の通信負荷を示す通信路負荷情報を取得する通信路負荷情報取得手段をさらに有し、
前記入出力先情報生成手段は、前記各処理プロセスに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低く、かつ、通信路負荷情報に示されている該処理プロセスを実行している前記処理プロセス実行装置との間の通信路の負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データを入力又は出力する前記データ格納装置を対応づけた入出力先情報を生成する請求項１乃至４いずれか一項に記載の分散システム制御装置。
【請求項６】
請求項５に記載の分散システム制御装置であって、
前記分散システムは、前記プロセス実行装置と前記データ格納装置の間に介在する複数の通信装置を有し、
前記分散システム制御装置は、
前記プロセス実行装置、前記データ格納装置、及び前記通信装置の接続関係を示すネットワーク構成情報を取得するネットワーク構成情報取得手段と、
前記各処理プロセスと該処理プロセスを実行している前記プロセス実行装置の対応づけを示すプロセス実行装置割当情報を取得するプロセス実行装置割当情報取得手段を有し、
前記通信路負荷情報は、前記各プロセス実行装置、前記各データ格納装置、及び前記各通信装置の内の２つの装置の各組み合わせについて、該組み合わせが有する装置間の通信路の通信負荷を示し、
前記入出力先情報生成手段は、前記候補情報が示す前記各処理プロセスに関するデータ格納装置の候補の中から、前記ネットワーク構成情報、前記プロセス実行装置割当情報、データ格納装置負荷情報、及び通信路負荷情報に基づいて、該処理プロセスを実行する前記プロセス実行装置との間に介在する前記通信装置の数が少なく、かつ、処理負荷が低く、かつ、前記処理プロセス実行装置との間の通信路の負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データを入力又は出力する前記データ格納装置を対応づけた入出力先情報を生成する分散システム制御装置。
【請求項７】
請求項１乃至６いずれか一項に記載の分散システム制御装置であって、
前記データ格納装置に対して前記処理データの入力又は出力を行っている前記処理プロセスの数を示すデータ格納装置割当情報を取得するデータ格納装置割当情報取得手段をさらに有し、
前記入出力先情報生成手段は、
前記各処理プロセスに関するデータ格納装置の各候補について、前記データ格納装置負荷情報に示されている処理負荷が低いか否かを判別し、
処理負荷が低いと判別された前記データ格納装置の候補が複数ある場合は、前記データ格納装置割当情報に基づき、前記各データ格納装置に対して前記処理データの入力又は出力を行っている前記処理プロセスの数を平準化するように、前記処理プロセスと該処理プロセスが前記データを入力又は出力する前記データ格納装置を対応づけた入出力先情報を生成する分散システム制御装置。
【請求項８】
前記処理プロセスを実行する前記処理プロセス実行装置に求められる制約条件を示す資源要求情報を取得する資源要求情報取得手段と、
前記資源要求情報に基づいて、前記処理プロセスが前記データを入力又は出力できる前記データ格納装置を推測し、前記推測したデータ格納装置を該プロセスによる前記データの入力元または出力先の候補として示す候補情報を生成する候補情報生成手段をさらに有する請求項１乃至７いずれか一項に記載の分散システム制御装置。
【請求項９】
コンピュータを、データの入力又は出力を行う複数の処理プロセスを分散処理する分散システムを制御する分散システム制御装置として機能させるプログラムであって、
前記分散システムは、
複数のデータ格納装置と、
前記処理プロセスを実行し、前記複数のデータ格納装置と通信可能に接続されている処理プロセス実行装置を有し、
当該プログラムは、前記コンピュータに、
前記各データ格納装置の処理負荷を表すデータ格納装置負荷情報を取得する機能と、
前記各処理プロセスが前記データの入力又は出力を行う前記データ格納装置の候補を示す候補情報を取得する機能と、
前記各処理プロセスに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データの入力又は出力を行う前記データ格納装置とをそれぞれ対応づけた入出力先情報を生成する機能を持たせるプログラム。
【請求項１０】
データの入力又は出力を行う複数の処理プロセスを分散処理する分散システムを制御するコンピュータによって実行される制御方法であって、
前記分散システムは、
複数のデータ格納装置と、
前記処理プロセスを実行し、前記複数のデータ格納装置と通信可能に接続されている処理プロセス実行装置を有し、
当該制御方法は、
前記各データ格納装置の処理負荷を表すデータ格納装置負荷情報を取得するステップと、
前記各処理プロセスが前記データの入力又は出力を行う前記データ格納装置の候補を示す候補情報を取得するステップと、
前記各処理プロセスに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データの入力又は出力を行う前記データ格納装置とをそれぞれ対応づけた入出力先情報を生成するステップを有する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散システム制御装置、プログラム、及び制御方法に関する。
【背景技術】
【０００２】
データの入力又は出力を伴う処理を複数のプロセスに分割し、分割した各プロセスを複数の計算機に分散して実行させる分散システムが開発されている。上記複数の計算機は、他の全ての計算機、又は一部の計算機とネットワークを介して接続されている。【０００３】
さらに、上記プロセスが入力又は出力するデータを、上記プロセスを実行する計算機が有する記憶装置や、上記分散システムを構成するネットワーク上に分散配置された複数の記憶装置に分散して格納する分散システムが開発されている。そして、このようにデータを分散配置する分散システムでは、データの可用性を高めるために、同一のデータを複数の記憶装置に配置することが多い。こうすることで各プロセスは、一部の記憶装置が破損したり、分散システムを構成するネットワークの一部が不通になったりした場合でも、残りの記憶装置にアクセスすることで必要なデータを入力又は出力できる。【０００４】
データを複数の記憶装置に分散して格納する際の格納先を決定する発明として、特許文献１〜４に示す発明がある。【０００５】
特許文献１は、データの入力元もしくは出力先となる計算機を決定する分散システムを開示する。この分散システムは、個々のデータを処理する計算機から最も近傍かつ利用可能なデータ格納用サーバを逐次選択することで、データの入力元もしくは出力先となる計算機を決定する。【０００６】
特許文献２及び３は、データが分散して格納された計算機を備え、データを入力する際に、データ入力の負荷が均一になるように計算機のアクセス順序を決定する分散システムを開示する。この分散システムは、データの格納時に配置先となる計算機をランダムに選択する。これにより、データの読み込み時に、データが格納された計算機の選択頻度が確率的に均一となるように、データの入力元となる計算機を決定する。【０００７】
特許文献４は、接続された複数のデータ格納用計算機に対し、異なる計算機上でデータの複製が生成されるように命令列の転送を行う、データ格納用計算機を接続する装置及びシステムを開示する。この装置及びシステムは、データの読み込み時に、計算機が送信したデータの読み込み要求をデータの複製が格納されている計算機へ分散して転送することで、データの読み込み負荷を複数のデータ格納用計算機に分散する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許第７６５０３３１号明細書
【特許文献２】特表２００２−５００３９３号公報
【特許文献３】特開２０１１−１５４７０２号公報
【特許文献４】国際公開第２００９／０８４３１４号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【０００９】
分散システムにおいて、プロセスによるデータの入力又は出力にかかる時間を短くすることが求められている。特許文献１記載の発明は、プロセスがデータの入力又は出力を行う記憶装置を、記憶装置の負荷状況を考慮せずに決定する。そのため、複数のプロセスが同じ記憶装置に対してデータの入力又は出力を行った場合、データの入力又は出力にかかる時間が長くなる場合がある。特許文献２、３及び４記載の各技術は、負荷分散を確率的に行う技術であるため、データの入力又は出力にかかる時間が長くなってしまう場合がある。【００１０】
本発明の目的は、分散システムにおいて、プロセスによるデータの入力又は出力にかかる時間を短くする分散システム制御装置、プログラム、及び制御方法を提供することである。
【課題を解決するための手段】
【００１１】
本発明が提供する分散システム制御装置は、データの入力又は出力を行う複数の処理プロセスを分散処理する分散システムを制御する分散システム制御装置である。前記分散システムは、複数のデータ格納装置と、前記処理プロセスを実行し、前記複数のデータ格納装置と通信可能に接続されている処理プロセス実行装置を有する。そして、当該分散システム制御装置は、前記各データ格納装置の処理負荷を表すデータ格納装置負荷情報を取得するデータ格納装置負荷情報取得手段と、前記各処理プロセスが前記データの入力又は出力を行う前記データ格納装置の候補を示す候補情報を取得する候補情報取得手段と、前記各処理プロセスに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データの入力又は出力を行う前記データ格納装置とをそれぞれ対応づけた入出力先情報を生成する入出力先情報生成手段を有する。【００１２】
本発明が提供するプログラムは、コンピュータを、データの入力又は出力を行う複数の処理プロセスを分散処理する分散システムを制御する分散システム制御装置として機能させるプログラムである。前記分散システムは、複数のデータ格納装置と、前記処理プロセスを実行し、前記複数のデータ格納装置と通信可能に接続されている処理プロセス実行装置を有する。そして、当該プログラムは、前記コンピュータに、前記各データ格納装置の処理負荷を表すデータ格納装置負荷情報を取得する機能と、前記各処理プロセスが前記データの入力又は出力を行う前記データ格納装置の候補を示す候補情報を取得する機能と、前記各処理プロセスに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データの入力又は出力を行う前記データ格納装置とをそれぞれ対応づけた入出力先情報を生成する機能を持たせる。【００１３】
本発明が提供する制御方法は、データの入力又は出力を行う複数の処理プロセスを分散処理する分散システムを制御するコンピュータによって実行される。前記分散システムは、複数のデータ格納装置と、前記処理プロセスを実行し、前記複数のデータ格納装置と通信可能に接続されている処理プロセス実行装置を有する。そして、当該制御方法は、前記各データ格納装置の処理負荷を表すデータ格納装置負荷情報を取得するステップと、前記各処理プロセスが前記データの入力又は出力を行う前記データ格納装置の候補を示す候補情報を取得するステップと、前記各処理プロセスに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データの入力又は出力を行う前記データ格納装置とをそれぞれ対応づけた入出力先情報を生成するステップを有する。
【発明の効果】
【００１４】
本発明によれば、分散システムにおいて、プロセスによるデータの入力又は出力にかかる時間を短くする分散システム制御装置、プログラム、及び制御方法を提供することができる。
【図面の簡単な説明】
【００１５】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００１６】
【図１】実施形態１に係る分散システム制御装置の構成をその使用環境と共に示すブロック図である。
【図２】データ格納装置負荷テーブルの構成を示す図である。
【図３】候補テーブルの構成を示す図である。
【図４】入出力先テーブルの構成を示す図である。
【図５】実施形態１における入出力先情報生成処理の流れを示すフローチャートである。
【図６】動作例１における分散システム制御装置及びその使用環境の構成を示す図である。
【図７】動作例１及び２における分散システム制御装置及びその使用環境を実現する計算機とそれらの動作状況を示す図である。
【図８】動作例１、２、及び４における候補テーブルの一部を示す図である。
【図９】動作例１及び２におけるデータ格納装置負荷テーブルの一部を示す図である。
【図１０】動作例１における入出力先テーブルを示す図である。
【図１１】実施形態２に係る分散システム制御装置の構成をその使用環境と共に示すブロック図である。
【図１２】通信路負荷テーブルの構成を示す図である。
【図１３】プロセス実行装置、データ格納装置、及び通信装置の接続関係を例示する図である。
【図１４】実施形態２における入出力先情報生成処理の流れを示すフローチャートである。
【図１５】動作例２における分散システム制御装置及びその使用環境の構成を示す図である。
【図１６】動作例２における通信路負荷テーブルを示す図である。
【図１７】動作例２における入出力先テーブルを示す図である。
【図１８】実施形態３に係る分散システム制御装置の構成を、その使用環境と共に示すブロック図である。
【図１９】プロセス実行装置割当テーブルの構成を示す図である。
【図２０】ネットワーク構成テーブルの構成を示す図である。
【図２１】実施形態３における通信路負荷テーブルの構成を示す図である。
【図２２】負荷判定テーブルの構成を示す図である。
【図２３】負荷判定テーブル作成処理の前半部分の流れを示すフローチャートである。
【図２４】負荷判定テーブル作成処理の後半部分の流れを示すフローチャートである。
【図２５】実施形態３における入出力先情報生成処理の前半部分の流れを示すフローチャートである。
【図２６】実施形態３における入出力先情報生成処理の後半部分の流れを示すフローチャートである。
【図２７】動作例３における分散システム制御装置及びその使用環境の構成を示す図である。
【図２８】動作例３における分散システム制御装置及びその使用環境を実現する計算機と、それらの動作状況を示す図である。
【図２９】動作例３におけるデータ格納装置負荷テーブルを示す図である。
【図３０】動作例３における通信路負荷テーブルを示す図である。
【図３１】動作例３におけるプロセス実行装置割当テーブルを示す図である。
【図３２】動作例３におけるネットワーク構成テーブルを示す図である。
【図３３】動作例３における負荷判定テーブルを示す図である。
【図３４】動作例３における候補テーブルを示す図である。
【図３５】動作例３における入出力先テーブルを示す図ある。
【図３６】実施形態４に係る分散システム制御装置の構成を、その使用環境と共に示すブロック図である。
【図３７】データ格納装置割当テーブルの構成を示す図である。
【図３８】実施形態４における入出力先情報生成処理の流れを示すフローチャートである。
【図３９】動作例４における分散システム制御装置及びその使用環境の構成を示す図である。
【図４０】動作例４において、分散システム制御装置及びその使用環境を実現する計算機とそれらの動作状況を示す図である。
【図４１】動作例４におけるデータ格納装置負荷テーブルを示す図である。
【図４２】動作例４におけるデータ格納装置割当テーブルを示す図である。
【図４３】動作例４における入出力先テーブルを示す図である。
【図４４】実施形態５に係る分散システム制御装置の構成を、その使用環境と共に示すブロック図である。
【図４５】資源要求テーブルの構成を示す図である。
【図４６】プロセス実行装置、データ格納装置、及び通信装置の接続関係の別の例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００１８】
なお、以下に示す説明において、各装置の各構成要素は、ハードウエア単位の構成ではなく、機能単位のブロックを示している。各装置の各構成要素は、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされた本図の構成要素を実現するプログラム、そのプログラムを格納するハードディスクなどの記憶メディア、ネットワーク接続用インターフェースを中心にハードウエアとソフトウエアの任意の組合せによって実現される。そして、その実現方法、装置には様々な変形例がある。
【００１９】
[実施形態１]
＜概要＞
図１は、実施形態１に係る分散システム制御装置２０００の構成を、その使用環境と共に示すブロック図である。図１において、矢印は情報の流れを表す。
【００２０】
分散システム制御装置２０００は、分散システム３０００を制御する。分散システム３０００は、プロセス実行装置３１００及びデータ格納装置３２００を有する。プロセス実行装置３１００は、データ格納装置３２００に対するデータの入力又は出力を伴う処理が記述されているプログラムを実行することで、処理プロセス１０を動作させる。ここで、処理プロセス１０が入力又は出力するデータを総称して処理データ２０と呼ぶ。プロセス実行装置３１００は、複数の処理プロセス１０を実行してもよい。プロセス実行装置３１００は、複数のデータ格納装置３２００とデータ通信可能に接続されている。データ格納装置３２００は、処理プロセス１０によって入力又は出力される処理データ２０を格納する。
【００２１】
分散システム制御装置２０００は、処理プロセス１０による処理データ２０の入力又は出力を制御する。分散システム制御装置２０００は、データ格納装置負荷情報取得部２０４０及び候補情報取得部２０６０を有する。データ格納装置負荷情報取得部２０４０は、各データ格納装置３２００の処理負荷を示すデータ格納装置負荷情報を取得する。候補情報取得部２０６０は、各処理プロセス１０が処理データ２０の入力又は出力を行うデータ格納装置３２００の候補を示す候補情報を取得する。
【００２２】
分散システム制御装置２０００はさらに、入出力先情報生成部２０２０を有する。入出力先情報生成部２０２０は、上記データ格納装置負荷情報及び候補情報に基づき、各処理プロセス１０について、処理プロセス１０と該処理プロセス１０が処理データ２０の入力又は出力を行うデータ格納装置３２００を対応づける入出力先情報を生成する。具体的には、入出力先情報生成部２０２０はまず、候補情報を参照して、処理プロセス１０が処理データ２０を入力又は出力できるデータ格納装置３２００の候補を取得する。さらに入出力先情報生成部２０２０は、データ保存情報負荷情報を参照して、候補である各データ格納装置３２００の中から、処理負荷が低いデータ格納装置３２００を優先して選択し、処理プロセス１０とデータ格納装置３２００を対応づける。そして入出力先情報生成部２０２０は、上記で行った処理プロセス１０とデータ格納装置３２００の対応付けを示す入出力先情報を生成する。
【００２３】
以上のように、本実施形態の分散システム制御装置２０００は、各処理プロセス１０が処理データ２０の入力又は出力を行うデータ格納装置３２００として、候補情報が示すデータ格納装置３２００の候補の中から、データ格納装置負荷情報が示す処理負荷の低いデータ格納装置３２００を選択する。これにより、処理プロセス１０が処理データ２０を入力又は出力することによって発生するデータ格納装置３２００の処理負荷が分散される。その結果、処理プロセス１０による処理データ２０の入力又は出力に要する時間が短くなる。
【００２４】
以下、本実施形態の詳細を述べる。
【００２５】
＜構成詳細＞
分散システム制御装置２０００は、例えば専用の装置、サーバマシン、又はパーソナルコンピュータ（ＰＣ）といった種々の計算機上に実現される。プロセス実行装置３１００も同様に種々の計算機上に実現される。分散システム制御装置２０００とプロセス実行装置３１００は、同じ計算機上に実現されてもよいし、異なる計算機上に実現されてもよい。
【００２６】
データ格納装置３２００は例えば、プロセス実行装置３１００と同じ計算機上に実現される。具体的には例えば、専用の記憶装置、ハードディスクなどの二次記憶装置、又はメモリなど、種々の記憶装置によって実現される。さらにデータ格納装置３２００は、プロセス実行装置３１００に接続されるＵＳＢメモリ等の可搬型の記憶装置によって実現されてもよい。
【００２７】
データ格納装置３２００は、プロセス実行装置３１００を実現する計算機と異なる計算機上に実現されてもよい。その場合、データ格納装置３２００は例えば、Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ（ＮＡＳ）や、ハードディスク等の記憶装置を有するＰＣやサーバマシン等の種々の計算機上の記憶装置として実現される。
【００２８】
上記種々の計算機は、例えば、バスで相互に接続される、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ、入出力インタフェース（Ｉ／Ｆ）等を有する。メモリは、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ハードディスク、可搬型記憶媒体等である。ハードディスク、可搬型記憶媒体等は記憶装置とも称される。入出力Ｉ／Ｆは、ネットワークを介して他の装置と通信を行う通信装置等と接続される。入出力Ｉ／Ｆは、表示装置や入力装置等のようなユーザインタフェース装置と接続されてもよい。なお、本実施形態及び以降に示す全ての実施形態において、分散システム制御装置２０００、プロセス実行装置３１００、及びデータ格納装置３２００のハードウエア構成は限定されない。
【００２９】
プロセス実行装置３１００とデータ格納装置３２００の接続方法は様々である。データ格納装置３２００とプロセス実行装置３１００が同じ計算機上に実現されている場合、例えば両者はバスで接続される。データ格納装置３２００とプロセス実行装置３１００が異なる計算機上に実現されている場合、例えば両者はＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）やＷｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＷＡＮ）などのネットワークを介して接続される。プロセス実行装置３１００とデータ格納装置３２００を接続するネットワークは、有線で構成されるネットワークであっても、無線で構成されるネットワークであっても、又は双方が混在するネットワークであってもよい。
【００３０】
＜データ格納装置負荷情報の詳細＞
データ格納装置負荷情報は、例えば図２に示すデータ格納装置負荷テーブル１００を有する。データ格納装置負荷テーブル１００は例えば、データ格納装置ＩＤ１１０及び処理負荷情報１２０を有する。データ格納装置負荷テーブル１００のレコードは、データ格納装置ＩＤ１１０で特定されるデータ格納装置３２００の負荷情報を、処理負荷情報１２０に示す。データ格納装置ＩＤ１１０は、データ格納装置３２００を識別する識別子である。データ格納装置ＩＤ１１０は例えば、オペレーティングシステム（ＯＳ）によってデータ格納装置３２００に対して与えられた論理的な機器名である。処理負荷情報１２０は、データ格納装置３２００の負荷を示す情報である。処理負荷情報１２０は例えば、データ格納装置３２００が単位時間当たりに入出力しているデータ転送量や、データ格納装置３２００が受信したデータ入出力要求を格納するキューに格納されているデータ入出力要求の数（以下、要求キュー長）である。また、処理負荷情報１２０は例えば、データ格納装置ＩＤ１１０で特定されるデータ格納装置３２００を実現するサーバやＰＣ等の計算機の負荷情報を有してもよい。その例は、上記計算機が有するＣＰＵの使用率などである。また、処理負荷情報１２０は、高負荷か低負荷かを表す１ビットの情報であってもよい。さらに、処理負荷情報１２０は、各データ格納装置３２００について、上記の例に挙げたような負荷情報を複数有してもよい。
【００３１】
データ格納装置負荷情報の取得方法は様々である。例えば、データ格納装置負荷情報取得部２０４０は、データ格納装置３２００の負荷状況を監視する監視システムによって自動生成されるデータ格納装置負荷情報を取得する。また例えば、データ格納装置負荷情報取得部２０４０は、分散システム３０００の管理者が手動で入力したデータ格納装置負荷情報を取得してもよい。
【００３２】
データ格納装置負荷情報を取得する時点は様々である。例えばデータ格納装置負荷情報取得部２０４０は、入出力先情報生成部２０２０が入出力先情報の生成処理を開始した時に、データ格納装置負荷情報を取得する。また、データ格納装置負荷情報取得部２０４０は、定期的な時間間隔、又は不定期な時間間隔で、繰り返しデータ格納装置負荷情報を取得してもよい。また、データ格納装置負荷情報取得部２０４０は、データ格納装置３２００の処理負荷が変動した際に、そのデータ格納装置３２００の新たな処理負荷を示すデータ格納装置負荷情報を取得してもよい。この場合、データ格納装置負荷情報取得部２０４０は、処理負荷が変動したデータ格納装置３２００に関するデータ格納装置負荷情報のみを取得してもよいし、全てのデータ格納装置３２００に関するデータ格納装置負荷情報を取得してもよい。
【００３３】
＜候補情報の詳細＞
候補情報は、例えば図３に示す候補テーブル２００を有する。候補テーブルは例えば、プロセスＩＤ２１０、処理種別２２０、処理データＩＤ２３０、及びデータ格納装置ＩＤ２４０を有する。候補テーブルのレコードは、「プロセスＩＤ２１０で特定される処理プロセス１０，処理種別２２０が示す処理種別（入力又は出力），処理データＩＤ２３０で特定される処理データ２０」の各組み合わせについて、候補とするデータ格納装置３２００のＩＤを示す。プロセスＩＤ２１０は、処理プロセス１０を識別する識別子である。処理種別２２０は、レコードが示すデータ格納装置３２００の候補が、入力元の候補なのか出力先の候補なのかを示す情報（以下、処理種別情報）である。処理種別２２０は例えば、０と１の２値で表され、１の場合は出力、０の場合は入力を表す。処理データＩＤ２３０は、処理データ２０の識別子を示す。データ格納装置ＩＤ２４０は、データ格納装置３２００の識別子を示す。例えば図３の１行目のレコードは、プロセスＩＤ＝ｐｒｏｃ１の処理プロセス１０による、処理データＩＤ＝Ｄ１の処理データ２０の入力元の候補の一つは、データ格納装置ＩＤ＝ＤＩＳＫ１のデータ格納装置３２００であることを示す。
【００３４】
候補テーブル２００は、同じ「プロセスＩＤ２１０，処理種別２２０，処理データＩＤ２３０」の組み合わせに対して異なるデータ格納装置ＩＤ２４０を示すレコードを複数有することが望ましい。そうすることで、入出力先情報生成部２０２０は、複数の候補の中から、処理負荷が低いデータ格納装置３２００を選択することができる。
【００３５】
候補テーブル２００は、処理種別２２０又は処理データＩＤ２３０を省略してもよい。例えば処理種別２２０を省略した場合、処理プロセス１０は、データの入力と出力の双方に関し、同じデータ格納装置３２００を候補とする。また例えば処理データＩＤ２３０を省略した場合、処理プロセス１０は、全ての処理データ２０に関し、同じデータ格納装置３２００を入力元又は出力先の候補とする。さらに例えば、処理種別２２０及び処理データＩＤ２３０の双方を省略した場合、処理プロセス１０は、全ての処理データ２０に関し、同じデータ格納装置３２００を入力元及び出力先の候補とする。
【００３６】
プロセスＩＤ２１０には、処理プロセス１０のグループの識別子であるプロセスグループＩＤを指定してもよい。この場合、同じプロセスグループに属する処理プロセス１０は、「処理種別，処理データ２０」の各組み合わせに対し、同じデータ格納装置３２００を候補とする。分散システムにおいて複数のプロセスが一つのプロセスグループに属する例としては、１つのジョブを複数の処理プロセスに分割して並列実行する場合がある。この場合、上記分割された各処理プロセスは、同じプロセスグループに属する。
【００３７】
候補情報は、処理プロセス１０と、該処理プロセス１０が処理データ２０を入力又は出力できると推測されるデータ格納装置３２００を対応付けていてもよい。
【００３８】
候補情報の取得方法は様々である。例えば候補情報取得部２０６０は、処理プロセス１０をプロセス実行装置３１００に割り当てる処理やデータ格納装置３２００に処理データ２０を割り当てる処理を行う管理サーバから候補情報を取得する。上記管理サーバは例えば、処理プロセス１０を実行するプロセス実行装置３１００と処理データ２０を格納するデータ格納装置３２００が同じ計算機上にある場合に、上記データ格納装置３２００を、上記処理プロセス１０による上記処理データ２０の入力元又は出力先の候補とする。また例えば候補情報取得部２０６０は、データ格納装置３２００に対する処理データ２０の入力又は出力を監視する監視システムから候補情報を取得する。その他にも、例えば候補情報取得部２０６０は、分散システム３０００の管理者が手動で入力した候補情報を取得する。
【００３９】
＜入出力先情報の詳細＞
入出力先情報生成部２０２０は、処理プロセス１０と、該処理プロセス１０が処理データ２０の入力又は出力を行うデータ格納装置３２００を対応づける入出力先情報を生成する。入出力先情報は、例えば図４に示す入出力先テーブル３００で表される。入出力先テーブル３００の各レコードは、「プロセスＩＤ３１０で特定される処理プロセス１０，処理種別３２０が示す処理種別，処理データＩＤ３３０で特定される処理データ２０」の組み合わせと、データ格納装置３２００の対応を示す。プロセスＩＤ３１０は、処理プロセス１０を識別する識別子である。処理種別３２０は、処理種別情報である。処理データＩＤ３３０は、処理データ２０の識別子である。データ格納装置ＩＤ３４０は、データ格納装置３２００の識別子である。例えば、図４における入出力先テーブル３００の１行目のレコードに従って処理プロセス１０を制御する場合、プロセスＩＤ３１０＝ｐｒｏｃ１の処理プロセス１０は、処理データＩＤ３３０＝Ｄ１である処理データ２０を、データ格納装置ＩＤ３４０＝ＤＩＳＫ２であるデータ格納装置３２００から入力する。
【００４０】
入出力先テーブル３００は、同じ「プロセスＩＤ３１０，処理種別３２０，処理データＩＤ３３０」の組み合わせについてデータ格納装置３２００を対応付けるレコードを複数有してもよい。この場合、例えば行番号が小さいレコードが有するデータ格納装置３２００ほど優先して、処理プロセス１０の制御に利用される。
【００４１】
入出力先情報は、処理種別３２０又は処理データＩＤ３３０を省略してもよい。処理種別３２０を省略した場合、例えば処理プロセス１０は、データの入力と出力の双方に関し、同じデータ格納装置３２００と対応づけられる。処理データＩＤ３３０を省略した場合、例えば「処理プロセス１０，処理種別」の組み合わせは、全ての処理データ２０に関し、同じデータ格納装置３２００に対応付けられる。さらに例えば、処理種別３２０及び処理データＩＤ３３０の双方を省略した場合、処理プロセス１０は、全ての「処理種別，処理データ２０」の組み合わせに関し、同じデータ格納装置３２００と対応づけられる。
【００４２】
＜入出力先情報生成処理の流れ＞
図５は、入出力先情報生成部２０２０が入出力先情報を生成する入出力先情報生成処理の流れの一例を示すフローチャートである。
【００４３】
ステップＳ１０２において、入出力先情報生成部２０２０は、候補情報取得部２０６０から候補情報を取得する。そして、ステップＳ１０４において、入出力先情報生成部２０２０は、データ格納装置負荷情報取得部２０４０からデータ格納装置負荷情報を取得する。
【００４４】
ステップＳ１０６において、入出力先情報生成部２０２０は、候補情報に含まれる候補テーブル２００を検索してデータ格納装置３２００の候補を示すレコードを取得し、集合Ｒに加える。ここで、処理プロセス１０に対してデータ格納装置３２００を対応づける入出力先情報を生成する場合、入出力先情報生成部２０２０は、処理プロセス１０のＩＤをキーとして候補テーブル２００を検索する。また、「処理プロセス１０，処理データ２０」の組み合わせに対してデータ格納装置３２００を対応づける入出力先情報を生成する場合、入出力先情報生成部２０２０は、「処理プロセス１０のプロセスＩＤ，処理データ２０のＩＤ」をキーとして検索を行う。同様に、「処理プロセス１０，処理種別」の組み合わせについてデータ格納装置３２００を対応づける入出力先情報を生成する場合、入出力先情報生成部２０２０は、「処理プロセス１０のＩＤ，処理種別」をキーとして検索を行う。さらに同様に、「処理プロセス１０，処理種別，処理データ２０」の組み合わせについてデータ格納装置３２００を対応づける入出力先情報を生成する場合、入出力先情報生成部２０２０は、「処理プロセス１０，処理種別，処理データ２０」をキーとして検索を行う。
【００４５】
集合Ｒに加える各レコードは、データ格納装置ＩＤ２４０を含んでいればよい。そのため入出力先情報生成部２０２０は、各レコードについて、データ格納装置ＩＤ２４０を含むレコードの一部だけを集合Ｒに加えてもよい。
【００４６】
ステップＳ１０８において、入出力先情報生成部２０２０は、上記集合Ｒに含まれる各レコードが有するデータ格納装置ＩＤ２４０の値をキーとして、データ格納装置負荷テーブル１００を検索し、候補に含まれる各データ格納装置３２００の処理負荷を取得する。次に、入出力先情報生成部２０２０は、集合Ｒに含まれるレコードを、処理負荷の低い順にソートする。
【００４７】
ステップ１１０において、入出力先情報生成部２０２０は、集合Ｒに含まれるレコードを上記ソートした順に有する入出力先テーブルを生成し、入出力先情報とする。
【００４８】
ここで、データ格納装置３２００の処理負荷は、図２に示すデータ格納装置負荷テーブル１００のレコード１とレコード２のように異なる指標で示されている場合がある。この場合、処理負荷情報１２０の値をそのまま利用して集合Ｒのレコードをソートすることはできない。そこで例えば、入出力先情報生成部２０２０は、処理負荷情報１２０が示す値を標準化し、標準化した値に基づいてレコードのソートを行う。
【００４９】
入出力先情報は、集合Ｒのレコードのうち、一部のレコードから生成してもよい。例えば入出力先情報生成部２０２０は、入出力先情報に含むレコードの数に上限を設ける。例えば、入出力先情報に含むレコードの数をＮとした場合、入出力先情報生成部２０２０は、処理負荷の低い順にソートした集合Ｒのレコードの内、先頭からＮ個のみに限定したレコードで構成した入出力先テーブル３００を、入出力先情報とする。
【００５０】
入出力先情報生成処理は、上記フローチャートの処理に限定されない。その他にも例えば、入出力先情報生成部２０２０は、各データ格納装置３２００の処理負荷を、低負荷であるか高負荷であるかの２値で判別してもよい。この場合、入出力先情報生成部２０２０は、例えばデータ転送量や要求キューの長さといった処理負荷の各指標のそれぞれについて閾値を設ける。そして、入出力先情報生成部２０２０は、候補に含まれる各データ格納装置３２００について、処理負荷を閾値と比較し、高負荷であるか低負荷であるか判定する。そして、入出力先情報生成部２０２０は、低負荷であると判定したデータ格納装置３２００の集合を入出力先情報とする。
【００５１】
入出力先情報生成部２０２０が入出力先情報を生成する契機は様々である。例えば入出力先情報生成部２０２０は、プロセス実行装置３１００の要求に応じてデータ入出力先情報を生成する。これは例えば、プロセス実行装置３１００が新たな処理プロセス１０の実行を開始する時に、その処理プロセス１０が各処理データ２０の入力又は出力を行うデータ格納装置３２００の決定を入出力先情報生成部２０２０に依頼する場合である。また、入出力先情報生成部２０２０は、処理プロセス１０をプロセス実行装置３１００に割り当てる管理サーバからの依頼によって入出力先情報を生成してもよい。これは例えば、管理サーバが、あるプログラムを実行する複数の処理プロセス１０の実行を開始する際に、各処理プロセス１０が処理データ２０を入力又は出力するデータ格納装置３２００の決定を、入出力先情報生成部２０２０に依頼する場合である。
【００５２】
入出力先情報生成部２０２０は、複数の処理プロセス１０についてまとめて入出力先情報を生成してもよい。そして、その方法は様々である。例えば入出力先情報生成部２０２０は、各処理プロセス１０について、順にデータ格納装置３２００を対応づける貪欲アルゴリズムを実行する。また例えば入出力先情報生成部２０２０は、処理プロセス１０の集合とデータ格納装置３２００の集合を参照して、「処理プロセス１０，データ格納装置３２００」の複数の対応付けを最適化する数理最適化アルゴリズムを実行してもよい。
【００５３】
＜入出力先情報に基づいた分散システム３０００の制御＞
入出力先情報に基づいて処理データ２０の入力又は出力を制御する方法は様々である。例えば分散システム制御装置２０００は、各処理プロセス１０に対し、入出力先情報に基づいた指示を通知する入出力先通知部を有する。この場合、入出力先通知部は、例えば図４における入出力先テーブル３００の１行目のレコードを参照し、プロセスＩＤ３１０＝ｐｒｏｃ１である処理プロセス１０に対し、処理データＩＤ３３０＝Ｄ１の処理データ２０を、データ格納装置ＩＤ３４０＝ＤＩＳＫ２のデータ格納装置３２００から入力するように通知する。上記通知を受け取った処理プロセス１０は、データ格納装置ＩＤ３４０＝ＤＩＳＫ２であるデータ格納装置３２００に対し、処理データＩＤ３３０＝Ｄ１の処理データ２０の入力要求を送信する。
【００５４】
上記入出力先通知部は、データ格納装置３２００に対して通知を行ってもよい。この場合、データ格納装置３２００は、上記通知に従って処理プロセス１０と処理データ２０のやりとりをする。例えば入出力先通知部は、図４における入出力先テーブル３００の１行目のレコードを参照し、データ格納装置ＩＤ３４０＝ＤＩＳＫ２であるデータ格納装置３２００に通知を行う。この場合、通知を受信したデータ格納装置３２００は、例えばプロセスＩＤ３１０＝ｐｒｏｃ１である処理プロセス１０に対し、処理データＩＤ３３０＝Ｄ１である処理データ２０を送信する。
【００５５】
入出力先通知部は、分散システム制御装置２０００の外部に備えられていてもよい。例えば、分散システム３０００が前述した管理サーバを有する場合、上記管理サーバが入出力先通知部を有してもよい。この場合、例えば上記管理サーバは、入出力先情報生成部２０２０が生成した入出力先情報を受信し、受信した入出力先情報に基づいて、処理プロセス１０やデータ格納装置３２００の制御を行う。
【００５６】
また、処理プロセス１０やデータ格納装置３２００は、分散システム制御装置２０００に対し、自ら入出力先情報の送信を要求してもよい。
【００５７】
＜動作例１＞
以下、本実施形態に係る分散システム制御装置２０００の動作について、具体例を用いて説明する。なお、以下に示すのは、分散システム制御装置２０００の動作の一例である。本実施形態は以下に示す動作例によって何らの限定を受けない。
【００５８】
図６は、動作例１における分散システム制御装置２０００及びその使用環境の機能構成を示す図である。ここで、図６において、図１と同じ機能ブロックは、図１における機能ブロックと同様の機能を有するとして、説明を省略する。
【００５９】
管理サーバ３４００は、プロセス実行装置３１００に対する処理プロセス１０の割り当て、及びデータ格納装置３２００に対する処理データ２０の割り当てを行う管理サーバである。管理サーバ３４００は、候補情報提供部３４２０と入出力先通知部３４４０を有する。候補情報提供部３４２０は、候補情報取得部２０６０に対し、候補情報を提供する。入出力先通知部３４４０は、入出力先情報生成部２０２０から入出力先情報を受信し、プロセス実行装置３１００に対して、処理データ２０の入力元又は出力先とするデータ格納装置３２００を指定する。データ格納装置負荷情報提供部３５００は、データ格納装置３２００の負荷状況を監視してデータ格納装置負荷情報を生成し、データ格納装置負荷情報取得部２０４０に送信する。
【００６０】
図７は、動作例１における分散システム制御装置２０００及び分散システム３０００のハードウエア構成及び動作状況を概念的に示す図である。コンピュータＣ０は、分散システム制御装置２０００及び管理サーバとして機能する。コンピュータＣ１〜Ｃ４は、それぞれプロセス実行装置３１００として機能する。ディスクＤＩＳＫ１〜ＤＩＳＫ５は、それぞれデータ格納装置３２００として機能する。ディスクＤＩＳＫ１はコンピュータＣ１の内部に設けられており、ディスクＤＩＳＫ２はコンピュータＣ２の内部に設けられており、ディスクＤＩＳＫ３はコンピュータＣ３の内部に設けられており、ディスクＤＩＳＫ４はコンピュータＣ４の内部に設けられており、ディスクＤＩＳＫ５はコンピュータＣ５の内部に設けられている。また、コンピュータＣ１〜Ｃ３は、スイッチＳＷ１を介して互いに通信可能に接続されている。そして、スイッチＳＷ１、コンピュータＣ０、コンピュータＣ４及びコンピュータＣ５は、スイッチＳＷ２を介して互いに通信可能に接続されている。そのため、図７の分散システム３０００を構成する各計算機は、他の全ての計算機と互いに通信可能に接続されている。さらに、コンピュータＣ１〜Ｃ５は、データ格納装置負荷情報提供部３５００としても機能する。
【００６１】
動作例１において、ＩＤがｐ１の処理プロセス１０（以下、処理プロセス１０−ｐ１）はコンピュータＣ１上で実行されており、処理プロセス１０−ｐ３はコンピュータＣ３上で実行されており、処理プロセス１０−ｐ４及びｐ５はコンピュータＣ４上で実行されている。処理プロセスｐ１は、ディスクＤＩＳＫ１へＩＤがＤ２の処理データ２０（以下、処理データ２０−Ｄ２）を出力中である。一方、処理プロセス１０−ｐ３、ｐ４及びｐ５は、計算処理中であり、処理データ２０の入出力を行っていない。
【００６２】
ここで、管理サーバによってコンピュータＣ１に対し、新たに処理プロセス１０−ｐ２が割り当てられたとする。処理プロセス１０−ｐ２は、処理データ２０−Ｄ１の入力を伴う処理を行う。そこで、分散システム制御装置２０００は、「処理プロセス１０−ｐ２，入力処理、処理データ２０−Ｄ１」の組み合わせに対してデータ格納装置３２００を対応づける入出力先情報を生成する。以下、その具体的な動作を説明する。ここで、処理プロセス１０−ｐ２が入力する処理データ２０−Ｄ１は４つに複製されており、それぞれディスクＤＩＳＫ１〜ディスクＤＩＳＫ４に格納されている。
【００６３】
まず候補情報取得部２０６０は、候補情報提供部３４２０から、候補情報を取得する。図８に示す候補テーブル２００−１は、取得した候補情報が有する候補テーブル２００のうち、処理プロセス１０−ｐ２に関する情報のみを示したテーブルである。
【００６４】
そして、データ格納装置負荷情報取得部２０４０は、データ格納装置負荷情報提供部３５００からデータ格納装置負荷情報を取得する。図９のデータ格納装置負荷テーブル１００−１は、ディスクＤＩＳＫ１〜ＤＩＳＫ５の処理負荷情報を示すテーブルである。データ格納装置負荷テーブル１００−１は、ディスクＤＩＳＫ１〜ＤＩＳＫ５の毎秒当たりのデータ転送量がそれぞれ、１２０ＭＢ、５ＭＢ、３０ＭＢ、２０ＭＢ、１０ＭＢであることを示す。
【００６５】
入出力先情報生成部２０２０はまず、候補情報取得部２０６０が取得した候補テーブル２００を、「プロセスＩＤ２１０＝ｐ２，処理種別２２０＝入力，処理データＩＤ２３０＝Ｄ１」をキーとして検索してレコードを取得し、集合Ｒに加える。その結果、集合Ｒは、候補テーブル２００−１の中のレコード１〜４を有する。したがって、候補のデータ格納装置３２００はディスクＤＩＳＫ１〜ＤＩＳＫ４である。
【００６６】
次に入出力先情報生成部２０２０は、候補であるディスクＤＩＳＫ１〜ＤＩＳＫ４のそれぞれについてデータ格納装置負荷テーブル１００−１を参照し、集合Ｒに含まれるレコードを処理負荷が低い順にソートする。そして、入出力先情報生成部２０２０は、ソートしたレコードから成る入出力先テーブル３００−１を生成する（図１０参照）。
【００６７】
管理サーバ３４００が有する入出力先通知部３４４０は、上記入出力先テーブル３００−１を受信する。そして、受信した入出力先テーブル３００−１に従い、処理プロセス１０−ｐ２に対して通知を行う。具体的にはまず、管理サーバ３４００は、入出力先テーブル３００−１のレコード１を参照する。そして、管理サーバ３４００は、処理プロセス１０−ｐ２に対し、処理データ２０−Ｄ１の入力をＤＩＳＫ２から行うように指示する。指示を受けた処理プロセス１０−ｐ２は、処理データ２０−Ｄ１をＤＩＳＫ２から入力する。
【００６８】
以上の動作により、処理プロセス１０−ｐ２は、処理データ２０−Ｄ１の入力を行えるディスクのうち、最も処理負荷が低いディスクＤＩＳＫ２から処理データ２０−Ｄ１の入力を行う。そのため、処理プロセス１０−ｐ２による処理データ２０−Ｄ１の入力にかかる時間が短くなる。
【００６９】
なお、例えば管理サーバ３４００は、入出力先テーブル３００−１のレコード１に示されているディスクＤＩＳＫ２が故障等で利用できない場合、次の行のレコード２を参照する。そして、処理プロセス１０−ｐ２に対し、レコード２が示すディスクＤＩＳＫ４から、処理データ２０−Ｄ１を取得するように指示する。こうすることで、処理プロセス１０−ｐ２は、一部のデータ格納装置３２００が故障等により利用できない場合でも、処理データ２０の入力又は出力を行う時間をできる限り短くすることができる。
【００７０】
＜作用・効果＞
以上の構成により、本実施形態によれば、分散システム制御装置２０００は、候補情報取得部２０６０によって、各処理プロセス１０が処理データ２０の入力又は出力を行うデータ格納装置３２００の候補を示す候補情報を取得する。また、分散システム制御装置２０００は、データ格納装置負荷情報取得部２０４０によって、各データ格納装置３２００の処理負荷を示すデータ格納装置負荷情報を取得する。そして分散システム制御装置２０００は、入出力先情報生成部２０２０により、上記データ格納装置負荷情報及び候補情報に基づき、候補である各データ格納装置３２００の中から、処理負荷が低いデータ格納装置３２００を優先して選択し、処理プロセス１０と、該処理プロセス１０が処理データ２０の入力又は出力を行うデータ格納装置３２００を対応づける入出力先情報を生成する。これにより、分散システム制御装置２０００は、処理プロセス１０によるデータ格納装置３２００に対する処理データ２０の入力又は出力を、分散システム内で分散させることができる。その結果、各データ格納装置３２００の処理負荷が低減され、処理プロセス１０が処理データ２０の入力又は出力に要する時間は短くなる。また、分散システム制御装置２０００は、繰り返し入出力先情報生成処理を行うことで、処理プロセス１０とデータ格納装置３２００の対応付けを更新できる。こうすることで、データ格納装置３２００の処理負荷が変化しても、その変化に応じて処理プロセス１０とデータ格納装置３２００の対応付けを変更できる。そのため、分散システム制御装置２０００は、データ格納装置３２００の処理負荷が変化する場合でも、処理プロセス１０によるデータ格納装置３２００に対する処理データ２０の入力又は出力を、分散システム内で分散させることができる。
【００７１】
[実施形態２]
＜概要＞
図１１は、実施形態２に係る分散システム制御装置２０００の構成を、その使用環境と共に示した図である。図１１において、図１と同符号の機能ブロックは、図１と同様の機能を有するとし、説明を省略する。また図１１おける分散システム３０００の構成は、例えば図１における分散システム３０００の構成と同じである。そのため図９において、分散システム３０００の構成は省略する。
【００７２】
本実施形態に係る分散システム制御装置２０００は、通信路負荷情報取得部２０８０をさらに有する。通信路負荷情報取得部２０８０は、プロセス実行装置３１００とデータ格納装置３２００の間の通信路の通信負荷を示す通信路負荷情報を取得する。
【００７３】
本実施形態における入出力先情報生成部２０２０は、候補情報、データ格納装置負荷情報、及び通信路負荷情報に基づいて、処理プロセス１０と、該処理プロセス１０が処理データ２０の入力又は出力を行うデータ格納装置３２００を対応づける入出力先情報を生成する。具体的にはまず、入出力先情報生成部２０２０は、処理プロセス１０について候補情報を参照し、処理プロセス１０が処理データ２０を入力又は出力できるデータ格納装置３２００の候補を取得する。そして、入出力先情報生成部２０２０は、データ格納装置負荷情報を参照し、候補のデータ格納装置３２００のそれぞれについて処理負荷を取得する。さらに入出力先情報生成部２０２０は、通信路負荷情報を参照し、候補のデータ格納装置３２００のそれぞれについて、処理プロセス１０を実行するプロセス実行装置３１００との間の通信路の通信負荷を取得する。入出力先情報生成部２０２０は、候補のデータ格納装置３２００の中から、処理負荷が低く、かつ、該処理プロセス１０を実行するプロセス実行装置３１００との間の通信路の通信負荷が低いデータ格納装置３２００を優先して選択する。そして、処理プロセス１０と選択したデータ格納装置３２００を対応づける入出力先情報を生成する。
【００７４】
以上により、本実施形態の分散システム制御装置２０００は、データ格納装置３２００の処理負荷に加え、データ格納装置３２００と処理プロセス１０を実行するプロセス実行装置３１００との間の通信路の通信負荷を考慮する。これにより、処理プロセス１０は、処理負荷が低く、かつ、処理プロセス１０を実行するプロセス実行装置３１００との通信路の通信負荷が低いデータ格納装置３２００に対して処理データ２０の入力又は出力を行うようになる。結果として、処理プロセス１０が処理データ２０の入力又は出力にかかる時間はさらに短くなる。
【００７５】
以下、本実施形態について、詳細に説明する。
【００７６】
＜通信路負荷情報の詳細＞
通信路負荷情報は例えば図１２に示す通信路負荷テーブル６００を有する。ここで、プロセス実行装置３１００とデータ格納装置３２００の間の通信路は、直接両者を接続するバスや、ネットワークを介して両者を接続するネットワーク回線などである。通信路負荷テーブル６００は、プロセスＩＤ６１０、データ格納装置ＩＤ６２０、及び通信負荷情報６３０を有する。通信路負荷テーブル６００の各レコードは、プロセスＩＤ６１０で特定される処理プロセス１０を実行するプロセス実行装置３１００と、データ格納装置ＩＤ６２０で特定されるデータ格納装置３２００の間の通信路の負荷を、通信路負荷情報６３０で示している。例えば図７の１行目のレコードは、プロセスＩＤ６１０＝ｐｒｏｃ１の処理プロセス１０を実行するプロセス実行装置３１００と、データ格納装置ＩＤ６２０＝ＤＩＳＫ１のデータ格納装置３２００を接続する通信路における単位時間当たりのデータ通信量が、５０ＭＢ／ｓであることを示している。
【００７７】
通信負荷情報６３０が示す情報は様々である。例えば、通信負荷情報６３０は、プロセス実行装置３１００とデータ格納装置３２００の間の通信路のデータ通信量を表す。その他にも例えば、プロセス実行装置３１００とデータ格納装置３２００の間の通信路上に通信装置が介在する場合、通信負荷情報６３０は、該通信路上に介在する通信装置の処理負荷を示してもよい。通信路上に介在する通信装置とは、プロセス実行装置３１００とデータ格納装置３２００を接続するネットワークを構成するための機器であり、例えばスイッチやルータなどである。また、通信装置は、サーバ計算機やＰＣであってもよい。通信装置の処理負荷は、例えば通信装置が処理すべきパケットを格納するパケットキューに格納されているパケットの数で表される。また、通信装置の処理負荷は、ＣＰＵ等、通信装置の構成要素の処理負荷を示してもよい。
【００７８】
その他にも例えば、通信負荷情報６３０は、プロセス実行装置３１００とデータ格納装置３２００の間の通信路上に介在する通信装置の数を示してもよい。通信装置を介してデータ通信を行う場合、通信装置において処理待ちの時間等が発生する。そのため、通信路上に介在する通信装置の数が多いほど、通信負荷は高いと考えられる。そこで、通信路負荷テーブル６００は、通信負荷情報６３０に示す負荷情報として、通信装置の数を有してもよい。この場合について、図１３を用いて説明する。Ｃ１は、プロセスＩＤ＝ｐｒｏｃ１の処理プロセス１０を実行するプロセス実行装置３１００を実現するコンピュータであり、ＤＩＳＫ１、２、及び３はデータ格納装置３２００を実現するディスクであり、ＳＷ１及びＳＷ２は通信装置を実現するスイッチである。この構成において、コンピュータＣ１とディスクＤＩＳＫ１の間の通信路上には、スイッチＳＷ１が介在する。したがって、通信路負荷テーブル６００において、「プロセスＩＤ６１０＝ｐｒｏｃ１，データ格納装置ＩＤ６２０＝ＤＩＳＫ１」のレコードが示す通信負荷情報６３０の値は、「通信装置の数  １」である。また、コンピュータＣ１とディスクＤＩＳＫ２の間の通信路上には、スイッチＳＷ１及びスイッチＳＷ２が介在する。したがって、通信路負荷テーブル６００において、「プロセスＩＤ６１０＝ｐｒｏｃ１，データ格納装置ＩＤ６２０＝ＤＩＳＫ２」のレコードが示す通信負荷情報６３０の値は、「通信装置の数  ２」である。
【００７９】
通信路負荷テーブル６００は、処理プロセス１０が処理データ２０を入力する場合の通信路の負荷と、出力する場合の通信路の負荷をそれぞれ分けて示してもよい。この場合、通信路負荷テーブル６００は、例えば処理種別という列をさらに持つ。入力種別は、処理プロセス１０がデータ格納装置３２００から処理データ２０を入力するのか、データ格納装置３２００へ処理データ２０を出力するのかを示す処理種別情報である。そして、通信負荷情報６３０は、「プロセスＩＤ６１０、データ格納装置ＩＤ６２０、処理種別」の組み合わせについて、通信負荷情報６３０を示す。
【００８０】
通信路負荷テーブル６００は、プロセスＩＤ６１０の代わりに、プロセス実行装置ＩＤを有していてもよい。この場合、通信路負荷テーブル６００は、プロセス実行装置ＩＤで特定されるプロセス実行装置３１００と、データ格納装置ＩＤ６２０で特定されるデータ格納装置の間の通信路の通信負荷を、通信負荷情報６３０で示す。分散システム制御装置２０００は、各処理プロセス１０に関して、通信路負荷テーブルを参照するために、例えば処理プロセス１０とプロセス実行装置３１００の対応付けを示す情報を取得する。この情報は例えば、前述した分散システム３０００を管理する管理サーバから取得できる。
【００８１】
通信路負荷情報を取得する方法は様々である。例えば、通信路負荷情報取得部２０８０は、各通信路の負荷状況を監視する監視システムによって自動生成される通信路負荷情報を取得する。また例えば、通信路負荷情報取得部２０８０は、分散システム３０００の管理者が手動で入力した通信路負荷情報を取得してもよい。
【００８２】
通信路負荷情報を取得する時点は様々である。例えば通信路負荷情報取得部２０８０は、入出力先情報生成部２０２０が入出力先情報の生成処理を開始した時に、通信路負荷情報を取得する。また、通信路負荷情報取得部２０８０は、定期的な時間間隔、又は不定期な時間間隔で、繰り返し通信路負荷情報を取得してもよい。また、通信路負荷情報取得部２０８０は、いずれかの通信路の通信負荷が変動した際に、その通信路の新たな通信負荷を示す通信路負荷情報を取得してもよい。この場合、通信路負荷情報取得部２０８０は、処理負荷が変動した通信路に関する通信路負荷情報のみを取得してもよいし、全ての通信路に関する通信路負荷情報を取得してもよい。
【００８３】
＜入出力先情報生成処理の流れ＞
図１４は、入出力先情報生成処理の流れの一例を示すフローチャートである。なお、図１４において、図５と同符号のステップは、同様の処理を行うステップであるため、説明を適宜省略する。
【００８４】
ステップＳ２０２において、入出力先情報生成部２０２０は、通信路負荷情報取得部２１４０から通信路負荷情報を取得する。
【００８５】
ステップＳ２０４〜ステップＳ２１０は、集合Ｒの各レコードについて行うループ処理Ａである。ここで、集合Ｒは、候補テーブルから取得したレコードを有する集合である。ステップＳ２０４において、入出力先情報生成部２０２０は、集合Ｒの全てのレコードについてループ処理Ａを行ったか否かをチェックする。まだループ処理Ａを行っていないレコードがある場合、入出力先情報生成部２０２０は、集合Ｒから未処理のレコードを一つ選択し、ステップＳ２０６に進む。全てのレコードについてループ処理Ａを終えている場合は、ステップＳ２１２に進む。
【００８６】
ステップＳ２０６において、入出力先情報生成部２０２０は、上記選択したレコードに示されているデータ格納装置３２００についてデータ格納装置負荷テーブル１００を検索し、該データ格納装置３２００の処理負荷情報を取得する。そして、入出力先情報生成部２０２０は、該データ格納装置３２００が低負荷であるかを判定する。データ格納装置３２００が低負荷であると判定した場合は、ステップＳ２０８に進み、上記選択したレコードを集合Ｓに加える。一方、データ格納装置３２００が低負荷ではないと判定した場合は、ステップＳ２１０に進む。こうすることで、入出力先情報生成部２０２０は、低負荷なデータ格納装置３２００を示すレコードのみを集合Ｓに加える。
【００８７】
ステップＳ２１０は、ステップＳ２０４から始まるループ処理Ａの終端であるため、ステップＳ２０４に戻る。
【００８８】
ステップＳ２１２において、入出力先情報生成部２０２０は、集合Ｓの各レコードについて、通信路負荷テーブル６００を検索し、処理プロセス１０を実行するプロセス実行装置３１００とデータ格納装置３２００の間の通信路の通信負荷を取得する。そして、入出力先情報生成部２０２０は、集合Ｓに含まれるレコードを、通信負荷が低い順にソートする。
【００８９】
ステップＳ２１４において、入出力先情報生成部２０２０は、集合Ｓに含まれるレコードを上記ソートした順に有する入出力先テーブルを生成し、入出力先情報とする。なお、入出力先テーブル３００は、実施形態１と同様に、上記ソートしたレコードの一部で構成されていてもよい。
【００９０】
ここで、通信路負荷テーブル６００が示す通信負荷は、例えば図７に示す通信路負荷テーブル６００のレコード１とレコード３のように異なる指標で示されている場合がある。この場合、通信負荷情報６３０の値をそのまま利用して集合Ｓのレコードをソートすることはできない。そこで、例えば、入出力先情報生成部２０２０は、通信負荷情報６３０が示す値を標準化し、標準化した値に基づいてレコードのソートを行う。
【００９１】
本実施形態における入出力先情報生成処理は、上記フローチャートが示す処理に限定されない。上記フローチャートでは、まず、候補のデータ格納装置３２００について、処理負荷が低いか否かの二値で判定を行う。その後、低負荷であると判定されたデータ格納装置３２００の中から、プロセス実行装置３１００との間の通信路の負荷が低いデータ格納装置３２００を優先的に選択している。上記フローチャートが示す方法とは別の方法として、例えば次の方法がある。まず、各データ格納装置３２００について、プロセス実行装置３１００との間の通信路の通信負荷について、低負荷であるか否かの二値で判定を行う。そして、通信負荷が低負荷であると判定されたデータ格納装置３２００の中から、処理負荷の低いデータ格納装置３２００を優先的に選択する。その他にも例えば、候補のデータ格納装置３２００について、処理負荷及び通信路の負荷の双方について、低負荷であるか否かの二値で判定を行い、処理負荷と通信路の負荷が共に低負荷であると判定されたデータ格納装置３２００の集合を入出力先情報とする方法がある。
【００９２】
＜変形例＞
本実施形態における分散システム制御装置２０００は、実施形態１の分散システム制御装置２０００と同様に、「処理プロセス１０，処理データ２０」の各組み合わせについてデータ格納装置３２００を対応づけた入出力先情報を生成してもよい。同様に、分散システム制御装置２０００は、「処理プロセス１０，処理種別」の各組み合わせについてデータ格納装置３２００を対応づけた入出力先情報を生成してもよい。さらに同様に、分散システム制御装置２０００は、「処理プロセス１０，処理種別，処理データ２０」の各組み合わせについてデータ格納装置３２００を対応づけた入出力先情報を生成してもよい。
【００９３】
＜動作例２＞
以下、本実施形態に係る分散システム制御装置２０００の動作について、具体例を用いて説明する。ただし、下記に示すのは分散システム制御装置２０００の動作の一例であり、本実施形態は下記に示す動作例によって何らの限定も受けない。
【００９４】
図１５は、動作例２における分散システム制御装置２０００及びその使用環境の機能構成を示す図である。ここで、図１５において、図６又は図１１と同符号の機能ブロックは、図６又は図１１における機能ブロックと同様の機能を有するとして、説明を省略する。
【００９５】
動作例２の分散システム３０００は、通信路負荷情報提供部３６００を有する。通信路負荷情報提供部３６００は、プロセス実行装置３１００とデータ格納装置３２００の間の通信路の負荷情報を監視して通信路負荷情報を生成し、通信路負荷情報取得部２０８０へ送信する。
【００９６】
動作例２における分散システム制御装置２０００及び分散システム３０００のハードウエア構成及び動作状況は、動作例１と同様に図７で表される。そのため、説明を省略する。
【００９７】
入出力先情報生成部２０２０は、動作例１と同様に、「処理プロセス１０−ｐ２，入力処理、処理データ２０−Ｄ１」の組み合わせに対してデータ格納装置３２００を対応づける入出力先情報を生成する。以下、その具体的な動作を説明する。また、動作例１と同様に、処理データ２０−Ｄ１は、ディスクＤＩＳＫ１〜ディスクＤＩＳＫ４のそれぞれに格納されているとする。
【００９８】
候補情報取得部２０６０が取得する候補情報のうち、処理プロセス１０−ｐ２に関する情報のみを示したテーブルは、動作例１の場合と同様に、図８の候補テーブル２００−１で表される。データ格納装置負荷情報取得部２０４０が取得するデータ格納装置負荷情報は、動作例１と同様に、図９のデータ格納装置負荷テーブル１００−１で表される。
【００９９】
通信路負荷情報取得部２０８０は、通信路負荷情報提供部３６００から、通信路負荷情報を取得する。図１６に示す通信路負荷テーブル６００−２は、取得した通信路負荷情報のうち、処理プロセス１０−ｐ２を実行するコンピュータＣ１と各ディスクの間の通信路の負荷を示すテーブルである。
【０１００】
入出力先情報生成部２０２０はまず、候補テーブル２００から候補のデータ格納装置３２００を取得し、集合Ｒに加える。集合Ｒは、動作例１と同様に、候補テーブル２００−１の中のレコード１〜４を有する。したがって、候補のデータ格納装置３２００はディスクＤＩＳＫ１〜ＤＩＳＫ４である。これは、動作例１と同様である。
【０１０１】
次に、入出力先情報生成部２０２０は、候補であるディスクＤＩＳＫ１〜ＤＩＳＫ４のそれぞれについてデータ格納装置負荷情報を参照し、ディスクＤＩＳＫ１〜ＤＩＳＫ４がそれぞれ低負荷であるか否かを判定する。ここで、入出力先情報生成部２０２０は、データ転送量が１００ＭＢ／ｓ未満のディスクを低負荷と判定するとする。この場合、ディスクＤＩＳＫ１は高負荷と判定され、ディスクＤＩＳＫ２〜４は低負荷と判定される。入出力先情報生成部２０２０は、集合Ｒが含むレコードのうち、処理負荷が低負荷と判定されたデータ格納装置３２００を示すレコードを、集合Ｓに加える。本動作例の場合、候補テーブル２００−１のレコード２〜４が、集合Ｓに加わる。
【０１０２】
そして、入出力先情報生成部２０２０は、通信路負荷情報を参照し、集合Ｓのレコードを、通信路の負荷が低い順にソートする。そして、上記ソートしたレコードから成る入出力先テーブル３００−２を生成する（図１７参照）。
【０１０３】
入出力先通知部３４４０は、上記入出力先テーブル３００−２を受信する。そして、受信した入出力先テーブル３００−２に従い、処理プロセス１０−ｐ２に対して通知を行う。本動作例の場合、管理サーバ３４００は、処理プロセス１０−ｐ２に対し、処理データ２０−Ｄ１の入力をディスクＤＩＳＫ４から行うように指示する。指示を受けた処理プロセス１０−ｐ２は、処理データ２０−Ｄ１をディスクＤＩＳＫ４から入力する。
【０１０４】
以上の動作により、処理プロセス１０−ｐ２は、処理データ２０−Ｄ１の入力を行えるディスクのうち、処理負荷が低く、かつ最も通信負荷が低いディスクＤＩＳＫ４から、処理データ２０−Ｄ１の入力を行う。そのため、処理プロセス１０−ｐ２による処理データ２０−Ｄ１の入力にかかる時間が短くなる。
【０１０５】
＜作用・効果＞
以上の構成により、本実施形態によれば、入出力先情報生成部２０２０は、処理プロセス１０に関する候補情報が示す候補のデータ格納装置３２００の中から、データ格納装置負荷情報が示す処理負荷が低く、かつ、通信路負荷情報が示す該処理プロセス１０を実行するプロセス実行装置３１００との間の通信路の通信負荷が低いデータ格納装置３２００を優先して選択し、該処理プロセス１０と対応づける。これにより、処理プロセス１０は、処理負荷が低く、かつ、該処理プロセス１０を実行するプロセス実行装置３１００との間の通信路の通信負荷が低いデータ格納装置３２００に対して処理データ２０の入力又は出力を行う。その結果、処理プロセス１０による処理データ２０の入力又は出力にかかる時間がさらに短くなる。
【０１０６】
[実施形態３]
＜概要＞
図１８は、実施形態３に係る分散システム制御装置２０００の構成を、その使用環境と共に示した図である。図１８において、図１と同符号の機能ブロックは、図１と同様の機能を有するとし、説明を省略する。また図１８おける分散システム３０００の構成は、例えば図１における分散システム３０００の構成と同じである。そのため図１８において、分散システム３０００の構成は省略する。
【０１０７】
本実施形態に係る分散システム３０００は、通信装置３３００を有する。通信装置３３００は、プロセス実行装置３１００とデータ格納装置３２００の通信路の間に介在する装置である。通信装置３３００は、例えばスイッチやルータなどのネットワーク機器である。
【０１０８】
実施形態３に係る分散システム制御装置２０００は、ネットワーク構成情報取得部２１００とプロセス実行装置割当情報取得部２１１０を有する。ネットワーク構成情報取得部２１００は、分散システム３０００が有するプロセス実行装置３１００、データ格納装置３２００及び通信装置３３００が、互いにどのプロセス実行装置３１００、データ格納装置３２００及び通信装置３３００と接続されているのかを示すネットワーク構成情報を取得する。プロセス実行装置割当情報取得部２１１０は、処理プロセス１０と、該処理プロセス１０を実行するプロセス実行装置３１００の対応付けを示す情報であるプロセス実行装置割当情報を取得する。
【０１０９】
本実施形態における通信路負荷情報は、分散システム３０００が有する各計算機間の通信路における通信負荷を示す。
【０１１０】
本実施形態における入出力先情報生成部２０２０は、候補情報、データ格納装置負荷情報、ネットワーク構成情報、及びプロセス実行装置割当情報に基づいて、処理プロセス１０と、該処理プロセス１０が処理データ２０の入力又は出力を行うデータ格納装置３２００を対応づける入出力先情報を生成する。具体的には、入出力先情報生成部２０２０は、処理プロセス１０について候補情報を参照し、該処理プロセス１０が処理データ２０を入力又は出力できるデータ格納装置３２００の候補を取得する。そして、入出力先情報生成部２０２０は、候補のデータ格納装置３２００の中から、以下の３つの条件を満たすデータ格納装置３２００を優先して選択して処理プロセス１０と対応づけ、入出力先情報を生成する。第１の条件は、データ格納装置３２００と、上記処理プロセス１０を実行するプロセス実行装置３１００との間の通信路上に介在する通信装置の数が少ないことである。上記通信装置の数は、ネットワーク構成情報及びプロセス実行装置割当情報から算出される。第２の条件は、データ格納装置負荷情報が示すデータ格納装置３２００の処理負荷が低いことである。第３の条件は、通信路負荷情報が示す上記プロセス実行装置３１００とデータ格納装置３２００との間の通信路の通信負荷が低いことである。
【０１１１】
以上により、本実施形態における分散システム制御装置２０００は、実施形態２の分散システム制御装置２０００と異なり、処理プロセス１０を実行するプロセス実行装置３１００との間の通信路上に介在する通信装置３３００の数が少ないデータ格納装置３２００を優先して選択する。こうすることで、処理プロセス１０は、データ格納装置３２００との間の通信路上に介在する通信装置の数が少ないデータ格納装置３２００に対して処理データ２０の入力又は出力を行う。その結果、プロセス実行装置３１００がデータ格納装置３２００に対してデータ入出力を実行する際に、負荷を与える通信装置３３００の数が少なくなる可能性が高くなる。また、データ格納装置３２００との間に介在する通信装置３３００の故障等により、データ格納装置３２００に対して処理データ２０の入力又は出力を行えなくなる可能性が低くなる。
【０１１２】
以下、本実施形態の詳細を述べる。
【０１１３】
＜プロセス実行装置割当情報の詳細＞
プロセス実行装置割当情報は、例えば図１９に示すプロセス実行装置割当テーブル７００を有する。プロセス実行装置割当テーブル７００は例えば、処理プロセス１０の識別子を示すプロセスＩＤ７１０と、プロセス実行装置３１００の識別子を示すプロセス実行装置ＩＤ７２０を有する。プロセス実行装置割当テーブル７００の各レコードは、プロセスＩＤ７１０で特定される処理プロセス１０が、プロセス実行装置ＩＤ７２０で特定されるプロセス実行装置３１００上で実行されていることを示す。
【０１１４】
＜ネットワーク構成情報の詳細＞
ネットワーク構成情報は、例えば図２０に示すネットワーク構成テーブル８００を有する。ネットワーク構成テーブル８００は例えば、第１計算機ＩＤ８１０及び第２計算機ＩＤ８２０を有する。ネットワーク構成テーブル８００の各レコードは、第１計算機ＩＤ８１０のＩＤで特定される計算機と、第２計算機ＩＤ８２０で特定される計算機とが、通信装置３３００を介さずに互いに直接接続されていることを表す。
【０１１５】
ここで図２０に示すネットワーク構成テーブル８００は、図１３に示す分散システム３０００の構成を表している。レコード１〜３はそれぞれ、スイッチＳＷ１がコンピュータＣ１、ディスクＤＩＳＫ１、スイッチＳＷ２に接続されていることを示している。そして、レコード４と５はそれぞれ、スイッチＳＷ２がディスクＤＩＳＫ２、ディスクＤＩＳＫ３に接続されていることを示している。
【０１１６】
ネットワーク構成情報取得部２１００がネットワーク構成情報を取得する方法は様々である。例えば通信路負荷情報生成部２１６０は、分散システム３０００の管理者から予めネットワーク構成情報を有するファイル等の入力を受け付けておき、上記ファイル等を参照することでネットワーク構成情報を取得する。その他にも例えば、ネットワーク構成情報取得部２１００は、分散システム３０００が有する各計算機から、該計算機が他のどの計算機と接続されているかの情報を取得し、取得した情報に基づいてネットワーク構成情報を構成してもよい。例えば図１３に示す分散システム３０００において、ネットワーク構成情報取得部２１００は、スイッチＳＷ１から、スイッチＳＷ１がどの計算機と接続されているかを示す情報を取得することで、図２０に示すネットワーク構成テーブル８００のレコード１〜３までを取得できる。さらに、ネットワーク構成情報取得部２１００は、スイッチＳＷ２から、スイッチＳＷ２がどの計算機と接続されているかを示す情報を取得することで、図２０に示すネットワーク構成テーブル８００のレコード４及び５を取得できる。そして、ネットワーク構成情報取得部２１００は、スイッチＳＷ１から取得した情報とスイッチＳＷ２から取得した情報を合わせることにより、図２０に示すネットワーク構成テーブル８００を構成することができる。
【０１１７】
＜通信路負荷情報の詳細＞
本実施形態における通信路負荷情報は、例えば図２１に示す通信路負荷テーブル１０００を有する。通信路負荷テーブル１０００は、例えば第１計算機ＩＤ１０１０、第２計算機ＩＤ１０２０、及び通信負荷情報１０３０を有する。通信路負荷テーブルは、第１計算機ＩＤ１０１０で特定される計算機と、第２計算機ＩＤ１０２０で特定される計算機の間の通信路の通信負荷を、通信負荷情報１０３０で示す。通信負荷情報１０３０が示す情報は様々である。通信負荷情報１０３０は、例えば実施形態２における通信路負荷テーブル６００が示す通信路負荷情報６３０と同様の情報を示す。また、通信路負荷テーブル１０００は、第１計算機ＩＤ１０１０と第２計算機ＩＤ１０２０の間の通信路の処理負荷を通信方向ごとに分けて示してもよい。つまり、通信路負荷テーブル１０００は、第１計算機ＩＤ１０１０から第２計算機ＩＤ１０２０へ処理データ２０を送信する場合の処理負荷と、第２計算機ＩＤ１０２０から第１計算機ＩＤ１０１０へ処理データ２０を送信する場合の処理負荷を分けて示してもよい。この場合、通信路負荷テーブル１０００は、例えば通信方向という列をさらに持つ。そして、通信路負荷情報１０３０は、「第１計算機ＩＤ１０１０、第２計算機ＩＤ１０２０、通信方向」の組み合わせについて、通信路負荷情報１０３０を示す。また、第１計算機ＩＤ１０１０は送信側の計算機、第２計算機ＩＤ１０２０は受信側の計算機を表すと定めておく方法もある。こうすれば、例えば、「第１計算機ＩＤ１０１０＝ＰＣ１、第２計算機ＩＤ１０２０＝ＳＷ１」であるレコードは、ＰＣ１からＳＷ１へ処理データ２０を送信する方向におけるＰＣ１とＳＷ１の間の通信路の通信負荷を示す。一方、「第１計算機ＩＤ１０１０＝ＳＷ１、第２計算機ＩＤ１０２０＝ＰＣ１」であるレコードは、ＳＷ１からＰＣ１へ処理データ２０を送信する方向におけるＰＣ１とＳＷ１の間の通信路の通信負荷を示す。
【０１１８】
＜入出力先情報生成処理＞
入出力先情報生成部２０２０は、候補情報、ネットワーク構成情報、プロセス割当情報、通信路負荷情報、データ格納装置負荷情報に基づき、処理プロセス１０に対し、以下の３つの条件を満たすデータ格納装置３２００を優先的に対応づける入出力先情報を生成する。第１の条件は、１）データ格納装置３２００と該処理プロセス１０を実行するプロセス実行装置３１００との間の通信路上に介在する通信装置の数が少ないことである。第２の条件は、２）データ格納装置３２００と該処理プロセス１０を実行するプロセス実行装置３１００との間の通信路の通信負荷が低いことである。そして、第３の条件は、３）データ格納装置３２００の処理負荷が低いことである。以下、上記１）〜３）の全ての条件を満たすデータ格納装置３２００を優先して選択する方法について、詳しく説明する。
【０１１９】
まず入出力先情報生成部２０２０は、ネットワーク構成情報、データ格納装置負荷情報、通信路負荷情報に基づいて、図２２に示す負荷判定テーブル９００を作成する。負荷判定テーブル９００の作成方法については、後述する。負荷判定テーブル９００は、通信装置ＩＤ９１０及びデータ格納装置ＩＤリスト９２０を有する。負荷判定テーブル９００の各レコードは、通信装置ＩＤ９１０で特定される通信装置３３００と以下の３つの条件を満たすデータ格納装置３２００を対応付ける。第１の条件は、データ格納装置３２００が、該通信装置３３００と通信可能に接続されていることである。第２の条件は、データ格納装置負荷情報が示すデータ格納装置３２００の処理負荷が低いことである。第３の条件は、通信路負荷情報が示すデータ格納装置３２００と該通信装置３３００との間の通信路の通信負荷が低いことである。
【０１２０】
図２３及び図２４は、入出力先情報生成部２０２０が、負荷判定テーブルを作成する処理（以下、負荷判定テーブル作成処理）の流れの一例を示すフローチャートである。ここで、入出力先情報生成部２０２０は、図２３記載の各ステップを行った後、図２４記載の各ステップを行うことで、負荷判定テーブルを作成する。
【０１２１】
ステップＳ３０１において、入出力先情報生成部２０２０は、データ格納装置負荷情報取得部２０４０からデータ格納装置負荷情報を取得する。ステップＳ３０２において、入出力先情報生成部２０２０は、通信路負荷情報取得部２０８０から通信路負荷情報を取得する。ステップＳ３０３において、入出力先情報生成部２０２０は、ネットワーク構成情報取得部２１００からネットワーク構成情報を取得する。
【０１２２】
ステップＳ３０４において、入出力先情報生成部２０２０は、ネットワーク構成情報を参照し、分散システム３０００が有する全てのデータ格納装置３２００のＩＤを集合Ｒに加える。
【０１２３】
ステップＳ３０６〜ステップＳ３２２は、入出力先情報生成部２０２０が、集合Ｒに含まれる各データ格納装置３２００の各ＩＤについて行うループ処理Ａである。ステップＳ３０６において、入出力先情報生成部２０２０は、集合Ｒに含まれる全てのデータ格納装置３２００のＩＤについてループ処理Ａを行ったかをチェックする。まだループ処理Ａの対象としていないＩＤがある場合、入出力先情報生成部２０２０は、上記まだ対象としていないＩＤの中から１つを選択する。ここで、選択したＩＤをｉとする。また、ＩＤがｉのデータ格納装置３２００を、データ格納装置３２００−ｉと表記する。集合Ｒに含まれる全てのデータ格納装置３２００のＩＤについてループ処理Ａを終えている場合は、図２３のステップＳ３２４に進む。
【０１２４】
ステップＳ３０８において、入出力先情報生成部２０２０は、データ格納装置３２００−ｉについてデータ格納装置負荷情報を参照し、データ格納装置３２００−ｉの処理負荷が低負荷か否かを判定する。上記処理負荷が低負荷である場合、ステップＳ３１０に進む。一方、上記処理負荷が低負荷でない場合、ステップＳ３２１に進む。
【０１２５】
ステップＳ３１０において、入出力先情報生成部２０２０は、ネットワーク構成情報が示す通信装置３３００の中から、他の通信装置３３００を介さずに直接データ格納装置３２００−ｉと接続されている通信装置３３００を全て選択し、集合Ｓに加える。
【０１２６】
ステップＳ３１２〜ステップＳ３２０は、集合Ｓに含まれる各通信装置３３００のＩＤについて行うループ処理Ｂである。ステップＳ３１２において、集合Ｓに含まれる全ての通信装置３３００のＩＤについてループ処理Ｂを行ったかをチェックする。まだループ処理Ｂの対象としていないＩＤがある場合、入出力先情報生成部２０２０は、まだループ処理Ｂの対象としていないＩＤの中から１つを選択し、ステップＳ３１４に進む。ここで、選択したＩＤをｊとする。また、ＩＤがｊである通信装置３３００を通信装置３３００−ｊと表記する。集合Ｓに含まれる全ての通信装置３３００のＩＤについてループ処理Ｂを終えている場合は、ステップＳ３２１に進む。
【０１２７】
ステップＳ３１４において、入出力先情報生成部２０２０は、通信路負荷情報を参照し、データ格納装置３２００−ｉと通信装置３３００−ｊの間の通信路の通信負荷が低負荷か否かを判定する。上記通信負荷が低負荷である場合、ステップＳ３１６に進む。一方、上記通信負荷が低負荷でない場合、ステップＳ３２０に進む。
【０１２８】
ステップＳ３１６において、入出力先情報生成部２０２０は、負荷判定テーブル９００を参照し、通信装置ＩＤ９１０＝ｊであるレコードのデータ格納装置ＩＤリスト９２０に、データ格納装置３２００−ｉのＩＤであるｉを追加する。ここで、負荷判定テーブル９００が通信装置ＩＤ９１０＝ｊであるレコードを有しない場合、入出力先情報生成部２０２０は、負荷判定テーブル９００に、「通信装置ＩＤ９１０＝ｊ，データ格納装置ＩＤリスト９２０＝ｉ」であるレコードを新規登録する。
【０１２９】
ステップＳ３１８において、通信装置３３００−ｊのＩＤであるｊを、集合Ｔに加える。
【０１３０】
ステップＳ３２０は、ループ処理Ｂの終端である。そのため、ステップＳ３１２に戻る。
【０１３１】
ステップＳ３２１において、入出力先情報生成部２０２０は、集合Ｓを空にする。
【０１３２】
ステップＳ３２２は、ループ処理Ａの終端である。そのため、ステップＳ３０６に戻る。
【０１３３】
ステップＳ３２４以降の処理は、図２４のフローチャートに示す処理である。
【０１３４】
ステップＳ３２４〜ステップＳ３４４は、集合Ｔが要素（通信装置３３００のＩＤ）を有する間、繰り返し行うループ処理Ｃである。ステップＳ３２４において、入出力先情報生成部２０２０は、集合Ｔが通信装置３３００のＩＤを有するかチェックする。集合Ｔが通信装置３３００のＩＤを有する場合、ステップＳ３２６に進む。集合Ｔが通信装置３３００のＩＤを有しない場合、負荷判定テーブル作成処理を終了する。
【０１３５】
ステップＳ３２６において、入出力先情報生成部２０２０は、集合Ｔが有する要素から成る集合Ｕを生成し、集合Ｔを空にする。
【０１３６】
ステップＳ３２８〜ステップＳ３４２は、集合Ｕに含まれる通信装置３３００のＩＤのそれぞれについて行うループ処理Ｄである。ステップＳ３２８において、集合Ｕに含まれる全ての通信装置３３００のＩＤについてループ処理Ｄを行ったかをチェックする。まだループ処理Ｄの対象としていないＩＤがある場合、入出力先情報生成部２０２０は、まだループ処理Ｄの対象としていないＩＤの中から１つを選択し、ステップＳ３２９に進む。ここで、選択したＩＤをｋとする。集合Ｕに含まれる全ての通信装置３３００のＩＤについてループ処理Ｄを終えている場合は、ステップＳ３４４に進む。
【０１３７】
ステップＳ３２９において、入出力先情報生成部２０２０は、通信装置３３００−ｋを集合Ｘに加える。集合Ｘは、ループ処理Ｄの対象として選択済みの通信装置３３００の集合である。
【０１３８】
ステップＳ３３０において、入出力先情報生成部２０２０は、通信機器３３００−ｋと通信機器３３００を介さずに直接接続されており、かつ、集合Ｘに含まれない全ての通信装置のＩＤを、集合Ｖに加える。
【０１３９】
ステップＳ３３２〜ステップＳ３４０は、集合Ｖに含まれるＩＤを持つ各通信装置３３００について行うループ処理Ｅである。ステップＳ３３２において、入出力先情報生成部２０２０は、集合Ｖに含まれる全ての通信装置３３００のＩＤについてループ処理Ｅを行ったかをチェックする。まだループ処理Ｅの対象としていないＩＤがある場合、入出力先情報生成部２０２０は、まだループ処理Ｅの対象としていないＩＤの中から１つを選択し、ステップＳ３３４に進む。ここで、選択したＩＤをｎとする。集合Ｖに含まれる全ての通信装置３３００のＩＤについてループ処理Ｅを終えている場合は、ステップＳ３４２に進む。
【０１４０】
ステップＳ３３４において、入出力先情報生成部２０２０は、通信路負荷情報を参照し、通信装置３３００−ｋと通信装置３３００−ｎの間の通信路の通信負荷が低負荷であるか否かを判定する。上記通信負荷が低負荷である場合、ステップＳ３３６に進む。一方、上記通信負荷が低負荷でない場合、ステップＳ３４０に進む。
【０１４１】
ステップＳ３３６において、入出力先情報生成部２０２０は、負荷判定テーブル９００を参照し、通信装置ＩＤ９１０＝ｎであるレコードのデータ格納装置ＩＤリスト９２０に、通信装置ＩＤ９１０＝ｋであるレコードのデータ格納装置ＩＤリスト９２０が示すデータ格納装置３２００のＩＤのリストを追加する。ここで、負荷判定テーブル９００が通信装置ＩＤ９１０＝ｎであるレコードを有しない場合は、入出力先情報生成部２０２０は、負荷判定テーブル９００に、通信装置ＩＤ９１０＝ｎであり、データ格納装置ＩＤリスト９２０に、通信装置ＩＤ９１０＝ｋであるレコードのデータ格納装置ＩＤリスト９２０が示すデータ格納装置３２００のＩＤのリストを有するレコードを新規登録する。
【０１４２】
ステップＳ３３８において、集合Ｔに、通信装置３３００−ｎのＩＤであるｎを加える。
【０１４３】
ステップＳ３４０は、ループ処理Ｅの終端である。そのため、ステップＳ３３２に戻る。
【０１４４】
ステップＳ３４２は、ループ処理Ｄの終端である。そのため、ステップＳ３２８に戻る。
【０１４５】
ステップＳ３４４は、ループ処理Ｃの終端である。そのため、ステップＳ３２４に戻る。
【０１４６】
以上の処理により、入出力先情報生成部２０２０は、負荷判定テーブル９００を作成する。なお、上記に示す処理の流れはあくまで一例であるため、負荷判定テーブル作成記処理は、上記に限定されない。
【０１４７】
次に、入出力先情報生成部２０２０が、負荷判定テーブル９００を利用して、入出力先情報を生成する処理の流れを説明する。
【０１４８】
図２５及び図２６は、入出力先情報生成部２０２０が行う入出力先情報生成処理の流れである。入出力先情報生成部２０２０は、図２５記載の各ステップにおける処理を行った後、図２６記載の各ステップにおける処理を行うことで、入出力先情報を生成する。なお、入出力先情報生成部２０２０は、入出力先情報生成処理の前に負荷判定テーブル９００を作成するため、データ格納装置負荷情報、通信路負荷情報、及びネットワーク構成情報を取得済みである。
【０１４９】
ステップＳ３５０において、入出力先情報生成部２０２０は、候補情報取得部２０６０から候補情報を取得する。ステップＳ３５２において、入出力先情報生成部２０２０は、候補情報が有する候補テーブルから、対象とする処理プロセス１０と対応づけるデータ格納装置３２００の候補を取得し、集合Ｒに加える。
【０１５０】
ステップＳ３５４において、入出力先情報生成部２０２０は、プロセス実行装置割当情報を参照し、対象の処理プロセス１０を実行しているプロセス実行装置３１００のＩＤを取得する。ここで、上記プロセス実行装置３１００のＩＤをｉとし、上記プロセス実行装置３１００をプロセス実行装置３１００−ｉと表記する。そして、入出力先情報生成部２０２０は、ネットワーク構成情報を取得し、プロセス実行装置３１００−ｉと、通信装置３３００を介さずに直接接続されているデータ格納装置３２００のＩＤを全て取得し、集合Ｓに加える。
【０１５１】
ステップＳ３５６〜ステップＳ３６２は、集合Ｓに含まれるＩＤを持つ各データ格納装置３２００について行うループ処理Ａである。ステップＳ３５６において、入出力先情報生成部２０２０は、集合Ｓに含まれる全てのＩＤについてループ処理Ａを行ったかをチェックする。まだループ処理Ａの対象としていないＩＤがある場合、入出力先情報生成部２０２０は、まだループ処理Ａの対象としていないＩＤの中から１つを選択し、ステップＳ３５８に進む。ここで、選択したＩＤをｊとする。集合Ｓに含まれる全てのＩＤについてループ処理Ａを終えている場合は、ステップＳ３６４に進む。
【０１５２】
ステップＳ３５８において、入出力先情報生成部２０２０は、データ格納装置３２００−ｊについて、データ格納装置負荷情報が示す処理負荷が低負荷であり、かつ、通信路負荷情報が示すプロセス実行装置３１００−ｉとの間の通信路の通信負荷が低負荷であるかを判定する。上記処理負荷及び通信負荷が低負荷である場合は、ステップＳ３６０に進む。上記処理負荷及び通信負荷のいずれかが低負荷でない場合は、ステップＳ３６２に進む。
【０１５３】
ステップＳ３６０において、入出力先情報生成部２０２０は、データ格納装置３２００−ｊのＩＤであるｊを、集合Ｔに加える。集合Ｔは、入出力先情報に含めるデータ格納装置３２００のＩＤを格納するための集合である。
【０１５４】
ステップＳ３６２は、ループ処理Ａの終端である。そのため、ステップＳ３５６に戻る。
【０１５５】
ステップＳ３６４において、入出力先情報生成部２０２０は、ネットワーク構成情報と通信路負荷情報を参照し、プロセス実行装置３１００−ｉと通信装置３３００を介さずに直接接続されており、かつプロセス実行装置３１００−ｉとの間の通信路の通信負荷が低い通信装置３３００のＩＤを全て集合Ｕに加える。
【０１５６】
ステップＳ３６６以降は、図２６記載の処理である。
【０１５７】
ステップＳ３６６〜ステップＳ３８２は、集合Ｕが要素（通信装置３３００のＩＤ）を有する間、繰り返し行うループ処理Ｂである。ステップＳ３６６において、入出力先情報生成部２０２０は、集合Ｕが通信装置３３００のＩＤを有するかチェックする。集合Ｕが通信装置３３００のＩＤを有する場合、ステップＳ３６８に進む。集合Ｕが通信装置３３００のＩＤを有しない場合、ステップＳ３８４に進む。
【０１５８】
ステップＳ３６８において、入出力先情報生成部２０２０は、集合Ｕと同じ要素から成る集合Ｖを生成し、集合Ｕを空にする。
【０１５９】
ステップＳ３７０〜ステップＳ３８０は、集合Ｖに含まれるＩＤを持つ各通信装置３３００について行うループ処理Ｃである。ステップＳ３７０において、入出力先情報生成部２０２０は、集合Ｖに含まれる全てのＩＤについてループ処理Ｃを行ったかをチェックする。まだループ処理Ｃの対象としていないＩＤがある場合、入出力先情報生成部２０２０は、まだループ処理Ｃの対象としていないＩＤの中から１つを選択し、ステップＳ３７１に進む。ここで、選択したＩＤをｋとする。集合Ｖに含まれる全てのＩＤについてループ処理Ｃを終えている場合は、ステップＳ３８２に進む。
【０１６０】
ステップＳ３７１において、入出力先情報生成部２０２０は、通信機器３３００−ｋのＩＤであるｋを集合Ｘに加える。集合Ｘは、ループ処理Ｃの処理対象として選択済みである通信装置３３００のＩＤを全て有する集合である。
【０１６１】
ステップＳ３７２において、入出力先情報生成部２０２０は、通信装置ＩＤ９１０＝ｋをキーとして、負荷判定テーブル９００を検索する。
【０１６２】
ステップＳ３７３において、入出力先情報生成部２０２０は、ステップＳ３７２で通信装置ＩＤ９１０＝ｋのレコードが取得できたかを判定する。上記レコードを取得できた場合は、ステップＳ３７４に進む。上記レコードを取得できなかった場合は、ステップＳ３７８に進む。
【０１６３】
ステップＳ３７４において、入出力先情報生成部２０２０は、上記取得したレコードのデータ格納装置ＩＤリスト９２０が示すリストが空であるかを判定する。上記リストが空でない場合、ステップＳ３７６に進む。上記リストが空である場合は、ステップＳ３７８に進む。
【０１６４】
ステップＳ３７６において、入出力先情報生成部２０２０は、上記で取得したリストに含まれるデータ格納装置３２００のＩＤを全て集合Ｔに加える。
【０１６５】
ステップＳ３７８において、入出力先情報生成部２０２０は、ネットワーク構成情報及び通信路負荷情報を参照し、下記３つの条件を満たす通信装置３３００を全て選択して、そのＩＤを集合Ｕに加える。１つ目の条件は、選択する通信装置３３００が集合Ｘに含まれないことである。２つ目の条件は、選択する通信装置３３００が、通信装置３３００−ｋと、他の通信装置３３００を介さずに直接接続されていることである。３つ目の条件は、通信機器３３００−ｋとの間の通信路の通信負荷が低いことである。
【０１６６】
ステップＳ３８０は、ループ処理Ｃの終端である。そのため、ステップＳ３７０に戻る。
【０１６７】
ステップＳ３８２は、ループ処理Ｂの終端である。そのため、ステップＳ３６６に戻る。
【０１６８】
ステップＳ３８４において、入出力先情報生成部２０２０は、対象の処理プロセス１０と、集合Ｔが有するデータ格納装置３２００とを対応づけた入出力先テーブル３００を生成し、入出力先情報を生成する。
【０１６９】
ここで、入出力先情報生成部２０２０は、処理プロセス１０を実行するプロセス実行装置３１００と、対象の処理プロセス１０に対応づけるデータ格納装置３２００との間の通信路上に介在する通信装置３３００の数に、上限値を設けてもよい。この場合、入出力先情報生成部２０２０は、例えば上記ステップＳ３７０〜ステップＳ３８０で行われるループ処理Ｃを行う回数の上限を、上記通信路の数の上限値とする。こうすることで、入出力先情報生成部２０２０は、対象の処理プロセス１０を実行しているプロセス実行装置３１００との間に介在する通信装置の数が少ないデータ格納装置３２００を優先して選択しつつ、入出力先情報生成処理にかかる時間を短くすることができる。
【０１７０】
以上が、入出力先情報生成部２０２０が、負荷判定テーブル９００を利用して入出力先情報を生成する処理の流れである。なお、図２５及び図２６で示したフローチャートは、入出力先情報生成処理の一例である。負荷判定テーブル９００を利用した入出力先情報生成処理は、上記の処理に限定されない。
【０１７１】
また、本実施形態における入出力先情報生成処理は、負荷判定テーブル９００を利用する方法に限定されない。例えば入出力先情報生成部２０２０は、候補のデータ格納装置３２００を、処理プロセス１０を実行するプロセス実行装置３１００との間に介在する通信装置の数が少ないものから順番に選択し、処理負荷が低いか否か、及び、該プロセス実行装置３１００との間の通信路の通信負荷が低いか否かの判定を行う。そして、処理負荷が低く、かつ該プロセス実行装置３１００との間の通信負荷が低いデータ格納装置３２００を該処理プロセス１０に対応づけ、入出力先情報を生成する。この方法において、入出力先情報生成部２０２０は、上記判定の対象であるデータ格納装置３２００を選択する際、データ格納装置３２００と処理プロセス１０を実行するプロセス実行装置３１００との間に介在する通信装置の数に上限を設けてもよい。この場合、入出力先情報生成部２０２０は、該プロセス実行装置３１００との間に介在する通信装置の数が上記上限値以下であるデータ格納装置３２００のみ、該処理プロセス１０と対応づける。こうすることで、上記判定の対象とするデータ格納装置３２００の数を減らすことができるため、入出力先情報生成処理にかかる時間が短くなる。
【０１７２】
＜変形例＞
本実施形態における分散システム制御装置２０００は、実施形態１の分散システム制御装置２０００と同様に、「処理プロセス１０，処理データ２０」の各組み合わせについてデータ格納装置３２００を対応づけた入出力先情報を生成してもよい。同様に、分散システム制御装置２０００は、「処理プロセス１０，処理種別」の各組み合わせについてデータ格納装置３２００を対応づけた入出力先情報を生成してもよい。さらに同様に、分散システム制御装置２０００は、「処理プロセス１０，処理種別，処理データ２０」の各組み合わせについてデータ格納装置３２００を対応づけた入出力先情報を生成してもよい。
【０１７３】
＜動作例３＞
以下、本実施形態に係る分散システム制御装置２０００の動作について、具体例を用いて説明する。ただし、下記に示すのは分散システム制御装置２０００の動作の一例であり、本実施形態は下記に示す動作例によって何らの限定も受けない。
【０１７４】
図２７は、動作例２における分散システム制御装置２０００及びその使用環境の機能構成を示す図である。ここで、図２７において、図１５又は図１８と同符号の機能ブロックは、図１５又は図１８における機能ブロックと同様の機能を有するとして、説明を省略する。
【０１７５】
動作例３の管理サーバ３４００は、ネットワーク構成情報提供部３４５０及びプロセス実行装置割当情報提供部３４６０を有する。ネットワーク構成情報提供部３４５０は、分散システム３０００を構成する各計算機の接続関係を示すネットワーク構成情報を、ネットワーク構成情報取得部２１００へ提供する。プロセス実行装置割当情報提供部３４６０は、処理プロセス１０と、プロセス実行装置３１００を実現する各コンピュータの対応付けを示すプロセス実行装置割当情報を、プロセス実行装置割当情報取得部２１１０に提供する。
【０１７６】
図２８は、動作例３における分散システム制御装置２０００及び分散システム３０００のハードウエア構成及び動作状況を示す図である。コンピュータＣ１〜Ｃ８は、プロセス実行装置３１００として機能する。ディスクＤＩＳＫ１〜ＤＩＳＫ８は、データ格納装置３２００として機能する。また、ディスクＤＩＳＫ１〜ＤＩＳＫ８はそれぞれ、コンピュータＣ１〜Ｃ８の内部に設けられている。スイッチＳＷ１〜ＳＷ７は、通信装置３３００として機能する。各計算機の接続関係は、図２８に示す通りである。
【０１７７】
動作例３において、処理プロセス１０−ｐ１はコンピュータＣ１上で実行されている。処理プロセスｐ１は、ディスクＤＩＳＫ１へ処理データ２０−Ｄ２をディスクＤＩＳＫ１へ出力中である。
【０１７８】
ここで、管理サーバによってコンピュータＣ１に対し、新たに処理プロセス１０−ｐ２が割り当てられたとする。処理プロセス１０−ｐ２は、処理データ２０−Ｄ１の入力を伴う処理を行う。そこで、分散システム制御装置２０００は、「処理プロセス１０−ｐ２，入力処理、処理データ２０−Ｄ１」の組み合わせに対してデータ格納装置３２００を対応づける入出力先情報を生成する。以下、その具体的な動作を説明する。ここで、処理プロセス１０−ｐ２が入力する処理データ２０−Ｄ１は７つに複製されており、ディスクＤＩＳＫ４以外の全てのディスクにそれぞれ格納されている。
【０１７９】
まず、本動作例における負荷判定テーブル９００の作成処理について説明する。
【０１８０】
データ格納装置負荷情報取得部２０４０は、データ格納装置負荷情報提供部３５００からデータ格納装置負荷情報を取得する。図２９のデータ格納装置負荷テーブル１００−３は、ディスクＤＩＳＫ１〜ＤＩＳＫ８の処理負荷情報を示すテーブルである。ここで、本動作例において、処理負荷情報１２０が示す処理負荷は、低負荷であるか高負荷であるかという２値で表されている。
【０１８１】
通信路負荷情報取得部２０８０は、通信路負荷情報提供部３６００から通信路負荷情報を取得する。図３０の通信路負荷テーブル１０００−３は、各計算機間の通信路の通信負荷を示している。ここで、本動作例において、通信負荷情報１０３０が示す通信負荷は、低負荷であるか高負荷であるかという２値で表されている。
【０１８２】
プロセス実行装置割当情報取得部２１１０は、プロセス実行装置割当情報提供部３４６０から、プロセス実行装置割当情報を取得する。図３１に示すプロセス実行装置割当テーブル７００−３は、プロセス実行装置割当情報取得部２１１０が取得するプロセス実行装置割当情報のうち、処理プロセス１０−ｐ２に関する情報のみを示したテーブルである。
【０１８３】
図３２は、ネットワーク構成情報取得部２１００が取得するネットワーク構成情報が有するネットワーク構成テーブル８００−３を示している。
【０１８４】
入出力先情報生成部２０２０は、これらの情報に基づいて負荷判定テーブル作成処理を行う。そして、図３３に示す負荷判定テーブル９００−３を生成する。ここで、ディスクＤＩＳＫ２とディスクＤＩＳＫ５を例にとり、負荷判定テーブル９００−３の作成過程について説明する。
【０１８５】
まず、ディスクＤＩＳＫ２について説明する。入出力先情報生成部２０２０は、ディスクＤＩＳＫ２について、データ格納装置負荷テーブル１００−３を参照する。その結果、ディスクＤＩＳＫ２は低負荷であると判定される。そして、入出力先情報生成部２０２０は、ネットワーク構成テーブル８００−３を参照し、ディスクＤＩＳＫ２と直接接続されているスイッチは、スイッチＳＷ１であると割り出す。そして、入出力先情報生成部２０２０は、通信路負荷テーブル１０００−３を参照し、ディスクＤＩＳＫ２とスイッチＳＷ１との間の通信路の通信負荷は低いと判定する。そこで、入出力先情報生成部２０２０は、通信装置ＩＤ９１０＝ＳＷ１である負荷判定テーブル９００−３のレコードのデータ格納装置ＩＤリスト９２０に、ディスクＤＩＳＫ２を加える。さらに、入出力先情報生成部２０２０は、ネットワーク構成テーブル８００−３を参照し、スイッチＳＷ１に直接接続されている上位のスイッチとして、スイッチＳＷ５を割り出す。そして、通信路負荷テーブル１０００−３を参照し、スイッチＳＷ１とＳＷ５の間の通信路の通信負荷が低負荷であると判定する。したがって、入出力先情報生成部２０２０は、通信装置ＩＤ９１０＝ＳＷ５である負荷判定テーブル９００−３のレコードのデータ格納装置ＩＤリスト９２０にもＤＩＳＫ２を加える。同様にして、ディスクＤＩＳＫ２は、通信装置ＩＤ９１０＝ＳＷ５である負荷判定テーブル９００−３のレコードのデータ格納装置ＩＤリスト９２０にも加えられる。
【０１８６】
次に、ディスクＤＩＳＫ５について説明する。入出力先情報生成部２０２０は、ディスクＤＩＳＫ５について、データ格納装置負荷テーブル１００−３を参照する。その結果、ディスクＤＩＳＫ５は低負荷であると判定される。そして、入出力先情報生成部２０２０は、ネットワーク構成テーブル８００−３を参照し、ディスクＤＩＳＫ５と直接接続されているスイッチは、スイッチＳＷ３であると割り出す。そして、入出力先情報生成部２０２０は、通信路負荷テーブル１０００−３を参照し、ディスクＤＩＳＫ５とスイッチＳＷ３との間の通信路の通信負荷は低いと判定する。そこで、入出力先情報生成部２０２０は、通信装置ＩＤ９１０＝ＳＷ３である負荷判定テーブル９００−３のレコードのデータ格納装置ＩＤリスト９２０に、ディスクＤＩＳＫ５を加える。さらに、入出力先情報生成部２０２０は、ネットワーク構成テーブル８００−３を参照し、スイッチＳＷ３に直接接続されている上位のスイッチとして、スイッチＳＷ６を割り出す。次に、通信路負荷テーブル１０００−３を参照し、スイッチＳＷ３とＳＷ６の間の通信路の通信負荷が高負荷であると判定する。したがって、入出力先情報生成部２０２０は、ディスクＤＩＳＫ５に関する処理を終了する。その結果、ディスクＤＩＳＫ５は、負荷判定テーブル９００−３のうち、通信装置ＩＤ９１０＝ＳＷ６のレコード、及び通信装置ＩＤ９１０＝ＳＷ７であるレコードには加えられない。
【０１８７】
以上のように、入出力先情報生成部２０２０は、各ディスクについて、ディスクの処理負荷、ディスクに直接接続されているスイッチとディスクとの間の通信路の通信負荷、スイッチとそのスイッチに直接接続されている上位のスイッチとの間の通信路の通信負荷をそれぞれ判定していき、負荷判定テーブル９００−３を作成する。
【０１８８】
次に、本動作例における分散システム制御装置２０００が、負荷判定テーブル９００−３を用いて入出力先情報生成処理を行う流れを説明する。
【０１８９】
候補情報取得部２０６０は、候補情報提供部３４２０から、候補情報を取得する。図３４に示す候補テーブル２００−３は、取得した候補情報が有する候補テーブル２００のうち、処理プロセス１０−ｐ２に関する情報のみを示したテーブルである。さらに、プロセス実行装置割当情報取得部２１１０は、プロセス実行装置割当情報提供部３６４０からプロセス実行装置割当情報を取得する。前述したように、プロセス実行装置割当情報は、処理プロセス１０−ｐ２の割当先はコンピュータＣ１であるという情報を有している。
【０１９０】
入出力先情報生成部２０２０はまず、候補情報取得部２０６０から、候補情報を取得する。そして、入出力先情報生成部２０２０は、プロセス実行装置割当テーブル７００−３を参照し、処理プロセス１０―ｐ２を実行しているプロセス実行装置３１００がコンピュータＣ１であることを割り出す。
【０１９１】
次に、入出力先情報生成部２０２０は、ネットワーク構成テーブル８００−３を参照し、ディスクＤＩＳＫ１がコンピュータＣ１に直接接続されていることを割り出す。そして、入出力先情報生成部２０２０は、データ格納装置負荷テーブル１００−３を参照し、ディスクＤＩＳＫ１の処理負荷情報を得る。その結果、ディスクＤＩＳＫ１は高負荷であると判定する。そのため、ディスクＤＩＳＫ１は、入出力先情報に含まれない。
【０１９２】
入出力先情報生成部２０２０は、ネットワーク構成情報を参照し、コンピュータＣ１と直接接続されている通信機器３３００は、スイッチＳＷ１であることを割り出す。そして、入出力先情報生成部２０２０は、スイッチＳＷ１とコンピュータＣ１の組み合わせについて、通信路負荷テーブル１０００−３を参照する。ここで、通信路負荷テーブル１０００−３が示すスイッチＳＷ１とコンピュータＣ１の間の通信路の通信負荷は低い。そのため、次に入出力先情報生成部２０２０は、スイッチＳＷ１について、負荷判定テーブル９００−３を参照する。その結果、データ格納装置ＩＤリスト９２０に含まれているデータ格納装置３２００のＩＤのリストを取得する。ここで、データ格納装置ＩＤリスト９２０に含まれていることは、そのディスクが低負荷であり、なおかつ、そのディスクまでの通信路の通信負荷が低いことを意味する。入出力先情報生成部２０２０は、上記データ格納装置ＩＤリスト９２０に含まれているデータ格納装置３２００のＩＤのリストを取得する。この場合、入出力先情報生成部２０２０は、「ＤＩＳＫ２」を取得する。そして、入出力先情報生成部２０２０は、候補テーブル２００−３を参照し、上記リストに含まれる各ＩＤが、データ格納装置３２００の候補に含まれるかどうかを判定する。候補テーブル２００−３において、「プロセスＩＤ２１０＝ｐ２，処理種別２２０＝入力，データＩＤ２３０＝Ｄ１」のレコードの内の１つが、データ格納装置ＩＤ２４０＝ＤＩＳＫ２となっている。そのため、ディスクＤＩＳＫ２は候補に含まれている。そこで、入出力先情報生成部２０２０は、入出力先情報にディスクＤＩＳＫ２を加える。
【０１９３】
さらに入出力先情報生成部２０２０は、ネットワーク構成テーブル８００−３を参照し、スイッチＳＷ１に直接接続されている上位のスイッチは、スイッチＳＷ５であることを割り出す。そこでまず、スイッチＷ５とスイッチＳＷ１の組み合わせについて、通信路負荷テーブル１０００−３を参照する。ここで、通信路負荷テーブル１０００−３が示すスイッチＳＷ１とスイッチＳＷ５の間の通信路の通信負荷は低い。したがって、入出力先情報生成部２０２０は、スイッチＳＷ１の場合と同様に、負荷判定テーブル９００−３を参照し、データ格納装置ＩＤリスト９２０に含まれるデータ格納装置３２００のＩＤを取得する。この場合、「ディスクＤＩＳＫ２，ディスクＤＩＳＫ３，ディスクＤＩＳＫ４」を取得する。次に、入出力先情報生成部２０２０は、候補テーブル２００−３を参照する。そして、ディスクＤＩＳＫ２及びディスクＤＩＳＫ３は候補に含まれているものの、ディスクＤＩＳＫ４は候補に含まれていないことを割り出す。また、ディスクＤＩＳＫ２は、すでに入出力先情報に含まれている。したがって、入出力先情報生成部２０２０は、ディスクＤＩＳＫ３を入出力先情報に加える。次いで、入出力先情報生成部２０２０は、同様の処理を、さらに上位のスイッチであるスイッチＳＷ７についても行う。
【０１９４】
このように、入出力先情報生成部２０２０は、対象の処理プロセス１０を実行しているプロセス実行装置３１００を起点に、分散システム３０００のネットワーク構成を上位に登っていき、処理プロセス１０に対応づけるデータ格納装置３２００を探索していく。こうすることで、入出力先情報生成部２０２０は、処理プロセス１０と対応づけるデータ格納装置３２００として、プロセス実行装置３１００との間に介在する通信装置３３００の数が少ない通信装置３３００を優先して選択していく。その結果、入出力先情報生成部２０２０は、図３５に示す入出力先テーブル３００−３を生成する。
【０１９５】
前述したように、入出力先情報生成部２０２０は、プロセス実行装置３１００とデータ格納装置３２００の間に介在する通信装置３３００の数に上限を設けてもよい。その場合、入出力先情報生成部２０２０は、上述した負荷判定テーブル９００−３を順次参照する処理を途中で終了する。例えば、本動作例の場合において、プロセス実行装置３１００を起点として上位のスイッチを探索する回数の上限を２回と定める。この場合入出力先情報生成部２０２０は、スイッチＳＷ１、及びその上位にあるスイッチＳＷ５について、負荷判定テーブル９００−３を参照し、入出力先情報を生成する。一方、スイッチＳＷ５の上位にあるスイッチＳＷ７は、上位のスイッチを探索する回数の上限を超えているため、探索されない。したがって、スイッチＳＷ７を介してプロセス実行装置３１００と接続されているディスクＤＩＳＫ５〜ディスクＤＩＳＫ８は、処理負荷が低く、かつ、プロセス実行装置３１００との間の通信負荷が低いディスクであったとしても、入出力先情報に含まれない。このように、プロセス実行装置３１００の上位に位置する通信装置３３００の探索の回数に上限を設けることで、入出力先情報生成処理にかかる時間を短くすることができる。これは例えば、入出力先情報生成処理にかかる時間を予め見積もりたい場合や、入出力先情報生成処理に時間がかかり過ぎると分散システム３０００全体の性能に支障をきたす場合などに有効である。
【０１９６】
＜作用・効果＞
以上の構成により、本実施形態によれば、分散システム制御装置２０００は、ネットワーク構成情報取得部２１００、プロセス実行装置割当情報取得部２１１０をさらに有する。ネットワーク構成情報取得部２１００は、ネットワーク構成情報を取得する。プロセス実行装置割当情報取得部２１１０は、プロセス実行装置割当情報を取得する。そして、入出力先情報生成部２０２０は、ネットワーク構成情報、プロセス実行装置割当情報、候補情報、データ格納装置負荷情報、及び通信路負荷情報に基づき、以下の３つの条件を満たすデータ格納装置３２００を優先して選択し、処理プロセス１０による処理データ２０の入力元又は出力先とする。第１の条件は、データ格納装置３２００と、該処理プロセス１０を実行するプロセス実行装置３１００との間の通信路上に介在する通信装置の数が少ないことである。上記通信装置の数は、ネットワーク構成情報及びプロセス実行装置割当情報から取得する。第２の条件は、データ格納装置負荷情報が示すデータ格納装置３２００の処理負荷が低いことである。第３の条件は、通信路負荷情報が示す該プロセス実行装置３１００とデータ格納装置３２００との間の通信路の通信負荷が低いことである。こうすることで、処理プロセス１０は、上記３つの条件を満たすデータ格納装置３２００に対して処理データ２０の入力又は出力を行う。その結果、プロセス実行装置３１００がデータ格納装置３２００に対してデータ入出力を実行する際に、負荷を与える通信装置３３００の数が少なくなる可能性が高くなる。また、データ格納装置３２００との間に介在する通信装置３３００の故障等により、データ格納装置３２００に対して処理データ２０の入力又は出力を行えなくなる可能性が低くなる。
【０１９７】
[実施形態４]
＜概要＞
図３６は、本実施形態に係る分散システム制御装置２０００の機能構成を、その使用環境と共に示す図である。図３６において、図１に同符号の機能ブロックが示されている機能ブロックは、図１における機能ブロックと同じ機能を有するとし、説明を省略する。また図２８における分散システム３０００の構成は、例えば図１における分散システム３０００の構成と同じである。そのため図３６において、分散システム３０００の構成は省略する。
【０１９８】
分散システム制御装置２０００は、データ格納装置割当情報取得部２１２０を有する。データ格納装置割当情報取得部２１２０は、各データ格納装置３２００に対応づけられた処理プロセス１０の数を示すデータ格納装置割当情報を取得する。
【０１９９】
入出力先情報生成部２０２０は、候補情報、データ格納装置負荷情報、及びデータ格納装置割当情報に基づいて、処理プロセス１０と、該処理プロセス１０が処理データ２０の入力又は出力を行うデータ格納装置３２００を対応づける入出力先情報を生成する。具体的には、入出力先情報生成部２０２０はまず、候補情報を参照し、処理プロセス１０が処理データ２０の入力又は出力を行えるデータ格納装置３２００の候補を取得する。そして、上記候補のデータ格納装置３２００の中から、データ格納装置負荷情報が示す処理負荷が低いデータ格納装置３２００を選択する。そして、入出力先情報生成部２０２０は、上記処理負荷が低いデータ格納装置３２００が複数あった場合は、データ格納装置割当情報を参照し、各データ格納装置３２００に対応づけられている処理プロセス１０の数を平準化するように、処理プロセス１０に対応づけるデータ格納装置３２００を決定する。
【０２００】
以上により、本実施形態の分散システム制御装置２０００は、各データ格納装置３２００に対応づけられている処理プロセス１０の数を平準化するように、処理プロセス１０とデータ格納装置３２００を対応づける。これにより、特定のデータ格納装置３２００に対して、処理データ２０の入力要求又は出力要求が集中する確率が低くなる。
【０２０１】
以下、本実施形態の詳細を述べる。
【０２０２】
＜データ格納装置割当情報の詳細＞
データ格納装置割当情報は、例えば図３７に示すデータ格納装置割当テーブル４００を有する。データ格納装置割当テーブル４００は例えば、データ格納装置ＩＤ４１０及び、データ格納装置３２００に対応づけられている処理プロセス１０の数を示すプロセス数４２０を有する。
【０２０３】
データ格納装置割当情報の取得方法は様々である。例えば、分散システム制御装置２０００は、データ格納装置割当情報を記憶するデータ格納装置割当情報記憶部を有する。この場合、データ格納装置割当情報取得部２１２０は、上記データ格納装置割当情報記憶部からデータ格納装置割当情報を取得する。その他にも例えば、前述した管理サーバが、データ格納装置割当情報を記憶していてもよい。この場合、データ格納装置割当情報取得部２１２０は、上記管理サーバからデータ格納装置割当情報を取得する。
【０２０４】
＜入出力先情報生成処理の流れ＞
図３８は、実施形態４に係る入出力先情報生成部２０２０が行う入出力先情報生成処理の流れの一例を示すフローチャートである。ここで、図３８において、図５と同符号のステップは、図５と同様の処理を行う。そのため、図５と同符号のステップの説明は適宜省略する。
【０２０５】
ステップＳ５０２〜ステップＳ５０８は、入出力先情報生成部２０２０が、候補テーブルから取得したレコードの集合である集合Ｒの各レコードについて行うループ処理Ａである。ステップＳ５０２において、入出力先情報生成部２０２０は、集合Ｒに含まれる全てのレコードについてループ処理Ａを行ったかをチェックする。集合Ｒに含まれる全てのレコードについてループ処理Ａを終えた場合は、ステップＳ５１０に進む。まだ処理していないレコードがある場合は、まだ処理していないレコードを１つ選択してステップＳ５０４に進む。
【０２０６】
ステップＳ５０４において、入出力先情報生成部２０２０は、ステップＳ５０２で選択したレコードが示すデータ格納装置３２００について、データ格納装置負荷情報を参照し、該データ格納装置３２００が低負荷であるか否かを判定する。該データ格納装置３２００が低負荷である場合はステップＳ５０６に進み、上記選択したレコードを集合Ｓに加える。一方、該データ格納装置３２００が低負荷でない場合、ステップＳ５０８に進む。
【０２０７】
ステップＳ５０８はループ処理Ａの終端であるため、ステップＳ５０２に戻る。
【０２０８】
ステップＳ５１０において、集合Ｓにレコードが複数含まれるか否かを判定する。集合Ｓに複数のレコードが含まれる場合は、ステップＳ５１２に進む。一方、集合Ｓに含まれるレコードが複数でない場合は、ステップＳ５１６に進む。
【０２０９】
ステップＳ５１２において、入出力先情報生成部２０２０は、集合Ｓに含まれる各レコードが示すデータ格納装置３２００について、データ格納装置割当情報を参照し、各データ格納装置３２００に対応づけられているプロセス数を取得する。
【０２１０】
ステップＳ５１４において、入出力先情報生成部２０２０は、集合Ｓに含まれるレコードを、データ格納装置３２００に対応づけられているプロセス数が少ない順にソートする。
【０２１１】
ステップＳ５１６において、入出力先情報生成部２０２０は、集合Ｓのレコードで構成される入出力先テーブル３００を、入出力先情報として生成する。これにより、入出力先情報生成部２０２０は、処理プロセス１０に対応づけるデータ格納装置３２００として、対応づけられた処理プロセス１０の数が少ないデータ格納装置３２００を優先的に選択する。そのため、データ格納装置３２００に対応づけられる処理プロセス１０の数が平準化される。ここで、実施形態１の入出力先情報生成部２０２０が生成する入出力先情報と同様に、本実施形態の入出力先情報生成部２０２０が生成する入出力先情報も、集合Ｓが含むレコードの中の、一部のレコードから生成してもよい。
【０２１２】
データ格納装置３２００に割り当てるプロセス数を平準化する方法は、上記方法に限定されない。例えばＭｉｎ−Ｍａｘ法やラウンドロビン法などのアルゴリズムを用いて、データ格納装置３２００に割り当てる処理プロセス１０の数を平準化してもよい。
【０２１３】
なお、複数の処理プロセス１０のそれぞれについてデータ格納装置３２００を決定する場合は、１つの処理プロセス１０についてデータ格納装置３２００を決定する度に、データ格納装置割当情報を更新することが望ましい。ただし、データ格納装置割当情報が、例えば外部の管理サーバに保存されている場合、管理サーバに保存されているデータ格納装置割当情報を逐次更新すると、入出力先情報生成処理に要する時間が長くなる可能性がある。この場合、入出力先情報生成部２０２０は、例えば次のように動作することが望ましい。まず入出力先情報生成部２０２０は、取得したデータ格納装置割当情報を分散システム制御装置２０００が有する一時記憶領域に保存する。そして入出力先情報生成部２０２０は、上記複数の処理プロセス１０のそれぞれについて入出力先情報を生成している間、上記一時記憶領域に記憶しているデータ格納装置割当情報を更新する。そして、上記複数の処理プロセス１０のそれぞれにについて入出力先情報を生成し終えた後、一時記憶領域に記憶しているデータ格納装置割当情報を管理サーバに送信して、管理サーバに記憶されているデータ格納装置割当情報を更新する。
【０２１４】
＜変形例＞
本実施形態に係る分散システム制御装置２０００は、実施形態２に示したように、通信路負荷情報をさらに考慮して、入出力先情報を生成してもよい。この場合、入出力先情報生成部２０２０は、候補情報から取得した処理プロセス１０に対応づけるデータ格納装置３２００の候補の中から、データ格納装置負荷情報が示す処理負荷が低く、かつ、通信路負荷情報が示すプロセス実行装置３１００との間の通信路の通信負荷が低いデータ格納装置３２００を優先的に選択する。そして、入出力先情報生成部２０２０は、上記選択したデータ格納装置３２００が複数ある場合に、データ格納装置割当情報を参照して、データ格納装置３２００に対応づけられるプロセス数を平準化するように、処理プロセス１０とデータ格納装置３２００を対応づける。
【０２１５】
本実施形態に係る分散システム制御装置２０００は、実施形態３に示したように、ネットワーク構成情報及びプロセス実行装置割当情報をさらに考慮して、入出力先情報を生成してもよい。この場合、入出力先情報生成部２０２０は、候補情報から取得した処理プロセス１０に対応づけるデータ格納装置３２００の候補の中から、処理プロセス１０を実行するプロセス実行装置３１００との間の通信路上に介在する通信装置の数が少なく、かつ処理負荷が低いデータ格納装置３２００を優先的に選択する。そして、入出力先情報生成部２０２０は、選択したデータ格納装置３２００が複数ある場合に、データ格納装置割当情報を参照して、データ格納装置３２００に対応づけられるプロセス数を平準化するように、処理プロセス１０とデータ格納装置３２００を対応づける。
【０２１６】
また、本実施形態に係る分散システム制御装置２０００は、実施形態３に示したように、通信路負荷情報、ネットワーク構成情報、及びプロセス実行装置割当情報をさらに考慮して、入出力先情報を生成してもよい。この場合、入出力先情報生成部２０２０は、候補情報から取得した処理プロセス１０に対応づけるデータ格納装置３２００の候補の中から、処理プロセス１０を実行するプロセス実行装置３１００との間の通信路上に介在する通信装置の数が少なく、処理負荷が低く、かつプロセス実行装置３１００との間の通信路の通信負荷が低いデータ格納装置３２００を優先的に選択する。そして、入出力先情報生成部２０２０は、選択したデータ格納装置３２００が複数ある場合に、データ格納装置割当情報を参照して、データ格納装置３２００に対応づけられるプロセス数を平準化するように、処理プロセス１０とデータ格納装置３２００を対応づける。
【０２１７】
＜動作例４＞
以下、本実施形態に係る分散システム制御装置２０００の動作について、具体例を用いて説明する。ただし、下記に示すのは分散システム制御装置２０００の動作の一例であり、本実施形態は下記に示す動作例によって何らの限定も受けない。
【０２１８】
図３９は、動作例４における分散システム制御装置２０００及びその使用環境の機能構成を示す図である。ここで、図３９において、図２７又は図３６と同符号の機能ブロックは、図２４又は図２８における機能ブロックと同様の機能を有するとして、説明を省略する。
【０２１９】
動作例４の分散システム３０００は、データ格納装置割当情報提供部３４７０を有する。データ格納装置割当情報提供部３４７０は、各データ格納装置３２００に対応づけられた処理プロセス１０の数を示すデータ格納装置割当情報を、データ格納装置割当情報取得部２１２０に提供する。
【０２２０】
動作例４における分散システム制御装置２０００及び分散システム３０００のハードウエア構成及び動作状況は、図４０で表される。分散システム３０００のハードウェア構成は、動作例１と同様である。本動作例においては、処理プロセス１０−ｐ３は、ディスクＤＩＳＫ３から処理データ２０−Ｄ１を入力しており、処理プロセス１０−ｐ４は、ディスクＤＩＳＫ４に処理データ２０−Ｄ４を出力しており、処理プロセス１０−ｐ５は、ディスクＤＩＳＫ４から処理データ２０−Ｄ１を入力している。
【０２２１】
入出力先情報生成部２０２０は、動作例１と同様に、「処理プロセス１０−ｐ２，入力処理、処理データ２０−Ｄ１」の組み合わせに対してデータ格納装置３２００を対応づける入出力先情報を生成する。以下、その具体的な動作を説明する。また、動作例１と同様に、処理データ２０−Ｄ１は、ディスクＤＩＳＫ１〜ディスクＤＩＳＫ４のそれぞれに格納されているとする。
【０２２２】
候補情報取得部２０６０が取得する候補情報のうち、処理プロセス１０−ｐ２に関する情報のみを示したテーブルは、動作例１の場合と同様に、図８の候補テーブル２００−１で表される。さらに、通信路負荷情報取得部２０８０が取得する通信路負荷情報のうち、コンピュータＣ１と各ディスクの間の通信路の負荷を示すテーブルは、図１６に示す通信路負荷テーブル６００−２で表される。
【０２２３】
図４１は、データ格納装置負荷情報取得部２０４０が取得するデータ格納装置負荷情報が有するデータ格納装置負荷テーブル１００−４を示している。データ格納装置負荷テーブル１００−４は、ディスクＤＩＳＫ１〜ＤＩＳＫ５の毎秒当たりのデータ転送量がそれぞれ、１２０ＭＢ、５ＭＢ、６０ＭＢ、１５０ＭＢ、１０ＭＢであることを示す。
【０２２４】
図４２は、データ格納装置割当情報取得部２１２０が取得するデータ格納装置割当情報が有するデータ格納装置割当テーブル４００−４を示している。
【０２２５】
入出力先情報生成部２０２０はまず、候補テーブル２００から候補のデータ格納装置３２００を取得し、集合Ｒに加える。集合Ｒは、動作例１と同様に、候補テーブル２００−１の中のレコード１〜４を有する。したがって、候補のデータ格納装置３２００はディスクＤＩＳＫ１〜ＤＩＳＫ４である。これは、動作例１と同様である。
【０２２６】
次に、入出力先情報生成部２０２０は、候補であるディスクＤＩＳＫ１〜ＤＩＳＫ４のそれぞれについて、データ格納装置負荷情報及び通信路負荷情報を参照し、ディスクＤＩＳＫ１〜ＤＩＳＫ４がそれぞれ処理負荷が低く、かつコンピュータＣ１との間の通信路の通信負荷が低いか否かを判定する。ここで、入出力先情報生成部２０２０は、データ転送量が１００ＭＢ／ｓ未満のディスクを処理負荷が低いと判定するとする。また、入出力先情報生成部２０２０は、プロセス実行装置３１００との間の通信路におけるデータ通信量１００ＭＢ／ｓが未満の場合に、プロセス実行装置３１００とデータ格納装置３２００の間の通信路の通信負荷が低いと判定するとする。この場合、ディスクＤＩＳＫ２及びＤＩＳＫ３は、処理負荷及び通信負荷が低いと判定される。したがって、入出力先情報生成部２０２０は、集合Ｒが含むレコードのうち、候補テーブル２００−１のレコード２及び３を集合Ｓに加える。
【０２２７】
ここで、集合Ｓには、データ格納装置３２００を示すレコードが複数含まれている。そこで入出力先情報生成部２０２０は、データ格納装置割当情報を参照し、ディスクＤＩＳＫ２及びＤＩＳＫ３のそれぞれについて、対応づけられているプロセス数を取得する。本動作例の場合、ディスクＤＩＳＫ２は、対応付けられているプロセス数が０であり、ディスクＤＩＳＫ３は、対応づけられているプロセス数が１である。入出力先情報生成部２０２０は、集合Ｓのレコードを、各レコードが示すデータ格納装置３２００に対応づけられているプロセス数でソートする。そして、上記ソートしたレコードから成る入出力先テーブル３００−４を生成する（図４３参照）。
【０２２８】
入出力先通知部３４４０は、上記入出力先テーブル３００−４を受信する。そして、受信した入出力先テーブル３００−４に従い、処理プロセス１０−ｐ２に対して通知を行う。本動作例の場合、管理サーバ３４００は、処理プロセス１０−ｐ２に対し、処理データ２０−Ｄ１の入力をディスクＤＩＳＫ２から行うように指示する。指示を受けた処理プロセス１０−ｐ２は、処理データ２０−Ｄ１をディスクＤＩＳＫ２から入力する。
【０２２９】
以上の動作により、処理プロセス１０−ｐ２は、処理データ２０−Ｄ１の入力を行えるディスクのうち、処理負荷が低く、かつ通信負荷が低く、かつ対応づけられている処理プロセス１０の数が少ないディスクＤＩＳＫ２から、処理データ２０−Ｄ１の入力を行う。そのため、各ディスクに対応づけられるプロセス数が平準化され、特定のディスクに入力要求又は出力要求が集中することを防ぐ。
【０２３０】
＜作用・効果＞
以上の構成により、本実施形態によれば、分散システム制御装置２０００は、データ格納装置割当情報取得部２１２０により、データ格納装置割当情報を取得する。そして、入出力先情報生成部２０２０は、データ格納装置割当情報を参照し、処理プロセス１０に割り当てるデータ格納装置３２００の候補の中に、低負荷と判定されたデータ格納装置３２００が複数ある場合、データ格納装置３２００に割り当てられている処理プロセス１０の数を平準化するように、処理プロセス１０に割り当てるデータ格納装置３２００を決定する。これにより、特定のデータ格納装置３２００に対して処理負荷が集中する確率がより低くなる。
【０２３１】
[実施形態５]
＜概要＞
図４４は、本実施形態に係る分散システム制御装置２０００の機能構成を、その使用環境と共に示す図である。図４４において、図１に同符号の機能ブロックが示されている機能ブロックは、図１における機能ブロックと同じ機能を有するとし、説明を省略する。また図４４おける分散システム３０００の構成は、例えば図１における分散システム３０００の構成と同じである。そのため図４４において、分散システム３０００の構成は省略する。
【０２３２】
実施形態５に係る分散システム制御装置２０００は、資源要求情報を取得する資源要求情報取得部２１４０を有する。資源要求情報は、プロセス実行装置３１００に対して処理プロセス１０を割り当てる際の制約条件を表す情報である。一般に分散システム３０００の管理者は、処理プロセス１０を、処理データ２０の入力又は出力が高速に行えるプロセス実行装置３１００上で実行させる。例えば、処理プロセス１０は、入力する処理データ２０を保存しているデータ格納装置３２００と同じ計算機で実現されているプロセス実行装置３１００上で実行される。したがって、資源要求情報に示されている各処理プロセス１０の実行環境に関する制約条件を参照することで、処理プロセス１０が処理データ２０の入力又は出力を行えるデータ格納装置３２００を推測することができる。
【０２３３】
資源要求情報は、例えば図４５に示す資源要求テーブル５００を有する。資源要求テーブル５００は例えば、プログラムＩＤ５１０及び要求資源特定情報５２０を有する。プログラムＩＤ５１０は、プログラムを特定する。要求資源特定情報５２０は、プログラムＩＤ５１０で特定されるプログラムに記述されている処理を行う処理プロセス１０が、どのプロセス実行装置３１００で実行されているかを特定する情報である。要求資源特定情報５２０は例えば、プロセス実行装置３１００のＩＤ、プロセス実行装置３１００を実現する計算機のＩＤ、プロセス実行装置３１００に要求される条件などで表される。上記管理サーバは例えば、資源要求テーブル５００を参照し、プログラムＩＤ５１０で特定されるプログラムを実行する全ての処理プロセス１０に対し、同じ要求資源特定情報５２０で示されている条件に基づいて、プロセス実行装置３１００を割り当てる。ここで、資源要求テーブル５００は、プログラムＩＤ５１０の代わりに、プロセスＩＤを有してもよい。この場合、処理プロセス１０ごとに要求資源特定情報５２０が指定される。さらに、資源要求テーブル５００は、プログラムＩＤ５１０の代わりに、処理プロセス１０のグループのＩＤを表すプロセスグループＩＤを有していてもよい。この場合、同じプロセスグループＩＤで特定される処理プロセス１０は、同じ要求資源特定情報５２０に基づき、プロセス実行装置３１００を割り当てられる。
【０２３４】
分散システム制御装置２０００はさらに、候補情報生成部２１６０を有する。候補情報生成部２１６０は、資源要求情報取得部２１４０が取得した資源要求情報に基づいて、各処理プロセス１０が処理データ２０を入力又は出力できるデータ格納装置３２００を推測し、候補情報を生成する。例えば資源要求情報が資源要求テーブル５００を有している場合、候補情報生成部２１６０は、処理プロセス１０が実行しているプログラムのＩＤをキーとして資源要求テーブル５００を検索する。そして、候補情報生成部２１６０は、取得したレコードの要求資源特定情報５２０に示されている情報から、処理プロセス１０が処理データ２０を入力又は出力できるデータ格納装置３２００を推測する。そして、上記推測したデータ格納装置３２００を、処理プロセス１０による処理データ２０の入力元又は出力先の候補とする候補情報を生成する。
【０２３５】
例えば、候補情報生成部２１６０が図４５に示す資源要求テーブル５００に基づいて、候補情報を生成するとする。この時、分散システム３０００における各計算機の接続関係は、図４６で表されているとする。この場合、候補情報生成部２１６０は、コンピュータＣ１の内部に設けられているディスクＤＩＳＫ１を、プログラムＩＤがｐｒｏｇｒａｍ１であるプログラムを実行している処理プロセス１０に対応付けるデータ格納装置３２００の候補とする。また、候補情報生成部２１６０は、コンピュータＣ２の内部に設けられているディスクＤＩＳＫ２及びコンピュータＣ３の内部に設けられているディスクＤＩＳＫ３を、プログラムＩＤがｐｒｏｇｒａｍ２であるプログラムを実行している処理プロセス１０に対応付けるデータ格納装置３２００の候補とする。さらに、候補情報生成部２１６０は、スイッチＳＷ１に接続されているコンピュータＣ１及びＣ２の内部に設けられているディスクＤＩＳＫ１及びディスクＤＩＳＫ２を、プログラムＩＤがｐｒｏｇｒａｍ１であるプログラムを実行している処理プロセス１０に対応付けるデータ格納装置３２００の候補とする。
【０２３６】
分散システム制御装置２０００は、候補情報生成部２１６０が生成した候補情報にも基づいて、入出力先情報を生成する。入出力先情報の生成方法は、実施形態１〜４に示したいずれの方法であってもよい。
【０２３７】
分散システム制御装置２０００は、実施形態２と同様の方法で入出力先情報を生成する場合は、実施形態２の分散システム制御装置２０００が有する機能ブロックをさらに有する。また、分散システム制御装置２０００は、実施形態２と同様の方法で入出力先情報を生成する場合は、実施形態３の分散システム制御装置２０００が有する機能ブロックをさらに有する。また、分散システム制御装置２０００は、実施形態４と同様の方法で入出力先情報を生成する場合は、実施形態４の分散システム制御装置２０００が有する機能ブロックをさらに有する。
【０２３８】
＜作用・効果＞
以上の構成により、本実施形態によれば、分散システム制御装置２０００は、資源要求情報取得部２１４０及び候補情報生成部２１６０をさらに有する。資源要求情報取得部２１４０は、プロセス実行装置３１００に対して処理プロセス１０を割り当てる際の制約条件を表す資源要求情報を取得する。候補情報生成部２１６０は、資源要求情報に基づき、処理プロセス１０が処理データ２０を入力又は出力できるデータ格納装置３２００を推測する。そして、候補情報生成部２１６０は、上記推測したデータ格納装置３２００を候補とする候補情報を生成する。これにより、分散システム制御装置２０００は、処理プロセス１０が処理データ２０を入力又は出力できるデータ格納装置３２００を特定する候補情報が得られない環境においても、処理プロセス１０によるデータ入力又は出力にかかる時間を短くすることができる。
【０２３９】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【０２４０】
以下、参考形態の例を付記する。
１．  データの入力又は出力を行う複数の処理プロセスを分散処理する分散システムを制御する分散システム制御装置であって、
前記分散システムは、
複数のデータ格納装置と、
前記処理プロセスを実行し、前記複数のデータ格納装置と通信可能に接続されている処理プロセス実行装置を有し、
前記分散システム制御装置は、
前記各データ格納装置の処理負荷を表すデータ格納装置負荷情報を取得するデータ格納装置負荷情報取得手段と、
前記各処理プロセスが前記データの入力又は出力を行う前記データ格納装置の候補を示す候補情報を取得する候補情報取得手段と、
前記各処理プロセスに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データの入力又は出力を行う前記データ格納装置とをそれぞれ対応づけた入出力先情報を生成する入出力先情報生成手段を有する分散システム制御装置。
２．  前記候補情報は、各処理プロセスが前記データの入力又は出力を行う前記データ格納装置の候補を前記データごとに示し、
前記入出力先情報生成手段は、前記処理プロセスと該処理プロセスが入力又は出力する前記データの各組み合わせに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが入力又は出力する前記データとの各組み合わせに対して前記データ格納装置をそれぞれ対応づけた入出力先情報を生成する１．に記載の分散システム制御装置。
３．  前記処理プロセスは、前記データの入力及び出力を行い、
前記候補情報は、前記各処理プロセスについて、前記データの入力を行う前記データ格納装置の候補と、前記データの出力を行う前記データ格納装置の候補をそれぞれ示し、
前記入出力先情報生成手段は、前記処理プロセスと該処理プロセスが前記データを入力するか出力するかを示す情報の各組み合わせに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データを入力するか出力するかを示す情報の各組み合わせに対し、前記データ格納装置をそれぞれ対応づけた入出力先情報を生成する１．又は２．に記載の分散システム制御装置。
４．  前記入出力先情報生成手段は、「前記処理プロセス、該処理プロセスが前記データを入力するか出力するかを示す情報、前記データ」の各組み合わせに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、「前記処理プロセス、該処理プロセスが前記データを入力するか出力するかを示す情報、前記データ」の各組み合わせに対し、前記データ格納装置をそれぞれ対応づけた入出力先情報を生成する１．乃至３．いずれか一つに記載の分散システム制御装置。
５．  前記プロセス実行装置と前記複数のデータ格納装置の間の各通信路の通信負荷を示す通信路負荷情報を取得する通信路負荷情報取得手段をさらに有し、
前記入出力先情報生成手段は、前記各処理プロセスに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低く、かつ、通信路負荷情報に示されている該処理プロセスを実行している前記処理プロセス実行装置との間の通信路の負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データを入力又は出力する前記データ格納装置を対応づけた入出力先情報を生成する１．乃至４．いずれか一つに記載の分散システム制御装置。
６．  ５．に記載の分散システム制御装置であって、
前記分散システムは、前記プロセス実行装置と前記データ格納装置の間に介在する複数の通信装置を有し、
前記分散システム制御装置は、
前記プロセス実行装置、前記データ格納装置、及び前記通信装置の接続関係を示すネットワーク構成情報を取得するネットワーク構成情報取得手段と、
前記各処理プロセスと該処理プロセスを実行している前記プロセス実行装置の対応づけを示すプロセス実行装置割当情報を取得するプロセス実行装置割当情報取得手段を有し、
前記入出力先情報生成手段は、前記ネットワーク構成情報と前記プロセス実行装置割当情報に基づき、前記各処理プロセスに関するデータ格納装置の候補の中から、前記ネットワーク構成情報に示されている該処理プロセスを実行する前記プロセス実行装置との間に介在する前記通信装置の数が少ない前記データ格納装置を優先して選択し、該選択したデータ格納装置の中から、前記データ格納装置負荷情報に示されている処理負荷が低く、かつ、通信路負荷情報に示されている該処理プロセスを実行している前記処理プロセス実行装置との間の通信路の負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データを入力又は出力する前記データ格納装置を対応づけた入出力先情報を生成する分散システム制御装置。
７．  ６．に記載の分散システム制御装置であって、
前記入出力先情報生成手段は、
前記各通信装置に対し、前記ネットワーク構成情報が示す該通信装置との間の通信路上に介在する前記通信装置の数が少なく、前記通信路負荷情報が示す該通信装置との間の処理負荷が低く、かつ前記データ格納装置負荷情報が示す処理負荷が低い前記データ格納装置を優先的に対応づけた情報である負荷判定情報を生成し、
前記ネットワーク構成情報と前記プロセス実行装置割当情報に基づき、前記各通信装置の中から該処理プロセスを実行する処理プロセス実行装置との間に介在する他の前記通信装置が少ない前記通信装置を優先的に選択し、前記候補情報が示す前記各処理プロセスに関する候補の中から、前記負荷判定情報において該選択した通信装置と対応づけられている前記データ格納装置を優先的に選択して該処理プロセスと対応づけた入出力先情報を生成する分散システム制御装置。
８．  １．乃至７．いずれか一つに記載の分散システム制御装置であって、
前記データ格納装置に対して前記処理データの入力又は出力を行っている前記処理プロセスの数を示すデータ格納装置割当情報を取得するデータ格納装置割当情報取得手段をさらに有し、
前記入出力先情報生成手段は、
前記各処理プロセスに関するデータ格納装置の各候補について、前記データ格納装置負荷情報に示されている処理負荷が低いか否かを判別し、
処理負荷が低いと判別された前記データ格納装置の候補が複数ある場合は、前記データ格納装置割当情報に基づき、前記各データ格納装置に対して前記処理データの入力又は出力を行っている前記処理プロセスの数を平準化するように、前記処理プロセスと該処理プロセスが前記データを入力又は出力する前記データ格納装置を対応づけた入出力先情報を生成する分散システム制御装置。
９．  前記処理プロセスを実行する前記処理プロセス実行装置に求められる制約条件を示す資源要求情報を取得する資源要求情報取得手段と、
前記資源要求情報に基づいて、前記処理プロセスが前記データを入力又は出力できる前記データ格納装置を推測し、前記推測した前記データ格納装置を該プロセスによる前記データの入力元または出力先の候補として示す候補情報を生成する候補情報生成手段をさらに有する１．乃至８．いずれか一つに記載の分散システム制御装置。
１０．  コンピュータを、データの入力又は出力を行う複数の処理プロセスを分散処理する分散システムを制御する分散システム制御装置として機能させるプログラムであって、
前記分散システムは、
複数のデータ格納装置と、
前記処理プロセスを実行し、前記複数のデータ格納装置と通信可能に接続されている処理プロセス実行装置を有し、
当該プログラムは、前記コンピュータに、
前記各データ格納装置の処理負荷を表すデータ格納装置負荷情報を取得する機能と、
前記各処理プロセスが前記データの入力又は出力を行う前記データ格納装置の候補を示す候補情報を取得する機能と、
前記各処理プロセスに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データの入力又は出力を行う前記データ格納装置とをそれぞれ対応づけた入出力先情報を生成する機能を持たせるプログラム。
１１．  前記入出力情報を生成する機能は、前記処理プロセスと該処理プロセスが入力又は出力する前記データの各組み合わせに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが入力又は出力する前記データとの各組み合わせに対して前記データ格納装置をそれぞれ対応づけた入出力先情報を生成する１０．に記載のプログラム。
１２．  前記処理プロセスは、前記データの入力及び出力を行い、
前記候補情報は、前記各処理プロセスについて、前記データの入力を行う前記データ格納装置の候補と、前記データの出力を行う前記データ格納装置の候補をそれぞれ示し、
前記入出力先情報を生成する機能は、前記処理プロセスと該処理プロセスが前記データを入力するか出力するかを示す情報の各組み合わせに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データを入力するか出力するかを示す情報の各組み合わせに対し、前記データ格納装置をそれぞれ対応づけた入出力先情報を生成する１０．又は１１．に記載のプログラム。
１３．  前記入出力先情報を生成する機能は、「前記処理プロセス、該処理プロセスが前記データを入力するか出力するかを示す情報、前記データ」の各組み合わせに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、「前記処理プロセス、該処理プロセスが前記データを入力するか出力するかを示す情報、前記データ」の各組み合わせに対し、前記データ格納装置をそれぞれ対応づけた入出力先情報を生成する１０．乃至１２．いずれか一つに記載のプログラム。
１４．  前記コンピュータに、前記プロセス実行装置と前記複数のデータ格納装置の間の各通信路の通信負荷を示す通信路負荷情報を取得する機能をさらに持たせ、
前記入出力先情報を生成する機能は、前記各処理プロセスに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低く、かつ、通信路負荷情報に示されている該処理プロセスを実行している前記処理プロセス実行装置との間の通信路の負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データを入力又は出力する前記データ格納装置を対応づけた入出力先情報を生成する１０．乃至１３．いずれか一つに記載の分散システム制御装置。
１５．  １４．に記載のプログラムであって、
前記分散システムは、前記プロセス実行装置と前記データ格納装置の間に介在する複数の通信装置を有し、
当該プログラムは、
前記コンピュータに、前記プロセス実行装置、前記データ格納装置、及び前記通信装置の接続関係を示すネットワーク構成情報を取得する機能と、前記各処理プロセスと該処理プロセスを実行している前記プロセス実行装置の対応づけを示すプロセス実行装置割当情報を取得する機能をさらに持たせ、
前記入出力先情報を生成する機能は、前記ネットワーク構成情報と前記プロセス実行装置割当情報に基づき、前記各処理プロセスに関するデータ格納装置の候補の中から、前記ネットワーク構成情報に示されている該処理プロセスを実行する前記プロセス実行装置との間に介在する前記通信装置の数が少ない前記データ格納装置を優先して選択し、該選択したデータ格納装置の中から、前記データ格納装置負荷情報に示されている処理負荷が低く、かつ、通信路負荷情報に示されている該処理プロセスを実行している前記処理プロセス実行装置との間の通信路の負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データを入力又は出力する前記データ格納装置を対応づけた入出力先情報を生成するプログラム。
１６．  前記入出力先情報を生成する機能は、
前記各通信装置に対し、前記ネットワーク構成情報が示す該通信装置との間の通信路上に介在する前記通信装置の数が少なく、前記通信路負荷情報が示す該通信装置との間の処理負荷が低く、かつ前記データ格納装置負荷情報が示す処理負荷が低い前記データ格納装置を優先的に対応づけた情報である負荷判定情報を生成し、
前記ネットワーク構成情報と前記プロセス実行装置割当情報に基づき、前記各通信装置の中から該処理プロセスを実行する処理プロセス実行装置との間に介在する他の前記通信装置が少ない前記通信装置を優先的に選択し、前記候補情報が示す前記各処理プロセスに関する候補の中から、前記負荷判定情報において該選択した通信装置と対応づけられている前記データ格納装置を優先的に選択して該処理プロセスと対応づけた入出力先情報を生成する１５．に記載のプログラム。
１７．  １０．乃至１６．いずれか一つに記載のプログラムであって、
前記コンピュータに、前記データ格納装置に対して前記処理データの入力又は出力を行っている前記処理プロセスの数を示すデータ格納装置割当情報を取得する機能をさらに持たせ、
前記入出力先情報を生成する機能は、
前記各処理プロセスに関するデータ格納装置の各候補について、前記データ格納装置負荷情報に示されている処理負荷が低いか否かを判別し、
処理負荷が低いと判別された前記データ格納装置の候補が複数ある場合は、前記データ格納装置割当情報に基づき、前記各データ格納装置に対して前記処理データの入力又は出力を行っている前記処理プロセスの数を平準化するように、前記処理プロセスと該処理プロセスが前記データを入力又は出力する前記データ格納装置を対応づけた入出力先情報を生成するプログラム。
１８．  前記コンピュータに、
前記処理プロセスを実行する前記処理プロセス実行装置に求められる制約条件を示す資源要求情報を取得する機能と、
前記資源要求情報に基づいて、前記処理プロセスが前記データを入力又は出力できる前記データ格納装置を推測し、前記推測した前記データ格納装置を該プロセスによる前記データの入力元または出力先の候補として示す候補情報を生成する機能をさらに持たせる１０．乃至１７．いずれか一つに記載のプログラム。
１９．  データの入力又は出力を行う複数の処理プロセスを分散処理する分散システムを制御するコンピュータによって実行される制御方法であって、
前記分散システムは、
複数のデータ格納装置と、
前記処理プロセスを実行し、前記複数のデータ格納装置と通信可能に接続されている処理プロセス実行装置を有し、
当該制御方法は、
前記各データ格納装置の処理負荷を表すデータ格納装置負荷情報を取得するステップと、
前記各処理プロセスが前記データの入力又は出力を行う前記データ格納装置の候補を示す候補情報を取得するステップと、
前記各処理プロセスに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データの入力又は出力を行う前記データ格納装置とをそれぞれ対応づけた入出力先情報を生成するステップを有する制御方法。
２０．  前記入出力情報を生成するステップは、前記処理プロセスと該処理プロセスが入力又は出力する前記データの各組み合わせに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが入力又は出力する前記データとの各組み合わせに対して前記データ格納装置をそれぞれ対応づけた入出力先情報を生成するステップである１９．に記載の制御方法。
２１．  前記処理プロセスは、前記データの入力及び出力を行い、
前記候補情報は、前記各処理プロセスについて、前記データの入力を行う前記データ格納装置の候補と、前記データの出力を行う前記データ格納装置の候補をそれぞれ示し、
前記入出力先情報を生成するステップは、前記処理プロセスと該処理プロセスが前記データを入力するか出力するかを示す情報の各組み合わせに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データを入力するか出力するかを示す情報の各組み合わせに対し、前記データ格納装置をそれぞれ対応づけた入出力先情報を生成するステップである１９．又は２０．に記載の制御方法。
２２．  前記入出力先情報を生成するステップは、「前記処理プロセス、該処理プロセスが前記データを入力するか出力するかを示す情報、前記データ」の各組み合わせに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低い前記データ格納装置を優先的に選択することにより、「前記処理プロセス、該処理プロセスが前記データを入力するか出力するかを示す情報、前記データ」の各組み合わせに対し、前記データ格納装置をそれぞれ対応づけた入出力先情報を生成する１９．乃至２１．いずれか一つに記載の制御方法。
２３．  前記プロセス実行装置と前記複数のデータ格納装置の間の各通信路の通信負荷を示す通信路負荷情報を取得するステップをさらに有し、
前記入出力先情報を生成するステップは、前記各処理プロセスに関するデータ格納装置の候補の中から、前記データ格納装置負荷情報に示されている処理負荷が低く、かつ、通信路負荷情報に示されている該処理プロセスを実行している前記処理プロセス実行装置との間の通信路の負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データを入力又は出力する前記データ格納装置を対応づけた入出力先情報を生成するステップである１９．乃至２２．いずれか一つに記載の制御方法。
２４．  ２３．に記載の制御方法であって、
前記分散システムは、前記プロセス実行装置と前記データ格納装置の間に介在する複数の通信装置を有し、
当該制御方法は、
前記プロセス実行装置、前記データ格納装置、及び前記通信装置の接続関係を示すネットワーク構成情報を取得するステップと、
前記各処理プロセスと該処理プロセスを実行している前記プロセス実行装置の対応づけを示すプロセス実行装置割当情報を取得するステップを有し、
前記入出力先情報を生成するステップは、前記ネットワーク構成情報と前記プロセス実行装置割当情報に基づき、前記各処理プロセスに関するデータ格納装置の候補の中から、前記ネットワーク構成情報に示されている該処理プロセスを実行する前記プロセス実行装置との間に介在する前記通信装置の数が少ない前記データ格納装置を優先して選択し、該選択したデータ格納装置の中から、前記データ格納装置負荷情報に示されている処理負荷が低く、かつ、通信路負荷情報に示されている該処理プロセスを実行している前記処理プロセス実行装置との間の通信路の負荷が低い前記データ格納装置を優先的に選択することにより、前記処理プロセスと該処理プロセスが前記データを入力又は出力する前記データ格納装置を対応づけた入出力先情報を生成するステップである制御方法。
２５．  前記入出力先情報を生成するステップは、
前記各通信装置に対し、前記ネットワーク構成情報が示す該通信装置との間の通信路上に介在する前記通信装置の数が少なく、前記通信路負荷情報が示す該通信装置との間の処理負荷が低く、かつ前記データ格納装置負荷情報が示す処理負荷が低い前記データ格納装置を優先的に対応づけた情報である負荷判定情報を生成し、
前記ネットワーク構成情報と前記プロセス実行装置割当情報に基づき、前記各通信装置の中から該処理プロセスを実行する処理プロセス実行装置との間に介在する他の前記通信装置が少ない前記通信装置を優先的に選択し、前記候補情報が示す前記各処理プロセスに関する候補の中から、前記負荷判定情報において該選択した通信装置と対応づけられている前記データ格納装置を優先的に選択して該処理プロセスと対応づけた入出力先情報を生成する２４．に記載の制御方法。
２６．  １９．乃至２５．いずれか一つに記載の制御方法であって、
前記データ格納装置に対して前記処理データの入力又は出力を行っている前記処理プロセスの数を示すデータ格納装置割当情報を取得するステップをさらに有し、
前記入出力先情報を生成するステップは、
前記各処理プロセスに関するデータ格納装置の各候補について、前記データ格納装置負荷情報に示されている処理負荷が低いか否かを判別し、
処理負荷が低いと判別された前記データ格納装置の候補が複数ある場合は、前記データ格納装置割当情報に基づき、前記各データ格納装置に対して前記処理データの入力又は出力を行っている前記処理プロセスの数を平準化するように、前記処理プロセスと該処理プロセスが前記データを入力又は出力する前記データ格納装置を対応づけた入出力先情報を生成するステップである制御方法。
２７．  前記処理プロセスを実行する前記処理プロセス実行装置に求められる制約条件を示す資源要求情報を取得するステップと、
前記資源要求情報に基づいて、前記処理プロセスが前記データを入力又は出力できる前記データ格納装置を推測し、前記推測した前記データ格納装置を該プロセスによる前記データの入力元または出力先の候補として示す候補情報を生成するステップをさらに有する１９．乃至２６．いずれか一つに記載の制御方法。
【０２４１】
この出願は、２０１２年７月３０日に出願された日本出願特願２０１２−１６８９４９号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2014020795.tif 000003
【図２】
2014020795.tif 000004
【図３】
2014020795.tif 000005
【図４】
2014020795.tif 000006
【図５】
2014020795.tif 000007
【図６】
2014020795.tif 000008
【図７】
2014020795.tif 000009
【図８】
2014020795.tif 000010
【図９】
2014020795.tif 000011
【図１０】
2014020795.tif 000012
【図１１】
2014020795.tif 000013
【図１２】
2014020795.tif 000014
【図１３】
2014020795.tif 000015
【図１４】
2014020795.tif 000016
【図１５】
2014020795.tif 000017
【図１６】
2014020795.tif 000018
【図１７】
2014020795.tif 000019
【図１８】
2014020795.tif 000020
【図１９】
2014020795.tif 000021
【図２０】
2014020795.tif 000022
【図２１】
2014020795.tif 000023
【図２２】
2014020795.tif 000024
【図２３】
2014020795.tif 000025
【図２４】
2014020795.tif 000026
【図２５】
2014020795.tif 000027
【図２６】
2014020795.tif 000028
【図２７】
2014020795.tif 000029
【図２８】
2014020795.tif 000030
【図２９】
2014020795.tif 000031
【図３０】
2014020795.tif 000032
【図３１】
2014020795.tif 000033
【図３２】
2014020795.tif 000034
【図３３】
2014020795.tif 000035
【図３４】
2014020795.tif 000036
【図３５】
2014020795.tif 000037
【図３６】
2014020795.tif 000038
【図３７】
2014020795.tif 000039
【図３８】
2014020795.tif 000040
【図３９】
2014020795.tif 000041
【図４０】
2014020795.tif 000042
【図４１】
2014020795.tif 000043
【図４２】
2014020795.tif 000044
【図４３】
2014020795.tif 000045
【図４４】
2014020795.tif 000046
【図４５】
2014020795.tif 000047
【図４６】
2014020795.tif 000048
【国際調査報告】
2014020795.tif 000049
2014020795.tif 000050
2014020795.tif 000051