(57)【要約】【課題】分散システムにおいて、タスク数の変化に対応して、省電力化を達成しつつ、処理能力の低下を抑制する、管理装置、それを備えた分散システム、管理方法、及びプログラムを提供する。【解決手段】分散システム１０は、ジョブを分散して実行する複数のノード３００と、ノード３００を管理するための管理装置２００とを備える。管理装置２００は、ジョブを複数のタスクに分割し、ノード３００にタスクの実行を要求する、ジョブ制御部２２０と、分割によって得られたタスクの数の変化を特定する、タスク数管理部２４０と、タスク数の変化に応じて、電源状態が起動状態にあるノード３００の必要数を決定し、決定した必要数に応じて、ノード３００の電源状態を、起動状態から停止状態又は停止状態から起動状態へと変化させる、ノード電源制御部２３０とを備えている。【選択図】図１
2018151968.tif 000002
【特許請求の範囲】
【請求項１】
実行対象となるジョブを分散して実行する複数のノードを管理するための装置であって、
実行対象となるジョブを複数のタスクに分割し、前記複数のノードの全部又は一部に、前記タスクの実行を要求する、ジョブ制御部と、
前記ジョブ制御部による分割によって得られたタスクの数の変化を特定する、タスク数管理部と、
特定されたタスク数の変化に応じて、電源状態が起動状態にある前記ノードの必要数を決定し、決定した前記必要数に応じて、前記複数のノードの全部又は一部の電源状態を、起動状態から停止状態又は停止状態から起動状態へと変化させる、ノード電源制御部と、
を備えている、ことを特徴とする管理装置。
【請求項２】
前記タスク数管理部が、前記タスクの数の変化に基づいて、前記複数のノードの稼動状況が予め定められているステージのうちのいずれに該当しているかを判定し、
前記ノード電源制御部が、判定されたステージに応じて、電源状態が起動状態にあるノードの必要数を決定する、
請求項１に記載の管理装置。
【請求項３】
前記タスク数管理部が、前記タスク数の変化から、タスク数の平均値を算出し、算出した前記平均値に基づいて、予め定められているステージのうちのいずれに該当しているかを判断する、
請求項２に記載の管理装置。
【請求項４】
実行対象となるジョブを分散して実行する複数のノードと、前記複数のノードを管理するための管理装置とを備え、
前記管理装置は、
実行対象となるジョブを複数のタスクに分割し、前記複数のノードの全部又は一部に、前記タスクの実行を要求する、ジョブ制御部と、
前記ジョブ制御部による分割によって得られたタスクの数の変化を特定する、タスク数管理部と、
特定されたタスク数の変化に応じて、電源状態が起動状態にある前記ノードの必要数を決定し、決定した前記必要数に応じて、前記複数のノードの全部又は一部の電源状態を、起動状態から停止状態又は停止状態から起動状態へと変化させる、ノード電源制御部と、
を備えている、ことを特徴とする分散システム。
【請求項５】
前記タスク数管理部が、前記タスクの数の変化に基づいて、前記複数のノードの稼動状況が予め定められているステージのうちのいずれに該当しているかを判定し、
前記ノード電源制御部が、判定されたステージに応じて、電源状態が起動状態にあるノードの必要数を決定する、
請求項４に記載の分散システム。
【請求項６】
前記タスク数管理部が、前記タスク数の変化から、タスク数の平均値を算出し、算出した前記平均値に基づいて、予め定められているステージのうちのいずれに該当しているかを判断する、
請求項５に記載の分散システム。
【請求項７】
実行対象となるジョブを分散して実行する複数のノードを管理するための方法であって、
（ａ）実行対象となるジョブを複数のタスクに分割し、前記複数のノードの全部又は一部に、前記タスクの実行を要求する、ステップと、
（ｂ）前記（ａ）のステップによる分割によって得られたタスクの数の変化を特定する、ステップと、
（ｃ）前記（ｂ）のステップで特定されたタスク数の変化に応じて、電源状態が起動状態にある前記ノードの必要数を決定し、決定した前記必要数に応じて、前記複数のノードの全部又は一部の電源状態を、起動状態から停止状態又は停止状態から起動状態へと変化させる、ステップと、
を有する、ことを特徴とする管理方法。
【請求項８】
コンピュータによって、実行対象となるジョブを分散して実行する複数のノードを管理するためのプログラムであって、
前記コンピュータに、
（ａ）実行対象となるジョブを複数のタスクに分割し、前記複数のノードの全部又は一部に、前記タスクの実行を要求する、ステップと、
（ｂ）前記（ａ）のステップによる分割によって得られたタスクの数の変化を特定する、ステップと、
（ｃ）前記（ｂ）のステップで特定されたタスク数の変化に応じて、電源状態が起動状態にある前記ノードの必要数を決定し、決定した前記必要数に応じて、前記複数のノードの全部又は一部の電源状態を、起動状態から停止状態又は停止状態から起動状態へと変化させる、ステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散システムを構成するノードを管理するための管理装置、それを用いた分散システム、及び管理方法に関し、更には、これらを実現するためのプログラムに関する。
【背景技術】
【０００２】
分散システムは、ネットワークを介して接続された複数のノード（コンピュータ）で構成され、計算処理を分散して行なうシステムである。分散システムによれば、単一のコンピュータでは得られない計算能力と記憶容量とを得ることが可能となる。よって、分散システムは、遺伝子解析、気象予測、暗号解読といった大規模な計算処理に用いられている。
【０００３】
但し、分散システムでは、多数のノードが一度に稼動するため、システム全体の消費電力は膨大となる。このため、分散システム全体の消費電力の抑制を図る技術が開示されている（例えば、特許文献１〜３参照）。
【０００４】
具体的には、特許文献１は、アイドル状態のノードにおいて節電を行なうシステムを開示している。特許文献１に開示されたシステムでは、各ノードのＢＩＯＳは、メモリの実行状態を保持したまま、ＣＰＵ及びハードディスクの動作を停止して、ノードをサスペンド状態とする。但し、特許文献１に開示されたシステムでは、一度サスペンド状態などの停止状態に移行させたノードを再度利用する場合に、ノードに通電し、ＯＳを起動する必要があるため、利用が可能になるまでの待ち時間が長くなってしまう。
【０００５】
また、特許文献２は、ジョブの実行予定に基づいて、停止ノードをあらかじめ復帰させてくことで、ノード復帰にかかる時間を隠蔽するシステムを開示している。スーパーコンピュータのようにジョブを実行キューにためて処理を行うようなシステムにおいては隠蔽効果がある。特に、１ジョブを数百ノードで協調動作して数十分以上のオーダーで処理する場合（並列処理）においては効果的である。
【０００６】
但し、特許文献２に開示されたシステムでは、分散ストレージシステムのようにシステムに対する処理要求が予想できない場合、及び、小さなジョブが多数あったり、大きなジョブを小さなタスクに分割して多くのノードに分配したりして処理する場合（分散処理）において、復帰にかかる時間を隠蔽できないという問題がある。
【０００７】
これらの問題に対して、特許文献３は、分散システム全体の消費電力を抑制しつつ、負荷が大きくなった際の処理性能の低下も抑制する、システムを開示している。具体的には、特許文献３に開示されたシステムは、タスクを完了したノードを停止させるに際して、停止レベル毎に、アイドル状態のノードの必要数又はアイドル状態のノードの割合を条件として予め設定する。そして、当該システムは、ある停止レベルの条件が満たされている場合に、その次の停止レベルで停止処理をする。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００３−１６２５１５号公報
【特許文献２】特開２００８−２２５６３９号公報
【特許文献３】国際公開第２０１２／２２５６３９号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献３に開示されたシステムには、タスク数の変化には対応できないという問題がある。この結果、タスク数が多いときにノード復帰に時間が必要となり、逆にタスク数が少ないときに省電力化の余地を残すことになる可能性がある。この方法を改善すれば省電力でありながら、効率性も求めることができる可能性がある。
【００１０】
本発明の目的の一例は、上記問題を解消し、分散システムにおいて、タスク数の変化に対応して、省電力化を達成しつつ、処理能力の低下を抑制し得る、管理装置、それを備えた分散システム、管理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明の一側面における管理装置は、実行対象となるジョブを分散して実行する複数のノードを管理するための装置であって、
実行対象となるジョブを複数のタスクに分割し、前記複数のノードの全部又は一部に、前記タスクの実行を要求する、ジョブ制御部と、
前記ジョブ制御部による分割によって得られたタスクの数の変化を特定する、タスク数管理部と、
特定されたタスク数の変化に応じて、電源状態が起動状態にある前記ノードの必要数を決定し、決定した前記必要数に応じて、前記複数のノードの全部又は一部の電源状態を、起動状態から停止状態又は停止状態から起動状態へと変化させる、ノード電源制御部と、
を備えている、ことを特徴とする。
【００１２】
上記目的を達成するため、本発明の一側面における分散システムは、
実行対象となるジョブを分散して実行する複数のノードと、前記複数のノードを管理するための管理装置とを備え、
前記管理装置は、
実行対象となるジョブを複数のタスクに分割し、前記複数のノードの全部又は一部に、前記タスクの実行を要求する、ジョブ制御部と、
前記ジョブ制御部による分割によって得られたタスクの数の変化を特定する、タスク数管理部と、
特定されたタスク数の変化に応じて、電源状態が起動状態にある前記ノードの必要数を決定し、決定した前記必要数に応じて、前記複数のノードの全部又は一部の電源状態を、起動状態から停止状態又は停止状態から起動状態へと変化させる、ノード電源制御部と、
を備えている、ことを特徴とする。
【００１３】
また、上記目的を達成するため、本発明の一側面における管理方法は、実行対象となるジョブを分散して実行する複数のノードを管理するための方法であって、
（ａ）実行対象となるジョブを複数のタスクに分割し、前記複数のノードの全部又は一部に、前記タスクの実行を要求する、ステップと、
（ｂ）前記（ａ）のステップによる分割によって得られたタスクの数の変化を特定する、ステップと、
（ｃ）前記（ｂ）のステップで特定されたタスク数の変化に応じて、電源状態が起動状態にある前記ノードの必要数を決定し、決定した前記必要数に応じて、前記複数のノードの全部又は一部の電源状態を、起動状態から停止状態又は停止状態から起動状態へと変化させる、ステップと、
を有することを特徴とする。
【００１４】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、コンピュータによって、実行対象となるジョブを分散して実行する複数のノードを管理するためのプログラムであって、
前記コンピュータに、
（ａ）実行対象となるジョブを複数のタスクに分割し、前記複数のノードの全部又は一部に、前記タスクの実行を要求する、ステップと、
（ｂ）前記（ａ）のステップによる分割によって得られたタスクの数の変化を特定する、ステップと、
（ｃ）前記（ｂ）のステップで特定されたタスク数の変化に応じて、電源状態が起動状態にある前記ノードの必要数を決定し、決定した前記必要数に応じて、前記複数のノードの全部又は一部の電源状態を、起動状態から停止状態又は停止状態から起動状態へと変化させる、ステップと、
を実行させることを特徴とする。
【発明の効果】
【００１５】
以上のように、本発明によれば、分散システムにおいて、タスク数の変化に対応して、省電力化を達成しつつ、処理能力の低下を抑制することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、本発明の実施の形態における分散システム及び管理装置の概略構成を示すブロック図である。
【図２】図２は、本発明の実施の形態における分散システム及び管理装置の構成を具体的に示すブロック図である。
【図３】図３は、本発明の実施の形態における管理装置の構成を具体的に示すブロック図である。
【図４】図４は、本発明の実施の形態における分散システムの動作を示すシーケンス図である。
【図５】図５は、本発明の実施の形態における管理装置の電源制御判定処理時の動作を示すフロー図である。
【図６】図６は、本発明の実施の形態における管理装置を実現するコンピュータの一例を示すブロック図である。
【発明を実施するための形態】
【００１７】
（実施の形態）
以下、本発明の実施の形態における、管理装置、分散システム、管理方法、及びプログラムについて、図１〜図６を参照しながら説明する。
【００１８】
［システム構成］
最初に、図１を用いて、本実施の形態における分散システム及び管理装置の構成について説明する。図１は、本発明の実施の形態における分散システム及び管理装置の概略構成を示すブロック図である。
【００１９】
図１に示すように、本実施の形態における分散システム１０は、実行対象となるジョブを分散して実行する複数のノード３００と、ノード３００を管理するための管理装置２００とを備えている。
【００２０】
各ノード３００と管理装置２００とは、ネットワーク４００を介して接続されている。また、管理装置２００は、ジョブ制御部２２０と、タスク数管理部２４０と、ノード電源制御部２３０とを備えている。
【００２１】
ジョブ制御部２２０は、実行対象となるジョブを複数のタスクに分割し、複数のノード３００の全部又は一部に、タスクの実行を要求する。タスク数管理部２４０は、ジョブ制御部２２０による分割によって得られたタスクの数の変化を特定する。
【００２２】
ノード電源制御部２３０は、タスク数管理部２４０によって特定されたタスクの数の変化に応じて、電源状態が起動状態にあるノードの必要数を決定し、決定した必要数に応じて、複数のノード３００の全部又は一部の電源状態を、起動状態から停止状態又は停止状態から起動状態へと変化させる。
【００２３】
このように、本実施の形態における分散システム１０は、タスク数の変化に応じて、起動状態にあるノードの必要数を決定している。この結果、負荷状況に応じて、タスクを処理可能な起動状態にあるノードの必要数が動的に変更されるので、分散システム１０において、タスク数の変化に対応して、省電力化を達成しつつ、処理能力の低下を抑制する
【００２４】
続いて、図２を用いて、本実施の形態における分散システム１０及び管理装置１００の構成についてより具体的に説明する。図２は、本発明の実施の形態における分散システム及び管理装置の構成を具体的に示すブロック図である。
【００２５】
図２に示すように、本実施の形態では、分散システム１０には、クライアントノード１００が、ネットワーク４００を介して接続されている。クライアントノード１００は、実行対象となるジョブの実行を要求するノードである。クライアントノード１００が発行したジョブ実行要求は、ネットワーク４００を介して、管理装置２００に入力される。
【００２６】
また、本実施の形態では、ネットワーク４００は、アクセス経路決定手段（図２において図示せず）を有している。また、図２の例では、クライアントノード１００及び管理装置２００は、共に１つであるが、本実施の形態では、クライアントノード１００及び管理装置２００は共に複数であっても良い。なお、以降においては、ジョブを実行するノード３００を、クライアントノード１００と区別するために、「通常ノード３００」と表記する。また、管理装置２００もノードの１つである。
【００２７】
図２に示すように、本実施の形態では、管理装置２００は、上述したジョブ制御部２２０、タスク数管理部２４０及びノード電源制御部２３０に加えて、ジョブ受信部２１０と情報記憶部２５０とを更に備えている。
【００２８】
ジョブ受信部２１０は、クライアントノード１００が発行したジョブ実行要求を受け付ける。ジョブ制御部２２０は、本実施の形態では、ジョブ受信部２１０がジョブを受け付けると、受け付けたジョブを、各通常ノード３００が実行できる単位のタスクに分割する。また、ジョブ制御部２２０は、通常ノード３００に対して、タスク実行命令を発行してタスク実行を要求する。更に、ジョブ制御部２２０は、分割したタスクの数（タスク数）をタスク数管理部２４０に通知する。
【００２９】
タスク数管理部２４０は、本実施の形態では、ジョブ制御部２２０から受け付けたタスク数を複数回分保持し、タスク数の変化として、保持した複数回分のタスク数の平均値を算出する。また、タスク数管理部２４０が、タスクの数の変化に基づいて、複数の通常ノード３００の稼動状況が予め定められているステージのうちのいずれに該当しているかを判定する。
【００３０】
具体的には、タスク数管理部２４０は、算出したタスク数の平均値と、予め設定されている閾値とを比較し、比較結果に応じて、ステージを判定する。また、ステージは、各通常ノード３００の停止状態のレベルであり、例えば、分散システム１０における省電力の状態に応じて、ステージ１（高負荷）、ステージ２（中負荷）ステージ３（低負荷）の３つのステージが設定されているとする。
【００３１】
また、ステージを判断するための閾値は、予め行なわれる実験等によって適宜設定される。但し、上記のステージ１とステージ２とを分ける閾値は、ステージ２とステージ３とを分ける閾値よりも大きな値に設定される。
【００３２】
また、ノード電源制御部２３０は、本実施の形態では、タスク数管理部２４０が判定したステージに応じて、通常ノード３００の必要数を決定する。更に、本実施の形態では、ノード電源制御部２３０は、分散システム１０において予め定義されている省電力のレベル毎に、必要数を決定する。分散システム１０における省電力の状態の例としては、ＡＣＰＩ（Advanced Configuration and Power Interface）で規定される省電力の状態が挙げられる。この場合は、例えば、レベル１がＡＣＰＩで規定されるＳ１（プロセッサ給電停止）に設定され、レベル２がＡＣＰＩで規定されるＳ３（メモリのみ給電）に設定され、レベル３がＡＣＰＩで規定されるＳ４（メモリ内容の退避、全電源供給停止）に設定される。
【００３３】
更に、本実施の形態では、省電力のレベル数は、上記の３つに限定されることはなく、３つ以外のレベルも含まれていても良い。例えば、通常ノード３００がアイドル状態にある場合がレベル０として含まれていても良い。また、通常ノード３００は、タスクを実行していないアイドル状態である場合、レベル１、レベル２、レベル３に移行することができる。なお、「アイドル状態」とは、起動状態にあるが、現在タスクを実行していない状態をいう。
【００３４】
加えた、ノード電源制御部２３０は、本実施の形態では、タスク数管理部２４０によって決定されたレベル毎の必要数に応じて、通常ノード３００の電源状態（起動状態又は停止状態）を管理する。また、ノード電源制御部２３０は、各通常ノード３００の電源状態を切り替える場合は、切り替え対象となる通常ノード３００に対して、電源制御要求を発行する。
【００３５】
また、図２に示すように、通常ノード３００は、、通信部３１０と、タスク実行部３２０と、復帰命令受信部３３０と、電源制御部３４０とを備えている。更に、各通常ノード３００には、１ノードずつ個別のノード番号が付与されている。
【００３６】
通信部３１０は、管理装置２００が発行したタスク実行命令を受信し、受信したタスク実行命令をタスク実行部３２０に渡す。タスク実行部３２０は、通信部３１０が受信したタスク実行命令に基づいてタスクを実行する。
【００３７】
復帰命令受信部３３０は、管理装置２００によって発行された電源制御要求を受信する。そして、復帰命令受信部３３０は、電源制御要求が、停止状態から起動状態となることを要求している場合は、電源制御部３４０に対して復旧を指示する。
【００３８】
電源制御部３４０は、復帰命令受信部３３０から復旧が指示されると、通常ノード３００が起動状態となるように電源制御を実行する。また、電源制御部３４０は、通信部３１０が管理装置２００から停止命令を受信している場合は、通常ノード３００が停止状態となるように電源制御を実行する。
【００３９】
続いて、図３を用いて、管理装置２００の構成を更に詳細に説明する。図３は、本発明の実施の形態における管理装置の構成を具体的に示すブロック図である。
【００４０】
図３に示すように、本実施の形態では、管理装置２００において、ジョブ制御部２２０は、更に、ジョブ分解部２２１と、タスク配置決定部２２２と、命令通知部２２３とを備えている。
【００４１】
ジョブ分解部２２１は、実行対象となるジョブを各通常ノード３００が実行できる単位のタスクとして分割する。タスク配置決定部２２２は、ジョブ分解部２２１が分解したタスクを、どの通常ノード３００に実行させるかを決定する。また、タスク配置決定部２２２は、決定後に、タスクを実行中にあるノードを特定するタスク配置情報を作成し、作成したタスク配置情報を情報記憶部２５０に格納させる。
【００４２】
命令通知部２２３は、タスク配置決定部２２２の決定に従って、各通常ノード３００に対してタスク実行命令を発行し、対応する通常ノード３００に、これを通知する。また、命令通知部２２３は、後述する電源制御ノード決定部２３１が、電源制御要求を発行した場合は、発行された電源制御要求を対応する通常ノード３００に通知する。
【００４３】
また、図３に示すように、本実施の形態では、管理装置２００において、ノード電源制御部２３０は、電源制御ノード決定部２３１を備えている。電源制御ノード決定部２３１は、タスク数管理部２４０によって決定されたレベル毎の必要数に応じて、通常ノード３００の電源状態（起動状態又は停止状態）を管理する。
【００４４】
また、電源制御ノード決定部２３１は、情報記憶部２５０に格納されているタスク配置情報に基づいて、タスクを実行していない通常ノード３００を特定する。更に、電源制御ノード決定部２３１は、情報記憶部２５０に格納されているノード状態情報に基づいて、特定した通常ノード３００の電源状態を特定する。
【００４５】
ノード状態情報は、各通常ノード３００が省電力状態として停止中であるか、起動中であるかを示す情報を含む。また、ノード状態情報は、状態ごとに該当する通常ノードの個数を示す情報も含む。
【００４６】
電源制御ノード決定部２３１は、各通常ノード３００の電源状態を切り替える場合は、、電源制御要求を発行し、発行した電源制御要求を、切り替え対象となる通常ノード３００に対して、命令通知部２２３を介して通知する。
【００４７】
そして、電源制御ノード決定部２３１は、各レベルに対応する必要数が満たされるように、電源状態を切り替えるべき通常ノードを選択し、命令通知部２２３を用いて、選択した通常ノード３００の電源状態を切り替える。また、電源制御ノード決定部２３１は、電源状態の切り替えを指示した後、ノード状態情報を更新する。
【００４８】
なお、停止状態が指示された通常ノードであっても、復帰命令を受信する復帰命令受信部３３０には電力が供給されており、復帰命令受信部３３０は常に電源制御要求を受信しているものとする。また、上述したＡＣＰＩで規定されているＳ１、Ｓ３、Ｓ４では省電力効果はＳ１、Ｓ３、Ｓ４の順に小さくなっており、省電力状態から復帰にかかる時間はＳ１、Ｓ３、Ｓ４の順に短くなっている。
【００４９】
［システム動作］
次に、本発明の実施の形態における分散システム１０の動作について図４を用いて説明する。図４は、本発明の実施の形態における分散システムの動作を示すシーケンス図である。以下の説明においては、適宜図１〜図３を参酌する。また、本実施の形態では、分散システム１０、特には管理装置２００を動作させることによって、管理方法が実施される。よって、本実施の形態における管理方法の説明は、以下の分散システム１０及び管理装置２００の動作説明に代える。
【００５０】
図４に示すように、最初に、クライアントノード１００が、ジョブ実行要求を管理装置２００に送信する（ステップＳ１）。
【００５１】
次に、クライアントノード１００からのジョブ実行要求を受信した管理装置２００は、ジョブ分解部２２１において、受け付けたジョブを１つ以上のタスクに分解する（ステップＳ２）。
【００５２】
そして、ジョブ分解部２２１は、ステップＳ２の実行後、分解したタスク数をタスク数管理部２４０に通知する。これにより、タスク数管理部２４０は、ジョブ分解部２２１から受け付けたタスク数を保持する。
【００５３】
次に、ステップＳ２のジョブ分解処理が完了すると、管理装置２００は、タスク配置決定部２２２において、分解したタスクをどの通常ノード３００で実行するかを決定する（ステップＳ３）。
【００５４】
ステップＳ３におけるタスク配置決定処理では、タスク配置決定部２２２は、通常ノード３００の一部が低消費電力状態で停止中である場合は、分解したタスクが起動中の通常ノード３００で実行しきれるか否かを判定する。判定の結果、起動中の通常ノード３００では実行しきれないと判断した場合、タスク配置決定部２２２は、低消費電力状態で停止中の通常ノード３００の全部又は一部を復帰させる（ステップＳ４）。
【００５５】
また、ステップＳ４におけるノード復帰処理では、タスク配置決定部２２２は、ノード電源制御部２３０に対して、ノード起動要求と共に復帰させるべきノードの数を通知する。これにより、ノード電源制御部２３０は、復帰対象ノードを決定し、決定した復帰対象の通常ノード３００宛にノード復帰命令を発行する（ステップＳ５）。
【００５６】
その後、復帰命令を受信した通常ノード３００は、ノード復帰処理を行い、復帰後に、ノード復帰応答を管理装置２００に返答する（ステップＳ６）。ここでの復帰処理とは、通常ノードが停止状態からアイドル状態に移行するように制御することである。
【００５７】
また、ノード復帰処理と同時に、タスク配置決定部２２２は、その時点で起動中の通常ノード３００に対して、命令通知部２２３を通じてタスク実行命令を発行する（ステップＳ７）。
【００５８】
タスク実行命令を受信した通常ノード３００は、タスク実行命令に従って、タスクを実行し、タスク実行完了後にタスク完了通知を管理装置２００に送信する（ステップＳ８）。
【００５９】
次に、管理装置２００は、通常ノードから、タスク完了通知を受信すると、電源制御判定処理を実行する（ステップＳ９）。ステップＳ９では、管理装置２００は、タスクが完了した通常ノード３００を低消費電力状態で停止させるか否かを判定する。
【００６０】
そして、判定の結果、通常ノードを低消費電力状態で停止させると判定した場合には、管理装置２００は、該当する通常ノード３００に対してノード停止命令を発行する。これにより、ノード停止命令を受信した通常ノード３００は、低消費電力状態で停止する。一方、判定の結果、通常ノード３００を低消費電力状態で停止させないと判定した場合には、管理装置２００は、そのまま何もせず、該当する通常ノード３００もアイドル状態で待機する。
【００６１】
ここで、図４に示した、管理装置２００による、ジョブ分解処理（ステップＳ２）、タスク配置決定処理（ステップＳ３）、ノード復帰処理（ステップＳ４）、及び電源制御判定処理（ステップＳ９）について詳細に説明する。
【００６２】
［ジョブ分解処理］
ジョブ分解処理では、ジョブ分解部２２１は、実行対象となるジョブを１つ以上、「（全通常ノード３００の数）−（タスク実行中の通常ノード３００の数）」個以下のタスクに分解する。このときジョブ分解部２２１は、１つのタスクが通常ノード３００が１台で処理できるタスクとなるように、ジョブを分解する。なお、本実施の形態において、ジョブ分解部２２１によるタスク分解の具体的な方法は特に限定されるものではない。
【００６３】
［タスク配置決定処理］
タスク配置決定処理では、タスク配置決定部２２２は、ジョブ分解処理で分解したタスクを実行する通常ノード３００を決定する。
【００６４】
具体的には、タスク配置決定部２２２は、情報記憶部２５０に格納されているノード状態情報を参照し、タスク数が、アイドル状態の通常ノード３００の数以下であるか否か判定する。
【００６５】
そして、判定の結果、タスク数がアイドル状態の通常ノード３００の数以下である場合は、タスク配置決定部２２２は、アイドル状態の通常ノード３００のうち、タスク数分の通常ノード３００をタスク実行するノードとして選択する。
【００６６】
一方、判定の結果、タスク数がアイドル状態の通常ノード３００の数より多い場合は、タスク配置決定部２２２は、アイドル状態の通常ノード３００全てを、タスクを実行するノードとして選択する。加えて、タスク配置決定部２２２は、残りのタスク数（（タスク数）−（アイドル状態の通常ノード数））分の通常ノード３００を確保するため、停止状態のノードを、ノード復帰処理により起動し、起動したノードをタスクを実行する通常ノード３００として選択する。
【００６７】
タスク実行ノードとして選択された通常ノード３００は、アイドル状態であれば、タスク配置決定処理直後にタスク実行を開始する。また、タスク実行ノードとして選択された通常ノード３００は、停止状態であれば、ノード復帰処理にてアイドル状態に移行した後に、タスク実行命令に従ってタスク実行を開始する。
【００６８】
なお、本実施の形態において、アイドル状態の通常ノード３００のうち、どの通常ノード３００を、タスクの実行を行なうノードとして選択するかについての決定方法は、特に限定されない。また、どのタスクをどの通常ノード３００に配置するかについての決定方法も限定されない。
【００６９】
［ノード復帰処理］
ノード復帰処理では、タスク配置決定部２２２は、ノード電源制御部２３０に対して、ノード起動要求とともに起動するノード数を通知する。
【００７０】
［電源制御判定処理］
電源制御判定処理では、管理装置２００は、レベル０、レベル１、レベル２、レベル３の順に、各レベルの必要ノード数が満たされるように、各通常ノード３００の停止状態を決定する。レベル０（アイドル状態）、レベル１、レベル２の各状態において、必要ノード数が満たされている場合は、レベル０〜２にない通常ノード３００の電源状態をレベル３に決定する。また、本実施の形態では、電源制御ノード決定部２３１は、初期値として、電源制御判定処理におけるレベル０〜レベル３の各レベル毎に、必要ノード数の設定値を保持している。
【００７１】
ここで、図５を用いて、電源制御判定処理について具体的に説明する。図５は、本発明の実施の形態における管理装置の電源制御判定処理時の動作を示すフロー図である。
【００７２】
図５に示すように、最初に、管理装置２００において、ジョブ制御部２２０は、通常ノード３００からタスク完了通知を受け付ける（ステップＡ１）。
【００７３】
次いで、ジョブ制御部２２０は、タスク完了通知を受け付けたことを、タスク数管理部２４０に通知する（ステップＡ２）。
【００７４】
次に、タスク数管理部２４０は、保持している複数回分のタスク数から平均値を算出し、算出した平均値がステージ１とステージ２との境界を示す第１の閾値より小さいかどうかを判定する（ステップＡ３）。
【００７５】
ステップＡ３の判定の結果、平均値が第１の閾値より小さい場合は、タスク数管理部２４０は、分散システム１０の状態をステージ１と決定する（ステップＡ５）。
【００７６】
一方、ステップＡ３の判定の結果、平均値が第１の閾値以上である場合は、タスク数管理部２４０は、平均値が第２の閾値より小さいかどうかを判定する（ステップＡ４）。
【００７７】
ステップＡ４の判定の結果、平均値が第２の閾値より小さい場合は、タスク数管理部２４０は、分散システム１０の状態をステージ２と決定する（ステップＡ６）。
【００７８】
一方、ステップＡ４の判定の結果、平均値が第２の閾値以上である場合は、タスク数管理部２４０は、分散システム１０の状態をステージ３と決定する（ステップＡ７）。
【００７９】
次に、タスク数管理部２４０は、ステップＡ５〜Ａ７で決定したステージを電源制御ノード決定部２３１（ノード電源制御部２３０）に通知する（ステップＡ８）。
【００８０】
続いて、電源制御ノード決定部２３１は、決定したステージに応じて、レベル毎の、通常ノード３００の必要数を決定する（ステップＡ９）。具体的には、ステップＡ９では、電源制御ノード決定部２３１は、自身が保持している電源制御判定処理におけるレベル毎の必要ノード数の設定値をステージに応じて変更する。
【００８１】
例えば、電源制御ノード決定部２３１は、ステージ１であれば、レベル１の必要ノード数を少なく設定し、レベル３の必要ノード数を多く設定する。一方、ステージ３であれば、電源制御ノード決定部２３１は、レベル１の必要ノード数を多く設定し、レベル３の必要ノード数を少なく設定する。このように、ステップＡ９の実行により、動的に、各レベルの必要ノード数が変更され、タスク数の変化に対応できるようになる。
【００８２】
次に、電源制御ノード決定部２３１は、情報記憶部２５０に格納されているノード状態情報を更新する（ステップＡ１０）。具体的には、電源制御ノード決定部２３１は、まず停止対象の通常ノード３００の電源状態が停止状態を示すように、ノード状態情報を変更する。
【００８３】
その後、電源制御ノード決定部２３１は、命令通知部２２３を介して、停止対象の通常ノード３００に停止命令を通知する（ステップＡ１１）。ステップＡ１１が実行されると、停止命令を受けた通常ノード３００においては、通信部３１０が停止命令を受信する。これにより、通信部３１０は電源制御部３４０に停止命令を出力し、電源制御部３４０は、停止命令に従って、指定された停止レベルで通常ノード３００が停止するように制御を行なう。
【００８４】
以上のように、本実施の形態では、タスク数の変化に応じて、分散システム１０の稼動状況のステージが判定され、判定結果に応じて、タスクを実行する通常ノード３００の必要数が決定される。本実施の形態によれば、分散システム１０において、処理能力の低下を抑制すると共に、タスク数の変化に対応した省電力化を達成できる。
【００８５】
［プログラム］
本実施の形態におけるプログラムは、コンピュータに、図５に示すステップＡ１〜Ａ１１を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態における管理装置２００を実現することができる。この場合、コンピュータのＣＰＵ（Central Processing Unit）は、ジョブ制御部２２０、タスク数管理部２４０及びノード電源制御部２３０として機能し、処理を行なう。
【００８６】
また、本実施の形態におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、ジョブ制御部２２０、タスク数管理部２４０及びノード電源制御部２３０のいずれかとして機能しても良い。
【００８７】
ここで、本実施の形態におけるプログラムを実行することによって、管理装置２００を実現するコンピュータについて図６を用いて説明する。図６は、本発明の実施の形態における管理装置を実現するコンピュータの一例を示すブロック図である。
【００８８】
図６に示すように、コンピュータ１１０は、ＣＰＵ１１１と、メインメモリ１１２と、記憶装置１１３と、入力インターフェイス１１４と、表示コントローラ１１５と、データリーダ／ライタ１１６と、通信インターフェイス１１７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。
【００８９】
ＣＰＵ１１１は、記憶装置１１３に格納された、本実施の形態におけるプログラム（コード）をメインメモリ１１２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体１２０に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス１１７を介して接続されたインターネット上で流通するものであっても良い。
【００９０】
また、記憶装置１１３の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス１１４は、ＣＰＵ１１１と、キーボード及びマウスといった入力機器１１８との間のデータ伝送を仲介する。表示コントローラ１１５は、ディスプレイ装置１１９と接続され、ディスプレイ装置１１９での表示を制御する。
【００９１】
データリーダ／ライタ１１６は、ＣＰＵ１１１と記録媒体１２０との間のデータ伝送を仲介し、記録媒体１２０からのプログラムの読み出し、及びコンピュータ１１０における処理結果の記録媒体１２０への書き込みを実行する。通信インターフェイス１１７は、ＣＰＵ１１１と、他のコンピュータとの間のデータ伝送を仲介する。
【００９２】
また、記録媒体１２０の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記録媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記録媒体が挙げられる。
【００９３】
なお、本実施の形態における管理装置２００は、プログラムがインストールされたコンピュータではなく、各部に対応したハードウェアを用いることによっても実現可能である。更に、管理装置２００は、一部がプログラムで実現され、残りの部分がハードウェアで実現されていてもよい。
【００９４】
上述した実施の形態の一部又は全部は、以下に記載する（付記１）〜（付記１２）によって表現することができるが、以下の記載に限定されるものではない。
【００９５】
（付記１）
実行対象となるジョブを分散して実行する複数のノードを管理するための装置であって、
実行対象となるジョブを複数のタスクに分割し、前記複数のノードの全部又は一部に、前記タスクの実行を要求する、ジョブ制御部と、
前記ジョブ制御部による分割によって得られたタスクの数の変化を特定する、タスク数管理部と、
特定されたタスク数の変化に応じて、電源状態が起動状態にある前記ノードの必要数を決定し、決定した前記必要数に応じて、前記複数のノードの全部又は一部の電源状態を、起動状態から停止状態又は停止状態から起動状態へと変化させる、ノード電源制御部と、
を備えている、ことを特徴とする管理装置。
【００９６】
（付記２）
前記タスク数管理部が、前記タスクの数の変化に基づいて、前記複数のノードの稼動状況が予め定められているステージのうちのいずれに該当しているかを判定し、
前記ノード電源制御部が、判定されたステージに応じて、電源状態が起動状態にあるノードの必要数を決定する、
付記１に記載の管理装置。
【００９７】
（付記３）
前記タスク数管理部が、前記タスク数の変化から、タスク数の平均値を算出し、算出した前記平均値に基づいて、予め定められているステージのうちのいずれに該当しているかを判断する、
付記２に記載の管理装置。
【００９８】
（付記４）
実行対象となるジョブを分散して実行する複数のノードと、前記複数のノードを管理するための管理装置とを備え、
前記管理装置は、
実行対象となるジョブを複数のタスクに分割し、前記複数のノードの全部又は一部に、前記タスクの実行を要求する、ジョブ制御部と、
前記ジョブ制御部による分割によって得られたタスクの数の変化を特定する、タスク数管理部と、
特定されたタスク数の変化に応じて、電源状態が起動状態にある前記ノードの必要数を決定し、決定した前記必要数に応じて、前記複数のノードの全部又は一部の電源状態を、起動状態から停止状態又は停止状態から起動状態へと変化させる、ノード電源制御部と、
を備えている、ことを特徴とする分散システム。
【００９９】
（付記５）
前記タスク数管理部が、前記タスクの数の変化に基づいて、前記複数のノードの稼動状況が予め定められているステージのうちのいずれに該当しているかを判定し、
前記ノード電源制御部が、判定されたステージに応じて、電源状態が起動状態にあるノードの必要数を決定する、
付記４に記載の分散システム。
【０１００】
（付記６）
前記タスク数管理部が、前記タスク数の変化から、タスク数の平均値を算出し、算出した前記平均値に基づいて、予め定められているステージのうちのいずれに該当しているかを判断する、
付記５に記載の分散システム。
【０１０１】
（付記７）
実行対象となるジョブを分散して実行する複数のノードを管理するための方法であって、
（ａ）実行対象となるジョブを複数のタスクに分割し、前記複数のノードの全部又は一部に、前記タスクの実行を要求する、ステップと、
（ｂ）前記（ａ）のステップによる分割によって得られたタスクの数の変化を特定する、ステップと、
（ｃ）前記（ｂ）のステップで特定されたタスク数の変化に応じて、電源状態が起動状態にある前記ノードの必要数を決定し、決定した前記必要数に応じて、前記複数のノードの全部又は一部の電源状態を、起動状態から停止状態又は停止状態から起動状態へと変化させる、ステップと、
を有する、ことを特徴とする管理方法。
【０１０２】
（付記８）
前記（ｂ）のステップにおいて、前記タスクの数の変化に基づいて、前記複数のノードの稼動状況が予め定められているステージのうちのいずれに該当しているかを判定し、
前記（ｃ）のステップにおいて、判定されたステージに応じて、電源状態が起動状態にあるノードの必要数を決定する、
付記７に記載の管理方法。
【０１０３】
（付記９）
前記（ｂ）のステップにおいて、前記タスク数の変化から、タスク数の平均値を算出し、算出した前記平均値に基づいて、予め定められているステージのうちのいずれに該当しているかを判断する、
付記８に記載の管理方法。
【０１０４】
（付記１０）
コンピュータによって、実行対象となるジョブを分散して実行する複数のノードを管理するためのプログラムであって、
前記コンピュータに、
（ａ）実行対象となるジョブを複数のタスクに分割し、前記複数のノードの全部又は一部に、前記タスクの実行を要求する、ステップと、
（ｂ）前記（ａ）のステップによる分割によって得られたタスクの数の変化を特定する、ステップと、
（ｃ）前記（ｂ）のステップで特定されたタスク数の変化に応じて、電源状態が起動状態にある前記ノードの必要数を決定し、決定した前記必要数に応じて、前記複数のノードの全部又は一部の電源状態を、起動状態から停止状態又は停止状態から起動状態へと変化させる、ステップと、
を実行させるプログラム。
【０１０５】
（付記１１）
前記（ｂ）のステップにおいて、前記タスクの数の変化に基づいて、前記複数のノードの稼動状況が予め定められているステージのうちのいずれに該当しているかを判定し、
前記（ｃ）のステップにおいて、判定されたステージに応じて、電源状態が起動状態にあるノードの必要数を決定する、
付記１０に記載のプログラム。
【０１０６】
（付記１２）
前記（ｂ）のステップにおいて、前記タスク数の変化から、タスク数の平均値を算出し、算出した前記平均値に基づいて、予め定められているステージのうちのいずれに該当しているかを判断する、
付記１１に記載のプログラム。
【産業上の利用可能性】
【０１０７】
以上のように、本発明によれば、分散システムにおいて、タスク数の変化に対応して、省電力化を達成しつつ、処理能力の低下を抑制することができる。本発明は、分散システムに有用である。
【符号の説明】
【０１０８】
１０  分散システム
１００  クライアントノード
１１０  コンピュータ
１１１  ＣＰＵ
１１２  メインメモリ
１１３  記憶装置
１１４  入力インターフェイス
１１５  表示コントローラ
１１６  データリーダ／ライタ
１１７  通信インターフェイス
１１８  入力機器
１１９  ディスプレイ装置
１２０  記録媒体
１２１  バス
２００  管理装置
２１０  ジョブ受信部
２２０  ジョブ制御部
２２１  ジョブ分解部
２２２  タスク配置決定部
２２３  命令通知部
２３０  ノード電源制御部
２３１  電源制御ノード決定部
２４０  タスク数管理部
２５０  情報記憶部
３００  通常ノード
４００  ネットワーク
【図１】
2018151968.tif 000003
【図２】
2018151968.tif 000004
【図３】
2018151968.tif 000005
【図４】
2018151968.tif 000006
【図５】
2018151968.tif 000007
【図６】
2018151968.tif 000008