(57)【特許請求の範囲】
【請求項１】
複数のノードがネットワークを介して接続された並列計算機システムの制御プログラムであって、
前記複数のノードのいずれかのノードである第１のノードに、
前記複数のノードのうち第２のノードの記憶装置に格納されたデータを用いて実行するジョブについて、前記記憶装置に格納されたデータに対するアクセスによって転送されるデータ量の情報を含む特性データを取得させ、
前記データ量が第１の閾値以上である場合、前記複数のノードの各々を頂点とし、前記ネットワークにおける各通信路を辺とし、該各通信路の帯域幅を重みとし、且つデータの転送方向を向きとした重み付き有向グラフを生成させ、
前記第１のノードと前記複数のノードのうち第３のノードとの間の通信について、データの転送時間が最短になる又はデータを転送するための帯域幅が最大になる第１の通信路を、前記重み付き有向グラフに対して第１のアルゴリズムを適用することにより決定させ、
前記第３のノードと前記第２のノードとの間の通信について、データの転送時間が最短になる又はデータを転送するための帯域幅が最大になる第２の通信路を、前記重み付き有向グラフに対して前記第１のアルゴリズムとは異なる第２のアルゴリズムを適用することにより決定させ、
前記第１の通信路及び前記第２の通信路を用いてデータを転送する時間が所定の条件を満たす場合、前記第３のノードの資源をキャッシュに割り当てさせる
ことを特徴とする並列計算機システムの制御プログラム。
【請求項２】
前記重み付き有向グラフを生成させる処理において、
前記複数のノードの一部を仮想的に１つのノードとして頂点を生成させ、前記ネットワークにおける複数の通信路を仮想的に１つの通信路として辺を生成させ、且つ前記ネットワークにおける複数の通信路の各々の帯域幅の合計を該複数の通信路に対応する仮想的な１つ通信路の帯域幅とすることにより前記重み付き有向グラフを生成させる
ことを特徴とする、請求項１記載の並列計算機システムの制御プログラム。
【請求項３】
前記特性データを取得させる処理において、
前記ジョブの実行中に前記記憶装置に格納されたデータに対するアクセスを監視することにより、前記特性データを取得させる
ことを特徴とする、請求項１又は２記載の並列計算機システムの制御プログラム。
【請求項４】
前記特性データを取得させる処理において、
前記ジョブの実行中に、前記特性データを格納するデータ格納部から該特性データを取得させる
ことを特徴とする、請求項１乃至３のいずれか１つ記載の並列計算機システムの制御プログラム。
【請求項５】
前記特性データを取得させる処理において、
前記ジョブの実行前に前記ジョブの実行プログラムを解析することにより前記特性データを生成させ、前記データ格納部に格納させる
ことを特徴とする、請求項４記載の並列計算機システムの制御プログラム。
【請求項６】
前記ジョブの各実行段階について、前記特性データを取得する処理、前記重み付き有向グラフを生成する処理、前記第１の通信路を決定する処理、前記第２の通信路を決定する処理、及び前記第３のノードの資源をキャッシュに割り当てる処理を実行させる
ことを特徴とする、請求項１乃至５のいずれか１つ記載の並列計算機システムの制御プログラム。
【請求項７】
前記第１のノードに、さらに、
前記ジョブの実行を制御するためのプログラムを解析することにより又は前記ジョブの実行を監視することにより、前記ジョブの実行開始又は前記ジョブの実行終了を検出させ、
前記ジョブの実行開始又は前記ジョブの実行終了を検出させる処理において前記ジョブの実行開始又は前記ジョブの実行終了が検出された場合に、前記第３のノードにおける資源のうちキャッシュに割り当てる資源を増加させる
ことを特徴とする、請求項１乃至６のいずれか１つ記載の並列計算機システムの制御プログラム。
【請求項８】
複数のノードがネットワークを介して接続された並列計算機システムの制御プログラムであって、
前記複数のノードのいずれかのノードである第１のノードに、
前記複数のノードのうち第２のノードの記憶装置に格納されたデータを用いて実行するジョブについて、前記ジョブの実行に要するＣＰＵ時間及び前記記憶装置に格納されたデータに対するアクセスのための処理に要する時間の情報を含む特性データを取得させ、
前記ＣＰＵ時間及び前記記憶装置に格納されたデータに対するアクセスのための処理に要する時間に基づき、前記複数のノードの資源の割当方法を決定させる
ことを特徴とする並列計算機システムの制御プログラム。
【請求項９】
複数のノードがネットワークを介して接続された並列計算機システムの制御方法であって、
前記複数のノードのいずれかのノードである第１のノードが、
前記複数のノードのうち第２のノードの記憶装置に格納されたデータを用いて実行するジョブについて、前記記憶装置に格納されたデータに対するアクセスによって転送されるデータ量の情報を含む特性データを取得し、
前記データ量が第１の閾値以上である場合、前記複数のノードの各々を頂点とし、前記ネットワークにおける各通信路を辺とし、該各通信路の帯域幅を重みとし、且つデータの転送方向を向きとした重み付き有向グラフを生成し、
前記第１のノードと前記複数のノードのうち第３のノードとの間の通信について、データの転送時間が最短になる又はデータを転送するための帯域幅が最大になる第１の通信路を、前記重み付き有向グラフに対して第１のアルゴリズムを適用することにより決定し、
前記第３のノードと前記第２のノードとの間の通信について、データの転送時間が最短になる又はデータを転送するための帯域幅が最大になる第２の通信路を、前記重み付き有向グラフに対して前記第１のアルゴリズムとは異なる第２のアルゴリズムを適用することにより決定し、
前記第１の通信路及び前記第２の通信路を用いてデータを転送する時間が所定の条件を満たす場合、前記第３のノードの資源をキャッシュに割り当てる
ことを特徴とする並列計算機システムの制御方法。
【請求項１０】
複数のノードがネットワークを介して接続された並列計算機システムであって、
前記複数のノードのいずれかのノードである第１のノードが、
前記複数のノードのうち第２のノードの記憶装置に格納されたデータを用いて実行するジョブについて、前記記憶装置に格納されたデータに対するアクセスによって転送されるデータ量の情報を含む特性データを取得する取得部と、
前記データ量が第１の閾値以上である場合、前記複数のノードの各々を頂点とし、前記ネットワークにおける各通信路を辺とし、該各通信路の帯域幅を重みとし、且つデータの転送方向を向きとした重み付き有向グラフを生成する生成部と、
前記第１のノードと前記複数のノードのうち第３のノードとの間の通信について、データの転送時間が最短になる又はデータを転送するための帯域幅が最大になる第１の通信路を、前記重み付き有向グラフに対して第１のアルゴリズムを適用することにより決定し、
前記第３のノードと前記第２のノードとの間の通信について、データの転送時間が最短になる又はデータを転送するための帯域幅が最大になる第２の通信路を、前記重み付き有向グラフに対して前記第１のアルゴリズムとは異なる第２のアルゴリズムを適用することにより決定する決定部と、
前記第１の通信路及び前記第２の通信路を用いてデータを転送する時間が所定の条件を満たす場合、前記第３のノードの資源をキャッシュに割り当てる割当部と
を有することを特徴とする並列計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算機、並列計算機の制御方法及び制御プログラムに関する。
【背景技術】
【０００２】
大規模計算を行うためのシステム（例えばスーパーコンピュータ等の並列計算機システム）においては、プロセッサ及びメモリ等を搭載した多数のノードが協働して計算を進行させていく。このようなシステムにおいて、各ノードは、システムにおけるファイルサーバのディスク上のデータを用いてジョブを実行し、実行結果をファイルサーバのディスクに書き戻すという一連の処理を行う。ここで、各ノードは、処理を高速化するため、ジョブの実行に用いるデータをメモリ等の高速な記憶装置（すなわちディスクキャッシュ）に格納した上でジョブを実行するようになっている。しかしながら、近年ではますます計算が大規模化しており、従来から利用されているディスクキャッシュの技術ではシステムのスループットを十分に向上させることができなくなっている。
【０００３】
従来、ファイルサーバのディスク筐体内にディスクキャッシュを配置し、ディスクのコントローラによって管理するような技術が存在する。しかし、このディスクキャッシュは通常は不揮発性メモリであり、通常の主記憶装置（すなわちメインメモリ）に使用される揮発性メモリに比べて高価であるという問題がある。また、ハードウェア及びファームウェアによって比較的単純に制御されるため、搭載量が限定される。以上のような点を鑑みると、この技術は、上で述べたような大規模計算を行うためのシステムには適していない。
【０００４】
また、分散ファイルシステム或いはＤＢＭＳ（DataBase Management System）におけるサーバの主記憶装置上にディスクキャッシュを配置するような技術も存在する。しかし、このディスクキャッシュは、データ管理の一貫性の維持に関する要件等から、各々のディスク上のデータに対し１つ又は少数しか設けることができない。よって、ディスクに対するアクセスが集中すると、サーバが対応しきれず、結果としてシステムのスループットを低下させてしまうことがある。
【０００５】
また、アクセスの履歴に基づいてデータの配置を決定する技術が存在する。具体的には、ＣＰＵからの過去のアクセスの履歴を記録し、記録された過去のアクセス履歴からアクセスの傾向或いは様式を予測する。また、予測されたアクセス様式において、応答速度がより高速になるようなデータ配置を決定する。そして、決定されたデータ配置に従って、割当済みのデータの再配置を行う。しかし、この技術は、装置内におけるデータの配置に関する技術であり、上で述べたようなシステムに適用することはできない。
【０００６】
また、状況に応じて記憶装置を使い分ける技術が存在する。具体的には、メモリ、ハードディスク、可搬型記憶媒体ドライブ装置及び可搬型記憶媒体ライブラリ装置の階層から構成される階層記憶装置において、上位の２層（メモリ及びハードディスク）を下位の装置のキャッシュとして用いる。また、限定されたコスト内で可能な最適な階層記憶装置の構成を、アクセス履歴を基に算出する。しかし、この技術も、装置内における複数の記憶装置の構成の最適化に関する技術であり、上で述べたようなシステムに適用することはできない。
【０００７】
このように、上で述べたような複数のノードを含むシステムにおいて適切にディスクキャッシュを配置する技術は存在しない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１１−８５４１１号公報
【特許文献２】特開平９−６６７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従って、１つの側面では、本発明は、複数のノードを含むシステムにおいて、適切にディスクキャッシュを配置するための技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係る制御方法は、複数のノードがネットワークを介して接続された並列計算機システムにおける複数のノードのいずれかに実行される。そして、本制御方法は、（Ａ）複数のノードのうち第１のノードの記憶装置に格納されたデータを用いて実行するジョブについて、記憶装置に格納されたデータに対するアクセスの特性を示す特性データを取得する処理と、（Ｂ）取得された特性データに基づき、並列計算機システム及びネットワークが有する資源のうちキャッシュに割り当てる資源を決定する処理とを含む。
【発明の効果】
【００１１】
複数のノードを含むシステムにおいて、適切にディスクキャッシュを配置できるようになる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本実施の形態の概要について説明するための図である。
【図２】図２は、本実施の形態の概要について説明するための図である。
【図３】図３は、本実施の形態のシステム概要を示す図である。
【図４】図４は、計算ノード及びキャッシュサーバの配置例を示す図である。
【図５】図５は、計算ノードによるデータの書き込みについて説明するための図である。
【図６】図６は、計算ノードの機能ブロック図である。
【図７】図７は、キャッシュサーバの機能ブロック図である。
【図８】図８は、特性管理部による処理の処理フローを示す図である。
【図９】図９は、特性データ格納部に格納されるデータの一例を示す図である。
【図１０】図１０は、特性データ格納部に格納されるデータの一例を示す図である。
【図１１】図１１は、資源割当部による処理の処理フローを示す図である。
【図１２】図１２は、資源割当処理の処理フローを示す図である。
【図１３】図１３は、リスト格納部に格納されているデータの一例を示す図である。
【図１４】図１４は、最適化処理の一例を示す図である。
【図１５】図１５は、帯域データ格納部に格納されるデータの一例を示す図である。
【図１６】図１６は、システムの一例を示す図である。
【図１７】図１７は、重み付き有向グラフの一例を示す図である。
【図１８】図１８は、仮想化を適用したシステムの一例を示す図である。
【図１９】図１９は、仮想化をした場合における重み付き有向グラフの一例を示す図である。
【図２０】図２０は、データの圧縮方法を示す図である。
【図２１】図２１は、バンド幅算出部による処理の処理フローを示す図である。
【図２２】図２２は、計算ノードの機能ブロック図である。
【図２３】図２３は、特性管理部による処理の処理フローを示す図である。
【図２４】図２４は、特性データ格納部に格納されているデータの一例を示す図である。
【図２５】図２５は、特性管理部及び資源割当部による処理の処理フローを示す図である。
【図２６】図２６は、割当方法特定処理の処理フローを示す図である。
【図２７】図２７は、割当データ格納部に格納されているデータの一例を示す図である。
【図２８】図２８は、ジョブの実行プログラムの一例を示す図である。
【図２９】図２９は、特性管理部による処理の処理フローを示す図である。
【図３０】図３０は、特性データ格納部に格納されているデータの一例を示す図である。
【図３１】図３１は、スクリプトファイルの一例を示す図である。
【図３２】図３２は、ジョブスケジューラによる処理の処理フローを示す図である。
【図３３】図３３は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１３】
［本実施の形態の概要］
まず、本実施の形態の概要について説明する。本実施の形態のシステムにおいては、計算ノードが、ファイルサーバのディスクから読み出されたデータを用いてジョブを実行し、実行結果をファイルサーバにおけるディスクに書き戻すという一連のディスクキャッシュとしての処理を行う。ここで、計算ノードの周りにはキャッシュサーバを配置し、キャッシュサーバのメモリにデータを格納できるようにしておくことにより、計算ノードによる処理の高速化等を実現する。
【００１４】
そして、本実施のシステムは、計算ノードによるディスクへのアクセスの特性を抽出する機能（以下、特性管理機能と呼ぶ）と、アクセスの特性に応じ、システムにおける資源をキャッシュのために割り当てる機能（以下、資源割当機能と呼ぶ）とを有している。
【００１５】
特性管理機能は、以下の機能の少なくともいずれかを含む。（１）ジョブの実行中に所定時間間隔で特性データ（例えば、入力バイト数、出力バイト数等）を記録し、記録された特性データに基づき次の所定期間について特性データを動的に予測する機能。（２）ジョブの実行前に、ジョブの各実行段階について予め特性データを取得しておく機能。
【００１６】
資源割当機能は、以下の機能の少なくともいずれかを含む。（１）ジョブの実行開始時に、デフォルトの設定に従って又は特性管理機能によって生成された特性データに基づき資源を割り当てる機能。（２）ジョブの各実行段階において、特性管理機能によって生成された特性データに基づき資源を割り当てる機能。
【００１７】
また、資源割当機能によってキャッシュのために割り当てられる資源は、以下の少なくともいずれかを含む。（１）キャッシュサーバとして動作するためのプログラム（以下、キャッシュサーバプログラムと呼ぶ）が実行されるノード。（２）キャッシュサーバにおいて実行されているキャッシュサーバプログラムが使用するメモリ。（３）計算ノード、キャッシュサーバ及びファイルサーバの間でデータを転送する際に使用する通信帯域。
【００１８】
これにより、本実施の形態においては、キャッシュサーバとして動作させるノード、キャッシュサーバの処理によって使用されるメモリ及びデータの転送経路等を、計算ノードによるディスクへのアクセスの特性に応じて動的に変更できるようになっている。
【００１９】
一例として、計算ノードをキャッシュサーバとして動作させることにより処理時間を短縮するケースを示す。図１及び図２は、そのケースを説明するための図である。図１及び図２においては、計算ノードＡ乃至Ｅが処理を行った後、処理結果を含むデータをファイルサーバに書き戻す場面を想定している。また、図１及び図２のシステムは、説明を分かりやすくするため、以下のようなシステムであると仮定する。
【００２０】
・ファイルサーバが計算ノードからデータを受信する際に使用可能なバンド幅は、計算ノードがファイルサーバにデータを送信する際に使用可能なバンド幅の２倍。また、計算ノードがデータを送信する際に使用可能なバンド幅は、送信先によらず等しい。
・計算ノードは２つのグループに分かれている。計算ノードからファイルサーバへの通信路の各々は独立である。各グループに含まれるノード数は同じではない。
【００２１】
図１のシステムは、計算ノードをキャッシュサーバに転用しないシステムである。このシステムでは、（１）の段階で計算ノードＣ及び計算ノードＥがデータをファイルサーバに送信し、（２）の段階で計算ノードＢ及び計算ノードＤがデータをファイルサーバに送信し、（３）の段階で計算ノードＡがデータをファイルサーバに送信する。（１）、（２）及び（３）の段階の所要時間が同じであるとすると、合計の所要時間は、１つの計算ノードがデータをファイルサーバに送信するのに要する時間の３倍となる。
【００２２】
一方、図２のシステムは、計算ノードをキャッシュサーバに転用するシステムである。このシステムでは、（１）の段階で計算ノードＣ及び計算ノードＥがデータをファイルサーバに送信する。（２）の段階で計算ノードＢ及び計算ノードＤがデータをファイルサーバに送信し、また計算ノードＡがデータを半分計算ノードＥに送信する。すなわち、計算ノードＥをキャッシュサーバとして利用する。
【００２３】
そして、（３）の段階で計算ノードＡ及び計算ノードＥがデータ（計算ノードＢ、計算ノードＣ及び計算ノードＤ等がファイルサーバに送信したデータの半分の量のデータ）をファイルサーバに送信する。図２のシステムは、（１）の段階の所要時間及び（２）の段階の所要時間は図１のシステムと同じであるが、（３）の段階の所要時間は、（１）の段階及び（２）の段階の所要時間の半分である。従って、合計の所要時間は、１つの計算ノードがデータをファイルサーバに送信するのに要する時間の２．５倍となる。すなわち、計算ノードＥをキャッシュサーバとして動作させることによって、合計の所要時間を少なくしている。
【００２４】
このように、本実施の形態においては、ジョブの実行の際に、システムにおける資源を適宜キャッシュのために割り当てることによって、システムの処理性能を全体として向上させることができるようになっている。以下では、本実施の形態のより具体的な内容について説明する。
【００２５】
［実施の形態１］
図３に、第１の実施の形態のシステム概要を示す。例えば並列計算機システムである情報処理システム１は、複数の計算ノード２及び複数のキャッシュサーバ３を含む計算処理システム１０と、ディスクデータ格納部１１０を含む複数のファイルサーバ１１とを含む。計算処理システム１０と複数のファイルサーバ１１とは、ネットワーク４を介して接続されている。なお、計算処理システム１０は、計算ノード２及びキャッシュサーバ３の各々がＣＰＵ（Central Processing Unit）及びメモリ等を有しているシステムである。
【００２６】
図４に、計算処理システム１０における計算ノード２及びキャッシュサーバ３の配置例を示す。図４の例では、計算ノード２Ａの周りにはキャッシュサーバ３Ａ乃至３Ｈが配置されており、キャッシュサーバ３Ａ乃至３Ｈはインターコネクト５を介して１ホップ又は２ホップで計算ノード２Ａと通信を行うことができるようになっている。同様に、計算ノード２Ｂの周りには、キャッシュサーバ３Ｉ乃至３Ｐが配置されており、キャッシュサーバ３Ｉ乃至３Ｐはインターコネクト５を介して１ホップ又は２ホップで計算ノード２Ｂと通信を行うことができるようになっている。
【００２７】
例えば図５に示すように、計算ノード２Ａ及び２Ｂは、ジョブを実行する際に計算ノード２Ａ及び２Ｂの周りに配置されたキャッシュサーバを利用することができるようになっている。すなわち、計算ノード２Ａは、ディスクデータ格納部１１０に格納されているデータをキャッシュサーバ３Ａ乃至３Ｈのメモリ等に書き込み、ジョブを実行するようになっている。また、計算ノード２Ｂは、ディスクデータ格納部１１０に格納されているデータをキャッシュサーバ３Ｉ乃至３Ｐのメモリ等に書き込み、ジョブを実行するようになっている。なお、ジョブの実行が終了すると、キャッシュサーバのメモリに格納されたデータは、ファイルサーバ１１におけるディスクデータ格納部１１０に書き戻される。
【００２８】
また、第１の実施の形態のシステムでは、以下を前提とする。（１）計算ノード２とファイルサーバ１１との間にキャッシュサーバ３が配置されている。（２）１つのキャッシュサーバ３を利用するジョブは複数ある。（３）キャッシュサーバ３は複数存在し、各ジョブが利用するキャッシュサーバ３をジョブの実行中に変更することが可能である。
【００２９】
図６に、計算ノード２の機能ブロック図を示す。図６の例では、ＩＯ（Input Output）処理部２０１、取得部２０２及び設定部２０３を含む処理部２００と、ジョブ実行部２０４、特性管理部２０５と、特性データ格納部２０６と、資源割当部２０７と、バンド幅算出部２０８と、帯域データ格納部２０９と、リスト格納部２１０とを含む。
【００３０】
ＩＯ処理部２０１は、キャッシュサーバ３から受信したデータをジョブ実行部２０４に出力する処理を行い、又は、ジョブ実行部２０４から受け取ったデータをキャッシュサーバ３に送信する処理を行う。取得部２０２は、ＩＯ処理部２０１による処理を監視し、ディスクアクセスの特性を示すデータ（例えば単位時間あたりのディスクアクセスの回数、入力バイト数、出力バイト数及びアクセスするデータの位置を示す情報等。以下、特性データと呼ぶ。）を特性管理部２０５に出力する。ジョブ実行部２０４は、ＩＯ処理部２０１から受け取ったデータを用いてジョブを実行し、実行結果を含むデータをＩＯ処理部２０１に出力する。特性管理部２０５は、特性データを用いて予測値を算出し、特性データ格納部２０６に格納する。また、特性管理部２０５は、ジョブ実行部２０４による処理を監視し、処理の状態に応じて資源の割当を資源割当部２０７に要求する。バンド幅算出部２０８は、計算ノード２の各通信路について使用可能なバンド幅を算出し、処理結果を帯域データ格納部２０９に格納する。また、バンド幅算出部２０８は、算出されたバンド幅を他の計算ノード２、キャッシュサーバ３及びファイルサーバ１１に送信する。資源割当部２０７は、特性管理部２０５からの要求に応じて、特性データ格納部２０６に格納されているデータ、帯域データ格納部２０９に格納されているデータ及びリスト格納部２１０に格納されているデータを用いて処理を行い、処理結果を設定部２０３に出力する。設定部２０３は、資源割当部２０７から受け取った処理結果に従い、ＩＯ処理部２０１に対してキャッシュについての設定等を行う。
【００３１】
図７に、キャッシュサーバ３の機能ブロック図を示す。キャッシュサーバ３は、キャッシュ処理部３１と、キャッシュ３２とを含む。キャッシュ処理部３１は、キャッシュ３２へのデータの入出力等を実施する。
【００３２】
次に、図３に示したシステムにおいて行われる処理について説明する。まず、ジョブ実行部２０４によりジョブが実行されている際に特性管理部２０５が行う処理について説明する。
【００３３】
まず、特性管理部２０５は、前回の処理から所定時間が経過したか判断する（図８：ステップＳ１）。所定時間が経過していない場合（ステップＳ１：Ｎｏルート）、処理を実行するタイミングではないので、ステップＳ１の処理を再度実行する。
【００３４】
一方、所定時間が経過した場合（ステップＳ１：Ｙｅｓルート）、特性管理部２０５は、特性データを取得部２０２から受け取り、特性データ格納部２０６に格納する。図９に、特性データ格納部２０６に格納されているデータの一例を示す。図９の例では、期間毎に特性データ（例えば入力バイト数及び出力バイト数）が格納されている。
【００３５】
そして、特性管理部２０５は、特性データ格納部２０６に格納されているデータを用いて、次の所定期間についての入力バイト数の予測値を算出し、特性データ格納部２０６に格納する（ステップＳ３）。入力バイト数の予測値は、例えば以下のようにして算出する。
【００３６】
・Ｄ（Ｎ）＝（Ｎ回前の入力バイト数−（Ｎ＋１）回前の入力バイト数）
・Ｅ（Ｎ）＝（１／２）Ｎ＊Ｄ（Ｎ）
・入力バイト数の予測値＝（２Ｍ−１）＊｛Ｅ（１）＋Ｅ（２）＋．．．＋Ｅ（Ｍ）｝／２Ｍ−１
ここで、Ｍ及びＮは自然数とする。
【００３７】
また、特性管理部２０５は、特性データ格納部２０６に格納されているデータを用いて、次の所定期間についての出力バイト数の予測値を算出し、特性データ格納部２０６に格納する（ステップＳ５）。出力バイト数の予測値は、例えば以下のようにして算出する。
【００３８】
・Ｄ（Ｎ）＝（Ｎ回前の出力バイト数−（Ｎ＋１）回前の出力バイト数）
・Ｅ（Ｎ）＝（１／２）Ｎ＊Ｄ（Ｎ）
・出力バイト数の予測値＝（２Ｍ−１）＊｛Ｅ（１）＋Ｅ（２）＋．．．＋Ｅ（Ｍ）｝／２Ｍ−１
ここで、Ｍ及びＮは自然数とする。
【００３９】
図１０に、特性データ格納部２０６に格納される予測値の一例を示す。図１０の例では、期間毎に、入力バイト数及び出力バイト数の予測値が格納されている。例えば、時刻ｔｎに対応する入力バイト数及び出力バイト数の予測値は、時刻ｔ０からｔｎ−１までの入力バイト数及び出力バイト数のデータを用いて算出された予測値である。
【００４０】
そして、特性管理部２０５は、処理を終了するか判断する（ステップＳ７）。処理を終了しない場合（ステップＳ７：Ｎｏルート）、ステップＳ１の処理に戻る。例えばジョブの実行が終了した場合には（ステップＳ７：Ｙｅｓルート）、処理を終了する。
【００４１】
以上のような処理を実施すれば、ジョブの実行中に所定時間間隔で取得した特性データに基づいて、次の所定期間におけるディスクアクセスの特性を予測できるようになる。
【００４２】
次に、ジョブ実行部２０４によりジョブの実行が開始された際に資源割当部２０７が行う処理について説明する。まず、資源割当部２０７は、資源の割当をデフォルトの状態に設定する（図１１：ステップＳ１１）。ステップＳ１１においては、資源割当部２０７が、資源の割当をデフォルトの状態に設定するように設定部２０３に要求する。設定部２０３は、これに応じ、資源の割当をデフォルトの状態に設定する。例えば、予め定められたキャッシュサーバ３のみを利用するようにＩＯ処理部２０１に対して設定を行う。
【００４３】
資源割当部２０７は、特性データ格納部２０６から最新の入力バイト数の予測値（以下、入力予測値と呼ぶ）及び出力バイト数の予測値（以下、出力予測値と呼ぶ）を読み出す（ステップＳ１３）。
【００４４】
資源割当部２０７は、入力予測値が予め定められた閾値より大きいか判断する（ステップＳ１５）。入力予測値が予め定められた閾値より大きい場合（ステップＳ１５：Ｙｅｓルート）、資源割当部２０７は、資源割当処理を実施する（ステップＳ１７）。資源割当処理については、図１２乃至図２０を用いて説明する。
【００４５】
まず、資源割当部２０７は、キャッシュサーバとして動作させることが可能なノードのリストをリスト格納部２１０から読み出す（図１２：ステップＳ３１）。
【００４６】
図１３に、リスト格納部２１０に格納されているデータの一例を示す。図１３の例では、ノードの識別情報が格納されるようになっている。リスト格納部２１０に識別情報が格納されているノードは、例えば計算ノード２のうちキャッシュサーバ３に転用可能な計算ノード２（例えば、ジョブを実行中ではない計算ノード２）等である。
【００４７】
資源割当部２０７は、リストが空であるか判断する（ステップＳ３３）。リストが空である場合（ステップＳ３３：Ｙｅｓルート）、元の処理に戻る。
【００４８】
一方、リストが空ではない場合（ステップＳ３３：Ｎｏルート）、資源割当部２０７は、リストからノードを１つ取り出す（ステップＳ３５）。
【００４９】
そして、資源割当部２０７は、最適化処理を実施する（ステップＳ３７）。最適化処理については、図１４乃至図２０を用いて説明する。なお、ステップＳ３５において取り出されたノードは、以下ではキャッシュサーバ３であるとして取り扱われる。
【００５０】
まず、資源割当部２０７は、他の計算ノード２、キャッシュサーバ３及びファイルサーバ１１から受信したバンド幅のデータを帯域データ格納部２０９から読み出す（図１４：ステップＳ５１）。
【００５１】
図１５に、帯域データ格納部２０９に格納されているデータの一例を示す。図１５の例では、始点にあたるノードの識別情報と、終点にあたるノードの識別情報と、使用可能なバンド幅とが格納されている。後で詳しく説明するが、帯域データ格納部２０９に格納されているデータは、バンド幅算出部２０８が他の計算ノード２、キャッシュサーバ３及びファイルサーバ１１から受信したデータである。
【００５２】
資源割当部２０７は、帯域データ格納部２０９に格納されているデータを用いて、「転送経路に対応する重み付き有向グラフ」のデータを生成し、メインメモリ等の記憶装置に格納する（ステップＳ５３）。
【００５３】
ステップＳ５３においては、転送経路に対応する重み付き有向グラフを以下のようにして生成する。
【００５４】
・ノード（ここでは、計算ノード２、キャッシュサーバ３又はファイルサーバ１１とする）を「頂点」とする。
・ノード間の通信路を「辺」とする。
・各通信路において使用可能な（すなわち他のジョブによって使用されていない）バンド幅（ビット／秒）を「重み」とする。
・データ転送の向きを「（グラフにおける辺の）向き」とする。
【００５５】
ここで、「向き」は、以下のように始点及び終点を定めた場合における各通信路でのデータの転送方向とする。
【００５６】
・計算ノード２がファイルサーバ１１におけるディスクデータ格納部１１０からデータを読み出す場合の通信においては、始点をファイルサーバ１１とし、終点を計算ノード２とする。
・計算ノード２がファイルサーバ１１におけるディスクデータ格納部１１０にデータを書き込む場合の通信においては、始点を計算ノード２とし、終点をファイルサーバ１１とする。
【００５７】
なお、転送経路に対応する重み付き有向グラフは、行列形式のデータとしてノードのメモリ内に保持する。行列形式のデータは、以下のようにして作成する。
【００５８】
（１）ネットワークにおける各ノードに通し番号を割り当てる。
（２）ｉ番目のノードからｊ番目のノードへの通信路において使用可能なバンド幅を行列における（ｉ，ｊ）成分とする。
（３）ｉ番目のノードからｊ番目のノードへの通信路が無い又はジョブがその通信路を利用できない場合には、（ｉ，ｊ）成分を０とする。
【００５９】
例えば、ネットワークにおける各ノードの通し番号及び各通信路において使用可能なバンド幅が、図１６に示すようになっている場合には、図１７に示すような行列形式のデータが生成される。なお、図１６において、丸はノードを表し、ノードに付された数字は通し番号を表し、ノード間を結ぶ線分は通信路を表し、通信路に付された括弧付きの数字は使用可能なバンド幅を表している。但し、説明を簡単にするため、ｉ番目のノードからｊ番目のノードへの通信路において使用可能なバンド幅とｊ番目のノードからｉ番目のノードへの通信路において使用可能なバンド幅とは同じであると仮定している。
【００６０】
なお、転送経路に対応する重み付き有向グラフにおけるノード及び通信路に対して、以下のような仮想化を行うようにしてもよい。ここで言う仮想化とは、複数の物理的ノード又は複数の物理的通信路をまとめ、１つの仮想的な頂点又は仮想的な辺に対応させることである。これにより、最適化処理の負荷を削減することができる。
【００６１】
・複数のファイルサーバ１１が１つの並列ファイルシステムで制御されている場合、それらのファイルサーバ１１を１つの「仮想ファイルサーバ」とみなし、１つの頂点に対応させる。その際、複数のファイルサーバ１１の各々の通信路をまとめたものを、仮想ファイルサーバに対応する「仮想通信路」とする。
・１つのジョブを実行する計算ノード群を複数の部分集合（Ｎ１，Ｎ２，．．．Ｎｋ。ここで、ｋは２以上の自然数。）に分ける。ここで、Ｎｉ（ｉは自然数）とキャッシュサーバ３との間の通信路とＮｊ（ｊはｉ＜ｊを満たす自然数）とキャッシュサーバ３との間の通信路とが干渉しないように区分されている場合に、Ｎｉ及びＮｊを仮想的に１つの計算ノードとして取り扱う。
【００６２】
図１８に、仮想化を行った場合における有向グラフの一例を示す。図１８において、丸はノードを表し、ノード間を結ぶ線分は通信路を表し、複数のノードを含む破線の四角は仮想化されたノード（以下、仮想ノードと呼ぶ）を表し、仮想ノード間を結ぶ線分は仮想通信路を表している。図１８に示した有向グラフの行列形式のデータは、図１９に示すようになる。
【００６３】
なお、転送経路に対応する重み付き有向グラフのデータは、図２０に示すように圧縮することができる。図２０においては、左側のデータが圧縮前のデータであり、右側のデータは圧縮後のデータである。図２０に示した圧縮方法を、１行目のデータを例として説明する。
【００６４】
（１）最初の数字は行番号とする。ここでは「１」とする。
（２）次はカンマとする。
（３）１列目の数字が０以外であるかを判断する。ここでは１列目の数字が０であるので、何もしない。
（４）２列目の数字が０以外であるかを判断する。ここでは、２列目の数字が０以外であるので、３文字目を列番号「２」とし、４文字目をその数字「５」とする。
（５）３列目の数字が０以外であるかを判断する。ここでは３列目の数字が０であるので、何もしない。
（６）４列目の数字が０以外であるかを判断する。ここでは、４列目の数字が０以外であるので、５文字目を列番号「４」とし、６文字目をその数字「５」とする。
（７）５列目の数字が０以外であるかを判断する。ここでは５列目の数字が０であるので、何もしない。
（８）６列目の数字が０以外であるかを判断する。ここでは、６列目の数字が０以外であるので、７文字目を列番号「６」とし、８文字目をその数字「７」とする。
（９）７列目の数字が０以外であるかを判断する。ここでは７列目の数字が０であるので、何もしない。
【００６５】
以上のようなルールによって、データを圧縮することができる。なお、このような方法でデータを効果的に圧縮できるのは、行列の成分に０が多い場合である。
【００６６】
図１４の説明に戻り、資源割当部２０７は、ステップＳ５３において生成されたデータを用いて、計算ノード２とキャッシュサーバ３との間について、転送時間が最短となる転送経路又はバンド幅が最大になる転送経路を特定する（ステップＳ５５）。
【００６７】
ステップＳ５５においては、例えばダイクストラ法、Ａ＊（エースター）法又はベルマンフォード法を用いることにより、転送時間が最短となるような転送経路を特定する。また、例えば増加道法又はプリフロープッシュ法を用いることにより、２点間で同時に複数の経路が利用可能な場合における「最大バンド幅を与える経路の組」を特定する。ステップＳ５５においては、例えば通信の性質に応じて前者と後者とを使い分ける。例えば単純なデータ転送であれば、データを分割すればよいだけなので、複数の経路を利用する後者の方法を採用することができる場合が有る。一方、計算ノード２におけるプログラムの１つのスレッドが逐次生成するデータを順次ディスクデータ格納部１１０に書き込んでいく場合には、後者の方法を採用するのは難しい場合が有る。
【００６８】
なお、例えば計算処理システム１０のキャッシュサーバ３におけるキャッシュ３２の容量が十分にある場合には、計算ノード２とキャッシュサーバ３との間の通信路のバンド幅がディスクアクセスの速度を制限する要因となる。このような場合には、例えば後者の方法によってバンド幅が最大となるような経路の組の候補を得て、さらに前者の方法によって転送時間が最短となるような経路の組に絞り込むようにしてもよい。
【００６９】
図１４の説明に戻り、資源割当部２０７は、ステップＳ５３において生成されたデータを用いて、キャッシュサーバ３とファイルサーバ１１との間の通信について、転送時間が最短となる転送経路又はバンド幅が最大になる転送経路を特定する（ステップＳ５７）。ステップＳ５７の処理における具体的な計算方法等については、ステップＳ５５と同様である。
【００７０】
資源割当部２０７は、ステップＳ５５において特定された転送経路とステップＳ５７において特定された転送経路とを合わせることにより、計算ノード２とファイルサーバ１１との間の転送経路を決定する（ステップＳ５９）。
【００７１】
資源割当部２０７は、決定された転送経路について転送時間を算出する（ステップＳ６１）。そして元の処理に戻る。転送時間は、例えば転送経路のバンド幅とデータの転送量とを用いて算出する。転送時間を算出する方法はよく知られているので、ここでは詳細な説明は省略する。
【００７２】
以上のような処理を実施すれば、適切な転送経路が決定されるので、利用するキャッシュサーバ３（すなわち、転送経路上のキャッシュサーバ３）も決定することができるようになる。
【００７３】
図１２の説明に戻り、資源割当部２０７は、ステップＳ６１において算出した転送時間と元の転送経路で転送する場合における転送時間との差を算出する（ステップＳ３９）。元の転送経路で転送する場合における転送時間についても、ステップＳ６１の説明で述べたようにして算出することができる。
【００７４】
そして、資源割当部２０７は、ステップＳ３９において算出した転送時間の差が、転送経路の変更に要する時間より長いか判断する（ステップＳ４１）。なお、キャッシュサーバ３として動作させる計算ノード２を転送経路上に含む場合には、その計算ノード２をキャッシュサーバ３に転用するための時間及びキャッシュサーバ３として役割を終了させるための時間も、転送経路の変更に要する時間に加算する。
【００７５】
短い場合（ステップＳ４１：Ｎｏルート）、転送経路を変更しない方がよいので、ステップＳ３３の処理に戻る。一方、長い場合（ステップＳ４１：Ｙｅｓルート）、資源割当部２０７は、転送経路を変更するための設定処理を実行する（ステップＳ４３）。具体的には、資源割当部２０７は、設定部２０３に変更後の転送経路を通知する。設定部２０３は、変更後の転送経路上のキャッシュサーバ３を利用するようにＩＯ処理部２０１に対して設定する。また、計算ノード２をキャッシュサーバ３に転用する場合には、その計算ノード２に対して、キャッシュ処理部３１（すなわち、キャッシュサーバプロセス）を起動するように要求する。そしてステップＳ３３に戻る。
【００７６】
以上のような処理を実施すれば、転送経路を最適にするという観点に基づき、キャッシュに対して資源を適切に割り当てることができるようになる。
【００７７】
図１１の説明に戻り、入力予測値が予め定められた閾値以下である場合（ステップＳ１５：Ｎｏルート）、資源割当部２０７は、出力予測値が予め定められた閾値より大きいか判断する（ステップＳ１９）。出力予測値が予め定められた閾値以上である場合（ステップＳ１９：Ｙｅｓルート）、資源割当部２０７は、資源割当処理を実施する（ステップＳ２１）。資源割当処理については、ステップＳ１７についての説明で述べたとおりである。
【００７８】
一方、出力予測値が予め定められた閾値以下である場合（ステップ１９：Ｎｏルート）、ＩＯ処理部２０１がＩＯ処理（すなわちディスクアクセス）を実行する（ステップＳ２３）。なお、この処理は資源割当部２０７が実行する処理ではないので、図１１のステップＳ２３のブロックは点線で示している。
【００７９】
そして、資源割当部２０７は、資源の割当を変更すべきか判断する（ステップＳ２５）。ステップＳ２５においては、例えば、ジョブ実行部２０４の状態を監視している特性管理部２０５から、資源の割当を変更すべきことを通知されたか判断する。資源の割当を変更すべきではない場合（ステップＳ２５：Ｎｏルート）、ステップＳ２３の処理に戻る。一方、資源の割当を変更すべきである場合（ステップＳ２５：Ｙｅｓルート）、資源割当部２０７は、ジョブの実行を継続しているか判断する(ステップＳ２７）。
【００８０】
ジョブの実行を継続している場合（ステップＳ２７：Ｙｅｓルート）、資源の割当を変更した方がよいので、ステップＳ１３の処理に戻る。一方、ジョブの実行を継続していない場合（ステップＳ２７：Ｎｏルート）、処理を終了する。
【００８１】
以上のような処理を実施すれば、ジョブの各実行段階におけるディスクアクセスの特性に応じて適切に資源が割り当てられるようになるので、ディスクアクセスを高速化することができるようになる。
【００８２】
次に、バンド幅算出部２０８の処理について説明する。なお、バンド幅算出部２０８は、以下のような処理を所定時間毎に行う。
【００８３】
まず、バンド幅算出部２０８は、計算ノード２の各通信路について使用可能なバンド幅を算出し、帯域データ格納部２０９に格納する（図２１：ステップＳ７１）。なお、通信路を使用しているジョブは複数存在する場合が有る。各ジョブによる使用バンド幅が予めわかっている場合には、通信を行っていない場合におけるバンド幅から各ジョブの使用バンド幅の合計を差し引くことにより、使用可能なバンド幅を算出する。各ジョブによる使用バンド幅がわからない場合には、バンド幅の使用実績による予測値を、例えばステップＳ３で説明したような予測式によって算出する。
【００８４】
なお、バンド幅算出部２０８は、他の計算ノード２、キャッシュサーバ３及びファイルサーバ１１からバンド幅のデータを受信した場合においても、帯域データ格納部２０９にバンド幅のデータを格納する。
【００８５】
そして、バンド幅算出部２０８は、他のノード（具体的には、他の計算ノード２、キャッシュサーバ３及びファイルサーバ１１）に対し、算出したバンド幅を含む通知を送信する（ステップＳ７３）。そして処理を終了する。
【００８６】
以上のような処理を実施すれば、情報処理システム１における各ノードが、各通信路において使用可能なバンド幅を把握できるようになる。
【００８７】
［実施の形態２］
次に、第２の実施の形態について説明する。第２の実施の形態においては、情報処理システム１がＣＰＵバウンド状態及びＩＯバウンド状態のいずれであるかを判断し、その判断結果に応じて資源の割当を行うようになっている。ここで、ＣＰＵバウンド状態とは、利用できるＣＰＵ時間がジョブ実行の実時間の長さを決める主な要因である状態（すなわち、ＣＰＵがボトルネックになっている状態）のことを言う。これに対し、ＩＯバウンド状態とは、ＩＯ処理がジョブ実行の実時間の長さを決める主な要因である状態（すなわち、ＩＯがボトルネックになっている状態）のことを言う。
【００８８】
第２の実施の形態のシステムについては、以下を前提とする。（１）計算ノード２とキャッシュサーバ３とが１つの同じパーティションの中に存在する。（２）ノード、ＣＰＵ若しくはＣＰＵコア及びメモリ領域の少なくともいずれかを計算ノード２に割り当てるか、キャッシュサーバ３に割り当てるかを選択できる。（３）ジョブの実行開始時及び実行中に、予め取得した特性データを参照することができる。
【００８９】
なお、パーティションとは、システムにおいて他の部分とは論理的に分断された部分のことを言う。
【００９０】
図２２に、第２の実施の形態における計算ノード２の機能ブロック図を示す。図２２の例では、ＩＯ処理部２０１、取得部２０２及び設定部２０３を含む処理部２００と、ジョブ実行部２０４と、特性管理部２０５と、特性データ格納部２０６と、資源割当部２０７と、割当データ格納部２１１と、ジョブスケジューラ２１２とを含む。
【００９１】
ＩＯ処理部２０１は、キャッシュサーバ３から受信したデータをジョブ実行部２０４に出力する処理を行ったり、ジョブ実行部２０４から受け取ったデータをキャッシュサーバ３に送信する処理を行う。取得部２０２は、ＩＯ処理部２０１による処理及びＣＰＵによる処理を監視し、特性データ（本実施の形態においては、ＣＰＵ時間を含む）を特性管理部２０５に出力する。ジョブ実行部２０４は、ＩＯ処理部２０１から受け取ったデータを用いてジョブを実行し、実行結果をＩＯ処理部２０１に出力する。特性管理部２０５は、ジョブの各実行段階についての特性データを生成し、特性データ格納部２０６に格納する。また、特性管理部２０５は、ジョブ実行部２０４による処理を監視し、処理の状態に応じて資源の割当を資源割当部２０７に要求する。資源割当部２０７は、特性管理部２０５からの要求に応じて、特性データ格納部２０６に格納されているデータ及び割当データ格納部２１１に格納されているデータを用いて処理を行い、処理結果を設定部２０３に出力する。設定部２０３は、資源割当部２０７から受け取った処理結果に従い、ＩＯ処理部２０１に対してキャッシュについての設定等を行う。ジョブスケジューラ２１２は、ジョブ実行部２０４に対して資源（例えばＣＰＵ又はＣＰＵコア等）の割り当て等を行い、ジョブ実行部２０４によるジョブ実行の開始及び終了等を制御する。
【００９２】
次に、特性管理部２０５によって行われる処理について説明する。まず、特性管理部２０５は、ジョブの実行状態の変化又はディスクアクセスに関するイベントの発生まで待機する（図２３：ステップＳ８１）。ジョブの実行状態の変化とは、例えば、ジョブが開始又は終了したというような変化である。ディスクアクセスに関するイベントの発生とは、例えば、ジョブの実行プログラムにおいて特定の関数が実行されたというようなイベントの発生である。
【００９３】
特性管理部２０５は、ジョブの実行状態が変化又はディスクアクセスに関するイベントが発生した場合、それがジョブの開始を示しているか判断する（ステップＳ８３）。ジョブの開始を示している場合（ステップＳ８３：Ｙｅｓルート）、特性管理部２０５は、時間帯番号を初期値に設定する（ステップＳ８５）。そしてステップＳ８１の処理に戻る。
【００９４】
一方、ジョブの開始を示していない場合（ステップＳ８３：Ｎｏルート）、特性管理部２０５は、前回のイベント等から今回のイベント等までの間の時間帯の特性データを時間帯番号に対応付けて特性データ格納部２０６に格納する（ステップＳ８７）。
【００９５】
図２４に、特性データ格納部２０６に格納されているデータの一例を示す。図２４の例では、時間帯番号と、特性データとが格納されている。特性管理部２０５は、取得部２０２から受け取った特性データを、時間帯毎に集約して特性データ格納部２０６に格納するようになっている。ＩＯ時間は、例えば（時間帯の長さ）−（ＣＰＵ時間）によって算出する。なお、特性データ格納部２０６に各時間帯の長さの情報を格納しておき、ステップＳ１１１（図２５）において資源割当部２０７に通知するようにしてもよい。
【００９６】
そして、特性管理部２０５は、時間帯番号を１増やす（ステップＳ８９）。また、特性管理部２０５は、ジョブの実行が継続されているか判断する（ステップＳ９１）。ジョブの実行が継続されている場合（ステップＳ９１：Ｙｅｓルート）、処理を継続するため、ステップＳ８１の処理に戻る。
【００９７】
一方、ジョブの実行が継続されていない場合（ステップＳ９１：Ｎｏルート）、処理を終了する。
【００９８】
以上のような処理を実施すれば、プログラムの実行段階（上で述べた例では、時間帯）毎に予め特性データを集約しておき、後の処理に利用できるようになる。
【００９９】
次に、特性管理部２０５及び資源割当部２０７が連携して資源の割り当てを行う処理について説明する。
【０１００】
まず、特性管理部２０５は、ジョブの実行状態の変化又はディスクアクセスに関するイベントの発生まで待機する（図２５：ステップＳ１０１）。そして、特性管理部２０５は、ジョブの実行状態が変化した又はディスクアクセスに関するイベントが発生したことを検出する（ステップＳ１０３）。
【０１０１】
特性管理部２０５は、それがジョブの開始を示しているか判断する（ステップＳ１０５）。ジョブの開始を示している場合（ステップＳ１０５：Ｙｅｓルート）、特性管理部２０５は、資源の割当をデフォルトの状態に設定する（ステップＳ１０７）。ステップＳ１０７においては、資源割当部２０７が、資源の割当をデフォルトの状態に設定するように設定部２０３に要求する。設定部２０３は、これに応じ、資源の割当をデフォルトの状態に設定する。例えば、予め定められたキャッシュサーバ３のみを利用するようにＩＯ処理部２０１に対して設定を行う。
【０１０２】
一方、ジョブの開始を示していない場合（ステップＳ１０５：Ｎｏルート）、特性管理部２０５は、ジョブの終了を示しているか判断する（ステップＳ１０９）。ジョブの終了を示している場合（ステップＳ１０９：Ｙｅｓルート）、処理を終了する。ジョブの終了を示していない場合（ステップＳ１０９：Ｎｏルート）、特性管理部２０５は、資源割当部２０７に対し、次の時間帯の時間帯番号を通知すると共に、割当方法特定処理の実施を要求する。これに応じ、資源割当部２０７は、割当方法特定処理を実施する（ステップＳ１１１）。割当方法特定処理については、図２６を用いて説明する。
【０１０３】
まず、資源割当部２０７は、次の時間帯に対応する特性データを特性データ格納部２０６から読み出す（ステップＳ１２１）。
【０１０４】
資源割当部２０７は、次の時間帯についてＣＰＵ時間の割合及びＩＯ時間の割合を算出する（ステップＳ１２３）。ステップＳ１２３においては、例えば、ＣＰＵ時間の割合を（ＣＰＵ時間）／（次の時間帯の長さ）によって算出し、ＩＯ時間の割合を（ＩＯ時間）／（次の時間帯の長さ）によって算出する。
【０１０５】
資源割当部２０７は、ＣＰＵ時間の割合が所定の閾値よりも大きいか判断する（ステップＳ１２５）。所定の閾値よりも大きい場合（ステップＳ１２５：Ｙｅｓルート）、キャッシュに割り当てる資源をデフォルトより減らすような割当方法を割当データ格納部２１１から特定する（ステップＳ１２７）。ディスクアクセスよりもジョブの実行に資源を割り当てるべきであるからである。
【０１０６】
図２７に、割当データ格納部２１１に格納されているデータの一例を示す。図２７の例では、状態の識別情報と、割当方法とが格納されている。割当方法の列には、例えば、キャッシュサーバ３として動作させるノードの識別情報が格納される。ＣＰＵバウンド状態に対応する割当方法は、パーティション内の資源のうちキャッシュに割り当てる資源をデフォルトより減らすような割当方法である。ＩＯバウンド状態に対応する割当方法は、パーティション内の資源のうちキャッシュに割り当てる資源をデフォルトより増やすような割当方法である。ＣＰＵバウンド及びＩＯバウンドのいずれの状態でもない場合に対応する割当方法の列には、例えば、割当変更に要するコストが改善の効果より大きいような割当方法が格納される。但し、割当変更に要するコストがほとんどかからないような場合には、キャッシュに割り当てる資源を増やすような割当方法及び減らすような割当方法のいずれも格納するようにしてもよい。また、割当変更に要するコストが改善の効果等と比べて大きい場合には、何も格納しなくてもよい。
【０１０７】
なお、ステップＳ１２５の閾値及びステップＳ１２９の閾値は、「ＣＰＵバウンド且つＩＯバウンド」という状態が発生しないように定める。
【０１０８】
図２６の説明に戻り、所定の閾値以下である場合（ステップＳ１２５：Ｎｏルート）、資源割当部２０７は、ＩＯ時間の割合が所定の閾値よりも大きいか判断する（ステップＳ１２９）。
【０１０９】
所定の閾値より大きい場合（ステップＳ１２９：Ｙｅｓルート）、資源割当部２０７は、キャッシュに割り当てる資源をデフォルトよりも増やすような割当方法を割当データ格納部２１１から特定する（ステップＳ１３１）。
【０１１０】
一方、所定の閾値以下である場合（ステップＳ１２９：Ｎｏルート）、資源割当部２０７は、ＣＰＵバウンド及びＩＯバウンドのいずれの状態でもない場合の割当方法を割当データ格納部２１１から特定する（ステップＳ１３３）。そして元の処理に戻る。
【０１１１】
以上のような処理を実施すれば、ディスクアクセス又はジョブの実行のうちボトルネックになっている方に対して資源を割り当てることができるようになる。
【０１１２】
図２５の説明に戻り、資源割当部２０７は、ステップＳ１１１において特定された各割当方法について転送時間を算出すると共に、元の転送時間との差を算出する（ステップＳ１１３）。ステップＳ１１３においては、例えば、各割当方法によってキャッシュを割り当てた場合における転送経路を特定し、その転送経路での転送時間をステップＳ６１において述べたような方法によって算出する。
【０１１３】
そして、資源割当部２０７は、（ステップＳ１１３において算出した転送時間の差）＞（割当の変更に要する時間）という条件を満たす割当方法が有るか判断する（ステップＳ１１５）。条件を満たす割当方法が無い場合（ステップＳ１１５：Ｎｏルート）、ステップＳ１０１の処理に戻る。一方、条件を満たす割当方法がある場合（ステップＳ１１５：Ｙｅｓルート）、資源割当部２０７は、条件を満たす割当方法の中から最も転送時間が短い割当方法を特定し、資源の割当を変更する（ステップＳ１１７）。具体的には、資源割当部２０７は、設定部２０３に割当方法を通知する。設定部２０３は、変更後の割当方法に従って処理を行うようにＩＯ処理部２０１に対して設定する。また、計算ノード２をキャッシュサーバ３に転用する場合には、その計算ノード２に対して、キャッシュ処理部３１（すなわち、キャッシュサーバプログラムのプロセス）を起動するように要求する。そしてステップＳ１０１の処理に戻る。
【０１１４】
以上のような処理を実施すれば、情報処理システム１における資源が、処理のボトルネックになる可能性がある部分に対して適切に割り当てられるようになるので、情報処理システム１のスループットを向上させることができるようになる。
【０１１５】
［実施の形態３］
次に、第３の実施の形態について説明する。第３の実施の形態においては、ジョブの実行プログラムから特性データを抽出する。
【０１１６】
図２８に、ジョブの実行プログラムの一例を示す。図２８の例では、ジョブの実行プログラムが、２つのブロックに分かれている。１つ目のブロックには入力に関する処理が記述されており、２つ目のブロックには出力に関する処理が記述されている。第３の実施の形態においては、ジョブの実行プログラムにおけるこのようなブロック構造を手がかりにして、特性データを抽出する。
【０１１７】
次に、特性管理部２０５によって行われる処理について説明する。まず、特性管理部２０５は、ブロック番号を初期化する（図２９：ステップＳ１４１）。
【０１１８】
特性管理部２０５は、読み込んだ行が入力指示の行であるか判断する（ステップＳ１４３）。入力指示の行である場合（ステップＳ１４３：Ｙｅｓルート）、特性管理部２０５は、入力回数を１インクリメントし、また入力バイト数を引数分増やす（ステップＳ１４５）。そしてステップＳ１４３の処理に戻る。一方、入力指示の行ではない場合（ステップＳ１４３：Ｎｏルート）、特性管理部２０５は、読み込んだ行が出力指示の行であるか判断する（ステップＳ１４７）。
【０１１９】
出力指示の行である場合（ステップＳ１４７：Ｙｅｓルート）、特性管理部２０５は、出力回数を１インクリメントし、また出力バイト数を引数分増やす（ステップＳ１４９）。そしてステップＳ１４３の処理に戻る。一方、出力指示の行ではない場合（ステップＳ１４７：Ｎｏルート）、特性管理部２０５は、読み込んだ行がブロック開始の行であるか判断する（ステップＳ１５１）。
【０１２０】
ブロック開始の行である場合（ステップＳ１５１：Ｙｅｓルート）、特性管理部２０５は、ブロック番号を１インクリメントし、フラグをオンに設定する（ステップＳ１５３）。ステップＳ１５３において設定されるフラグは、ブロックの処理中であることを表すフラグである。一方、ブロック開始の行ではない場合（ステップＳ１５１：Ｎｏルート）、特性管理部２０５は、ブロック終了の行であるか判断する（ステップＳ１５５）。
【０１２１】
ブロック終了の行である場合（ステップＳ１５５：Ｙｅｓルート）、特性管理部２０５は、フラグをオフに設定し、ステップＳ１４３の処理に戻る（ステップＳ１５７）。一方、ブロック終了の行ではない場合（ステップＳ１５５：Ｎｏルート）、特性管理部２０５は、特性データ（例えば、入力バイト数及び出力バイト数等）をブロック番号に対応付けて特性データ格納部２０６に格納する（ステップＳ１５９）。
【０１２２】
図３０に、特性データ格納部２０６に格納されているデータの一例を示す。図３０の例では、ブロック番号と、特性データとが格納されるようになっている。
【０１２３】
そして、特性管理部２０５は、ジョブの実行プログラムの最終行であるか判断する（ステップＳ１６１）。最終行ではない場合（ステップＳ１６１：Ｎｏルート）、次の行について処理するため、ステップＳ１４３の処理に戻る。一方、最終行である場合（ステップＳ１６１：Ｙｅｓルート）、処理を終了する。
【０１２４】
以上のように、第３の実施の形態においては、ジョブの実行プログラムにおけるブロックを手がかりにしてジョブの実行段階を分けている。第２の実施の形態においては、ジョブの実行段階を時間帯によって分けていたが、第３の実施の形態のようにしても、第２の実施の形態と同様に、ディスクアクセスの特性に応じた資源の割当を行うことができる。
【０１２５】
［実施の形態４］
次に、第４の実施の形態について説明する。第４の実施の形態においては、ステージイン及びステージアウトに合わせて資源の割当を行うことにより、特性データを利用することなく資源の割当を行えるようにする。
【０１２６】
バッチジョブの実行においては、ファイルサーバ上のファイルへのアクセスに伴って発生するネットワークトラフィックの増加を抑制するため、以下のような制御を行うことがある。
【０１２７】
・ジョブ実行開始時に、リモートファイルサーバ上のファイルをローカルファイルサーバにコピーする。この処理はファイルの「ステージイン」と呼ばれる。
・ジョブの実行中は、ローカルファイルサーバ上のファイルを使用する。
・ジョブ実行終了時に、ローカルファイルサーバ上のファイルをリモートファイルサーバに書き戻す。この処理はファイルの「ステージアウト」と呼ばれる。
【０１２８】
ファイルのステージイン及びステージアウトは、例えば以下のいずれかの方法で制御される。
【０１２９】
・ジョブスケジューラが解釈するスクリプトファイルにステージイン及びステージアウトについて記述することで制御する。ステージインはジョブの実行プログラムの実行前、ステージアウトはジョブの実行プログラムの実行後に、ジョブの実行プログラムとは独立して、ジョブスケジューラの処理の一部として実行される。
・ジョブの実行プログラム自身の動作を契機として制御を行う。例えば、ジョブの実行プログラムがファイルを最初にオープンする処理の延長でステージインを行い、最後にクローズする際又は最後のプロセスが終了する際にステージアウトする。このようなステージイン及びステージアウトの検出は、ジョブの実行プログラムを実行中に監視し、「最初のオープン」、「最後のクローズ」又は「プロセスの終了」という動作を「イベント」として捉えることで行う。
【０１３０】
ファイルのステージイン及びステージアウトの際には、計算ノード２は、必然的にＩＯバウンドの状態になることが特性データを利用しなくても予測できる。そこで、本実施の形態においては、スクリプトファイルを利用して資源の割当を行う例について説明する。
【０１３１】
図３１に、ジョブスケジューラが解釈するスクリプトファイルの一例を示す。図３１のスクリプトファイルには、ステージイン及びステージアウトを指示するための変数の記述と、ステージインの指示の記述と、ステージアウトの指示の記述とが含まれる。
【０１３２】
次に、図３２を用いて、ジョブスケジューラ２１２による処理について説明する。まず、ジョブスケジューラ２１２は、スクリプトを１行分読み出す（図３２：ステップＳ１７１）。
【０１３３】
ジョブスケジューラ２１２は、変数設定の行であるか判断する（ステップＳ１７３）。変数設定の行である場合（ステップＳ１７３：Ｙｅｓルート）、ジョブスケジューラ２１２は、変数の設定データをメインメモリ等の記憶装置に格納する（ステップＳ１７５）。そしてステップＳ１７１の処理に戻る。なお、変数の設定データは後にステージイン及びステージアウトの指示をするときに利用される。一方、変数設定の行ではない場合（ステップＳ１７３：Ｎｏルート）、ジョブスケジューラ２１２は、最初のステージインの行であるか判断する（ステップＳ１７９）。
【０１３４】
最初のステージインの行である場合（ステップＳ１７９：Ｙｅｓルート）、ジョブスケジューラ２１２は、計算ノード２内に、キャッシュサーバプログラムのプロセスを起動する（ステップＳ１８１）。そしてステップＳ１７１の処理に戻る。これにより、計算ノード２のメモリ及びＣＰＵ若しくはＣＰＵコア、又はネットワークにおける通信帯域等の資源がキャッシュサーバプログラムによってディスクアクセスのために使用される。一方、最初のステージインの行ではない場合（ステップＳ１７９：Ｎｏルート）、ジョブスケジューラ２１２は、ジョブの実行開始の行であるか判断する（ステップＳ１８３）。
【０１３５】
ジョブの実行開始の行である場合（ステップＳ１８３：Ｙｅｓルート）、ジョブスケジューラ２１２は、資源の割当をデフォルトの状態に設定し、ジョブ実行部２０４によるジョブの実行を開始させる（ステップＳ１８５）。そしてステップＳ１７１の処理に戻る。これにより、計算ノード２のメモリ及びＣＰＵ又はＣＰＵコア等の資源は、ジョブ実行部２０４によるジョブの実行のために使用される。一方、ジョブの実行開始の行ではない場合（ステップＳ１８３：Ｎｏルート）、ジョブスケジューラ２１２は、最初のステージアウトの行であるか判断する（ステップＳ１８７）。
【０１３６】
最初のステージアウトの行である場合（ステップＳ１８７：Ｙｅｓルート）、ジョブスケジューラ２１２は、キャッシュサーバプログラムのプロセスを起動する（ステップＳ１８９）。そしてステップＳ１７１の処理に戻る。一方、最初のステージアウトの行ではない場合（ステップＳ１８７：Ｎｏルート）、ジョブスケジューラ２１２は、未処理の行が有るか判断する（ステップＳ１９１）。未処理の行が有る場合（ステップＳ１９１：Ｙｅｓルート）、次の行について処理するため、ステップＳ１７１の処理に戻る。
【０１３７】
一方、未処理の行が無い場合（ステップＳ１９１：Ｎｏルート）、処理を終了する。
【０１３８】
以上のような処理を実施すれば、ステージイン及びステージアウトに要する時間を削減することができるようになる。
【０１３９】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した計算ノード２及びキャッシュサーバ３の機能ブロック構成は必ずしも実際のプログラムモジュール構成に対応するものではない。
【０１４０】
また、上で説明した各テーブルの構成は一例であって、必ずしも上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０１４１】
なお、キャッシュサーバ３において、キャッシュ３２の容量が不足している場合又は不足することが予測される場合には、ＦＩＦＯ（First In First Out）又はＬＲＵ（Least Recently Used）等の方法で優先度を定めてディスクデータ格納部１１０への書き戻しを行うようにしてもよい。それでもキャッシュ３２の容量の不足が避けられない場合には、ディスクデータ格納部１１０への書き戻しによってキャッシュサーバ３のメモリに空きが生じるまでの時間を、そのキャッシュサーバ３を経由する転送経路の転送時間に加算するようにしてもよい。
【０１４２】
また、上で述べた例ではキャッシュ３２をメモリ上に設けるようにしたが、例えばディスク装置上に設けるようにしてもよい。たとえディスク装置に設けるようにしたとしても、そのディスク装置を有するキャッシュサーバ３が計算ノード２と近い（例えば、少ないホップ数で到達可能である）場合には、ネットワーク遅延及びファイルサーバ１１への負荷の集中等を抑制できる場合がある。
【０１４３】
また、第２の実施の形態においては、ジョブスケジューラ２１２によってジョブが実行開始される際に、デフォルトの設定に従って資源の割当を行うようにしているが、以下のようにしてもよい。すなわち、ジョブの実行開始時に、ＩＯバウンド状態にならないと予測される場合には、パーティション内においてキャッシュに割り当てるノードを通常よりも少なく設定するようにしてもよい。また、ジョブの実行開始時に、ＩＯバウンド状態になると予測される場合、パーティション内においてキャッシュに割り当てるノードを通常よりも多く設定するようにしてもよい。
【０１４４】
なお、上で述べた計算ノード２、キャッシュサーバ３及びファイルサーバ１１は、コンピュータ装置であって、図３３に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウェアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１４５】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１４６】
本実施の形態に係る情報処理方法は、（Ａ）複数のノードを含むネットワークにおける第１のノード上のディスク装置（例えばハードディスクドライブ等。ＳＳＤ（Solid State Drive）等である場合もある）に格納されているデータを用いて実行すべきジョブについて、ディスク装置に対するアクセスの特性を示すデータを取得する処理と、（Ｂ）少なくともアクセスの特性を示すデータに基づき、ネットワークにおけるリソースのうちキャッシュに割り当てるリソースを決定する処理とを含む。
【０１４７】
このようにすれば、複数のノードを含むネットワークにおいて、キャッシュを適切に配置することができるようになる。
【０１４８】
また、上で述べたアクセスの特性を示すデータが、ディスク装置に対するアクセスによって転送されるデータ量の情報を含むようにしてもよい。そして、決定する処理において、（ｂ１）データ量が第１の閾値以上である場合、ネットワークにおける他のノードから受信した帯域幅のデータを用いて、データの転送時間が最短になるような又はデータを転送するための帯域幅が最大になるように第１のノードまでの転送経路を決定し、当該転送経路上のノードのリソースをキャッシュに割り当てるようにしてもよい。このようにすれば、ディスク装置に対するアクセスを最大限高速化するようにリソースの割当を決定することができるようになる。
【０１４９】
また、決定する処理において、（ｂ２）ネットワークにおける各ノードを頂点とし、ネットワークにおける各通信路を辺とし、当該各通信路の帯域幅を重みとし、且つデータの転送方向を向きとした重み付き有向グラフを生成し、（ｂ３）第１のノードまでの転送経路のうちキャッシュとして利用するメモリを有するノードまでの区間の経路を、重み付き有向グラフに対して第１のアルゴリズムを適用することにより決定し、（ｂ４）第１のノードまでの転送経路のうちキャッシュとして利用するメモリを有するノードから第１のノードまでの区間の経路を、重み付き有向グラフに対して第１のアルゴリズムとは異なる第２のアルゴリズムを適用することにより決定するようにしてもよい。データの転送は、同じ転送経路であってもその区間によって特性が異なることがある。そこで、上で述べたようにすれば、区間に応じて適切なアルゴリズムを適用することができるようになる。
【０１５０】
また、重み付き有向グラフを生成する処理において、（ｂ２１）ネットワークにおける複数のノードを仮想的に１つのノードとして頂点を生成し、且つネットワークにおける複数の通信路を仮想的に１つの通信路として辺を生成し、ネットワークにおける複数の通信路の各々の帯域幅の合計を当該複数の通信路に対応する仮想的な１つ通信路の帯域幅とすることにより重み付き有向グラフを生成するようにしてもよい。このようにすれば、転送経路を決定する際の計算の負荷を減らすことができるようになる。
【０１５１】
また、取得する処理において、（ａ１）ジョブの実行に要するＣＰＵ時間及びディスク装置に対するアクセスのための処理に要する時間の情報をさらに取得してもよい。そして、決定する処理において、（ｂ５）ＣＰＵ時間及びディスク装置に対するアクセスのための処理に要する時間に基づき、複数のノードのリソースの割当方法を決定するようにしてもよい。このようにすれば、ジョブの実行又はディスク装置に対するアクセスのうちボトルネックとなっている方にリソースを割り当てることができるので、システムのスループットを向上させることができるようになる。
【０１５２】
また、取得する処理において、（ａ２）ジョブの実行中にディスク装置に対するアクセスを監視することにより、アクセスの特性を示すデータを取得するようにしてもよい。このようにすれば、アクセスの特性を示すデータを適切に取得できるようになる。
【０１５３】
また、取得する処理において、（ａ３）ジョブの実行中に、アクセスの特性を示すデータを格納するデータ格納部から当該アクセスの特性を示すデータを取得するようにしてもよい。例えば予めアクセスを示すデータが用意されている場合には、そのデータを利用することができるようになる。
【０１５４】
また、取得する処理において、（ａ４）ジョブの実行前にジョブの実行プログラムを解析することによりアクセスの特性を示すデータを生成し、データ格納部に格納するようにしてもよい。このように、ジョブの実行プログラムを利用すれば、アクセスの特性を示すデータを予め用意しておくことができるようになる。
【０１５５】
また、取得する処理において、（ａ５）ジョブの各実行段階について、アクセスの特性を示すデータを生成するようにしてもよい。そして、決定する処理において、（ｂ６）ジョブの各実行段階について、ネットワークにおけるリソースのうちキャッシュに割り当てるリソースを決定するようにしてもよい。このようにすれば、ジョブの各実行段階のアクセス特性に応じて動的に対応を行うことができるようになる。
【０１５６】
また、本情報処理方法が、（Ｃ）ジョブの実行を制御するためのプログラムを解析することにより又はジョブの実行を監視することにより、ジョブの実行開始又はジョブの実行終了を検出する処理と、（Ｄ）ジョブの実行開始又はジョブの実行終了が検出された場合に、コンピュータにおけるリソースのうちキャッシュに割り当てるリソースを増やす処理とをさらに含むようにしてもよい。このようにすれば、例えばステージイン又はステージアウトに合わせてキャッシュに割り当てるリソースを増やすことができるようになる。
【０１５７】
また、上で述べた第１のアルゴリズム及び第２のアルゴリズムが、ダイクストラ法、エースター法、ベルマンフォード法、増加道法及びプリフロープッシュ法の少なくともいずれかであってもよい。このようにすれば、データの転送時間が最短になるような又はデータを転送するための帯域幅が最大になるような転送経路を適切に決定することができるようになる。
【０１５８】
また、上で述べたキャッシュに割り当てるリソースが、ＣＰＵ若しくはＣＰＵコア又はメモリ若しくはメモリ領域のうち少なくともいずれかを含むようにしてもよい。このようにすれば、適切なリソースがキャッシュに割り当てられるようになる。
【０１５９】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【０１６０】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１６１】
（付記１）
複数のノードがネットワークを介して接続された並列計算機システムの制御プログラムにおいて、
前記複数のノードのいずれかに、
前記複数のノードのうち第１のノードの記憶装置に格納されたデータを用いて実行するジョブについて、前記記憶装置に格納されたデータに対するアクセスの特性を示す特性データを取得させ、
取得された前記特性データに基づき、前記並列計算機システム及び前記ネットワークが有する資源のうちキャッシュに割り当てる資源を決定させる
ことを特徴とする並列計算機システムの制御プログラム。
【０１６２】
（付記２）
前記特性データが、前記記憶装置に格納されたデータに対するアクセスによって転送されるデータ量の情報を含み、
前記キャッシュに割り当てる資源を決定させる処理において、
前記データ量が第１の閾値以上である場合、前記複数のノードのうち他のノードから受信した帯域幅のデータを用いて、データの転送時間が最短になるように又はデータを転送するための帯域幅が最大になるように前記第１のノードまでの転送経路を決定させ、該転送経路上のノードの資源をキャッシュに割り当てさせる
ことを特徴とする、付記１記載の並列計算機システムの制御プログラム。
【０１６３】
（付記３）
前記キャッシュに割り当てる資源を決定させる処理において、
前記複数のノードの各々を頂点とし、前記ネットワークにおける各通信路を辺とし、該各通信路の帯域幅を重みとし、且つデータの転送方向を向きとした重み付き有向グラフを生成させ、
前記第１のノードまでの転送経路のうちキャッシュに割り当てる資源を有するノードまでの区間の経路を、前記重み付き有向グラフに対して第１のアルゴリズムを適用することにより決定させ、
前記第１のノードまでの転送経路のうちキャッシュに割り当てる資源を有するノードから前記第１のノードまでの区間の経路を、前記重み付き有向グラフに対して前記第１のアルゴリズムとは異なる第２のアルゴリズムを適用することにより決定させる
ことを特徴とする、付記２記載の並列計算機システムの制御プログラム。
【０１６４】
（付記４）
前記重み付き有向グラフを生成させる処理において、
前記複数のノードの一部を仮想的に１つのノードとして頂点を生成させ、前記ネットワークにおける複数の通信路を仮想的に１つの通信路として辺を生成させ、且つ前記ネットワークにおける複数の通信路の各々の帯域幅の合計を該複数の通信路に対応する仮想的な１つ通信路の帯域幅とすることにより前記重み付き有向グラフを生成させる
ことを特徴とする、付記３記載の並列計算機システムの制御プログラム。
【０１６５】
（付記５）
前記特性データが、
前記ジョブの実行に要するＣＰＵ時間及び前記記憶装置に格納されたデータに対するアクセスのための処理に要する時間の情報を含み、
前記キャッシュに割り当てる資源を決定させる処理において、
前記ＣＰＵ時間及び前記記憶装置に格納されたデータに対するアクセスのための処理に要する時間に基づき、前記複数のノードの資源の割当方法を決定させる
ことを特徴とする、付記１記載の並列計算機システムの制御プログラム。
【０１６６】
（付記６）
前記特性データを取得させる処理において、
前記ジョブの実行中に前記記憶装置に格納されたデータに対するアクセスを監視することにより、前記特性データを取得させる
ことを特徴とする、付記１乃至５のいずれか１つ記載の並列計算機システムの制御プログラム。
【０１６７】
（付記７）
前記特性データを取得させる処理において、
前記ジョブの実行中に、前記特性データを格納するデータ格納部から該特性データを取得させる
ことを特徴とする、付記１乃至５のいずれか１つ記載の並列計算機システムの制御プログラム。
【０１６８】
（付記８）
前記特性データを取得させる処理において、
前記ジョブの実行前に前記ジョブの実行プログラムを解析することにより前記特性データを生成させ、前記データ格納部に格納させる
ことを特徴とする、付記７記載の並列計算機システムの制御プログラム。
【０１６９】
（付記９）
前記特性データを取得させる処理において、
前記ジョブの各実行段階について前記特性データを取得させ、
前記キャッシュに割り当てる資源を決定させる処理において、
前記ジョブの各実行段階について前記キャッシュに割り当てる資源を決定させる
ことを特徴とする、付記１乃至８のいずれか１つ記載の並列計算機システムの制御プログラム。
【０１７０】
（付記１０）
前記複数のノードのいずれかに、さらに、
前記ジョブの実行を制御するためのプログラムを解析することにより又は前記ジョブの実行を監視することにより、前記ジョブの実行開始又は前記ジョブの実行終了を検出させ、
前記ジョブの実行開始又は前記ジョブの実行終了を検出させる処理において前記ジョブの実行開始又は前記ジョブの実行終了が検出された場合に、前記複数のノードのいずれかにおける資源のうちキャッシュに割り当てる資源を増加させる
ことを特徴とする、付記１乃至９のいずれか１つ記載の並列計算機システムのプログラム。
【０１７１】
（付記１１）
前記第１のアルゴリズム及び前記第２のアルゴリズムが、ダイクストラ法、エースター法、ベルマンフォード法、増加道法及びプリフロープッシュ法の少なくともいずれかである
ことを特徴とする付記３又は４記載のプログラム。
【０１７２】
（付記１２）
前記並列計算機システムが有する資源が、ＣＰＵ若しくはＣＰＵコア又はメモリ若しくはメモリ領域のうち少なくともいずれかを含む
ことを特徴とする付記１乃至１１のいずれか１つ記載のプログラム。
【０１７３】
（付記１３）
複数のノードがネットワークを介して接続された並列計算機システムの制御方法において、
前記複数のノードのいずれかが、
前記複数のノードのうち第１のノードの記憶装置に格納されたデータを用いて実行するジョブについて、前記記憶装置に格納されたデータに対するアクセスの特性を示す特性データを取得し、
取得された前記特性データに基づき、前記並列計算機システム及び前記ネットワークが有する資源のうちキャッシュに割り当てる資源を決定する
ことを特徴とする並列計算機システムの制御方法。
【０１７４】
（付記１４）
複数のノードがネットワークを介して接続された並列計算機システムにおいて、
前記複数のノードのいずれかが、
前記複数のノードのうち第１のノードの記憶装置に格納されたデータを用いて実行するジョブについて、前記記憶装置に格納されたデータに対するアクセスの特性を示す特性データを取得する取得部と、
取得された前記特性データに基づき、前記並列計算機システム及び前記ネットワークが有する資源のうちキャッシュに割り当てる資源を決定する決定部と
を有することを特徴とする並列計算機システム。
【符号の説明】
【０１７５】
１  情報処理システム    １０  計算処理システム
１１  ファイルサーバ    １１０  ディスクデータ格納部
２  計算ノード    ２００  処理部
２０１  ＩＯ処理部    ２０２  取得部
２０３  設定部    ２０４  ジョブ実行部
２０５  特性管理部    ２０６  特性データ格納部
２０７  資源割当部    ２０８  バンド幅算出部
２０９  帯域データ格納部    ２１０  リスト格納部
２１１  割当データ格納部    ２１２  ジョブスケジューラ
３  キャッシュサーバ    ３１  キャッシュ処理部
３２  キャッシュ    ４  ネットワーク
５  インターコネクト
【図１】
0005900088.tif 000002
【図２】
0005900088.tif 000003
【図３】
0005900088.tif 000004
【図４】
0005900088.tif 000005
【図５】
0005900088.tif 000006
【図６】
0005900088.tif 000007
【図７】
0005900088.tif 000008
【図８】
0005900088.tif 000009
【図９】
0005900088.tif 000010
【図１０】
0005900088.tif 000011
【図１１】
0005900088.tif 000012
【図１２】
0005900088.tif 000013
【図１３】
0005900088.tif 000014
【図１４】
0005900088.tif 000015
【図１５】
0005900088.tif 000016
【図１６】
0005900088.tif 000017
【図１７】
0005900088.tif 000018
【図１８】
0005900088.tif 000019
【図１９】
0005900088.tif 000020
【図２０】
0005900088.tif 000021
【図２１】
0005900088.tif 000022
【図２２】
0005900088.tif 000023
【図２３】
0005900088.tif 000024
【図２４】
0005900088.tif 000025
【図２５】
0005900088.tif 000026
【図２６】
0005900088.tif 000027
【図２７】
0005900088.tif 000028
【図２８】
0005900088.tif 000029
【図２９】
0005900088.tif 000030
【図３０】
0005900088.tif 000031
【図３１】
0005900088.tif 000032
【図３２】
0005900088.tif 000033
【図３３】
0005900088.tif 000034