(57)【要約】【課題】消費される電力量を減らすこと。【解決手段】記憶部１１ａは、計算ノード１２ａ，１２ｂ，１２ｃ，１２ｄそれぞれの消費電力の情報と計算ノード１２ａ，１２ｂ，１２ｃ，１２ｄにより並列に実行される複数のジョブの情報とを記憶する。処理部１１ｂは、計算ノード１２ａ，１２ｂ，１２ｃ，１２ｄの総消費電力が閾値に達すると、記憶部１１ａに記憶された情報に基づいて複数のジョブのうち消費電力が最大である第１ジョブを抽出する。処理部１１ｂは、第１ジョブの終了予定時刻までの時間が所定時間以上の場合、第１ジョブを実行する計算ノード１２ａ，１２ｂの消費電力を削減する処理を行う。処理部１１ｂは、第１ジョブの終了予定時刻までの時間が所定時間未満の場合、計算ノード１２ａ，１２ｂ以外の計算ノード１２ｃ，１２ｄの消費電力を削減する処理を行う。【選択図】図１
2019003281.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードそれぞれの消費電力の情報と複数のノードにより並列に実行される複数のジョブの情報とを記憶する記憶部と、
前記複数のノードの総消費電力が閾値に達すると、前記記憶部に記憶された情報に基づいて前記複数のジョブのうち消費電力が最大である第１ジョブを抽出し、前記第１ジョブの終了予定時刻までの時間が所定時間以上の場合、前記第１ジョブを実行する第１ノードの消費電力を削減する処理を行い、前記第１ジョブの終了予定時刻までの時間が所定時間未満の場合、前記第１ノード以外の第２ノードの消費電力を削減する処理を行う処理部と、
を有する並列処理システムのシステム管理装置。
【請求項２】
前記処理部は、ジョブが割り当てられた各計算ノードの消費電力の合計を前記ジョブの消費電力とする、請求項１記載の並列処理システムのシステム管理装置。
【請求項３】
前記閾値は、前記並列処理システムで許容される消費電力の上限値よりも小さい値である、請求項１または２記載の並列処理システムのシステム管理装置。
【請求項４】
前記処理部は、前記総消費電力が前記閾値に達すると、前記複数のノードによる前記複数のジョブの実行を管理するジョブ管理ノードから、ジョブ毎の計算ノードの割り当て先、および、ジョブ毎の終了予定時刻までの時間を含む前記複数のジョブの情報を取得する、請求項１乃至３の何れか１項に記載の並列処理システムのシステム管理装置。
【請求項５】
前記処理部は、前記第１ノードまたは前記第２ノードの停止、あるいは、前記第１ノードまたは前記第２ノードのプロセッサの動作周波数の低下を指示することで、前記第１ノードまたは前記第２ノードの消費電力を削減する、請求項１乃至４の何れか１項に記載の並列処理システムのシステム管理装置。
【請求項６】
複数のジョブを並列に実行する複数のノードと、
前記複数のノードの総消費電力が閾値に達すると、前記複数のノードそれぞれの消費電力の情報と前記複数のジョブの情報とに基づいて前記複数のジョブのうち消費電力が最大である第１ジョブを抽出し、前記第１ジョブの終了予定時刻までの時間が所定時間以上の場合、前記第１ジョブを実行する第１ノードの消費電力を削減する処理を行い、前記第１ジョブの終了予定時刻までの時間が所定時間未満の場合、前記第１ノード以外の第２ノードの消費電力を削減する処理を行うシステム管理装置と、
を有する並列処理システム。
【請求項７】
コンピュータが、
複数のジョブを並列に実行する複数のノードの総消費電力が閾値に達すると、前記複数のノードそれぞれの消費電力の情報と前記複数のジョブの情報とに基づいて前記複数のジョブのうち消費電力が最大である第１ジョブを抽出し、
前記第１ジョブの終了予定時刻までの時間が所定時間以上の場合、前記第１ジョブを実行する第１ノードの消費電力を削減する処理を行い、前記第１ジョブの終了予定時刻までの時間が所定時間未満の場合、前記第１ノード以外の第２ノードの消費電力を削減する処理を行う、
電力制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は並列処理システムのシステム管理装置、並列処理システムおよび電力制御方法に関する。
【背景技術】
【０００２】
現在、大規模な計算を行う並列処理システムが利用されている。例えば、並列処理装置では、計算を実行するノードを相互に複数接続して、複数のノードにより並列に計算を行う。各ノードの動作には電力の消費を伴う。そこで、ノードの電力消費を制御する方法が考えられている。
【０００３】
例えば、新たにジョブを追加する際、一定時間ごとのノードの総消費電力量が、閾値を超過しないように、ジョブのスケジュールを作成するジョブ管理装置の提案がある。
また、サーバにジョブを投入する時、サーバの過去の消費電力データと現消費電力から予測した予測消費電力を基に、消費電力が上限値を超えるか否かを判定し、超える場合にジョブの投入タイミングを遅らせる電力制御システムの提案もある。
【０００４】
更に、処理周期毎にプロセッサの処理負荷を予測し、予測した処理負荷に基づいて、処理周期毎に、プロセッサの動作周波数と、プロセッサを冷却する冷却ファンの回転数と、プロセッサが使用するメモリ領域とを制御するリアルタイム計算機の提案もある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−７１８４１号公報
【特許文献２】特開２０１３−１０１５７６号公報
【特許文献３】特開２００８−１９８０７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
並列処理システムの消費電力が所定の上限電力を超えないように運用することがある。例えば、上限電力を超えそうな場合に、全ノードの電力断、または、全ノードのハードウェアの省電力モードへの移行を行うことが考えられる。あるいは、最も消費電力の多いジョブを実行しているノードの停止やクロックダウンなどにより、消費電力を下げることも考えられる。しかしながら、ジョブを実行しているノードの停止やクロックダウンなどを行うと、該当のノードが当該ジョブを完遂しない可能性が高まる。ジョブを完遂しない場合、ユーザは、当該ジョブの実行を再度指示し、並列処理システムにより当該ジョブを再実行させることになる。したがって、中長期的に考えると、消費電力の大きなジョブの実行完遂率が低下し、未完遂のジョブの再実行により、消費される電力量が過剰になる可能性がある。
【０００７】
１つの側面では、本発明は、消費される電力量を減らすことを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、並列処理システムのシステム管理装置が提供される。システム管理装置は、記憶部と処理部とを有する。記憶部は、複数のノードそれぞれの消費電力の情報と複数のノードにより並列に実行される複数のジョブの情報とを記憶する。処理部は、複数のノードの総消費電力が閾値に達すると、記憶部に記憶された情報に基づいて複数のジョブのうち消費電力が最大である第１ジョブを抽出し、第１ジョブの終了予定時刻までの時間が所定時間以上の場合、第１ジョブを実行する第１ノードの消費電力を削減する処理を行い、第１ジョブの終了予定時刻までの時間が所定時間未満の場合、第１ノード以外の第２ノードの消費電力を削減する処理を行う。
【発明の効果】
【０００９】
１つの側面では、消費される電力量を減らすことができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態の並列処理システムの例を示す図である。
【図２】第２の実施の形態の並列処理システムの例を示す図である。
【図３】システム管理ノードのハードウェア例を示す図である。
【図４】計算ノードのハードウェア例を示す図である。
【図５】並列処理システムの機能例を示す図である。
【図６】ノード消費電力情報の例を示す図である。
【図７】ジョブ統計情報の例を示す図である。
【図８】ジョブ単位消費電力情報の例を示す図である。
【図９】ジョブ情報の例を示す図である。
【図１０】システム管理ノードの処理例を示すフローチャートである。
【図１１】ジョブ管理ノードの処理例を示すフローチャートである。
【図１２】計算ノードの処理例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の並列処理システムの例を示す図である。並列処理システム１０は、システム管理装置１１および計算ノード群１２を有する。システム管理装置１１は、並列処理システム１０の所定のネットワークを介して、計算ノード群１２に属する複数の計算ノードと接続されており、各計算ノードを制御する。並列処理システム１０は、計算ノード群１２に属する複数の計算ノードを用いて、複数のジョブを並列に実行する。１つのジョブは、１以上の計算ノードに割り当てられ、当該１以上の計算ノードにより実行される。ジョブは、割当て先の１以上の計算ノードを占有する。
【００１２】
例えば、複数の計算ノードは、計算ノード１２ａ，１２ｂ，１２ｃ，１２ｄを含む。ここで、計算ノード１２ａの識別情報（ノードＩＤ（IDentifier））は、“Ｎ１”である。計算ノード１２ｂのノードＩＤは、“Ｎ２”である。計算ノード１２ｃのノードＩＤは、“Ｎ３”である。計算ノード１２ｄのノードＩＤは、“Ｎ４”である。また、ジョブは、ジョブの識別情報（ジョブＩＤ）により識別される。一例として、ジョブＩＤ“Ｊ１”、“Ｊ２”で識別される２つのジョブを考える。例えば、ジョブＩＤ“Ｊ１”のジョブは、計算ノード１２ａ，１２ｂに割り当てられている。また、ジョブＩＤ“Ｊ２”のジョブは、計算ノード１２ｃ，１２ｄに割り当てられている。例えば、計算ノードに対するジョブの割り当ては、ジョブ管理ノード（図１では図示を省略している）によって行われる。
【００１３】
システム管理装置１１は、記憶部１１ａおよび処理部１１ｂを有する。
記憶部１１ａは、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部１１ｂは、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。処理部１１ｂはプログラムを実行するプロセッサでもよい。「プロセッサ」は、複数のプロセッサの集合（マルチプロセッサ）も含み得る。
【００１４】
記憶部１１ａは、複数のノードそれぞれの消費電力の情報と複数のノードにより並列に実行される複数のジョブの情報とを記憶する。例えば、記憶部１１ａは、テーブルＤ１，Ｄ２を記憶する。
【００１５】
テーブルＤ１は、各ノードの消費電力の情報である。テーブルＤ１には、ノードＩＤおよび消費電力が登録される。消費電力の単位は、ワット（Ｗ）である。例えば、テーブルＤ１には、ノードＩＤ“Ｎ１”の計算ノード１２ａの消費電力が“Ｐ１”という情報が登録されている。また、テーブルＤ１には、ノードＩＤ“Ｎ２”の計算ノード１２ｂの消費電力が“Ｐ２”という情報が登録されている。また、テーブルＤ１には、ノードＩＤ“Ｎ３”の計算ノード１２ｃの消費電力が“Ｐ３”という情報が登録されている。また、テーブルＤ１には、ノードＩＤ“Ｎ４”の計算ノード１２ｄの消費電力が“Ｐ４”という情報が登録されている。
【００１６】
テーブルＤ２は、ジョブの情報である。テーブルＤ２には、ジョブＩＤ、ノードＩＤおよび残り時間が登録される。残り時間は、現時刻から該当のジョブの終了予定時刻までの時間（残り実行時間）である。
【００１７】
例えば、テーブルＤ２には、ジョブＩＤ“Ｊ１”、ノードＩＤ“Ｎ１”、“Ｎ２”、残り時間“Ｔ１”というレコードが登録されている。これは、ジョブＩＤ“Ｊ１”のジョブが計算ノード１２ａ，１２ｂにより実行されており、当該ジョブの残り時間が“Ｔ１”であることを示す。また、テーブルＤ２には、ジョブＩＤ“Ｊ２”、ノードＩＤ“Ｎ３”、“Ｎ４”、残り時間“Ｔ２”というレコードが登録されている。これは、ジョブＩＤ“Ｊ２”のジョブが計算ノード１２ｃ，１２ｄにより実行されており、当該ジョブの残り時間が“Ｔ２”であることを示す。例えば、処理部１１ｂは、前述のジョブ管理ノードからテーブルＤ２の情報を取得してもよい。
【００１８】
処理部１１ｂは、複数のノードの総消費電力が閾値に達すると、記憶部１１ａに記憶された情報に基づいて、複数のジョブのうち消費電力が最大である第１ジョブを抽出する。前述のように１つのジョブは、割り当て先の１以上の計算ノードを占有するので、該当の１以上の計算ノードの消費電力の和を、当該ジョブの実行に要する消費電力と考えることができる。テーブルＤ１，Ｄ２によれば、ジョブＩＤ“Ｊ１”のジョブの消費電力は、Ｐ１＋Ｐ２である。また、ジョブＩＤ“Ｊ２”のジョブの消費電力は、Ｐ３＋Ｐ４である。
【００１９】
また、総消費電力の閾値は、許容される消費電力の上限値でもよいし、当該上限値より小さい値でもよい。許容される消費電力の上限値は、例えば、システムの管理者によって予め設定される。許容される消費電力の上限値は、電力会社などとの契約に応じて予め定められる契約電力でもよい。
【００２０】
例えば、処理部１１ｂは、計算ノード１２ａ，１２ｂ，１２ｃ，１２ｄの総消費電力を監視し、総消費電力が閾値に達すると、ジョブＩＤ“Ｊ１”、“Ｊ２”のジョブのうち、消費電力が最大である第１ジョブを抽出する。ここで、ジョブＩＤ“Ｊ１”、“Ｊ２”のジョブのうち、消費電力が最大のジョブ（第１ジョブ）は、ジョブＩＤ“Ｊ１”のジョブであるとする。すなわち、Ｐ１＋Ｐ２＞Ｐ３＋Ｐ４である。
【００２１】
処理部１１ｂは、記憶部１１ａに記憶された情報に基づいて、第１ジョブの終了予定時刻までの時間が所定時間以上であるか否かを判定する。例えば、所定時間をＴ０とする。所定時間Ｔ０は、運用に応じて予め定められる。第１ジョブの終了予定時刻までの時間は、テーブルＤ２における残り時間Ｔ１に相当する。
【００２２】
処理部１１ｂは、第１ジョブの終了予定時刻までの時間が所定時間（Ｔ０）以上である場合、第１ジョブを実行する第１ノードの消費電力を削減する処理を行う。一方、処理部１１ｂは、第１ジョブの終了予定時刻までの時間が所定時間（Ｔ０）未満である場合、第１ノード以外の第２ノードの消費電力を削減する処理を行う。消費電力を削減する処理としては、省電力モードで動作させる、または、該当ノードを停止させるなどが考えられる。例えば、省電力モードとしては、該当ノードのプロセッサの動作周波数を低減（クロックダウン）して動作するモードや、該当ノードの複数のプロセッサのうちの一部を停止させて動作するモードなどが考えられる。
【００２３】
例えば、第１ジョブとして抽出されたジョブＩＤ“Ｊ１”のジョブの終了予定時刻までの時間（残り時間）Ｔ１が、Ｔ１≧Ｔ０を満たす場合、処理部１１ｂは、計算ノード１２ａ，１２ｂの消費電力を削減する処理を行う（図１（Ａ）の場合）。このとき、処理部１１ｂは、計算ノード１２ｃ，１２ｄについては現状の動作を維持する。
【００２４】
一方、残り時間Ｔ１がＴ１＜Ｔ０を満たす場合、処理部１１ｂは、計算ノード１２ｃ，１２ｄの消費電力を削減する処理を行う（図１（Ｂ）の場合）。このとき、処理部１１ｂは、計算ノード１２ａ，１２ｂについては現状の動作を維持する。
【００２５】
並列処理システム１０によれば、消費される電力量（例えば、単位はワット時（Ｗｈ））を減らすことができる。
ここで、並列処理システム１０の消費電力を抑えるために、消費電力が最大のジョブを実行している計算ノードの停止やクロックダウンなどを行うことが考えられる。しかし、当該ジョブを実行している計算ノードの停止やクロックダウンなどを行うと、該当の計算ノードが当該ジョブを完遂しない可能性が高まる。当該ジョブを完遂しない場合、ユーザは、当該ジョブの実行を再度指示し、並列処理システム１０により当該ジョブを再実行させることになる。再実行では、当該ジョブを最初から実行し直すことになる。したがって、中長期的に考えると、消費電力の大きなジョブの実行完遂率が低下し、未完遂のジョブの再実行により、並列処理システム１０において消費される電力量が過剰になる可能性がある。
【００２６】
そこで、システム管理装置１１は、消費電力が最大である第１ジョブの終了予定時刻までの時間と所定時間との比較に応じて、消費電力を削減する計算ノードを選択する。
システム管理装置１１は、第１ジョブの終了予定時刻までの時間が所定時間Ｔ０以上である場合に、第１ジョブを実行する第１ノードの消費電力を削減する処理を行う。この場合、第１ジョブの終了予定時刻までの時間が所定時間Ｔ０以上であれば、第１ジョブの進捗の度合いも低いと考えられ、仮に第１ジョブが完遂されない場合でも、第１ジョブの実行のための電力量の浪費を抑えられる。また、消費電力が最大である第１ノードの消費電力を削減することで、システム全体の消費電力を効率的に抑えて、第１ノード以外の第２ノードによる第２ジョブの実行を継続することができる。
【００２７】
一方、システム管理装置１１は、第１ジョブの終了予定時刻までの時間が所定時間Ｔ０未満である場合に、第１ジョブを実行する第１ノード以外の第２ノードの消費電力を削減する処理を行う。この場合、第１ジョブの終了予定時刻までの時間が所定時間Ｔ０未満であれば、第１ジョブの進捗の度合いも高いと考えられ、仮に第１ジョブが完遂されないとすると、それまでの第１ジョブの実行のための電力量の浪費が大きい。第１ジョブの終了が間近であるにも関わらず、第１ノードの消費電力を削減して第１ジョブの完遂率を低下させてしまうと、それまでの第１ジョブの処理、および、第１ジョブの再実行により消費される電力量が大きくなるリスクが高まる。このため、処理部１１ｂは、第１ジョブの残り時間が比較的短い場合は、第２ノードの消費電力を削減し、第１ジョブの実行を優先することで、第１ジョブが適切に完遂されるように制御する。
【００２８】
こうして、消費電力が最大であるジョブの実行完遂率を向上させることで、当該ジョブの再実行を抑え、並列処理システム１０において消費される電力量を減らすことができる。
【００２９】
以下では、より具体的なシステムを例示して、システム管理装置１１の機能を詳細に説明する。
［第２の実施の形態］
図２は、第２の実施の形態の並列処理システムの例を示す図である。並列処理システム５０は、システム管理ノード１００、ジョブ管理ノード２００および計算ノード３００，４００，５００，６００，・・・を有する。システム管理ノード１００、ジョブ管理ノード２００および計算ノード３００，４００，５００，６００，・・・は、並列処理システム５０における管理用のネットワーク２１に接続されている。また、計算ノード３００，４００，５００，６００，・・・は、格子状のネットワークにより相互に接続されている。例えば、ネットワーク２１は、メッシュ結合またはトーラス結合と呼ばれる接続形態のネットワークでもよい。
【００３０】
システム管理ノード１００は、並列処理システム５０における計算ノード３００，４００，５００，６００，・・・の消費電力を監視する。システム管理ノード１００は、消費電力の監視に応じて、計算ノード３００，４００，５００，６００，・・・の動作モードを制御する。
【００３１】
ジョブ管理ノード２００は、ユーザによるジョブの入力を受け付け、計算ノード３００，４００，５００，６００，・・・に対するジョブの割り当てを行う。また、ジョブ管理ノード２００は、割り当て先の計算ノードに対するジョブの実行を指示する。
【００３２】
ジョブ管理ノード２００は、システム管理ノード１００の指示に応じて、計算ノード３００，４００，５００，６００，・・・から消費電力の情報を収集し、システム管理ノード１００に提供することもある。更に、ジョブ管理ノード２００は、システム管理ノード１００の指示に応じて、計算ノード３００，４００，５００，６００，・・・に動作モードの変更を指示することもある。
【００３３】
計算ノード３００，４００，５００，６００，・・・それぞれは、プロセッサおよびメモリを有し、ジョブ管理ノード２００により割り当てられたジョブを並列に実行する。ここで、１つのジョブは、１以上の計算ノードに割り当てられる。１つのジョブは、割り当て先の１以上の計算ノードを占有する。
【００３４】
図３は、システム管理ノードのハードウェア例を示す図である。システム管理ノード１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、通信インタフェース１０４、画像信号処理部１０５、入力信号処理部１０６および媒体リーダ１０７を有する。各ハードウェアはシステム管理ノード１００のバスに接続されている。ジョブ管理ノード２００もシステム管理ノード１００と同様のハードウェアを用いて実現される。
【００３５】
プロセッサ１０１は、システム管理ノード１００の情報処理を制御するハードウェアである。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００３６】
ＲＡＭ１０２は、システム管理ノード１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００３７】
ＨＤＤ１０３は、システム管理ノード１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。システム管理ノード１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００３８】
通信インタフェース１０４は、ネットワーク２１を介して他の装置と通信を行う。通信インタフェース１０４は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【００３９】
画像信号処理部１０５は、プロセッサ１０１からの命令に従って、システム管理ノード１００に接続されたディスプレイ２２に画像を出力する。ディスプレイ２２として、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００４０】
入力信号処理部１０６は、システム管理ノード１００に接続された入力デバイス２３から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス２３として、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００４１】
媒体リーダ１０７は、記録媒体２４に記録されたプログラムやデータを読み取る装置である。記録媒体２４として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体２４として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ１０７は、例えば、プロセッサ１０１からの命令に従って、記録媒体２４から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４２】
図４は、計算ノードのハードウェア例を示す図である。計算ノード３００は、プロセッサ３０１、ＲＡＭ３０２および通信インタフェース３０３，３０４を有する。各ハードウェアは計算ノード３００のバスに接続されている。計算ノード４００，５００，６００，・・・も計算ノード３００と同様のハードウェアを用いて実現される。
【００４３】
プロセッサ３０１は、計算ノード３００の情報処理を制御するハードウェアである。プロセッサ３０１は、マルチプロセッサであってもよい。プロセッサ３０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ３０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。プロセッサ３０１は、周波数レジスタ３０１ａを有する。周波数レジスタ３０１ａは、プロセッサ３０１の動作周波数が設定されるレジスタである。
【００４４】
ＲＡＭ３０２は、計算ノード３００の主記憶装置である。ＲＡＭ３０２は、プロセッサ３０１に実行させるプログラムの少なくとも一部を一時的に記憶する。ＲＡＭ３０２は、プロセッサ３０１による処理に用いられる各種データを記憶する。
【００４５】
通信インタフェース３０３は、計算ノード４００，５００，・・・それぞれと接続され、他の計算ノードとの通信に用いられるインタフェースである。
通信インタフェース３０４は、ネットワーク２１に接続され、ジョブ管理ノード２００などの他のコンピュータとの通信に用いられるインタフェースである。
【００４６】
図５は、並列処理システムの機能例を示す図である。システム管理ノード１００は、記憶部１１０および電力管理部１２０を有する。
記憶部１１０は、ＲＡＭ１０２またはＨＤＤ１０３の記憶領域を用いて実現される。電力管理部１２０は、プロセッサ１０１により実現される。プロセッサ１０１は、ＲＡＭ１０２に記憶されたプログラムを実行することで、電力管理部１２０の機能を発揮する。あるいは、電力管理部１２０は、ＦＰＧＡやＡＳＩＣなどのハードワイヤードロジックにより実現されてもよい。
【００４７】
記憶部１１０は、電力管理部１２０によりジョブ管理ノード２００から取得されたジョブの実行に関する情報（ジョブ情報）を記憶する。ジョブ情報は、ジョブの割り当て先の計算ノード、ジョブの消費電力、および、ジョブの終了予定時刻までの残り実行時間（残り時間）の情報を含む。ジョブの消費電力は、当該ジョブの割り当て先の各計算ノードの消費電力の和である。
【００４８】
また、記憶部１１０は、並列処理システム５０により許容されるシステム消費電力の上限値を記憶する。当該上限値は、例えば、電力会社との契約により定められた契約電力である。
【００４９】
電力管理部１２０は、計算ノード３００，４００，５００，・・・に接続されたＢＭＣ（Baseboard Management Controller）６０，７０と通信し、ＢＭＣ６０，７０により計測された消費電力を取得する。
【００５０】
ここで、ＢＭＣ６０，７０は、所定の周期で、所定数（例えば、２台、８台または１６台など）の計算ノードにおける消費電力を計測する。ＢＭＣ６０，７０は、計算ノード３００，４００，５００，・・・と所定のインタフェースにより接続され、例えば、ネットワーク２１を介して、システム管理ノード１００と通信する。あるいは、ＢＭＣ６０，７０は、システム管理ノード１００とシリアルインタフェースなどの所定のインタフェースにより接続されて、システム管理ノード１００と通信してもよい。
【００５１】
電力管理部１２０は、ＢＭＣ６０，７０から取得した消費電力を集計することで、システム消費電力を計算する。電力管理部１２０は、システム消費電力を監視し、システム消費電力が閾値を超えると一部の計算ノードの動作を制御して、省電力化を図る。閾値は、システム消費電力の上限値に応じて予め定められる。閾値は、例えば、システム消費電力の上限値よりも小さい値である。
【００５２】
具体的には、電力管理部１２０は、ジョブ毎の消費電力と残り実行時間とをジョブ管理ノード２００に問い合わせる。電力管理部１２０は、ジョブ毎の消費電力と残り実行時間とをジョブ管理ノード２００から取得し、取得した情報に基づいて、消費電力の削減対象の計算ノードを選択する。電力管理部１２０は、選択した計算ノードの消費電力を削減するようジョブ管理ノード２００に指示する。
【００５３】
ジョブ管理ノード２００は、記憶部２１０、ジョブ管理部２２０および資源管理マスター２３０を有する。
記憶部２１０は、ジョブ管理ノード２００が備えるＲＡＭまたはＨＤＤの記憶領域を用いて実現される。ジョブ管理部２２０および資源管理マスター２３０は、ジョブ管理ノード２００が備えるプロセッサにより実現される。ジョブ管理ノード２００のプロセッサは、ジョブ管理ノード２００のＲＡＭに記憶されたプログラムを実行することで、ジョブ管理部２２０および資源管理マスター２３０の機能を発揮する。あるいは、ジョブ管理部２２０および資源管理マスター２３０は、ＦＰＧＡやＡＳＩＣなどのハードワイヤードロジックにより実現されてもよい。
【００５４】
記憶部２１０は、資源管理マスター２３０により取得された情報や、ジョブ管理部２２０により作成された情報を記憶する。
ジョブ管理部２２０は、各計算ノードによるジョブの実行を管理する。ジョブ管理部２２０は、電力管理部１２０によるジョブ毎の消費電力と残り実行時間の問い合わせに応じて、ジョブ毎の消費電力と残り実行時間を電力管理部１２０に提供する。具体的には、ジョブ管理部２２０は、各計算ノードの消費電力の取得を資源管理マスター２３０に指示し、資源管理マスター２３０を介して、各計算ノードの消費電力を取得する。そして、ジョブ管理部２２０は、ジョブ毎の割り当て先の計算ノード、消費電力、および、現時刻から終了予定時刻までの時間（残り実行時間）を計算し、電力管理部１２０に送信する。
【００５５】
また、ジョブ管理部２２０は、電力管理部１２０から消費電力の削減の指示を受け付けると、指示された計算ノードの消費電力の削減を依頼するように、資源管理マスター２３０に指示する。
【００５６】
資源管理マスター２３０は、ジョブ管理部２２０から各計算ノードの消費電力の取得指示を受け付けると、各計算ノードの消費電力を取得し、ジョブ管理部２２０に提供する。また、資源管理マスター２３０は、ジョブ管理部２２０から消費電力の削減依頼の指示を受け付けると、指示された計算ノードに、消費電力の削減を依頼する。
【００５７】
計算ノード３００は、資源管理スレーブ３１０、消費電力収集部３２０および動作制御部３３０を有する。
資源管理スレーブ３１０、消費電力収集部３２０および動作制御部３３０は、プロセッサ３０１により実現される。プロセッサ３０１は、ＲＡＭ３０２に記憶されたプログラムを実行することで、資源管理スレーブ３１０、消費電力収集部３２０および動作制御部３３０の機能を発揮する。あるいは、資源管理スレーブ３１０、消費電力収集部３２０および動作制御部３３０は、ＦＰＧＡやＡＳＩＣなどのハードワイヤードロジックにより実現されてもよい。
【００５８】
資源管理スレーブ３１０は、資源管理マスター２３０からの消費電力の取得指示を受け付けると、消費電力収集部３２０を介して計算ノード３００の消費電力を取得し、資源管理マスター２３０に送信する。
【００５９】
消費電力収集部３２０は、計算ノード３００の消費電力を計測し、資源管理スレーブ３１０に提供する。
動作制御部３３０は、資源管理スレーブ３１０の指示により、計算ノード３００の動作モードを変更する。動作制御部３３０は、計算ノード３００の動作モードを変更することで、計算ノード３００の消費電力を削減する（パワーノブ設定）。例えば、動作制御部３３０は、計算ノード３００においてジョブ実行に用いられるプロセッサ３０１の動作周波数を通常よりも下げる省電力モードで計算ノード３００を動作させる。動作制御部３３０は、周波数レジスタ３０１ａの設定値を変更することで、プロセッサ３０１の動作周波数を下げる、上げるなどの変更を行える。なお、ジョブ実行に用いられるプロセッサは、プロセッサ３０１とは別個に、計算ノード３００に設けられてもよい。また、省電力モードの他の例としては、計算ノード３００がジョブ実行に複数のプロセッサを用いている場合に複数のプロセッサの一部を停止させることも考えられる。更に、動作制御部３３０は、計算ノード３００を停止させる（シャットダウンまたはスタンバイ状態に移行させるなど）こともある。
【００６０】
消費電力収集部３２０および動作制御部３３０の機能は、所定のＰｏｗｅｒＡＰＩ（Application Programming Interface）により実現される。
図６は、ノード消費電力情報の例を示す図である。ノード消費電力情報２１１は、記憶部２１０に格納される。ノード消費電力情報２１１は、ノード識別子および消費電力の項目を含む。
【００６１】
ノード識別子の項目には、計算ノードの識別情報（ノード識別子）が登録される。消費電力の項目には、該当のノード識別子で示される計算ノードの消費電力が登録される。消費電力の単位は、ワット（Ｗ）である。
【００６２】
例えば、ノード消費電力情報２１１には、ノード識別子が“０ｘＦＦ０１０００４”、消費電力が“１２０”というレコードが登録される。このレコードは、ノード識別子“０ｘＦＦ０１０００４”の計算ノードの消費電力が１２０Ｗであることを示す。
【００６３】
図７は、ジョブ統計情報の例を示す図である。ジョブ統計情報２１２は、記憶部２１０に格納される。ジョブ統計情報２１２は、ジョブ識別子、ジョブ終了予定時刻およびノード識別子の項目を含む。
【００６４】
ジョブ識別子の項目には、ジョブの識別情報（ジョブ識別子）が登録される。ジョブ終了予定時刻の項目には、該当のジョブの実行が完遂する予定の時刻（終了予定時刻）が登録される。ノード識別子の項目には、ノード識別子が登録される。なお、何れのジョブも割り当てられていない計算ノードのノード識別子に対し、ジョブ識別子およびジョブ終了予定時刻は、設定なし（設定なしをハイフン“−”で示す）となる。
【００６５】
例えば、ジョブ統計情報２１２には、ジョブ識別子が“７１０１９２７”、ジョブ終了予定時刻が“２０：３０”、ノード識別子が“０ｘＦＦ０１０００４”、“０ｘＦＦ０１０００５”というレコードが登録される。このレコードは、ジョブ識別子“７１０１９２７”のジョブの終了予定時刻が２０時３０分であり、ノード識別子“０ｘＦＦ０１０００４”および“０ｘＦＦ０１０００５”の２つの計算ノードが、当該ジョブを実行する計算ノードであることを示す。
【００６６】
また、ジョブ統計情報２１２には、ジョブ識別子が“７１１９８９５”、ジョブ終了予定時刻が“２０：００”、ノード識別子が“０ｘＦＦ０１０００６”、“０ｘＦＦ０１０００７”というレコードが登録される。このレコードは、ジョブ識別子“７１１９８９５”のジョブの終了予定時刻が２０時００分であり、ノード識別子“０ｘＦＦ０１０００６”および“０ｘＦＦ０１０００７”の２つの計算ノードが、当該ジョブを実行する計算ノードであることを示す。
【００６７】
なお、ジョブ統計情報２１２において、ノード識別子“０ｘＦＦ０１０００８”に対するジョブ識別子およびジョブ終了予定時刻は、設定なし（“−”）である。これは、“０ｘＦＦ０１０００８”には何れのジョブも割り当てられていないことを示す。
【００６８】
図８は、ジョブ単位消費電力情報の例を示す図である。ジョブ単位消費電力情報２１３は、記憶部２１０に格納される。ジョブ単位消費電力情報２１３は、ジョブ識別子、ノード識別子および消費電力合計値の項目を含む。
【００６９】
ジョブ識別子の項目には、ジョブ識別子が登録される。ノード識別子の項目には、ノード識別子が登録される。消費電力合計値の項目には、ノード識別子で示される計算ノードの消費電力の合計値が登録される。なお、何れのジョブも割り当てられていない計算ノードのノード識別子に対し、ジョブ識別子は、設定なし（“−”）となる。
【００７０】
例えば、ジョブ単位消費電力情報２１３には、ジョブ識別子が“７１０１９２７”、ノード識別子が“０ｘＦＦ０１０００４”、“０ｘＦＦ０１０００５”、消費電力合計値が“２４０”というレコードが登録される。このレコードは、ジョブ識別子“７１０１９２７”のジョブを実行する計算ノードがノード識別子“０ｘＦＦ０１０００４”、“０ｘＦＦ０１０００５”の２つの計算ノードであり、これらの計算ノードの消費電力の合計値が２４０Ｗであることを示す。
【００７１】
また、ジョブ単位消費電力情報２１３には、ジョブ識別子が“７１１９８９５”、ノード識別子が“０ｘＦＦ０１０００６”、“０ｘＦＦ０１０００７”、消費電力合計値が“３５０”というレコードが登録される。このレコードは、ジョブ識別子“７１１９８９５”のジョブを実行する計算ノードがノード識別子“０ｘＦ０１０００６”、“０ｘＦＦ０１０００７”の２つの計算ノードであり、これらの計算ノードの消費電力の合計値が３５０Ｗであることを示す。
【００７２】
なお、ジョブ単位消費電力情報２１３において、ノード識別子“０ｘＦＦ０１０００８”に対するジョブ識別子は、設定なし（“−”）である。これは、“０ｘＦＦ０１０００８”には何れのジョブも割り当てられていないためである。ノード識別子“０ｘＦＦ０１０００８”に対する消費電力合計値“８０”（Ｗ）は、ジョブを実行していない状態における該当の計算ノードの単体の消費電力である。
【００７３】
図９は、ジョブ情報の例を示す図である。ジョブ情報１１１は、記憶部１１０に格納される。ジョブ情報１１１は、ジョブ識別子、ノード識別子、残りのジョブ実行時間および消費電力合計値の項目を含む。
【００７４】
ジョブ識別子の項目には、ジョブ識別子が登録される。ノード識別子の項目には、ノード識別子が登録される。残りのジョブ実行時間の項目には、現時刻から当該ジョブの終了予定時刻までの時間が登録される。消費電力合計値の項目には、当該ジョブを実行する各計算ノードの消費電力の合計値が登録される。なお、ジョブ情報１１１は、何れのジョブも割り当てられていない計算ノードの情報も含む。何れのジョブも割り当てられていない計算ノードのノード識別子に対し、ジョブ識別子および残りのジョブ実行時間は、設定なし（“−”）となる。
【００７５】
例えば、ジョブ情報１１１には、ジョブ識別子が“７１０１９２７”、ノード識別子が“０ｘＦＦ０１０００４”、“０ｘＦＦ０１０００５”、残りのジョブ実行時間が“４０分”、消費電力合計値が“２４０”というレコードが登録される。このレコードは、ジョブ識別子“７１０１９２７”のジョブを実行する計算ノードがノード識別子“０ｘＦＦ０１０００４”、“０ｘＦＦ０１０００５”の２つの計算ノードであることを示す。また、当該ジョブの残りのジョブ実行時間が４０分であり、当該ジョブを実行する各計算ノードの消費電力の合計値が２４０Ｗであることを示す。
【００７６】
また、ジョブ情報１１１には、ジョブ識別子が“７１１９８９５”、ノード識別子が“０ｘＦＦ０１０００６”、“０ｘＦＦ０１０００７”、残りのジョブ実行時間が“１０分”、消費電力合計値が“３５０”というレコードが登録される。このレコードは、ジョブ識別子“７１１９８９５”のジョブを実行する計算ノードがノード識別子“０ｘＦＦ０１０００６”、“０ｘＦＦ０１０００７”の２つの計算ノードであることを示す。また、当該ジョブの残りのジョブ実行時間が１０分であり、当該ジョブを実行する各計算ノードの消費電力の合計値が３５０Ｗであることを示す。
【００７７】
なお、ジョブ情報１１１において、ノード識別子“０ｘＦＦ０１０００８”に対するジョブ識別子および残りのジョブ実行時間は、設定なし（“−”）である。これは、“０ｘＦＦ０１０００８”には何れのジョブも割り当てられていないためである。ノード識別子“０ｘＦＦ０１０００８”に対する消費電力合計値“８０”（Ｗ）は、ジョブを実行していない状態における該当の計算ノードの単体の消費電力である。
【００７８】
次に、並列処理システム５０における各ノードの処理手順を説明する。まず、システム管理ノード１００の処理手順を説明する。
図１０は、システム管理ノードの処理例を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
【００７９】
（Ｓ１１）電力管理部１２０は、各ＢＭＣ（ＢＭＣ５０，６０）から消費電力を取得する。
（Ｓ１２）電力管理部１２０は、各ＢＭＣから取得した消費電力を集計し、システム消費電力を算出する。システム消費電力は、各ＢＭＣから取得した消費電力の合計である。
【００８０】
（Ｓ１３）電力管理部１２０は、システム消費電力が（システム消費電力上限値−α）以上であるか否かを判定する。αは正の実数である。システム消費電力が（システム消費電力上限値−α）以上である場合、電力管理部１２０は、ステップＳ１４に処理を進める。システム消費電力が（システム消費電力上限値−α）未満である場合、電力管理部１２０は、ステップＳ１８に処理を進める。ここで、（システム消費電力上限値−α）は、システム消費電力に対する閾値である。システム消費電力上限値およびパラメータαの値は、記憶部１１０に予め設定される。並列処理システム５０で許容されるシステム消費電力上限値よりも小さい値を閾値とすることで、システム消費電力が、システム消費電力上限値を超えないように運用できる。前述のように、システム消費電力上限値は、電力会社との契約で定められる契約電力でもよい。
【００８１】
（Ｓ１４）電力管理部１２０は、ジョブ毎の消費電力と残り実行時間とをジョブ管理ノード２００に問い合わせる。電力管理部１２０は、問い合わせに対して、ジョブ毎の消費電力と残り実行時間とを含むジョブ情報１１１を、ジョブ管理ノード２００から取得し、記憶部１１０に格納する。
【００８２】
（Ｓ１５）電力管理部１２０は、ジョブ情報１１１に基づいて、最大消費電力のジョブの終了予定時刻までの時間（現時刻から終了予定時刻までの時間差）が所定時間以上であるか否かを判定する。最大消費電力のジョブの終了予定時刻までの時間が所定時間以上である場合、電力管理部１２０は、ステップＳ１７に処理を進める。最大消費電力のジョブの終了予定時刻までの時間が所定時間未満である場合、電力管理部１２０は、ステップＳ１６に処理を進める。
【００８３】
（Ｓ１６）電力管理部１２０は、最大消費電力のジョブ以外のジョブの消費電力を削減する処理をジョブ管理ノード２００に依頼する。具体的には、電力管理部１２０は、最大消費電力のジョブ以外のジョブをジョブ情報１１１から特定し、特定したジョブの電力削減指示（すなわち、特定したジョブを実行する計算ノードの電力削減指示）を、ジョブ管理ノード２００に送信する。そして、電力管理部１２０は、ステップＳ１８に処理を進める。
【００８４】
（Ｓ１７）電力管理部１２０は、最大消費電力のジョブの消費電力を削減する処理をジョブ管理ノード２００に依頼する。具体的には、電力管理部１２０は、最大消費電力のジョブをジョブ情報１１１から特定し、特定したジョブの電力削減指示（すなわち、特定したジョブを実行する計算ノードの電力削減指示）を、ジョブ管理ノード２００に送信する。そして、電力管理部１２０は、ステップＳ１８に処理を進める。
【００８５】
（Ｓ１８）電力管理部１２０は、一定時間待機する。その後、電力管理部１２０は、ステップＳ１１に処理を進める。
ここで、一例として、ステップＳ１５の判定における所定時間が２０分の場合を考える。図９で示したジョブ情報１１１の例によれば、消費電力が最大のジョブは、ジョブ識別子“７１１９８９５”のジョブである。この場合、ジョブ識別子“７１１９８９５”のジョブの残りのジョブ実行時間“１０分”は、所定時間“２０分”未満である（ステップＳ１５  Ｎｏ）。したがって、電力管理部１２０は、ジョブ識別子“７１１９８９５”以外のジョブ識別子“７１０１９２７”のジョブの電力削減指示をジョブ管理ノード２００に送信する。このとき、電力管理部１２０は、ジョブを未割当てである計算ノードについての電力削減指示をジョブ管理ノード２００に更に送信してもよい。
【００８６】
また、ステップＳ１５の判定における所定時間は、ジョブ毎に定められてもよい。例えば、電力管理部１２０は、ジョブの総実行所要時間のうちの所定割合（例えば、３０％や２０％など）の時間を、当該ジョブに対する所定時間として決定してもよい。
【００８７】
次に、ジョブ管理ノード２００による処理手順を説明する。
図１１は、ジョブ管理ノードの処理例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
【００８８】
（Ｓ２１）ジョブ管理部２２０は、ジョブ毎の消費電力と残り実行時間との問い合わせをシステム管理ノード１００から受信する。ジョブ管理部２２０は、計算ノード毎の消費電力の取得を資源管理マスター２３０に指示する。
【００８９】
（Ｓ２２）資源管理マスター２３０は、計算ノード毎の消費電力の取得を各計算ノードに指示する。
（Ｓ２３）資源管理マスター２３０は、計算ノード毎の消費電力を各計算ノードから取得する。資源管理マスター２３０は、取得した消費電力の情報によりノード消費電力情報２１１を生成し、記憶部２１０に格納する。
【００９０】
（Ｓ２４）ジョブ管理部２２０は、ノード消費電力情報２１１に基づいて、ジョブ毎の消費電力を計算する。ここで、ジョブ管理部２２０は、ジョブ統計情報２１２を記憶部２１０に予め格納している。このため、ジョブ管理部２２０は、ノード識別子をキーにして、ノード消費電力情報２１１のテーブルと、ジョブ統計情報２１２のテーブルとを結合することで、ジョブ単位消費電力情報２１３を生成する。このとき、共通のジョブ識別子に対応するノード識別子の消費電力を合計することで、ジョブ単位消費電力情報２１３における消費電力合計値を求める。また、ジョブ管理部２２０は、ジョブ統計情報２１２に基づいて、現時刻から終了予定時刻までの時間（残り実行時間）をジョブ毎に計算する。
【００９１】
（Ｓ２５）ジョブ管理部２２０は、ジョブ毎の消費電力と残り実行時間の情報をシステム管理ノード１００に送信する。具体的には、ジョブ管理部２２０は、ジョブ単位消費電力情報２１３にジョブ毎の残り実行時間を追加することで、ジョブ情報１１１を生成し、システム管理ノード１００に送信する。
【００９２】
（Ｓ２６）ジョブ管理部２２０は、システム管理ノード１００から電力削減指示を受信したか否かを判定する。システム管理ノード１００から電力削減指示を受信した場合、ジョブ管理部２２０は電力削減指示を資源管理マスター２３０に通知し、ステップＳ２７に処理を進める。システム管理ノード１００から電力削減指示を受信しない場合、ジョブ管理部２２０は処理を終了する。
【００９３】
（Ｓ２７）資源管理マスター２３０は、該当の計算ノードに電力削減を指示する。具体的には、資源管理マスター２３０は、電力削減指示で指定されたジョブの割り当て先の計算ノードを、ジョブ統計情報２１２に基づいて特定する。資源管理マスター２３０は、特定した計算ノードに対して、電力削減指示を送信する。そして、資源管理マスター２３０は、処理を終了する。
【００９４】
なお、上記の例では、ジョブ管理部２２０により各計算ノードの消費電力を集計してジョブ毎の消費電力を算出するものとしたが、電力管理部１２０が各計算ノードの消費電力をジョブ毎に集計する処理を行ってもよい。この場合、ジョブ管理部２２０は、ジョブ情報１１１における消費電力合計値の代わりに、各計算ノードの消費電力の情報を電力管理部１２０に提供する。また、資源管理マスター２３０が電力削減指示に応じて対象の計算ノードを特定するものとしたが、電力管理部１２０またはジョブ管理部２２０が電力削減対象の計算ノードの選択を行ってもよい。例えば、電力管理部１２０が、ジョブ情報１１１に基づいて、消費電力最大のジョブに対応する電力削減対象の計算ノードを選択してもよい。
【００９５】
次に、計算ノード３００の処理手順を説明する。計算ノード４００，５００，６００，・・・も計算ノード３００と同様の処理手順を実行する。
図１２は、計算ノードの処理例を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
【００９６】
（Ｓ３１）資源管理スレーブ３１０は、ジョブ管理ノード２００から消費電力の取得指示を受信する。
（Ｓ３２）資源管理スレーブ３１０は、消費電力収集部３２０を介して計算ノード３００の消費電力を取得し、計算ノード３００の消費電力をジョブ管理ノード２００に送信する。
【００９７】
（Ｓ３３）資源管理スレーブ３１０は、ジョブ管理ノード２００から消費電力の削減指示を受信したか否かを判定する。消費電力の削減指示を受信した場合、資源管理スレーブ３１０は、消費電力の削減を動作制御部３３０に指示して、ステップＳ３４に処理を進める。消費電力の削減指示を受信しない場合、資源管理スレーブ３１０は、処理を終了する。
【００９８】
（Ｓ３４）動作制御部３３０は、計算ノード３００の消費電力を削減する。具体的には、動作制御部３３０は、計算ノード３００を省電力モードに移行させる。一例では、動作制御部３３０は、ジョブの実行に用いられるプロセッサ３０１の周波数レジスタ３０１ａに、通常よりも低い周波数を設定することで、プロセッサ３０１による消費電力を削減する。あるいは、複数のプロセッサがジョブの実行に用いられている場合、動作制御部３３０は、複数のプロセッサの一部を停止させることで、消費電力を削減してもよい。また、動作制御部３３０は、計算ノード３００を停止（例えば、シャットダウンまたはスタンバイ状態へ移行）させてもよい。そして、動作制御部３３０は、処理を終了する。
【００９９】
なお、電力管理部１２０は、消費電力削減の依頼後、何れかのジョブの実行が終了すると、ジョブ管理ノード２００から当該ジョブの終了の通知を受け付けてもよい。そして、電力管理部１２０は、当該通知に応じて、消費電力を削減中である（省電力モードである）計算ノードを通常モードに移行させるようにジョブ管理ノード２００に指示してもよい。ジョブ管理ノード２００は、電力管理部１２０の指示に応じて、該当の計算ノードに通常モードへの移行を指示する。そして、指示を受けた計算ノードは、省電力モードから通常モードへ移行する（例えば、プロセッサ周波数の設定をクロックダウン前の設定に戻す、または、計算ノードを停止させた場合には当該計算ノードを起動させるなど）。
【０１００】
以上で例示したように、システム管理ノード１００は、システム消費電力が閾値に達すると、消費電力が最大である第１ジョブの終了予定時刻までの時間と所定時間との比較に応じて、消費電力を削減する計算ノードを選択する。
【０１０１】
システム管理ノード１００は、第１ジョブの終了予定時刻までの時間が所定時間Ｔ０以上である場合に、第１ジョブを実行する計算ノードの消費電力を削減する処理を行う。この場合、第１ジョブの終了予定時刻までの時間が所定時間以上であれば、第１ジョブの進捗の度合いも低いと考えられ、仮に第１ジョブが完遂されない場合でも、第１ジョブの実行のための電力量の浪費を抑えられる。また、消費電力が最大である第１ノードの消費電力を削減することで、システム全体の消費電力を効率的に抑えて、第１ノード以外の第２ノードによる第２ジョブの実行を継続することができる。
【０１０２】
一方、システム管理ノード１００は、第１ジョブの終了予定時刻までの時間が所定時間未満である場合に、第１ジョブを実行する第１ノード以外の第２ノードの消費電力を削減する処理を行う。この場合、第１ジョブの終了予定時刻までの時間が所定時間未満であれば、第１ジョブの進捗の度合いも高いと考えられ、仮に第１ジョブが完遂されないとすると、それまでの第１ジョブの実行のための電力量の浪費が大きい。第１ジョブの終了が間近であるにも関わらず、第１ノードの消費電力を削減して第１ジョブの完遂率を低下させてしまうと、それまでの第１ジョブの処理、および、第１ジョブの再実行により消費される電力量が大きくなるリスクが高まる。このため、第２ノードの消費電力を削減し、第１ジョブの実行を優先することで、第１ジョブが適切に完遂されるように制御する。
【０１０３】
こうして、第１ジョブの実行完遂率を向上させることで、第１ジョブの再実行を抑え、並列処理システム１０において消費される電力量を減らすことができる。
また、上記のように、計算ノード３００の消費電力を削減する方法には種々の方法（プロセッサ周波数の低減や計算ノード３００の停止など）が考えられる。電力管理部１２０は、消費電力を削減するために何れの方法を用いるかを状況に応じて選択してもよい。例えば、電力管理部１２０は、まずは、電力削減対象の計算ノードのプロセッサの動作周波数を低下させ、それでもシステム消費電力が（システム消費電力上限値−α）を下回らない場合に、該当の計算ノードの停止をジョブ管理ノード２００に指示してもよい。このとき、電力管理部１２０は、システム消費電力が（システム消費電力上限値−α）を下回るように、ある計算ノードでプロセッサの動作周波数を低減させ、別の計算ノードを停止させるようジョブ管理ノード２００に指示してもよい。このように消費電力を削減する方法を柔軟に選択することで、消費電力を削減しつつ、計算ノード３００，４００，５００，６００，・・・の利用効率を向上させることも可能である。
【０１０４】
なお、第２の実施の形態では、システム管理ノード１００とジョブ管理ノード２００とを別個のノードとして実現する例を説明したが、両ノードの機能は１つのノードによって実現されてもよい。例えば、ジョブ管理ノード２００の機能の一部または全部を、システム管理ノード１００に組み込むこともできる。
【０１０５】
また、第１の実施の形態の情報処理は、処理部１１ｂにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体２４に記録できる。
【０１０６】
例えば、プログラムを記録した記録媒体２４を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体２４に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１０７】
１０  並列処理システム
１１  システム管理装置
１１ａ  記憶部
１１ｂ  処理部
１２  計算ノード群
１２ａ，１２ｂ，１２ｃ，１２ｄ  計算ノード
Ｄ１，Ｄ２  テーブル
【図１】
2019003281.tif 000003
【図２】
2019003281.tif 000004
【図３】
2019003281.tif 000005
【図４】
2019003281.tif 000006
【図５】
2019003281.tif 000007
【図６】
2019003281.tif 000008
【図７】
2019003281.tif 000009
【図８】
2019003281.tif 000010
【図９】
2019003281.tif 000011
【図１０】
2019003281.tif 000012
【図１１】
2019003281.tif 000013
【図１２】
2019003281.tif 000014