(57)【要約】  要求性能を満たす最低限のサーバ（処理ノード）の稼動計画を作成し、稼動する必要のないサーバの電源を切ることによって、消費電力や計算機リソースを節約する。具体的には、マシン稼動計画作成装置は、時間帯別の必要マシン台数と、１から順に番号付けられたマシンの識別子とを比較し、マシンの識別子の方が大きくない場合に当該マシンの稼動が必要と判定する。また、各マシンが複数の時間帯を持つ時、複数の時間帯を連結して、複数の時間帯の個数を削減する。このとき、２つの時間帯が時間的に連続している場合に、２つの時間帯を連結し、新たな時間帯とする。或いは、複数の時間帯の中から、最初の時間帯の開始時刻と、最後の時間帯の終了時刻を取り出し、開始時刻から終了時刻までを新たな時間帯とする。更に、時間帯別の必要マシン台数のリストから、必要マシン台数の最大値を算出する。
2011118424.tif 000002
【特許請求の範囲】
【請求項１】
時間帯別の必要マシン台数を格納する時間帯別必要マシン数記憶部と、
前記時間帯別の必要マシン台数と、１から順に番号付けられたマシン識別子とを比較し、前記マシン識別子の方が大きくない場合、前記マシン識別子に対応するマシンの稼動が必要と判定する稼働時間帯判定処理部と
を具備する
マシン稼動計画作成装置。
【請求項２】
請求項１に記載のマシン稼動計画作成装置であって、
マシン毎に複数の稼働時間帯が存在する場合、前記複数の稼働時間帯を連結して、前記複数の稼働時間帯の個数を削減する稼働時間帯連結処理部
を更に具備する
マシン稼動計画作成装置。
【請求項３】
請求項２に記載のマシン稼動計画作成装置であって、
前記稼働時間帯連結処理部は、前記複数の稼働時間帯のうち、２つの稼働時間帯が時間的に連続している場合、前記２つの稼働時間帯を連結し、新たな稼働時間帯とする
マシン稼動計画作成装置。
【請求項４】
請求項２に記載のマシン稼動計画作成装置であって、
前記稼働時間帯連結処理部は、前記複数の稼働時間帯の中から、最初の時間帯の開始時刻と、最後の時間帯の終了時刻を取り出し、前記開始時刻から前記終了時刻までを新たな稼働時間帯とする
マシン稼動計画作成装置。
【請求項５】
請求項１乃至４のいずれか一項に記載のマシン稼動計画作成装置であって、
前記時間帯別の必要マシン台数から、必要マシン台数の最大値を算出する最大必要マシン数算出処理部
を更に具備し、
前記稼働時間帯判定処理部は、前記必要マシン台数の最大値と、前記マシン識別子とを比較し、前記マシン識別子の方が大きい場合、処理結果を出力する
マシン稼動計画作成装置。
【請求項６】
計算機により実施されるマシン稼動計画作成方法であって、
時間帯別の必要マシン台数と、１から順に番号付けられたマシン識別子とを比較することと、
前記マシン識別子の方が大きくない場合、前記マシン識別子に対応するマシンの稼動が必要と判定することと
を含む
マシン稼動計画作成方法。
【請求項７】
請求項６に記載のマシン稼動計画作成方法であって、
マシン毎に複数の稼働時間帯が存在する場合、前記複数の稼働時間帯を連結して、前記複数の稼働時間帯の個数を削減すること
を更に含む
マシン稼動計画作成方法。
【請求項８】
請求項７に記載のマシン稼動計画作成方法であって、
前記複数の稼働時間帯の個数を削減する際に、前記複数の稼働時間帯のうち、２つの稼働時間帯が時間的に連続している場合、前記２つの稼働時間帯を連結し、新たな稼働時間帯とすること
を更に含む
マシン稼動計画作成方法。
【請求項９】
請求項７に記載のマシン稼動計画作成方法であって、
前記複数の稼働時間帯の個数を削減する際に、前記稼働時間帯連結処理部は、前記複数の稼働時間帯の中から、最初の時間帯の開始時刻と、最後の時間帯の終了時刻を取り出し、前記開始時刻から前記終了時刻までを新たな稼働時間帯とすること
を更に含む
マシン稼動計画作成方法。
【請求項１０】
請求項６乃至９のいずれか一項に記載のマシン稼動計画作成方法を、計算機に実行させるためのマシン稼動計画作成用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マシン稼動計画作成装置に関し、特にＷｅｂシステム等のサーバの稼動計画を作成するためのマシン稼動計画作成装置に関する。
【背景技術】
【０００２】
特許文献１（特許第３００３４４０号公報）には、負荷分散制御方法の一部として、運行計画作成支援機能が開示されている。ここでいう負荷分散とは、複数ある業務の各業務を、複数の処理ノードに適切に割り当てて処理させることを意味する。特許文献１の負荷分散制御方法は、どの業務をどのノードに割り当てるかを定めた業務マッピングテーブルを複数用意し、各時間帯にどの業務マッピングテーブルを参照するかを定めた運行管理テーブルを基に、ノードのユーザから受信したリクエストをどのノードが処理すればよいかを決定する。このようにすることで、時間帯毎に異なるそれぞれの業務の負荷を柔軟に分散させることができる。【０００３】
運行計画作成支援機能は、これら業務マッピングテーブルと運行管理テーブルの作成を支援する機能である。本機能は、各時間帯の各業務の負荷がどれくらいかを定義及び表示する負荷特性定義画面と、ユーザが手動で行った業務割当ての結果、各ノードの負荷率がどのくらいになるかを示すシミュレータ画面を提供する。これらの画面を参照しながら、ユーザは各時間帯の業務の割当てを試行錯誤できるため、各ノードの負荷が均等になるような割当て方法を早く見つけることができる。【０００４】
また、特許文献２（特開２００５−１４１４４１号公報）には、負荷分散システムが用いるサービスサーバ運転計画表が開示されている。負荷分散システムが備える管理サーバ装置は、各時間帯のアクセス統計を基に、リクエストを何台のサーバに振り分けるかを表す振り分け台数と、台数分のサーバのアドレスを設定する。このときのサーバの割当て方法として、常にアドレスの小さい方から割り当てる方法や、最後に割り当てたサーバのアドレスを基準に割り当てるローテーション方式が記載されている。【０００５】
特許文献１の問題点は、計算機の支援を受けてはいるものの、サーバ（処理ノード）の運行計画を人間が試行錯誤で作成しなければならない点にある。【０００６】
特許文献２の問題点は、ＩＰアドレスを使って割当て先を決めるため、複数のＩＰアドレスを持つサーバや、ＩＰアドレスが割り当てられていないサーバに関する運行計画を作成できない点にある。また、ＩＰアドレスは単純な数値でないため、ＩＰアドレスの大小を比較するための演算を別途定義しなくてはならないという問題点もある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第３００３４４０号公報
【特許文献２】特開２００５−１４１４４１号公報
【発明の概要】
【０００８】
本発明の目的は、ＩＰアドレスのような識別子を参照することなく、要求性能を満たす最低限のサーバ台数に基づく稼動計画を作成するマシン稼動計画作成装置を提供することにある。
【０００９】
本発明のマシン稼動計画作成装置は、時間帯別の必要マシン台数を格納する時間帯別必要マシン数記憶部と、時間帯別の必要マシン台数と、１から順に番号付けられたマシン識別子とを比較し、マシン識別子の方が大きくない場合、マシン識別子に対応するマシンの稼動が必要と判定する稼働時間帯判定処理部とを具備する。
【００１０】
本発明のマシン稼動計画作成方法は、時間帯別の必要マシン台数と、１から順に番号付けられたマシン識別子とを比較することと、マシン識別子の方が大きくない場合、マシン識別子に対応するマシンの稼動が必要と判定することとを含む。
【００１１】
本発明のマシン稼動計画作成用プログラムは、上記のマシン稼動計画作成方法を、計算機に実行させるためのプログラムである。なお、本発明のマシン稼動計画作成用プログラムは、記憶装置や記憶媒体に格納することが可能である。
【００１２】
要求性能を満たすにあたって稼働する必要のないマシンを停止させ、消費電力や計算機リソースを節約することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１実施形態におけるマシン稼動計画作成装置の構成を示すブロック図である。
【図２Ａ】時間帯別必要スループットをテーブル上に表現した例を示す図である。
【図２Ｂ】時間帯別必要マシン数をテーブル上に表現した例を示す図である。
【図３】第１実施形態におけるマシン稼動計画作成装置の処理を示すフローチャートである。
【図４】マシンが仮想マシン（ＶＭ）である場合の稼動時間帯判定結果（稼動計画）の例を示す図である。
【図５】本発明の第２実施形態における稼動計画作成処理部の構成を示すブロック図である。
【図６】第２実施形態における稼動計画作成処理部の処理を示すフローチャートである。
【図７】第２実施形態における稼動計画作成処理部の処理を示すフローチャートである。
【図８Ａ】第２実施形態における第１の連結処理を用いた場合の連結結果の例を示す図である。
【図８Ｂ】第２実施形態における第２の連結処理を用いた場合の連結結果の例を示す図である。
【発明を実施するための形態】
【００１４】
＜第１実施形態＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
図１に示すように、本発明の第１実施形態におけるマシン稼動計画作成装置は、記憶装置１０と、処理装置２０と、出力装置３０を備える。
【００１５】
記憶装置１０は、時間帯別必要マシン数記憶部１１を備える。
【００１６】
時間帯別必要マシン数記憶部１１は、時間帯別必要マシン数に関するデータを格納する。
【００１７】
時間帯別必要マシン数は、各時間帯に何台のマシンが必要かを表す数値である。通常、時間帯別必要マシン数は、時間帯別必要スループットに関するデータから導かれる。時間帯別必要スループットは、各時間帯にどの程度のスループットが必要かを表す数値である。
【００１８】
ここでいう「マシン」とは、物理的な実体のある物理マシン（ＰＭ：Ｐｈｙｓｉｃａｌ  Ｍａｃｈｉｎｅ）や、仮想化技術によって物理マシン上にソフトウェア的に実現された仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）のことである。これらのマシンは、サーバとして利用される場合、それぞれ物理サーバや仮想サーバと呼ばれる。
【００１９】
Ｗｅｂサービス等を提供するサーバは、クライアントから発行されるリクエストに対して所定の処理を行い、処理の結果をレスポンスとしてクライアントに返す。スループット（ＴＰ：Ｔｈｒｏｕｇｈｐｕｔ）は、サーバが単位時間（例えば、１秒や１分）あたりに処理するリクエストの個数を表し、その単位はｔｐｓ（ｔｒａｎｓａｃｔｉｏｎｓ  ｐｅｒ  ｓｅｃｏｎｄ）やｔｐｍ（ｔｒａｎｓａｃｔｉｏｎｓ  ｐｅｒ  ｍｉｎｕｔｅ）等である。
【００２０】
所定のプロセッサやメモリ等に関する既定のリソースを備えたマシンが、既定のサービスを既定の品質で提供する場合、マシンのスループットは、ほぼ一定である。１マシン（１台のマシン）で必要なスループットを実現できない場合は、複数台のマシンを用意してクラスタ化する。クラスタ化された複数台のマシンの各々は、リクエストの処理をクラスタ内で分担する負荷分散を行う。
【００２１】
図２Ａは、時間帯別必要スループットをテーブル上に表現した例を示す。また、図２Ｂは、時間帯別必要マシン数をテーブル上に表現した例を示す。処理の都合上、各時間帯には一意のＩＤ（ｉｄｅｎｔｉｆｉｅｒ：識別子）が付与されている。
【００２２】
図２Ａ、図２Ｂの例は、１マシンのスループットが「６０ｔｐｓ」だと仮定した場合の、時間帯別必要スループット（図２Ａ）と時間帯別必要マシン数（図２Ｂ）の関係を表している。例えば、時間帯１（０：００〜４：００）のように、時間帯別必要スループットが「１１０ｔｐｓ」で、１マシンあたり「６０ｔｐｓ」の性能が得られる場合、時間帯別必要マシン数は、「１１０／６０」を切り上げで計算した値「２」となる。なお、時間帯１は、時間帯ＩＤが「１」のものを示す。
【００２３】
処理装置２０は、最大必要マシン数算出処理部２１と、稼動計画作成処理部２２を備える。
【００２４】
最大必要マシン数算出処理部２１は、時間帯別必要マシン数のデータを取得し、最大必要マシン数Ｎとして、各時間帯の必要マシン数のうちの最大値を算出する。
【００２５】
稼動計画作成処理部２２は、時間帯別必要マシン数と、時間帯数と、最大必要マシン数を取得する。
【００２６】
稼動計画作成処理部２２は、稼動時間帯判定処理部２２１を備える。
【００２７】
稼動時間帯判定処理部２２１は、時間帯別必要マシン数と、時間帯数と、最大必要マシン数に基づいて、稼動計画を作成する。
【００２８】
出力装置３０は、処理装置２０から稼動計画を受け取り、稼動計画を表示／印刷／保存する。或いは、出力装置３０は、稼動計画の内容に応じた処理を行うようにしても良い。例えば、出力装置３０は、要求性能を満たすにあたって稼働する必要のないマシンの電源を切ることによって、マシンを停止させるようにしても良い。なお、出力装置３０自体が稼働する必要のないマシンとなる場合は、出力装置３０は、処理装置２０から稼動計画に基づく電源ＯＦＦの命令（コマンド）や信号を受け取り、電源を切るようにしても良い。
【００２９】
［ハードウェアの例示］
マシン稼動計画作成装置の例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、シンクライアントサーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。なお、マシン稼動計画作成装置は、物理マシン上で動作する仮想マシン（ＶＭ）でも良い。
【００３０】
記憶装置１０の例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のリムーバブルディスクやＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等の記憶媒体（メディア）等が考えられる。また、記憶装置１０は、計算機本体に内蔵された記憶装置に限らず、周辺機器（外付けＨＤＤ等）や外部のサーバ（Ｗｅｂサーバやファイルサーバ等）に設置された記憶装置、或いは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＦＣ−ＳＡＮ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＩＰ−ＳＡＮ（ＩＰ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を用いたストレージ装置でも良い。また、レジスタ（ｒｅｇｉｓｔｅｒ）でも良い。
【００３１】
処理装置２０の例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ））等が考えられる。
【００３２】
また、記憶装置１０、及び処理装置２０は、一体化していても良い。例えば、近年では、マイコン等の１チップ化が進んでいる。従って、本発明のマシン稼動計画作成装置に搭載される１チップマイコンが、記憶装置１０、及び処理装置２０を備えている事例も考えられる。
【００３３】
また、記憶装置１０、及び処理装置２０は、それぞれ独立した計算機でも良い。
【００３４】
出力装置３０の例として、ＬＣＤ（液晶ディスプレイ）やＰＤＰ（プラズマディスプレイ）、有機ＥＬディスプレイ（ｏｒｇａｎｉｃ  ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ  ｄｉｓｐｌａｙ）等の表示装置、出力内容を用紙等に印刷するプリンタ等の印刷装置、又は、出力内容を壁やスクリーンに投影するプロジェクタ等の映写装置等が考えられる。或いは、出力装置３０は、外部の表示装置や記憶装置に情報を出力するためのインターフェース（Ｉ／Ｆ：ｉｎｔｅｒｆａｃｅ）でも良い。更に、出力装置３０は、他の計算機でも良い。
【００３５】
最大必要マシン数算出処理部２１、及び稼動計画作成処理部２２は、それぞれ機能単位のモジュールである。最大必要マシン数算出処理部２１、及び稼動計画作成処理部２２は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリによって実現される。或いは、最大必要マシン数算出処理部２１、及び稼動計画作成処理部２２は、専用の機能を有する半導体集積回路（ＩＣ）でも良い。
【００３６】
但し、実際には、これらの例に限定されない。
【００３７】
［マシン稼動計画作成処理］
図３を参照して、本実施形態に係るマシン稼動計画作成処理を説明する。
【００３８】
ここでは、時間帯別必要マシン数は、予め記憶装置１０の時間帯別必要マシン数記憶部１１に格納されているものとする。
【００３９】
（１）ステップＳ１０１
まず、最大必要マシン数算出処理部２１は、時間帯別必要マシン数のデータを取得し、最大必要マシン数Ｎとして、各時間帯の必要マシン数のうちの最大値を算出する。図２Ａ、図２Ｂの例では、最大必要マシン数Ｎは、時間帯３（８：００〜１２：００）における必要マシン数「４」である（Ｎ＝４）。
【００４０】
（２）ステップＳ１０２
次に、稼動計画作成処理部２２は、時間帯別必要マシン数と、時間帯数Ｔと、最大必要マシン数Ｎを取得する。時間帯数Ｔは、時間帯の個数を表す。図２Ａ、図２Ｂの例では、時間帯数Ｔは、時間帯のエントリの総数「６」である（Ｔ＝６）。
【００４１】
稼動計画作成処理部２２の一部である稼動時間帯判定処理部２２１は、ステップＳ１０３以降の処理を行うことで、稼動計画を作成する。ステップＳ１０３以降では、最大でＮとなるｉ（１≦ｉ≦Ｎ）と、最大でＴとなるｊ（１≦ｊ≦Ｔ）を用いて、時間帯ｊにおける必要マシン数がＸであれば、マシン１〜Ｘの稼動が必要という判定を行っている。この判定結果に基づいて、処理装置２０は、マシン１〜Ｘの稼動を実行する。ここでは、ｉは、マシンＩＤを示す変数である。マシンＩＤは、１からＮまで１つずつ昇順に割り当てられているものとする。マシンｉは、マシンＩＤがｉであるマシンを示す。ｊは、時間帯ＩＤを示す変数である。時間帯ＩＤは、１からＴまで１つずつ昇順に割り当てられているものとする。時間帯ｊは、時間帯ＩＤがｊである時間帯を示す。
【００４２】
（３）ステップＳ１０３
稼動時間帯判定処理部２２１は、ｉに対して１を代入し、初期化する。
【００４３】
（４）ステップＳ１０４
稼動時間帯判定処理部２２１は、「ｉ≦最大必要マシン数Ｎ」が成立するか確認する。「ｉ≦最大必要マシン数Ｎ」が成立すれば、ステップＳ１０５に移行する。「ｉ≦最大必要マシン数Ｎ」が成立せず、「ｉ＞最大必要マシン数Ｎ」が成立すれば、処理を終了し、稼動時間帯判定結果を、稼動計画として出力する。
【００４４】
（５）ステップＳ１０５
稼動時間帯判定処理部２２１は、ｊに対して１を代入し、初期化する。
【００４５】
（６）ステップＳ１０６
稼動時間帯判定処理部２２１は、「ｊ≦時間帯数Ｔ」が成立するか確認する。「ｊ≦時間帯数Ｔ」が成立すれば、ステップＳ１０７に移行する。「ｊ≦時間帯数Ｔ」が成立しなければ、ステップＳ１１０に移行する。
【００４６】
（７）ステップＳ１０７
稼動時間帯判定処理部２２１は、「時間帯ｊの必要マシン数がｉ以上」であるか確認する。「時間帯ｊの必要マシン数がｉ以上」であれば、ステップＳ１０８に移行する。「時間帯ｊの必要マシン数がｉ以上」でなければ、ステップＳ１０９に移行する。
【００４７】
（８）ステップＳ１０８
稼動時間帯判定処理部２２１は、「時間帯ｊの必要マシン数がｉ以上」であれば、マシンｉを時間帯ｊで稼動させる必要があると判定する。例えば、「ｉ＝１」の場合、マシン１を時間帯ｊで稼動させる。
【００４８】
（９）ステップＳ１０９
稼動時間帯判定処理部２２１は、ｊの値を１だけ繰り上げる（ｉｎｃｒｅｍｅｎｔ）。その後、ステップＳ１０６に移行する。
【００４９】
（１０）ステップＳ１１０
稼動時間帯判定処理部２２１は、ｉの値を１だけ繰り上げる（ｉｎｃｒｅｍｅｎｔ）。その後、ステップＳ１０４に移行する。
【００５０】
ここでは、「ｉ≦Ｎ」のループを先に実行し、「ｊ≦Ｔ」のループをその中で実行することで、マシン毎に（１台ずつ）、全ての時間帯を対象に、各時間帯において当該マシンの稼動が必要か判定を行うようにしている。但し、実際には、「ｊ≦Ｔ」のループを先に実行し、「ｉ≦Ｎ」のループをその中で実行することで、時間帯毎に、全てのマシンを対象に、当該時間帯において各マシンの稼動が必要か判定を行うようにすることも可能である。すなわち、ステップＳ１０３とステップＳ１０５を入れ替え、ステップＳ１０４とステップＳ１０６を入れ替え、ステップＳ１０９とステップＳ１１０を入れ替えても良い。どちらであっても、本質的に違いは無い。
【００５１】
［稼動時間帯判定処理の詳細］
図３のステップＳ１０３以降の具体的な処理について、図２Ａ、図２Ｂの例を用いて説明する。本例では、「最大必要マシン数Ｎ＝４、時間帯数Ｔ＝６」である。また、図４は、マシンが仮想マシン（ＶＭ）である場合の稼動時間帯判定結果（稼動計画）の１例である。
【００５２】
ステップＳ１０３では、稼動時間帯判定処理部２２１は、マシンＩＤを示す変数であるｉの値を１に初期化する（ｉ＝１）。次のステップＳ１０４では、「ｉ＝１、Ｎ＝４」であるため、「ｉ≦Ｎ」（１≦４）が成立し、ステップＳ１０５を実行し、時間帯ＩＤを示す変数であるｊの値を１に初期化する（ｊ＝１）。
【００５３】
続くステップＳ１０６では、「ｊ＝１、Ｔ＝６」であるため、「ｊ≦Ｔ」（１≦６）が成立し、ステップＳ１０７の判定を行う。ステップＳ１０７では、「時間帯１の必要マシン数＝２、ｉ＝１」であるため、「時間帯ｊの必要マシン数≧ｉ」（２≧１）が成立する。次のステップＳ１０８では、マシン１を時間帯１で稼動させる必要があると判定する。
【００５４】
次のステップＳ１０９では、ｊの値を１つ増加させて（ｊ＝２）、次の時間帯２に関して、同様に、ステップＳ１０６以降を実行する。この「ｊ＝２」の場合も、ステップＳ１０８において、マシン１を時間帯２で稼動させる必要があると判定する。「ｊ＝３〜６」の場合も同様である。すなわち、ステップＳ１０８において、マシン１を時間帯３〜６で稼動させる必要があると判定する。
【００５５】
図４の表（テーブル）のＶＭ─１の列が、「ｉ＝１」のときの実行結果を表している。ＶＭ─１は、マシン１に相当する。表中の「○」はマシンの稼動が必要であることを意味し、表中の「×」はマシンの稼動が必要ないことを意味する。
【００５６】
ステップＳ１０６以降の６回目のループが完了し、「ｊ＝７」となると、ステップＳ１０６において、「ｊ＝７、Ｔ＝６」であり、「ｊ＞Ｔ」（７＞６）であるため、ｊ≦Ｔが不成立となり、ステップＳ１１０を実行し、ｉの値を１つ増加させて「ｉ＝２」とする。その後、ステップＳ１０４以降のループを再度実行する。
【００５７】
「変数ｉ＝２〜４」のときのステップＳ１０４以降のループの処理によって、図４のＶＭ─２〜４の列が得られる。ＶＭ─２〜４は、マシン２〜４に相当する。その次の「ｉ＝５」のときのループでは、ステップＳ１０４において、「ｉ＝５、Ｎ＝４」であり、「ｉ＞Ｎ」（５＞４）であるため、「ｉ≦Ｎ」が不成立となり、全体の処理を終了する。その結果、図４のＶＭ─１〜４の列が全て得られる。
【００５８】
上記の稼動時間帯判定処理の終了後、処理装置２０は、得られた稼動時間帯判定結果を、稼動計画として、出力装置３０に出力する。或いは、処理装置２０は、得られた稼動時間帯判定結果に基づく命令（コマンド）や信号を、稼動計画として、出力装置３０に出力するようにしても良い。
【００５９】
以上に説明した手続きにより、時間帯毎の必要マシン数とマシンのＩＤとに基づいて、稼動する必要のあるマシンと、必要のないマシンを示す稼動計画が提供される。この情報を参照することにより、要求性能を満たすにあたって稼動する必要のないマシンを停止させ、消費電力や計算機リソースを節約することが可能となる。
【００６０】
また、もう１つの効果として、本発明によれば、所定の台数のマシンが必要な時間帯で稼動するマシンが常に同一になるため、負荷分散のために必要な設定作業を削減できる。図４の例では、２台のマシンが必要な時間帯１と時間帯６では、どちらもマシン１とマシン２が稼動する計画が立てられる。
【００６１】
クライアントから到着するリクエストを振り分けて負荷分散するには、ロードバランサ（Ｌｏａｄ  Ｂａｌａｎｃｅｒ）と呼ばれる負荷分散装置に対して、どのマシンにリクエストを転送すべきかを、マシンのＩＰアドレス等を使って設定しなければならない。従って、２台の負荷分散を行う場合でも、その２台が別の組合せであれば、異なる設定が必要となる。本発明によれば、このような無駄が排除できる。
【００６２】
＜第２実施形態＞
以下に、本発明の第２実施形態について添付図面を参照して説明する。
本実施形態では、第１実施形態において得られた稼動時間帯判定結果（稼動計画）に基づいて、稼動時間帯連結結果を作成する。
【００６３】
本実施形態は、稼動計画作成処理部２２が、稼動時間帯判定処理部２２１に加えて、稼動時間帯連結処理部２２２を更に備える点で、第１実施形態と異なる。他の点は、第１実施形態と同じである。
【００６４】
図５に示すように、本発明の第２実施形態におけるマシン稼動計画作成装置は、記憶装置１０と、処理装置２０と、出力装置３０を備える。
【００６５】
記憶装置１０及び出力装置３０は、基本的に、第１実施形態と同じである。
【００６６】
処理装置２０は、最大必要マシン数算出処理部２１と、稼動計画作成処理部２２を備える。
【００６７】
稼動計画作成処理部２２は、稼動時間帯判定処理部２２１と、稼動時間帯連結処理部２２２を備える。
【００６８】
最大必要マシン数算出処理部２１及び稼動時間帯判定処理部２２１は、基本的に、第１実施形態と同じである。
【００６９】
稼動時間帯連結処理部２２２は、第１実施形態において稼動時間帯判定処理部２２１が作成した稼動時間帯判定結果を入力とし、稼動時間帯連結結果を作成する。
【００７０】
［稼動時間帯連結処理］
図６及び図７は、本実施形態に係る稼動時間帯連結処理部２２２の２種類の処理内容を示すフローチャートである。図６は、第１の連結処理を示すフローチャートである。図７は、第２の連結処理を示すフローチャートである。
【００７１】
図８Ａの表（テーブル）は、図４に示す稼動時間帯判定結果を入力として、第１の連結処理（図６）を用いた場合の連結結果を表し、図８Ｂの表（テーブル）は、図４に示す稼動時間帯判定結果を入力として、第２の連結処理（図７）を用いた場合の連結結果を表している。
【００７２】
［第１の連結処理］
最初に、図６を参照して、第１の連結処理について説明する。
【００７３】
（１）ステップＳ２０１
稼動時間帯連結処理部２２２は、ｉに対して１を代入し、初期化する。
【００７４】
（２）ステップＳ２０２
稼動時間帯連結処理部２２２は、「ｉ≦最大必要マシン数Ｎ」が成立するか確認する。「ｉ≦最大必要マシン数Ｎ」が成立すれば、ステップＳ２０３に移行する。「ｉ≦最大必要マシン数Ｎ」が成立せず、「ｉ＞最大必要マシン数Ｎ」が成立すれば、処理を終了し、稼動時間帯判定結果を作成する。
【００７５】
（３）ステップＳ２０３
稼動時間帯連結処理部２２２は、マシンｉの稼動時間帯をＩＤ順に列挙する。例えば、稼動時間帯連結処理部２２２は、時間帯ＩＤの昇順／降順に、稼動時間帯を列挙する。
【００７６】
（４）ステップＳ２０４
稼動時間帯連結処理部２２２は、隣接する２つの稼動時間帯が存在するか確認する。隣接する２つの稼動時間帯が存在する場合、ステップＳ２０５に移行する。隣接する２つの稼動時間帯が存在しない場合、ステップＳ２０７に移行する。
【００７７】
（５）ステップＳ２０５
稼動時間帯連結処理部２２２は、隣接する２つの稼動時間帯が時間的に連続しているか確認する。隣接する２つの稼動時間帯が時間的に連続している場合、ステップＳ２０６に移行する。隣接する２つの稼動時間帯が時間的に連続していない場合、ステップＳ２０４に移行する。
【００７８】
（６）ステップＳ２０６
稼動時間帯連結処理部２２２は、隣接する２つの稼動時間帯を連結する。その後、ステップＳ２０４に移行する。
【００７９】
（７）ステップＳ２０７
稼動時間帯連結処理部２２２は、ｉの値を１だけ繰り上げる（ｉｎｃｒｅｍｅｎｔ）。その後、ステップＳ２０２に移行する。
【００８０】
［第２の連結処理］
次に、図７を参照して、第２の連結処理について説明する。
【００８１】
（１）ステップＳ３０１
稼動時間帯連結処理部２２２は、ｉに対して１を代入し、初期化する。
【００８２】
（２）ステップＳ３０２
稼動時間帯連結処理部２２２は、「ｉ≦最大必要マシン数Ｎ」が成立するか確認する。「ｉ≦最大必要マシン数Ｎ」が成立すれば、ステップＳ３０３に移行する。「ｉ≦最大必要マシン数Ｎ」が成立せず、「ｉ＞最大必要マシン数Ｎ」が成立すれば、処理を終了し、稼動時間帯判定結果を作成する。
【００８３】
（３）ステップＳ３０３
稼動時間帯連結処理部２２２は、マシンｉの稼動時間帯をＩＤ順に列挙する。例えば、稼動時間帯連結処理部２２２は、時間帯ＩＤの昇順／降順に、稼動時間帯を列挙する。
【００８４】
（４）ステップＳ３０４
稼動時間帯連結処理部２２２は、最初の稼動時間帯の稼動開始時刻から、最後の稼動時間帯の稼動終了時刻までを、新たな稼動時間帯とする。すなわち、稼動時間帯連結処理部２２２は、最初の稼動時間帯から最後の稼動時間帯までの全ての稼動時間帯を連結する。
【００８５】
（５）ステップＳ３０５
稼動時間帯連結処理部２２２は、ｉの値を１だけ繰り上げる（ｉｎｃｒｅｍｅｎｔ）。その後、ステップＳ３０２に移行する。
【００８６】
［第１の連結処理の詳細］
図６に示す第１の連結処理の具体的な処理について、図４に示す稼動時間帯判定結果の例を用いて、本実施形態に係る稼動時間帯連結処理部２２２の具体的な処理について説明する。本例では、第１実施形態と同様、「最大必要マシン数Ｎ＝４、時間帯数Ｔ＝６」である。
【００８７】
ステップＳ２０１では、稼動時間帯連結処理部２２２は、マシンのＩＤに対応するｉを１に初期化する（ｉ＝１）。次のステップＳ２０２では、「ｉ＝１、Ｎ＝４」であり、「ｉ≦Ｎ」（１≦４）が成立するため、ステップＳ２０３を実行する。
【００８８】
ステップＳ２０３では、稼動時間帯連結処理部２２２は、マシン１の稼動時間帯をＩＤ順に列挙する。
【００８９】
図４の例では、稼動時間帯をＩＤ順に列挙すると、以下のようになる。
（１）時間帯０：００〜４：００
（２）時間帯４：００〜８：００
（３）時間帯８：００〜１２：００
（４）時間帯１２：００〜１６：００
（５）時間帯１６：００〜２０：００
（６）時間帯２０：００〜２４：００
【００９０】
続くステップＳ２０４では、稼動時間帯連結処理部２２２は、隣接する２つの稼動時間帯を先頭から順に取り出す。その後、ステップＳ２０５では、取り出した２つの稼動時間帯が連続しているかどうか判定する。まず、時間帯０：００〜４：００と時間帯４：００〜８：００を取り出す。時間帯０：００〜４：００と時間帯４：００〜８：００は時間的に連続しているため、ステップＳ２０５の条件が成立する。従って、ステップＳ２０６において、時間帯０：００〜４：００と時間帯４：００〜８：００を連結し、時間帯０：００〜８：００とする。
【００９１】
再度ステップＳ２０４に戻り、今度は連結された時間帯０：００〜８：００と、これに隣接する時間帯８：００〜１２：００について、ステップＳ２０５の判定を行う。時間帯０：００〜８：００と時間帯８：００〜１２：００は時間的に連続しているため、ステップＳ２０５の条件が成立する。従って、ステップＳ２０６において、時間帯０：００〜８：００と時間帯８：００〜１２：００を連結し、時間帯０：００〜１２：００とする。
【００９２】
同様に、ステップＳ２０４〜Ｓ２０６の処理を繰り返し、最終的にマシン１の稼動時間帯を、時間帯０：００〜２４：００とする。すなわち、マシン１は常時稼動することになる。図８Ａの表（テーブル）のＶＭ─１の行が、連結の結果として得られるマシン１（ＶＭ─１）の稼動時間帯を表している。
【００９３】
マシン１に関して、隣接する２つの時間帯の処理が全て完了すると、ステップＳ２０４の条件が不成立となり、次にステップＳ２０７を実行する。ステップＳ２０７では、ｉの値を１つ増加させて（ｉ＝２）、ステップＳ２０２以降のループを再度実行する。
【００９４】
マシン２（ＶＭ─２）に関する次のステップＳ２０２では、「ｉ＝２、Ｎ＝４」であり、「ｉ≦Ｎ」（２≦４）が成立するため、ステップＳ２０３を実行する。
【００９５】
ステップＳ２０３では、稼動時間帯連結処理部２２２は、マシン２の稼動時間帯を次のように列挙する。
（１）時間帯０：００〜４：００
（２）時間帯８：００〜１２：００
（３）時間帯１２：００〜１６：００
（４）時間帯２０：００〜２４：００
【００９６】
続くステップＳ２０４で、隣接する時間帯０：００〜４：００と時間帯８：００〜１２：００が取り出されるが、時間帯０：００〜４：００と時間帯８：００〜１２：００は時間的に連続していないため、ステップＳ２０５の条件は成立せず、ステップＳ２０４に戻る。
【００９７】
２回目のステップＳ２０４では、次の隣接する時間帯８：００〜１２：００と時間帯１２：００〜１６：００について、ステップＳ２０５の判定を行う。時間帯８：００〜１２：００と時間帯１２：００〜１６：００は時間的に連続しているため、ステップＳ２０５の条件が成立し、時間帯８：００〜１２：００と時間帯１２：００〜１６：００を連結し、時間帯８：００〜１６：００とする。
【００９８】
３回目のステップＳ２０４では、次の隣接する時間帯８：００〜１６：００と時間帯２０：００〜２４：００について、ステップＳ２０５の判定を行う。時間帯８：００〜１６：００と時間帯２０：００〜２４：００は時間的に連続していないため、ステップＳ２０５の条件は成立せず、ステップＳ２０４に戻る。
【００９９】
４回目のステップＳ２０４では、もはや未処理の隣接する時間帯が存在しないため、ステップＳ２０７において、ｉの値を１つ増やした後（ｉ＝３）、３回目のステップＳ２０２以降を実行する。
【０１００】
この結果、マシン２に関しては、３つの時間帯０：００〜４：００、時間帯８：００〜１６：００、時間帯２０：００〜２４：００が得られる（図８ＡのＶＭ─２の行）。なお、この結果からマシン２の電源投入時刻が８：００と２０：００であることと、電源切断時刻が４：００と１６：００であることがわかる。電源ボタンを押下してから、実際にマシンが利用可能な状態になるまでには時間がかかるため、電源投入時酷は余裕を見て８：００や２０：００より早い時間にしてもよい。
【０１０１】
その後、マシン３、マシン４についても、ステップＳ２０２以降の処理によって、それぞれ時間帯８：００〜１６：００と時間帯８：００〜１２：００が得られる。すなわち、「ｉ＝３」の場合は時間帯８：００〜１６：００が得られ、「ｉ＝４」の場合は時間帯８：００〜１２：００が得られる。
【０１０２】
稼動時間帯連結処理部２２２は、マシン４に関する処理が完了し、「ｉ＝５」となると、ステップＳ２０２において、「ｉ＝５、Ｎ＝４」であり、「ｉ＞Ｎ」（５＞４）となり、「ｉ≦Ｎ」が不成立となるため、全体の処理を終了する。
【０１０３】
最終的に、図８Ａの表（テーブル）に示した各マシン（ＶＭ）の稼動時間帯連結結果が得られる。
【０１０４】
処理装置２０は、得られた稼動時間帯連結結果を、稼動計画として出力装置３０に出力する。或いは、処理装置２０は、得られた稼動時間帯判定結果に基づく命令（コマンド）や信号を、稼動計画として、出力装置３０に出力するようにしても良い。
【０１０５】
以上に説明した手続きにより、各マシンの連続する稼動時間帯をまとめることで、電源の投入及び切断にかかる操作コストを節約できる。また、電源の投入・切断を人間が行う場合は、操作ミスが発生する可能性もある。更には、電源の投入・切断処理によって機械が物理的に消耗し、機械の寿命が短くなるという負の効果も存在する。従って、稼動時間帯連結結果を参照することで、マシンの故障や操作ミスの発生リスクを低減することができる。
【０１０６】
［第２の連結処理の詳細］
次に、図７に示す第１の連結処理の具体的な処理について、図４に示す稼動時間帯判定結果の例を用いて、本実施形態に係る稼動時間帯連結処理部２２２の具体的な処理について説明する。本例でも、第１の連結処理と同様、「最大必要マシン数Ｎ＝４、時間帯数Ｔ＝６」である。
【０１０７】
図７におけるステップＳ３０１〜Ｓ３０３の処理は、第１の連結処理（図６）におけるステップＳ２０１〜Ｓ２０３の処理と同様である。
【０１０８】
まず、「ｉ＝１」のとき、ステップＳ３０３において、稼動時間帯連結処理部２２２は、マシン１の稼動時間帯をＩＤ順に列挙する。
【０１０９】
ステップＳ３０３では、稼動時間帯連結処理部２２２は、マシン１の稼動時間帯を次のように列挙する。
（１）時間帯０：００〜４：００
（２）時間帯４：００〜８：００
（３）時間帯８：００〜１２：００
（４）時間帯１２：００〜１６：００
（５）時間帯１６：００〜２０：００
（６）時間帯２０：００〜２４：００
【０１１０】
ステップＳ３０４では、稼動時間帯連結処理部２２２は、最初の時間帯０：００〜４：００の稼動開始時刻０：００と、最後の時間帯２０：００〜２４：００の稼動終了時刻２４：００を抽出し、新たな時間帯０：００〜２４：００を生成する。すなわち、マシン１の稼動時間帯は、抽出された時刻をもって時間帯０：００〜２４：００となる。従って、稼動時間帯連結処理部２２２は、０：００から２４：００の間に稼動していない時間帯があったとしても、無視する。
【０１１１】
次のステップＳ３０５では、稼動時間帯連結処理部２２２は、ｉの値を１つ増やし（ｉ＝２）、ステップＳ３０２以降のループに戻る。
【０１１２】
「ｉ＝２」のとき、ステップＳ３０２では、「ｉ≦Ｎ」（２≦４）が成立し、ステップＳ３０３において、稼動時間帯連結処理部２２２は、マシン１の稼動時間帯をＩＤ順に列挙する。
【０１１３】
ステップＳ３０３では、稼動時間帯連結処理部２２２は、マシン２の稼動時間帯を次のように列挙する。
（１）時間帯０：００〜４：００
（２）時間帯８：００〜１２：００
（３）時間帯１２：００〜１６：００
（４）時間帯２０：００〜２４：００
【０１１４】
ステップＳ３０４では、マシン１の場合と同様に、稼動時間帯連結処理部２２２は、時間帯０：００〜４：００の稼動開始時刻０：００と、時間帯２０：００〜２４：００の稼動終了時刻２４：００を取り出し、時間帯０：００〜２４：００を新しい稼動時間帯とする。連結処理１のときとは異なり、マシン２も常時稼動となる。
【０１１５】
続くステップＳ３０５では、稼動時間帯連結処理部２２２は、ｉの値を１つ増やし（ｉ＝３）、ステップＳ３０２以降のループに戻る。
【０１１６】
稼動時間帯連結処理部２２２は、マシン３、マシン４についても同様に、稼動時間帯を更新する。すなわち、「ｉ＝３」、「ｉ＝４」の場合も同様に、稼動時間帯を更新する。
【０１１７】
マシン４に関する処理が完了し、「ｉ＝５」となると、ステップＳ３０２において、「ｉ＝５、Ｎ＝４」であり、「ｉ＞Ｎ」（５＞４）となるため、「ｉ≦Ｎ」が不成立となり、全体の処理を終了する。
【０１１８】
最終的に、図８Ｂの表（テーブル）に示した各マシン（ＶＭ）の稼動時間帯連結結果が得られる。
【０１１９】
処理装置２０は、得られた稼動時間帯連結結果を、稼動計画として出力装置３０に出力する。或いは、処理装置２０は、得られた稼動時間帯判定結果に基づく命令（コマンド）や信号を、稼動計画として、出力装置３０に出力するようにしても良い。
【０１２０】
マシン２（ＶＭ─２）に関して、第１の連結処理と第２の連結処理で結果が異なるのは、稼動の必要な時間帯の間に稼動の不要な時間帯が存在するためである。第２の連結処理では、電源の投入・切断操作を節約する代償として、稼動の不要な時間帯もマシンが稼動することになり、その分の電力を余分に消費する。第１の連結処理と第２の連結処理のどちらを選択するかは、電源操作のコストやリスクと、電力コストのどちらの節約を優先するかによる。
【０１２１】
以上に説明した手続きにより、電源の投入・切断に伴う操作コストやリスクを、より一層低減できる。
【０１２２】
なお、上記の各実施形態は、組み合わせて実施することも可能である。
【０１２３】
本発明は、多数のサーバが稼動するデータセンターにおいて、サーバの稼動計画を立案するための装置又はシステムに適用可能である。
【０１２４】
［本発明の特徴］
本発明のマシン稼動計画作成装置は、時間帯別の必要マシン台数と、１から順に番号付けられたマシンのＩＤとを比較し、マシンのＩＤの方が大きくない場合に当該マシンの稼動が必要と判定する稼働時間帯判定処理部を備えることを特徴とする。
【０１２５】
また、本発明のマシン稼動計画作成装置は、各マシンが複数の稼動時間帯を持つ時、複数の稼動時間帯を連結して、複数の稼動時間帯の個数を削減する稼働時間帯連結処理部を更に備えることを特徴とする。
【０１２６】
また、本発明のマシン稼動計画作成装置は、上記の稼働時間帯連結処理部が、２つの稼動時間帯が時間的に連続している場合に、２つの稼動時間帯を連結し、新たな稼動時間帯とすることを特徴とする。
【０１２７】
また、本発明のマシン稼動計画作成装置は、上記の稼働時間帯連結処理部が、複数の稼動時間帯の中から、最初の時間帯の開始時刻と、最後の時間帯の終了時刻を取り出し、開始時刻から終了時刻までを新たな稼動時間帯とすることを特徴とする。
【０１２８】
また、本発明のマシン稼動計画作成装置は、時間帯別の必要マシン台数のリストから、必要マシン台数の最大値を算出する最大必要マシン数算出処理部を更に備えることを特徴とする。
【０１２９】
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【０１３０】
＜備考＞
なお、本出願は、日本出願番号２０１０−０６９２２９に基づく優先権を主張するものであり、日本出願番号２０１０−０６９２２９における開示内容は引用により本出願に組み込まれる。
【図１】
2011118424.tif 000003
【図２Ａ】
2011118424.tif 000004
【図２Ｂ】
2011118424.tif 000005
【図３】
2011118424.tif 000006
【図４】
2011118424.tif 000007
【図５】
2011118424.tif 000008
【図６】
2011118424.tif 000009
【図７】
2011118424.tif 000010
【図８Ａ】
2011118424.tif 000011
【図８Ｂ】
2011118424.tif 000012
【国際調査報告】
2011118424.tif 000013
2011118424.tif 000014
2011118424.tif 000015
2011118424.tif 000016