(57)【特許請求の範囲】
【請求項１】
ジョブを並列に実行する複数のノードそれぞれに対して、前記ジョブの実行に応じたノード毎の消費電力の算出に用いられる電力係数を記憶する記憶部と、
前記複数のノードを用いて前記ジョブを並列に実行する際に、実行対象の複数のジョブのうち第１のジョブの実行時の、ノード毎の消費電力の差が所定値よりも小さくなる時間帯のノード毎の消費電力に基づいて、ノード毎の前記電力係数を更新する演算部と、
を有する並列処理装置。
【請求項２】
前記演算部は、ノード毎の消費電力の中から最大値と最小値を特定し、前記最大値と前記最小値の差が前記所定値よりも小さいジョブを、前記第１のジョブとする、請求項１記載の並列処理装置。
【請求項３】
前記演算部は、前記第１のジョブの実行時の、ノード毎の消費電力の差が前記所定値よりも小さくなる前記時間帯のノード毎の消費電力と、前回算出した電力係数とに基づいて今回の電力係数を算出する、請求項１または２記載の並列処理装置。
【請求項４】
前記演算部は、前記複数のノードの中に交換後のノードが含まれている場合、前記複数のノードを用いて前記ジョブを実行する際に、前記複数のノードから前記交換後のノードを除外したノード毎の消費電力に基づいて前記第１のジョブを検出し、検出した前記第１のジョブの実行時の前記交換後のノードの消費電力に基づいて、前記交換後のノードの前記電力係数を更新する、請求項１記載の並列処理装置。
【請求項５】
前記演算部は、前記複数のジョブのうち、前記交換後のノードの消費電力が、前記交換後のノード以外のノード毎の消費電力の最大値と最小値との範囲内に含まれなかったジョブの数を計数し、計数した数に応じて前記交換後のノードの不良を検出する、請求項４記載の並列処理装置。
【請求項６】
前記演算部は、定期的に実行されるジョブを特定し、当該定期的に実行されるジョブの実行に伴うノード毎の消費電力に基づいて、ノード毎の前記電力係数を更新する、請求項１乃至５の何れか１項に記載の並列処理装置。
【請求項７】
コンピュータに、
複数のノードを用いてジョブを並列に実行する際に、実行対象の複数のジョブのうち第１のジョブの実行時の、前記複数のノードそれぞれの消費電力の差が所定値よりも小さくなる時間帯のノード毎の消費電力に基づいて、前記ジョブの実行に応じたノード毎の消費電力の算出に用いられるノード毎の電力係数を更新する、
処理を実行させる電力係数算出プログラム。
【請求項８】
コンピュータが、
複数のノードを用いてジョブを並列に実行する際に、実行対象の複数のジョブのうち第１のジョブの実行時の、前記複数のノードそれぞれの消費電力の差が所定値よりも小さくなる時間帯のノード毎の消費電力に基づいて、前記ジョブの実行に応じたノード毎の消費電力の算出に用いられるノード毎の電力係数を更新する、
電力係数算出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は並列処理装置、電力係数算出プログラムおよび電力係数算出方法に関する。
【背景技術】
【０００２】
複数の計算ノードを並列に用いて処理を実行する計算システムが利用されている。計算システムでは、複数の計算ノードを同時に動作させるため、比較的大きな電力を消費する。このため、例えば、複数のジョブの実行をスケジューリングする際、各計算ノードによる消費電力を予測し、全体の消費電力が過大にならないように制御することがある。
【０００３】
ここで、ある装置の消費電力を予測する方法が考えられている。例えば、電力見積装置が、電力見積対象装置からパラメータの組み合わせ毎の電力値を複数取得し、電力値の平均値に対する電力値の変動の大きさに基づいて電力予測式を作成し、電力予測式を用いて電力見積対象装置の消費電力を見積もる提案がある。また、例えば、消費電力予測装置が、論理ゲート毎のイベントに対応して得られる消費電力を示す消費電力テーブルを参照して、イベントから論理ゲート毎の消費電力を予測する提案もある。
【０００４】
また、論理セルライブラリ生成システムにおいて、メモリに入るデータがランダムであると仮定してメモリの動作モードを加味したベクトルを作成し、ベクトルで指定されたサイクル毎に消費電力を算出する方法も提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−１１１３２６号公報
【特許文献２】特開２００１−２６５８４７号公報
【特許文献３】特開平１０−２２２５４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
計算システムの消費電力を予測する際、各計算ノードの消費電力に対する個別の特性を考慮することが考えられる。例えば、複数の計算ノードが同じ処理を実行したとしても、計算ノードに含まれる部品の製造上の品質のばらつきによって、各計算ノードの消費電力は変わり得る。このような個々の計算ノードの特性を電力係数として予め把握しておけば、消費電力の予測に役立てることができる。
【０００７】
例えば、電力係数を測るために、各計算ノードに均一の負荷をかけるテストプログラムを各計算ノードに実行させて、各計算ノードによる消費電力を測定する方法が考えられる。しかし、この方法では、テストプログラムを実行するために、計算ノードの通常運用を中断せねばならず、また、テストプログラムの実行のために余計な電力を消費するという問題がある。
【０００８】
１つの側面では、本発明は、テスト用の特別なプログラムを実行しなくても電力係数を取得できる並列処理装置、電力係数算出プログラムおよび電力係数算出方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、並列処理装置が提供される。この並列処理装置は記憶部と演算部とを有する。記憶部は、ジョブを並列に実行する複数のノードそれぞれに対して、ジョブの実行に応じたノード毎の消費電力の算出に用いられる電力係数を記憶する。演算部は、複数のノードを用いてジョブを並列に実行する際に、実行対象の複数のジョブのうち第１のジョブの実行時の、ノード毎の消費電力の差が所定値よりも小さくなる時間帯のノード毎の消費電力に基づいて、ノード毎の電力係数を更新する。
【発明の効果】
【００１０】
１つの側面では、テスト用の特別なプログラムを実行しなくても電力係数を取得できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の並列処理装置を示す図である。
【図２】第２の実施の形態の計算システムを示す図である。
【図３】第２の実施の形態の管理ノードのハードウェア例を示す図である。
【図４】第２の実施の形態の計算ノードのハードウェア例を示す図である。
【図５】第２の実施の形態のデータ格納サーバのハードウェア例を示す図である。
【図６】第２の実施の形態の管理ノードの機能例を示す図である。
【図７】第２の実施の形態の電力係数テーブルの例を示す図である。
【図８】第２の実施の形態の電力係数の決定例を示すフローチャートである。
【図９】第３の実施の形態の電力係数の決定例を示すフローチャートである。
【図１０】第３の実施の形態の総命令数および予測消費電力の例を示す図である。
【図１１】第３の実施の形態の実測消費電力および電力係数の例を示す。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の並列処理装置を示す図である。並列処理装置１０は、管理ノード１１および計算ノード１２，１３，１４を有する。管理ノード１１および計算ノード１２，１３，１４は、ネットワーク１５に接続されている。管理ノード１１は、計算ノード１２，１３，１４に実行させるジョブを管理するノードである。計算ノード１２，１３，１４は、ジョブを並列に実行する演算処理用のノードである。
【００１３】
ここで、１つのジョブは複数の命令を含む。管理ノード１１は、複数の命令の実行を計算ノード１２，１３，１４に分散して割り当てることで、計算ノード１２，１３，１４を用いて１つのジョブを並列に実行できる。また、並列処理装置１０では、計算ノード１２，１３，１４それぞれを、計算ノードＩＤ（IDentifier）により識別する。計算ノードＩＤは、複数の計算ノードそれぞれの識別情報である。例えば、計算ノード１２の計算ノードＩＤは“Ｘ１”である。計算ノード１３の計算ノードＩＤは“Ｘ２”である。計算ノード１４の計算ノードＩＤは“Ｘ３”である。
【００１４】
管理ノード１１は、記憶部１１ａと演算部１１ｂを有する。記憶部１１ａは、ＲＡＭ（Random Access Memory）などの揮発性の記憶装置でもよいし、フラッシュメモリなどの不揮発性の記憶装置でもよい。演算部１１ｂは、例えば、プロセッサである。プロセッサは、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）であってもよく、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの集積回路を含んでもよい。プロセッサは、例えば、ＲＡＭに記憶されたプログラムを実行する。また、「プロセッサ」は、２以上のプロセッサの集合（マルチプロセッサ）であってもよい。管理ノード１１は、「コンピュータ」と呼ばれてもよい。また、計算ノード１２，１３，１４も、管理ノード１１と同様に、プロセッサやＲＡＭを備えている。
【００１５】
記憶部１１ａは、計算ノード１２，１３，１４それぞれに対して、電力係数を記憶する。電力係数は、計算ノード１２，１３，１４に並列にジョブを実行させる際の、計算ノード１２，１３，１４それぞれの消費電力の算出に用いられる情報である。例えば、記憶部１１ａは、計算ノードと電力係数との対応を示す電力係数情報１１ｃを記憶する。ここで、電力係数と消費電力の関係は、例えば次の式（１）によって表される。
【００１６】
ｐ＝ｃ×ｒ      ・・・（１）
ｐは、消費電力（単位は、ワット（Ｗ））である。ｃは、ジョブの実行に伴い計算ノードで実行される総命令数である。例えば、ｃは、パフォーマンスカウンタを用いて取得することができる。ｒは、電力係数（単位は、Ｗ／１命令）である。電力係数は、各計算ノードの消費電力の特性を表す量であると考えることができる。例えば、計算ノード１２，１３，１４の総命令数がほぼ同じで、各計算ノードの消費電力に差がある場合、その差は計算ノードの特性によるものであると考えられる。このような電力係数の差は、例えば、各計算ノードが備える部品（例えば、ＲＡＭやプロセッサなど）の品質のばらつきによっても生じ得る。
【００１７】
演算部１１ｂは、並列処理装置１０においてジョブを実行する際に、実行対象の複数のジョブのうち計算ノード毎の消費電力の差が所定値よりも小さいジョブ（第１のジョブ）を検出する。例えば、演算部１１ｂは、計算ノード１２，１３，１４を用いて、あるジョブを並列実行した後、計算ノード１２，１３，１４からジョブの実行に伴う消費電力を収集する。そして、演算部１１ｂは、計算ノード１２，１３，１４それぞれの消費電力の差が所定値よりも小さいか否かを判定する。差が所定値よりも小さい場合、該当のジョブによって計算ノード１２，１３，１４それぞれにほぼ均一な負荷が掛けられたと考えることができる。その場合、計算ノード１２，１３，１４が当該ジョブの割り当てに伴って実行した総命令数はほぼ同じである可能性が高い。総命令数がほぼ同じである可能性が高ければ、そのときの実績の消費電力と計算ノード１２，１３，１４それぞれが実行した総命令数とにより、式（１）に基づいて計算ノードの消費電力に対する特性を導くことができる。
【００１８】
演算部１１ｂは、ジョブの実行に伴う計算ノード１２，１３，１４それぞれの消費電力の差が所定値よりも小さいか否かを判定するために、計算ノード１２，１３，１４から取得した消費電力の最大値と最小値との差が所定値よりも小さいか否かを判定してもよい。消費電力の最大値と最小値との差が各計算ノードにおける最大の消費電力差を与えるからである。消費電力の最大値と最小値との差を用いて判定を行うことで、計算ノード１２，１３，１４それぞれの消費電力のばらつきを簡便に評価できる。
【００１９】
演算部１１ｂは、検出したジョブの実行時の消費電力に基づいて、計算ノード毎の電力係数を更新する。例えば、演算部１１ｂは、式（１）を用いて、検出したジョブの実行時の消費電力と総命令数から計算ノード１２の電力係数Ｒ１を算出する。演算部１１ｂは、式（１）を用いて、検出したジョブの実行時の消費電力と総命令数から計算ノード１３の電力係数Ｒ２を算出する。演算部１１ｂは、式（１）を用いて、検出したジョブの実行時の消費電力と総命令数から計算ノード１４の電力係数Ｒ３を算出する。なお、演算部１１ｂは、計算ノード１２，１３，１４それぞれから該当のジョブのために実行した総命令数を取得してもよい。
【００２０】
例えば、演算部１１ｂは、計算ノード１２，１３，１４それぞれに対して求めた電力係数を電力係数情報１１ｃに登録する。電力係数情報１１ｃに各計算ノードに関して前回算出された電力係数が登録されているとき、演算部１１ｂは、前回算出された電力係数と今回算出された電力係数とに基づいて計算ノード１２，１３，１４の電力係数を更新することも考えられる。
【００２１】
より具体的には、ある計算ノードが故障したとき、故障した計算ノードを新しい計算ノードに交換することがある。この場合、交換後の計算ノードに対して仮の電力係数（例えば、正常な計算ノードの電力係数の平均値）を設定して運用することが考えられる。このとき、演算部１１ｂは、通常の運用で実行される複数のジョブの中から、上記の方法により各計算ノードにほぼ均等に負荷をかけたと考えられるジョブを選択する。そして、演算部１１ｂは、選択したジョブの実行に伴う各計算ノードの実測消費電力を基に、交換後の計算ノードに設定した仮の電力係数を補正する。補正の方法としては、例えば、前回算出した電力係数と今回のジョブ実行の実績に応じた電力係数との平均を今回の電力係数として採用することが考えられる。こうして、並列処理装置１０では、ジョブ実行の通常運用を継続しながら、交換後の計算ノードに対する電力係数を改善していくことができる。
【００２２】
ここで、例えば、計算ノード１２，１３，１４に対する電力係数を求めるために、各計算ノードに均一の負荷をかけるテストプログラムを各計算ノードに実行させて、各計算ノードによる消費電力を測定する方法も考えられる。しかし、この方法では、テストプログラムを実行するために、計算ノード１２，１３，１４の通常運用を中断せねばならず、また、テストプログラムの実行のために、計算ノード１２，１３，１４により余計な電力を消費するという問題がある。すなわち、電力係数を取得するために、テスト用の特別なプログラムを実行すること自体が、計算システムの運用として非効率である。
【００２３】
一方、並列処理装置１０によれば、上記のようにジョブ実行の通常運用を継続しながら、計算ノード１２，１３，１４に対する電力係数を求めることができる。このため、テストプログラムのような特別なプログラムを実行するための時間を割かなくて済み、計算ノード１２，１３，１４による通常運用を中断せずに済む。また、テストプログラムを実行しなくてもよいので、計算ノード１２，１３，１４により電力係数を求めるだけの余計な電力を消費せずに済む。
【００２４】
このように、並列処理装置１０によれば、通常運用で計算ノードの電力係数を効率的に求めることができる。例えば、並列処理装置１０は、あるジョブを実行する前に、電力係数情報１１ｃに登録されている各計算ノードの電力係数Ｒ１，Ｒ２，Ｒ３を用いて、式（１）により計算ノード毎の予測消費電力を求める。そして、並列処理装置１０は、計算ノード毎の予測消費電力の和から計算ノード全体の消費電力を予測でき、予測した消費電力に応じたジョブ実行のスケジューリングを適切に行えるようになる。
【００２５】
［第２の実施の形態］
図２は、第２の実施の形態の計算システムを示す図である。図２に示す計算システムは、管理ノード１００、計算ノード２００，２００ａ，２００ｂ，２００ｃ、ログインノード３００およびデータ格納サーバ４００を含む。
【００２６】
管理ノード１００、計算ノード２００，２００ａ，２００ｂ，２００ｃおよびログインノード３００は、ネットワーク２０に接続されている。データ格納サーバ４００は、ネットワーク３０に接続されている。ネットワーク３０は、ネットワーク２０に接続されている。例えば、ネットワーク２０は、計算システムの管理用のネットワークである。このうち、計算ノード２００，２００ａ，２００ｂ，２００ｃの相互接続網の形態は、メッシュやトーラスなどと呼ばれる直接網であってもよい。また、ネットワーク３０は、計算システムが設けられたデータセンタ内のローカルネットワークでもよいし、データセンタ外の広域ネットワークでもよい。
【００２７】
管理ノード１００は、計算ノード２００，２００ａ，２００ｂ，２００ｃへのジョブの実行を管理するサーバコンピュータである。管理ノード１００は、ログインノード３００からジョブ情報を受信する。ジョブ情報は、計算ノード２００，２００ａ，２００ｂ，２００ｃに実行させるジョブの内容やジョブを実行させる計算ノードの数に関する情報などを含む。管理ノード１００は、計算ノード２００，２００ａ，２００ｂ，２００ｃにジョブを投入し、ジョブを実行させる。
【００２８】
計算ノード２００，２００ａ，２００ｂ，２００ｃは、管理ノード１００から投入されたジョブを並列に処理するサーバコンピュータである。計算ノードの数は、４つでなくてもよい。計算ノードを多数備えて大規模な計算処理を行う技術を、ＨＰＣ（High-Performance Computing）と呼ぶことがある。
【００２９】
ログインノード３００は、ユーザによる計算システムへのログインに用いられるサーバコンピュータである。例えば、ログインノード３００は、ネットワーク３０に接続されたクライアントコンピュータ（図２では図示を省略）からユーザのログインを受け付ける。ユーザは、ログインノード３００を用いてジョブのプログラムのコンパイルを行える。また、ユーザは、ログインノード３００を介して、管理ノード１００に対する実行対象のジョブの入力を行える。ログインノード３００は、ジョブの実行のために計算ノード２００，２００ａ，２００ｂ，２００ｃを利用するとき、管理ノード１００にジョブ情報を送信する。
【００３０】
データ格納サーバ４００は、各種データを記憶するサーバコンピュータである。例えば、データ格納サーバ４００は、管理ノード１００に実行させるプログラムを管理ノード１００に配信することができる。
【００３１】
ここで、管理ノード１００は、計算ノード２００，２００ａ，２００ｂ，２００ｃに対して実行させるジョブのスケジューリングを行う。管理ノード１００は、スケジューリングの際、各ジョブの実行に伴う各計算ノードの消費電力を考慮する。計算システム全体として、消費電力が過大にならないように制御するためである。管理ノード１００は、ジョブの実行に伴う消費電力の予測に、計算ノード毎の電力係数を用いる。例えば、管理ノード１００は、電力係数を用いて、式（１）により、計算ノード毎のジョブの実行に伴う消費電力を見積もることができる。
【００３２】
ところが、計算システムでは、何れかの計算ノードが故障する可能性がある。故障した計算ノードは、例えば計算システムの管理者によって、新しい計算ノードに交換される。すると、交換後の計算ノードに対する電力係数を新たに求めることになる。管理ノード１００は、このような交換後の計算ノードに対する電力係数を効率的に決定する機能を提供する。
【００３３】
次に、計算システムが有する各装置のハードウェアについて、説明する。
図３は、第２の実施の形態の管理ノードのハードウェア例を示す図である。管理ノード１００は、プロセッサ１０１、ＲＡＭ１０２、ＮＶＲＡＭ（Non Volatile RAM ）１０３および通信インタフェース１０４を有する。各ユニットが管理ノード１００のバスに接続されている。
【００３４】
プロセッサ１０１は、管理ノード１００の全体を制御する。プロセッサ１０１は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００３５】
ＲＡＭ１０２は、管理ノード１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００３６】
ＮＶＲＡＭ１０３は、管理ノード１００の補助記憶装置である。ＮＶＲＡＭ１０３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。管理ノード１００は、ＮＶＲＡＭ１０３としてフラッシュメモリやＳＳＤ（Solid State Drive）などの種々の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００３７】
通信インタフェース１０４は、ネットワーク２０を介して他の装置と通信を行う。
なお、ログインノード３００も管理ノード１００と同様のハードウェアにより実現できる。
【００３８】
図４は、第２の実施の形態の計算ノードのハードウェア例を示す図である。計算ノード２００，２００ａ，２００ｂ，２００ｃは、同様のハードウェアで実現できる。そのため、ここでは計算ノード２００のハードウェアについて説明する。
【００３９】
計算ノード２００は、プロセッサ２０１、ＲＡＭ２０２、ＮＶＲＡＭ２０３、通信インタフェース２０４および接続インタフェース２０５を有する。各ユニットが計算ノード２００ａのバスに接続されている。
【００４０】
プロセッサ２０１は、計算ノード２００ａの全体を制御する。プロセッサ２０１は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。プロセッサ２０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ２０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００４１】
ＲＡＭ２０２は、計算ノード２００の主記憶装置である。ＲＡＭ２０２は、プロセッサ２０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ２０２は、プロセッサ２０１による処理に用いる各種データを記憶する。
【００４２】
ＮＶＲＡＭ２０３は、計算ノード２００の補助記憶装置である。ＮＶＲＡＭ２０３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。管理ノード１００は、ＮＶＲＡＭ２０３としてフラッシュメモリやＳＳＤなどの種々の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００４３】
通信インタフェース２０４は、ネットワーク２０を介して他の装置と通信を行う。
接続インタフェース２０５は、電力計２１が計測した電力値を取得する。電力計２１は、計算ノード２００による消費電力を計測する計測器である。なお、電力計２１は、計算ノード２００に内蔵されていてもよい。
【００４４】
図５は、第２の実施の形態のデータ格納サーバのハードウェア例を示す図である。データ格納サーバ４００は、プロセッサ４０１、ＲＡＭ４０２、ＨＤＤ（Hard Disk Drive）４０３、通信インタフェース４０４、画像信号処理部４０５、入力信号処理部４０６および媒体リーダ４０７を有する。各ユニットがデータ格納サーバ４００のバスに接続されている。
【００４５】
プロセッサ４０１は、データ格納サーバ４００の全体を制御する。プロセッサ４０１は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。プロセッサ４０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。また、プロセッサ４０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００４６】
ＲＡＭ４０２は、データ格納サーバ４００の主記憶装置である。ＲＡＭ４０２は、プロセッサ４０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ４０２は、プロセッサ４０１による処理に用いる各種データを記憶する。
【００４７】
ＨＤＤ４０３は、データ格納サーバ４００の補助記憶装置である。ＨＤＤ４０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ４０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。データ格納サーバ４００は、フラッシュメモリやＳＳＤなどの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００４８】
通信インタフェース４０４は、ネットワーク３０を介して他の装置と通信を行う。
画像信号処理部４０５は、プロセッサ４０１からの命令に従って、データ格納サーバ４００に接続されたディスプレイ４１に画像を出力する。ディスプレイ４１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、有機ＥＬ（Electro-Luminescence）ディスプレイなど各種のディスプレイを用いることができる。
【００４９】
入力信号処理部４０６は、データ格納サーバ４００に接続された入力デバイス４２から入力信号を取得し、プロセッサ４０１に出力する。入力デバイス４２としては、マウスやタッチパネルなどのポインティングデバイスやキーボードなどの各種の入力デバイスを用いることができる。データ格納サーバ４００には、複数の種類の入力デバイスが接続されてもよい。
【００５０】
媒体リーダ４０７は、記録媒体４３に記録されたプログラムやデータを読み取る装置である。記録媒体４３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体４３として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ４０７は、例えば、プロセッサ４０１からの命令に従って、記録媒体４３から読み取ったプログラムやデータをＲＡＭ４０２またはＨＤＤ４０３に格納する。
【００５１】
次に、管理ノード１００が有する機能について説明する。
図６は、第２の実施の形態の管理ノードの機能例を示す図である。管理ノード１００は、記憶部１１０、ジョブ管理部１２０、消費電力取得部１３０および電力係数更新部１４０を有する。記憶部１１０は、例えば、ＲＡＭ１０２またはＮＶＲＡＭ１０３に確保した記憶領域として実装される。ジョブ管理部１２０、消費電力取得部１３０および電力係数更新部１４０は、ＲＡＭ１０２に記憶されたプログラムをプロセッサ１０１が実行することで実現される。
【００５２】
記憶部１１０は、電力係数テーブルを有する。電力係数テーブルは、計算ノード２００，２００ａ，２００ｂ，２００ｃそれぞれに対応する電力係数を登録した情報である。
ジョブ管理部１２０は、ログインノード３００からジョブ情報を取得する。ジョブ情報には、並列に実行されるべき複数のプログラムを含むジョブを示す情報が含まれる。また、ジョブ管理部１２０は、ジョブを投入するタイミングをスケジューリングする。更に、ジョブ管理部１２０は、ジョブを投入する際、計算ノード２００，２００ａ，２００ｂ，２００ｃにジョブの内容を示すプログラムを配置する。ジョブ管理部１２０は、配置したプログラムを実行させるための起動コマンドを計算ノード２００，２００ａ，２００ｂ，２００ｃに送信する。これにより、計算ノード２００，２００ａ，２００ｂ，２００ｃによってジョブが並列に実行される。
【００５３】
ジョブ管理部１２０は、ジョブのスケジューリングにおいて、各ジョブの実行に伴う各計算ノードの消費電力を考慮する。ジョブ管理部１２０は、ジョブの実行に伴う消費電力の予測に、記憶部１１０に記憶された計算ノード毎の電力係数を用いる。例えば、ジョブ管理部１２０は、電力係数を用いて式（１）により、計算ノード毎のジョブの実行に伴う消費電力を見積もることができる。
【００５４】
ここで、前述のように、管理ノード１００は、ある計算ノードが故障して、新しい計算ノードに交換された場合、交換後の計算ノードに対する電力係数を新たに求めることになる。管理ノード１００は、計算ノードの電力係数を求める機能として、ジョブ管理部１２０とは別個に、下記の消費電力取得部１３０および電力係数更新部１４０を有している。
【００５５】
消費電力取得部１３０は、ジョブの実行完了後、計算ノード２００，２００ａ，２００ｂ，２００ｃそれぞれの消費電力を取得する。例えば、消費電力取得部１３０は、あるジョブを実行している間の消費電力の実測値を計算ノード２００から継続して取得し、各取得タイミングにおける実測値の平均を、当該ジョブの実行に伴う計算ノード２００の消費電力として取得してもよい。あるいは、ジョブの実行に伴う消費電力の実測値を取得する機能を計算ノード２００が有していれば、消費電力取得部１３０は、ジョブの実行完了後に、計算ノード２００によって計算された消費電力の実測値を、計算ノード２００から取得してもよい。消費電力取得部１３０は、こうして各計算ノードのジョブの実行に伴う消費電力を取得できる。また、消費電力取得部１３０は、ジョブの実行に伴い交換後の計算ノードで実行された総命令数を取得する。
【００５６】
電力係数更新部１４０は、電力係数の更新を行う。ここで、電力係数の更新を行う場合、実行されたジョブが、各計算ノードに対して均等な問題に分割されたかを判断し、均等な問題に分割されたジョブを用いて計算ノードの電力係数を更新することが求められる。
【００５７】
そこで、電力係数更新部１４０は、実行対象の複数のジョブのうち、ＳＰＭＤ（Single Program, Multiple Data streams）のジョブを検出して、電力係数の更新に用いる。ＳＰＭＤは、複数の計算ノードに並列に同じプログラムを実行させる手法であり、ＳＰＭＤのジョブであれば、各計算ノードに対してほぼ均等な命令数が割り当てられる性質をもつ。そのために、電力係数更新部１４０は、消費電力取得部１３０により各計算ノードから取得された消費電力に基づいて、該当のジョブの実行による計算ノード毎の消費電力のばらつきを評価する。
【００５８】
電力係数更新部１４０は、当該ばらつきの評価に、ＳＰＭＤ評価閾値Ｔｓ（単位：Ｗ）を用いる。該当のジョブの実行により、各計算ノードに対して、ほぼ均等に命令数が割り当てられた否かを判断するためである。例えば、各計算ノードの消費電力のうち、最大の消費電力と最小の消費電力との差がＳＰＭＤ評価閾値よりも小さければ、電力係数更新部１４０は、該当のジョブはＳＰＭＤのジョブであり、各計算ノードに対してほぼ均等な命令数が割り当てられたと評価できる。一方、最大の消費電力と最小の消費電力との差が、ＳＰＭＤ評価閾値以上であれば、電力係数更新部１４０は、該当のジョブはＳＰＭＤのジョブではなく、各計算ノードに対してほぼ均等に命令数が割り当てられるジョブではないと評価できる。なお、電力係数更新部１４０は、最大の消費電力と最小の消費電力とを得る際に、交換後の計算ノードの消費電力を除外してもよい。交換後の計算ノードに初期不良が存在する可能性もあり、初期不良がある計算ノードの消費電力を用いてジョブの評価を行うと判定精度が悪化するおそれがあるからである。
【００５９】
電力係数更新部１４０は、こうして検出したジョブの実行に伴う消費電力を用いて、式（１）により、交換後の計算ノードの電力係数を更新する。電力係数更新部１４０は、更新後の電力係数を、交換後の計算ノードに対応付けて、記憶部１１０に記録する。
【００６０】
次に、記憶部１１０に格納される電力係数テーブルについて詳細に説明する。
図７は、第２の実施の形態の電力係数テーブルの例を示す図である。電力係数テーブル１１１は、記憶部１１０に格納される。電力係数テーブル１１１は、計算ノードＩＤおよび電力係数の項目を含む。計算ノードＩＤの項目には、計算ノードを識別する情報が登録される。電力係数の項目には、電力係数を示す情報が登録される。
【００６１】
ここで、例えば、計算ノード２００の計算ノードＩＤは“Ｎ１”である。計算ノード２００ａの計算ノードＩＤは“Ｎ２”である。計算ノード２００ｂの計算ノードＩＤは“Ｎ３”である。計算ノード２００ｃの計算ノードＩＤは“Ｎ４”である。
【００６２】
例えば、電力係数テーブル１１１には、計算ノードＩＤが“Ｎ１”、電力係数が“ｒ１”という情報が登録される。これは、計算ノード２００の電力係数が“ｒ１”であることを示す。電力係数テーブル１１１には、計算ノード２００ａ，２００ｂ，２００ｃに対しても、同様に電力係数が登録される。
【００６３】
次に、計算システムにおける通常運用で電力係数を算出して更新する処理について、詳細に説明する。以下に示す手順では、ある計算ノードが故障し、故障した計算ノードが新しい交換ノードに交換された場合を想定する。交換後の計算ノードを計算ノード２００ｂとする。
【００６４】
図８は、第２の実施の形態の電力係数の決定例を示すフローチャートである。以下、図８に示す処理をステップ番号に沿って説明する。
（Ｓ１１）ジョブ管理部１２０は、交換後の計算ノード２００ｂの電力係数を電力係数テーブル１１１に設定する。具体的には、ジョブ管理部１２０は、電力係数テーブル１１１を参照し、計算ノード２００，２００ａ，２００ｃの電力係数ｒ１，ｒ２，ｒ４の平均値を計算ノード２００ｂの電力係数として、電力係数テーブル１１１に登録する。
【００６５】
（Ｓ１２）電力係数更新部１４０は、オーバーカウンタｏｃに０を代入する。オーバーカウンタｏｃは、交換後の計算ノード２００ｂの初期不良の有無を判断するためのカウンタである。オーバーカウンタｏｃは、交換後の計算ノード２００ｂの実測の消費電力が所定範囲に収まらなかったジョブの数をカウントする。また、電力係数更新部１４０は、ジョブ実行回数カウンタｊｃに０を代入する。ジョブ実行回数カウンタｊｃは、ジョブの実行回数のカウンタである。
【００６６】
（Ｓ１３）ジョブ管理部１２０は、ログインノード３００からジョブ情報を取得する。ジョブ管理部１２０は、ジョブ情報を記憶部１１０に格納する。
（Ｓ１４）ジョブ管理部１２０は、電力係数テーブル１１１に登録されている各計算ノードの電力係数と、記憶部１１０に格納されている実行予定のジョブに対応する総命令数とを、式（１）に代入して、各計算ノードの消費電力を推定する。そして、ジョブ管理部１２０は、ジョブを実行するタイミングをスケジューリングする。ここで、ジョブ管理部１２０は、推定した消費電力を考慮して、計算システム全体として消費電力が過大とならないようにジョブを実行するタイミングをスケジューリングする。
【００６７】
（Ｓ１５）ジョブ管理部１２０は、スケジューリングの結果に応じたタイミングで、計算ノード２００，２００ａ，２００ｂ，２００ｃによりジョブを並列実行する。
（Ｓ１６）消費電力取得部１３０は、計算ノード２００，２００ａ，２００ｂ，２００ｃそれぞれからジョブの実行に伴う消費電力ｗを取得する。ここで、計算ノード２００の消費電力をｗ１、計算ノード２００ａの消費電力をｗ２、計算ノード２００ｂの消費電力をｗ３、計算ノード２００ｃの消費電力をｗ４とする。例えば、前述のように、ジョブ管理部１２０は、計算ノード２００，２００ａ，２００ｂ，２００ｃそれぞれからの該当ジョブの実行中の消費電力を周期的に取得し、各取得タイミングの平均値を当該ジョブの実行に伴う消費電力としてもよい。あるいは、消費電力取得部１３０は、計算ノード２００，２００ａ，２００ｂ，２００ｃそれぞれからジョブの実行完了の通知を受け付けた後に、各計算ノードにより求められた消費電力を取得してもよい。また、消費電力取得部１３０は、ジョブの実行に伴って計算ノード２００ｂで実行された総命令数ｃ３を計算ノード２００ｂから取得する。
【００６８】
（Ｓ１７）電力係数更新部１４０は、計算ノード２００，２００ａ，２００ｃから取得した消費電力ｗ１，ｗ２，ｗ４の中から最も大きい消費電力ｍａｘ（ｗ）と最も小さい消費電力ｍｉｎ（ｗ）とを特定する。計算ノード２００ｂの消費電力ｗ３を除く理由は、前述のようにＳＰＭＤのジョブの検出精度を高めるためである。電力係数更新部１４０は、消費電力の最大値と最小値との差（ｍａｘ（ｗ）−ｍｉｎ（ｗ））がＳＰＭＤ評価閾値Ｔｓよりも小さいか否かを判定する。ｍａｘ（ｗ）−ｍｉｎ（ｗ）＜Ｔｓの場合、計算ノード２００，２００ａ，２００ｃで実行された総命令数がほぼ同じである可能性が高いとして、処理をステップＳ１８に進める。ｍａｘ（ｗ）−ｍｉｎ（ｗ）≧Ｔｓの場合、計算ノード２００，２００ａ，２００ｃで実行された総命令数に比較的大きな隔たりがあるとして、処理をステップＳ１３に進める。なお、閾値Ｔｓは、ユーザにより記憶部１１０に予め登録されている（例えば、Ｔｓ＝１０Ｗ程度とするなど）。あるいは、電力係数更新部１４０は、閾値Ｔｓを収集した消費電力の平均の１０％程度とするなど、閾値Ｔｓを動的に定めてもよい。
【００６９】
（Ｓ１８）電力係数更新部１４０は、交換後の計算ノードから取得した消費電力（ｗｘ）がステップＳ１７で特定した消費電力の最大値と最小値との間の値であるか否か（ｍｉｎ（ｗ）＜ｗｘ＜ｍａｘ（ｗ））を判定する。ここでは、ｗｘ＝ｗ３であるので、電力係数更新部１４０は、ｍｉｎ（ｗ）＜ｗ３＜ｍａｘ（ｗ）であるか否かを判定する。ｍｉｎ（ｗ）＜ｗ３＜ｍａｘ（ｗ）である場合、処理をステップＳ１９に進める。ｍｉｎ（ｗ）＜ｗ３＜ｍａｘ（ｗ）でない場合、処理をステップＳ２１に進める。なお、ｍｉｎ（ｗ）＜ｗ３＜ｍａｘ（ｗ）でない場合、計算ノード２００ｂは、他の計算ノードの電力消費に比べて逸脱した電力消費がみられたことになる。これは、計算ノード２００ｂの初期不良の可能性を示唆する。
【００７０】
（Ｓ１９）電力係数更新部１４０は、ジョブ実行回数カウンタｊｃに１を加算する。
（Ｓ２０）電力係数更新部１４０は、計算ノード２００ｂの電力係数を更新する。具体的には、電力係数テーブル１１１に登録されている計算ノード２００ｂの電力係数をｒ３１（前回の電力係数）とする。電力係数更新部１４０は、式（１）に基づいて、今回のジョブ実行に応じた電力係数ｒ３２＝（ｗ３／ｃ３）を算出する。そして、電力係数更新部１４０は、今回の電力係数の更新結果ｒ３をｒ３＝（ｒ３１＋ｒ３２）／２とする。電力係数更新部１４０は、算出した当該電力係数ｒ３を電力係数テーブル１１１に登録して、計算ノード２００ｂの電力係数を更新する。そして、処理をステップＳ２２に進める。
【００７１】
（Ｓ２１）電力係数更新部１４０は、オーバーカウンタｏｃに１を加算する。電力係数更新部１４０は、ジョブ実行回数カウンタｊｃに１を加算する。
（Ｓ２２）電力係数更新部１４０は、ジョブ実行回数カウンタｊｃがジョブ実行回数カウンタ閾値ｔｊよりも大きい（ｊｃ＞ｔｊ）か否かを判定する。ｊｃ＞ｔｊの場合、処理をステップＳ２３に進める。ｊｃ≦ｔｊの場合、処理をステップＳ１３に進める。ここで、ジョブ実行回数カウンタ閾値ｔｊは、ユーザにより記憶部１１０に予め登録されている。
【００７２】
（Ｓ２３）電力係数更新部１４０は、オーバーカウンタｏｃがオーバーカウンタ閾値ｔｏよりも大きい（ｏｃ＞ｔｏ）か否かを判定する。ｏｃ＞ｔｏの場合、処理をステップＳ２４に進める。ｏｃ≦ｔｏの場合、処理を終了する。ここで、オーバーカウンタ閾値ｔｏは、ユーザにより記憶部１１０に予め登録されている。
【００７３】
（Ｓ２４）電力係数更新部１４０は、交換後の計算ノード２００ｂについて他の計算ノードに比べて逸脱した消費電力が計測されており、計算ノード２００ｂに初期不良が存在する可能性がある旨の警告をログインノード３００に通知する。例えば、ログインノード３００は、ユーザに対して当該警告を提示し、計算ノード２００ｂの保守を促す。そして、処理を終了する。
【００７４】
このように、管理ノード１００は、ジョブ実行回数カウンタ（ｊｃ）が閾値（ｔｊ）に達するまで、ステップＳ１３〜Ｓ２２の処理を繰り返し実行し、計算ノード２００ｂの電力係数を更新していく。これにより、計算ノード２００ｂに対する電力係数の決定精度を高めることができる。
【００７５】
また、前述のように、管理ノード１００は、オーバーカウンタｏｃを用いて、交換後の計算ノード２００ｂの不良の可能性を検出し、警告できる。これにより、ユーザによる早期の保守を促すことができ、計算システムの安定稼働を支援できる。
【００７６】
このように、第２の実施の形態によれば、管理ノード１００は、計算システムの通常運用で実行されるジョブの中から、電力係数の決定に適したジョブを選択し、当該ジョブの実行に伴う消費電力を基に、計算ノード毎の電力係数を更新する。このため、第２の実施の形態の計算システムでは、電力係数の決定のためだけに、テストプログラムを実行する時間を割かなくて済み、計算システムの通常運用を中断せずに済む。また、テストプログラムを実行しなくてもよいので、電力係数を求めるだけの余計な電力を計算システムで消費せずに済む。また、電力係数更新部１４０により、ジョブ管理部１２０とは別個に、電力係数を更新することで、通常運用に用いられているジョブ管理部１２０への影響を抑えて、電力係数を決定できるという利点もある。
【００７７】
このように、第２の実施の形態の計算システムによれば、テスト用の特別なプログラムを実行せずに、通常運用で計算ノードの電力係数を効率的に求めることができる。また、管理ノード１００は、こうして求めた電力係数を用いて、消費電力に基づくジョブ実行のスケジューリングを適切に行えるようになる。例えば、管理ノード１００は、あるジョブを実行する前に、電力係数テーブル１１１に登録されている各計算ノードの電力係数を用いて、式（１）により計算ノード毎の予測消費電力を求める。そして、管理ノード１００は、計算ノード毎の予測消費電力の和から計算ノード全体の消費電力を予測でき、予測した消費電力に応じたジョブ実行のスケジューリングを適切に行えるようになる。
【００７８】
［第３の実施の形態］
次に、第３の実施の形態を説明する。前述の第２の実施の形態との相違する事項を主に説明し、共通する事項の説明を省略する。
【００７９】
ここで、計算システムには、気象予測などの定期的なジョブの実行が主な用途であるものもある。このような計算システムでは、単発的に実行される非定期のジョブが実行されることもある。そこで、第３の実施の形態では、このような計算システムにおいて、定期的に実行されるジョブを特定し、当該ジョブの実行に伴う消費電力に基づいて計算ノード毎の電力係数を求める機能を提供する。定常実行されるジョブがある場合、当該ジョブを用いて消費電力を求めた方が、実運用に適した電力係数を求められるからである。
【００８０】
なお、第３の実施の形態では、第２の実施の形態と同じ計算システムを想定する。そこで、第３の実施の形態でも、第２の実施の形態と同じ符号／名称を用いて各要素を指し示す。
【００８１】
以下、第３の実施の形態の電力係数の決定の手順を説明する。以下に示す手順では、ある計算ノードが故障し、故障した計算ノードが新しい交換ノードに交換された場合を想定する。交換後の計算ノードを計算ノード２００ｃとする。なお、管理ノード１００は、計算ノードの交換後、該当の計算ノードに対する電力係数を電力係数テーブル１１１から削除する（本例では、計算ノード２００ｃに対する電力係数が設定なしとなる）。
【００８２】
図９は、第３の実施の形態の電力係数の決定例を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。
（Ｓ３１）ジョブ管理部１２０は、ログインノード３００からジョブ情報を取得する。ジョブ管理部１２０は、ジョブ情報を記憶部１１０に格納する。
【００８３】
（Ｓ３２）ジョブ管理部１２０は、ジョブのスケジューリングを行い、スケジューリング結果に応じたタイミングで、計算ノード２００，２００ａ，２００ｂ，２００ｃによりジョブを並列実行する。このとき、ジョブ管理部１２０は、ジョブのスケジューリングを行うために、計算ノード２００ｃの電力係数を、計算ノード２００，２００ａ，２００ｂの電力係数の平均値として、当該ジョブの実行に伴う計算ノード２００ｃの消費電力を予測する。
【００８４】
（Ｓ３３）消費電力取得部１３０は、実行されたジョブが定期的に実行される定期ジョブであるか否かを判定する。例えば、消費電力取得部１３０は、該当のジョブのジョブ名や定期的にジョブの実行を指示するユーザのユーザ名などに基づいて、該当のジョブが定期ジョブであるか否かを判定する。定期ジョブの場合、処理をステップＳ３４に進める。定期ジョブでない場合、処理を終了する。
【００８５】
（Ｓ３４）消費電力取得部１３０は、計算ノード２００，２００ａ，２００ｂ，２００ｃから定期ジョブの実行に伴う消費電力（ｗ）を取得する。取得方法の具体例は、ステップＳ１６と同様である。また、消費電力取得部１３０は、当該ジョブに応じて実行した総命令数も、計算ノード２００，２００ａ，２００ｂ，２００ｃから取得する。
【００８６】
（Ｓ３５）電力係数更新部１４０は、電力係数テーブル１１１を参照し、計算ノード２００，２００ａ，２００ｂ，２００ｃそれぞれの電力係数が設定済みであるか否かを判定する。未設定の場合、処理をステップＳ３６に進める。設定済みの場合、処理を終了する。
【００８７】
（Ｓ３６）電力係数更新部１４０は、計算ノード２００ｃの電力係数を設定する。具体的には、電力係数更新部１４０は、式（１）に基づいて、（ステップＳ３４で取得した計算ノード２００ｃの消費電力）÷（ステップＳ３４で取得した計算ノード２００ｃの総命令数）を計算することで、計算ノード２００ｃの電力係数ｒ４を算出する。電力係数更新部１４０は、算出した電力係数を電力係数テーブル１１１に登録する。そして、処理を終了する。
【００８８】
このように、例えば、計算システムの通常運用において、定期ジョブが存在する場合には、定期ジョブの実行に伴う消費電力を各計算ノードから取得して、電力係数の決定に用いてもよい。
【００８９】
図１０は、第３の実施の形態の総命令数および予測消費電力の例を示す図である。以下の説明では、２×２の４ノード（すなわち、計算ノード２００，２００ａ，２００ｂ，２００ｃ）で動作するジョブを想定する。図１０では、行番号および列番号の組に対応する１つの矩形が１つの計算ノードに相当している（以降の図も同様）。例えば、（行，列）＝（０，０）は、計算ノード２００である。（行，列）＝（０，１）は、計算ノード２００ａである。（行，列）＝（１，０）は、計算ノード２００ｂである。（行，列）＝（１，１）は、計算ノード２００ｃである。前述の例のように、計算ノード２００ｃが交換後のノードである場合を想定する（計算ノード２００ｃに相当する矩形を網掛けで示している）。
【００９０】
図１０（Ａ）は、ある定期ジョブに対して各計算ノードが実行した総命令数の例を示す。具体的には、計算ノード２００の総命令数は“１０００”である。計算ノード２００ａの総命令数は“９００”である。計算ノード２００ｂの総命令数は“１０５０”である。計算ノード２００ｃの総命令数は“９００”である。
【００９１】
図１０（Ｂ）は、ある定期ジョブの実行に際して予測される消費電力の例を示す。具体的には、計算ノード２００の予測消費電力は“１００”Ｗである。計算ノード２００ａの予測消費電力は“９０”Ｗである。計算ノード２００ｂの予測消費電力は“１１０”Ｗである。計算ノード２００ｃの予測消費電力は“９０Ｗ”である。
【００９２】
図１１は、第３の実施の形態の実測消費電力および電力係数の例を示す。図１１（Ａ）は、ある定期ジョブの実行に対して実測された消費電力（実測消費電力）の例を示す。具体的には、計算ノード２００の実測消費電力は“１０１”Ｗである。計算ノード２００ａの実測消費電力は“９０”Ｗである。計算ノード２００ｂの実測消費電力は“１０９”Ｗである。計算ノード２００ｃの実測消費電力は“９５”Ｗである。
【００９３】
図１１（Ｂ）は、ある定期ジョブの実行後における計算ノード２００，２００ａ，２００ｂ，２００ｃの電力係数の例を示す。具体的には、計算ノード２００の電力係数は“０．１”である。計算ノード２００ａの電力係数は“０．１”である。計算ノード２００ｂの電力係数は“０．１０５”である。計算ノード２００ｃの電力係数は“０．１０５”である。このうち、計算ノード２００ｃの電力係数ｒ４は、図１０（Ａ）における計算ノード２００ｃの総命令数“９００”および図１１（Ａ）における計算ノード２００ｃの実測消費電力“９５”Ｗを基に計算された値である。すなわち、ｒ４＝９５÷９００＝０．１０５（小数第４位以下切り捨て）である。
【００９４】
このように、第３の実施の形態でも、第２の実施の形態と同様に、通常運用で実行されるジョブを選択し、当該ジョブの実行に伴う消費電力を基に、計算ノード毎の電力係数を更新する。このため、第３の実施の形態の計算システムでも、電力係数の決定のためだけに、テストプログラムを実行する時間を割かなくて済み、計算システムの通常運用を中断せずに済む。また、テストプログラムを実行しなくてもよいので、電力係数を求めるだけの余計な電力を計算システムで消費せずに済む。
【００９５】
こうして、第３の実施の形態の計算システムによっても、第２の実施の形態と同様に、通常運用で計算ノードの電力係数を効率的に求めることができる。
なお、第１の実施の形態の情報処理は、演算部１１ｂに、プログラムを実行させることで実現できる。第２，３の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体に記録できる。
【００９６】
例えば、プログラムを記録した記録媒体４３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータ（例えば、データ格納サーバ４００）に格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体４３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭやＮＶＲＡＭなどの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【００９７】
１０  並列処理装置
１１  管理ノード
１１ａ  記憶部
１１ｂ  演算部
１１ｃ  電力係数情報
１２，１３，１４  計算ノード
１５  ネットワーク
【図１】
0006683920.tif 000002
【図２】
0006683920.tif 000003
【図３】
0006683920.tif 000004
【図４】
0006683920.tif 000005
【図５】
0006683920.tif 000006
【図６】
0006683920.tif 000007
【図７】
0006683920.tif 000008
【図８】
0006683920.tif 000009
【図９】
0006683920.tif 000010
【図１０】
0006683920.tif 000011
【図１１】
0006683920.tif 000012