(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
[実施の形態1]
  
図1に、本実施の形態に係るシステム概要を示す。本実施の形態における主要な処理を実行する管理サーバ1は、LAN(Local Area Network)等のネットワーク3を介して物理サーバA乃至Cと接続されている。物理サーバA乃至Cは、例えば、データセンタ等に設置されたブレードサーバである。なお、
図1においては物理サーバの数は3であるが、物理サーバの数に限定は無い。
 
【0012】
  図2に、管理サーバ1の機能ブロック図を示す。
図2の例では、管理サーバ1は、制御データ格納部101と、前処理部102と、収集部103と、収集データ格納部104と、設定部105と、第1特定部107、第2特定部108及び生成部109を含む計画部106と、手順データ格納部110と、実行部111とを含む。
 
【0013】
  前処理部102は、制御データ格納部101に格納されているデータを用いて処理を行い、処理結果を収集部103に出力する。収集部103は、サーバデータ、VMデータ及び性能データを収集し、収集データ格納部104に格納する。設定部105は、収集データ格納部104に格納されているデータを用いて、VMの停止順番を求める処理を実行する。第1特定部107は、使用電力が目標電力を下回るサーバの組合せを探索する処理を実行し、処理結果を生成部109に出力する。第2特定部108は、VMの配置の組合せを特定する処理を実行し、処理結果を生成部109に出力する。生成部109は、第1特定部107から受け取ったデータ及び第2特定部108から受け取ったデータを用いて、消費電力を削減する手順のデータを生成し、手順データ格納部110に格納する。実行部111は、手順データ格納部110に格納されている手順のデータに従い、消費電力を削減するための処理を実行する。なお、データセンタにおける作業を自動化するためのソフトウェアが開発されているので、そのようなソフトウェアを利用することで実行部111を実現することができる。
 
【0014】
  図3に、物理サーバA乃至Cの機能ブロック図を示す。
図3の例では、物理サーバA乃至Cは、制御部50と、業務処理を実行するVM(Virtual Machine)501乃至503とを含む。制御部50は、VMを実行するための制御ソフトウェアであるハイパバイザであり、制御部50によってVM501乃至503が実現される。なお、VMの数に限定は無い。
 
【0015】
  以下では、説明をわかりやすくするため、
図4に示すような状態において消費電力を削減することを考える。すなわち、物理サーバAのホスト1上にはVM1乃至4が実現されており、物理サーバBのホスト2上にはVM5乃至7が実現されており、物理サーバCのホスト3上にはVM8乃至10が実現されている。ホストは、VMを実行するための制御ソフトウェアである(制御ソフト50である場合もある)。各VMには、各仮想システムのOS(Operating System)が含まれる。各物理サーバの物理メモリの量は32GB(ギガバイト)であるとする。
図4においてVM名の下に示された数値は、CPU使用率と割り当てられたメモリ量とを表す。物理サーバAの消費電力は250W(ワット)であり、物理サーバBの消費電力は255Wであり、物理サーバCの消費電力は190Wであるため、合計の消費電力は695Wである。
 
【0016】
  図5に、制御データ格納部101に格納される制御文のデータの一例を示す。
図5の例では、目標電力を指定するデータ(「PowerLimit=・・・」の部分)と、物理サーバのホスト名、最大消費電力及び待機電力を指定するデータ(「Server=・・・」の部分)と、直近及び過去の期間を指定するデータ(「TimeRange=・・・」の部分)と、性能データが格納されるフォルダを指定するデータ(「LogDir=・・・」の部分)と、アイドル状態であるVM(以下、アイドルVMと呼ぶ)を検出した際に直ちにそのアイドルVMを停止するか否かを指定するデータ(「Idlestop=・・・」の部分)と、VM名及び業務優先順位を指定するデータ(「VM=・・・」の部分)とを含む。
 
【0017】
  目標電力は、例えば消費電力を20%カットする場合695×(1−0.2)=556Wであり、例えば消費電力を50%カットする場合695×(1−0.5)=358Wであり、例えば消費電力を80%カットする場合695×(1−0.8)=139Wであり、例えば消費電力を100%カットする場合695×1=695Wである。
 
【0018】
  物理サーバのホスト名等は、電力削減の対象になる物理サーバについて指定される。例えば管理サーバ等、消費電力削減の対象にならないサーバについては指定されない。待機電力は、カタログ又は仕様書等に記載されているデータを用いてもよいし、実際に測定してもよい。
 
【0019】
  直近の期間は、例えば
図6に示すように、過去の1時点(
図6の例では、9/10  13:00)から現在(
図6の例では、9/11  13:00)までの時間の長さによって指定する。過去の期間は、過去の1時点((
図6の例では、9/4  13:00))から直近の期間の開始時点((
図6の例では、9/10  13:00))までの時間の長さによって指定する。
 
【0020】
  性能データは、CPU使用率、メモリ使用量、ディスク装置等のI/Oデータ量及びネットワークにおけるデータ転送量等を含むデータであり、指定されたフォルダに格納される。
 
【0021】
  制御文のデータに、Idlestop=dynamicというデータが含まれる場合には、アイドルVMを検出した際にそのVMを直ちに停止する。Idlestop=dynamicというデータが含まれない場合には、実際にVMの移動をする段階で停止する。
 
【0022】
  業務優先順位は、VMが実行する業務処理の優先順位を表す。0である場合、たとえVMがアイドル状態であっても停止されることはない。例えば、VM利用者と管理者との間で停止不可の契約を結んでいる場合には業務優先順位は0である。優先順位の値が1以上である場合には、アイドル状態であればVMが停止される可能性がある。
 
【0023】
  次に、
図7乃至
図24を用いて、管理サーバ1の動作について説明する。管理サーバ1の制御データ格納部101には、管理者による指定を含む制御文のデータが格納されているとする。そして、管理サーバ1に対して管理者から消費電力削減モードの運用開始が指示されたとする。
 
【0024】
  まず、管理サーバ1の前処理部102は、運用開始指示を受け付けると、運用開始を示す通知を、例えばメールによりVM利用者の端末に通知する(
図7:ステップS1)。
 
【0025】
  前処理部102は、制御データ格納部101から、制御文のデータを読み出す(ステップS3)。
 
【0026】
  前処理部102は、制御文のデータにおいて指定されている物理サーバに、OSの種別(例えば、Windows(登録商標)或いはLinux(登録商標)等)毎にアイドルVMを配備することを要求する配備要求を送信する(ステップS5)。なお、物理サーバには、VMのOSであるゲストOSが複数種別存在する場合がある。そのような場合には、物理サーバに、OSの種別毎にアイドルVMを配備させる。例えば、
図3に示した物理サーバにおいて実行するVMのOSがOS#1及びOS#2である場合には、OSがOS#1であるアイドルVM及びOSがOS#2であるアイドルVMを配備させる。
 
【0027】
  なお、属性(例えば、物理サーバの機種、物理サーバにインストールされたOS又は接続環境等)が同じである複数の物理サーバが配置されている場合、複数の物理サーバの各々にアイドルVMを配備すると資源の無駄になる。そのような場合には、複数の物理サーバのうちいずれか1つの物理サーバにアイドルVMを配備するようにしてもよい。但し、運用を継続しているうちに複数の物理サーバが異なる属性になる可能性があるため、定期的にアイドルVMを配備して確認をする方がよい。
 
【0028】
  前処理部102は、運用終了の条件を満たすか判断する(ステップS7)。運用終了の条件とは、例えば、現在の時刻が運用終了の時刻になるという条件である。
 
【0029】
  運用終了の条件を満たさない場合(ステップS7:Noルート)、前処理部102は、制御文のデータを含む、処理の実行要求を収集部103に要求する。これに応じ、収集部103は、サーバデータ及びVMデータを物理サーバA乃至Cから収集し、収集データ格納部104に格納する(ステップS9)。なお、収集部103は、サーバデータを収集データ格納部104におけるサーバテーブルに格納し、VMデータを収集データ格納部104におけるVMテーブルに格納する。
 
【0030】
  図8に、サーバデータの一例を示す。
図8の例では、ホスト名と、消費電力の最大値と、待機電力と、プロセッサ周波数と、仮想CPUの数と、メモリ量と、状態を示すデータとを含む。収集部103は、ホスト名、消費電力の最大値及び待機電力を、管理サーバ1が管理するデータ格納部(図示せず)或いは物理サーバから取得する。また、収集部103は、プロセッサ周波数、仮想CPUの数及びメモリ量を、例えば、物理サーバにインストールされているサーバ管理用ソフトウェアから取得する。状態を示すデータは、物理サーバが稼動していればrunであり、稼動していなければstopである。状態を示すデータは、生死監視の技術を用いて取得することができる。生死監視の技術はよく知られているので、ここでは詳細な説明を省略する。
 
【0031】
  図9に、VMデータの一例を示す。
図9の例では、VM名と、ホスト名と、割り当てられた仮想CPUの数と、割り当てられたメモリ量と、業務優先順位と、停止優先順位と、アイドル時間と、停止順番とを含む。業務優先順位、停止優先順位、アイドル時間及び停止順番は、ステップS9の時点では設定されず、後の処理において設定される。VM名、ホスト名、割り当てられた仮想CPUの数及び割り当てられたメモリ量は、物理サーバにおける制御部50から取得される。
 
【0032】
  収集部103は、サーバテーブルにおける状態を示すデータを走査することにより、稼動中のサーバが無いか判断する(ステップS11)。稼動中のサーバが無い場合(ステップS11:Yesルート)、消費電力を削減することはできないので、ステップS7の処理に戻る。そして、次の所定時刻になった場合にステップS7の処理を実行する。これにより、処理を定期的に行うことができる。
 
【0033】
  一方、稼動中のサーバが有る場合(ステップS11:Noルート)、収集部103は、性能データを収集し、収集データ格納部104に格納する(ステップS12)。
 
【0034】
  図10に、性能データの一例を示す。
図10の例では、日時と、VM名と、CPU使用率と、I/Oデータ量と、ネットワークにおけるデータ転送量とを含む。収集部103は、定期的に、制御文のデータにおけるLogDirで指定されたフォルダにアクセスし、性能データを収集する。
 
【0035】
  なお、収集部103は、収集された性能データを直近及び過去の期間について集計する。
図11に、集計された性能データの一例を示す。
図11の例では、直近及び過去の期間について、平均のCPU使用率と、平均のI/Oデータ量と、平均のデータ転送量と、アイドル状態であるか否かを示すデータと、その期間内におけるアイドル時間とを含む。Runはアイドル状態ではないことを表し、Idleはアイドル状態であることを表す。なお、ステップS12の処理の時点においては、アイドル状態であるか否かを示すデータ及びアイドル時間は格納されていない。
 
【0036】
  収集部103は、ステップS5の処理により配備されたアイドルVMについて集計された性能データから閾値を算出し(ステップS13)、メインメモリ等の記憶装置に格納する。閾値は、例えば、直近の期間におけるアイドルVMの性能に関する数値をそのまま用いる或いは所定の割合をその数値に乗じることにより求める。なお、ステップS13の処理は1回実行すれば十分であり、2回目以降は実行しなくてもよい処理であるため、
図7において点線のブロックで示している。
 
【0037】
  収集部103は、VMの性能に関する数値とステップS13において算出された閾値とを比較することにより、現時点においてアイドル状態であるVMを特定する(ステップS14)。本実施の形態においては、CPU使用率、I/Oデータ量及びネットワークにおけるデータ転送量のいずれもが閾値以下であるVMを、アイドルVMであると判定することとする。
 
【0038】
  収集部103は、現時点においてアイドル状態であるVMが有り且つ「idlestop=dynamic」が設定されているか判断する(ステップS15)。現時点においてアイドル状態であるVMが無い又は「idlestop=dynamic」が設定されていない場合(ステップS15:Noルート)、処理は端子Aを介して
図14のS19に移行する。
 
【0039】
  一方、現時点においてアイドル状態であるVMが有り且つ「idlestop=dynamic」が設定されている場合(ステップS15:Yesルート)、収集部103は、アイドルVMの停止要求をそのVMを実行する物理サーバに送信する。また、収集部103は、そのVMについて起動ガードの実行を要求する起動ガード要求を物理サーバに要求する(ステップS17)。これに応じ、物理サーバにおける制御部50は起動ガードを実行する。起動ガードとは、特定のVMが実行されないように制御することである。そして処理は端子Aを介して
図14のS19に移行する。
 
【0040】
  図14の説明に移行し、収集部103は、過去及び直近について、VM毎にアイドル時間を算出し、アイドル時間及びアイドル状態であるか否かを示すデータを
図11に示したテーブルに格納する(ステップS19)。例えば、直近においてアイドル時間の比率が90%以上である場合には直近の期間についてはアイドル状態であると判定し、過去においてアイドル時間の比率が90%以上である場合には過去の期間についてはアイドル状態であると判定する。
 
【0041】
  図12及び
図13を用いて、性能に関する数値と閾値との比較について説明する。
図12に、データ転送量の時系列変化の一例を示す。
図12においては、縦軸がデータ転送量(KB/s)を表し、横軸が時刻を表す。点線は閾値を表し、閾値の大きさは5KB/sである。
図12の例では、VM1乃至VM4のデータ転送量は期間中5KB/s以下であるため、CPU使用率及びI/Oデータ量も閾値以下である場合にはアイドル状態であると判定される。
 
【0042】
  図13に、CPU使用率の時系列変化の一例を示す。
図13においては、縦軸がCPU使用率(%)を表し、横軸が時刻を表す。点線は閾値を表し、閾値の大きさは10%である。
図13の例では、VM1及びVM3のCPU使用率はほぼ全期間において10%以下であるが、VM2及びVM4のCPU使用率は特に後半に10%を超えることが多い。このような場合には、VM2及びVM4については、アイドル状態ではないと判定されることになる。
 
【0043】
  なお、直近及び過去について、アイドル時間の比率が90%以上である場合にアイドルVMであると判定しているのは、一時的な処理(例えばウイルススキャン等)の影響によりアイドルVMではないと判定されるのを防ぐためである。
 
【0044】
  図14の説明に戻り、設定部105は、停止の優先順位、業務の優先順位及びアイドル時間をVMテーブルに設定する。また、設定部105は、停止の優先順位、業務の優先順位及びアイドル時間に基づきVMの停止順番を求め(ステップS21)、VMテーブルに設定する。
 
【0045】
  停止の優先順位は、例えば
図15に示すルールに従い設定する。すなわち、過去及び直近のいずれもアイドル状態であるというパターン、直近だけがアイドル状態であるというパターン、過去だけがアイドル状態であるというパターン、いずれもアイドル状態ではないというパターンの順に順位を上にする。備考は、各パターンにおけるユーザの特徴を示すデータである。このようなルールのデータは、管理サーバ1におけるデータ格納部(図示せず)に格納されている。
 
【0046】
  業務の優先順位は、制御データ格納部101に格納されているデータを用いて決定する。
 
【0047】
  本実施の形態においては、設定部105は、第1キーを業務優先順位、第2キーを停止優先順位、第3キーをアイドル時間としてVMテーブルを降順にソートする。そして、設定部105は、先頭行から順に停止順番を割り振る。
 
【0048】
  図14の説明に戻り、第1特定部107は、現在の電力が、制御データ格納部101において指定されている目標電力以下であるか判断する(ステップS23)。現在の電力は、例えば電力センサによって取得した、各物理サーバの消費電力の合計を用いる。現在の電力が目標電力以下である場合(ステップS23:Yesルート)、これ以上VMを停止しなくてもよいので、処理は端子Bを介して
図7のステップS7の処理に戻る。そして、次の所定時刻になった場合にステップS7の処理を実行する。これにより、処理を定期的に行うことができる。
 
【0049】
  一方、現在の電力が目標電力より大きい場合(ステップS23:Noルート)、第1特定部107は、使用電力が目標電力を下回るサーバの組合せを探索する(ステップS25)。ステップS25において、第1特定部107は、サーバテーブルにおける消費電力の最大値を用いて組合せを探索する。
 
【0050】
  例えば、サーバテーブルに
図8に示したデータが格納されており且つ目標電力が556W(すなわち消費電力を20%削減)である場合、以下の6つの組合せが検出される。(1)ホスト1及びホスト2(262W+262W+16W=540W<556W)、(2)ホスト1及びホスト3(262W+16W+262W=540W<556W)、(3)ホスト2及びホスト3(16W+262W+262W=540W<556W)、(4)ホスト1(262W+16W+16W=294W<556W)、(5)ホスト2(16W+262W+16W=294W<556W)、(6)ホスト3(16W+16W+262W=294W<556W)。
 
【0051】
  例えば、サーバテーブルに
図8に示したデータが格納されており且つ目標電力が348W(すなわち消費電力を50%削減)である場合、以下の3つの組合せが検出される。(1)ホスト1(262W+16W+16W=294W<348W)、(2)ホスト2(16W+262W+16W=294W<348W)、(6)ホスト3(16W+16W+262W=294W<348W)。
 
【0052】
  なお、例えば消費電力を80%或いは100%削減するように指定された場合には、該当する組合せは無い。
 
【0053】
  第1特定部107は、サーバの組合せが1つも無いか判断する(ステップS27)。サーバの組合せが1つも無い場合(ステップS27:Yesルート)、第1特定部107は、生成部109に処理の実行を要求する。これに応じ、生成部109は、全サーバの電源を落とす手順又は全サーバへの電力供給を断つ手順のデータを生成し(ステップS29)、手順データ格納部110に格納する。処理は端子Cを介して
図16のステップS43に移行する。このように、サーバの組合せが1つも無い場合には全サーバへの電力供給を断つことで、消費電力を目標電力以下にすることを保証できるようになる。
 
【0054】
  なお、サーバへの電力供給を断つ方法には、例えば、サーバのメインスイッチを切るという方法、分電盤におけるブレーカーを落とすという方法及びコンセントを抜くという方法等がある。なお、自動で実行することができない処理については、手順を示すデータを表示装置等に出力することにより、管理者等に作業を行わせるようにしてもよい。
 
【0055】
  図17に、ステップS29において生成される手順のデータの一例を示す。
図17の例では、VM1、VM2及びVM4乃至VM9を停止する処理と、ホスト1乃至3のサーバの電源をオフにする処理とを示すデータが含まれる。
 
【0056】
  一方、サーバの組合せが少なくとも1つ有る場合(ステップS27:Noルート)、第2特定部108は、サーバの組合せ毎にVMの配置の組合せを探索する(ステップS31)。
 
【0057】
  例えば消費電力を20%削減する場合について考える。本実施の形態の例においては、Idlestop=dynamicが指定されているため、VM3及びVM10は既に削除されている。従って、例えば以下のような組合せが存在する。
 
【0058】
  (1)ホスト1において、VM1、VM2、VM4及びVM8を実行する。メモリ使用量は8GB×4=32GBであり、物理メモリ量32GBより少ない。ホスト2においては、VM5、VM6、VM7及びVM9を実行する。メモリ使用量は8GB×2+4GB×2=24GBであり、物理メモリ量32GBより少ない。VMの移動回数は2回であり、移動するデータの量は8GB(VM8)+4GB(VM9)=12GBである。
 
【0059】
  (2)ホスト1において、VM1、VM2、VM4及びVM9を実行する。メモリ使用量は8GB×3+4GB=28GBであり、物理メモリ量32GBより少ない。ホスト2においては、VM5、VM6、VM7及びVM8を実行する。メモリ使用量は8GB×3+4GB=28GBであり、物理メモリ量32GBより少ない。VMの移動回数は2回であり、移動するデータの量は8GB(VM8)+4GB(VM9)=12GBである。
 
【0060】
  (3)ホスト1において、VM1、VM2、VM4及びVM5を実行する。メモリ使用量は8GB×4=32GBであり、物理メモリ量32GBより少ない。ホスト2においては、VM6、VM7、VM8及びVM9を実行する。メモリ使用量は8GB×2+4GB×2=24GBであり、物理メモリ量32GBより少ない。VMの移動回数は3回であり、移動するデータの量は8GB(VM5)+8GB(VM8)+4GB(VM9)=20GBである。
 
【0061】
  また、消費電力を50%削減する場合について考える。この場合には物理サーバを1台しか使用することができないため、物理メモリ量の制約から、全てのVMを配備することはできない。例えば、稼動させる物理サーバにVM1、VM2、VM6及びVM7を起動するという組合せが考えられる。この際、停止するVMはVM4、VM5、VM8及びVM9である。
 
【0062】
  図14の説明に戻り、第2特定部108は、VMの配置の組合せが1つも無いか判断する(ステップS33)。ステップS33においては、停止せざるを得ないVMが1つでも存在すれば、VMの配置の組合せが無いと判断する。VMの配置の組合せが少なくとも1つ有る場合(ステップS33:Noルート)、処理は端子Dを介して
図16のステップS39に移行する。
 
【0063】
  一方、VMの配置の組合せが1つも無い場合(ステップS33:Yesルート)、第2特定部108は、VMテーブルに設定されている停止順番に従い、停止するVMを特定する(ステップS35)。ステップS35においては、1又は複数の停止するVMを特定することにより、残りのVMをいずれかの物理サーバに配置できるようにする。
 
【0064】
  第2特定部108は、ステップS35において特定されたVM以外のVMについて、配置の組合せを特定する(ステップS37)。そして処理は端子Dを介して
図16のステップS39に移行する。
 
【0065】
  図16の説明に移行し、第2特定部108は、ステップS37において特定された組合せの中から、最適なVMの配置を特定する(ステップS39)。ここで、最適な配置とは、VMの移動回数が最も少なく且つ移動するデータの量が最も少ない配置である。第2特定部108は、特定された配置を示すデータを生成部109に出力する。
 
【0066】
  生成部109は、特定された配置を実現するための手順のデータを生成し(ステップS41)、手順データ格納部110に格納する。
 
【0067】
  図18及び
図19に、ステップS41において生成される手順のデータの一例を示す。
図18の例では、VM10を停止する処理と、VM8及び9を移動する処理と、ホスト3のサーバの電源をオフにする処理とを示すデータが含まれる。また、
図19の例では、VM4、VM5、VM8及びVM9を停止する処理と、VM6及びVM7を移動する処理と、ホスト2及び3のサーバの電源をオフにする処理とを示すデータが含まれる。
 
【0068】
  実行部111は、手順データ格納部110から読み出した手順のデータに従い、消費電力を目標電力以下にするための手順を実行する(ステップS43)。
 
【0069】
  図7の説明に戻り、ステップS7において運用終了の条件を満たすと判断された場合(ステップS7:Yesルート)、前処理部102は、起動ガードが実行されているVMについて起動ガードの解除を要求する起動ガード解除要求を物理サーバに要求する(ステップS45)。これに応じ、起動ガード解除要求を受信した物理サーバにおける制御部50は、起動ガードが実行されているVMについて起動ガードを解除する。
 
【0070】
  前処理部102は、通常どおりの運用を再開するための処理(例えば、負荷分散機構の有効化等)を実行する(ステップS47)。また、前処理部102は、運用終了を示す通知をVMの利用者の端末に送信する(ステップS49)。そして処理を終了する。
 
【0071】
  以上のような処理を実行すれば、実際にアイドル状態であるVMから得られた性能データに基づき閾値を生成することができるので、アイドル状態であるVMを高精度で特定できるようになる。また、そのときの動作環境に合った閾値が自動で設定されれば、管理者が閾値を設定する作業を行わなくてもよいので、作業コストを削減することができるようになる。
 
【0072】
  また、過去及び直近の利用状況に応じて停止順番を決めるので、ユーザ間で公平であり、ユーザにとって納得がいく運用を行うことができるようになる。
 
【0073】
  また、指定された目標電力を超えないように制御できるので、電力消費のピークカットを行えるようになる。
 
【0074】
  図4に示すような状態のシステムに対して、目標電力を556Wとして本実施の形態を適用した場合、例えば
図20に示すような状態のシステムになる。
図20の例では、物理サーバAにおいて実行されていたアイドルVM3は停止し、物理サーバCにおいて実行されていたアイドルVM10は停止している。また、物理サーバCにおいて実行されていたVM8は物理サーバAに移動し、物理サーバCにおいて実行されていたVM9は物理サーバBに移動している。これにより、物理サーバCにおいて実行されるVMが無くなり、物理サーバCの電源をオフにしたので、物理サーバCが消費する電力は待機電力である16Wになっている。そして、合計の消費電力は、255W+260W+16W=531Wになり、当初の消費電力である695Wと比べると23%の削減になる。
 
【0075】
  図21を用いて、本実施の形態を適用しない場合におけるアイドルVMの検出について説明する。
図21の例においては、「OS♯1−VM♯1」及び「OS♯2−VM♯1」が物理サーバAにおいて実行されており、「OS♯2−VM♯2」及び「OS♯2−VM♯3」が物理サーバBにおいて実行されており、「OS♯1−VM♯2」及び「OS♯2−VM♯4」が物理サーバCにおいて実行されている。なお、例えば「OS♯2−VM♯1」は、「OSの種別が2であり、割り振られた番号が1であるVM」のことである。物理サーバAはアドレスが「10.200.30.xxx」であるネットワークに接続されており、物理サーバBはアドレスが「10.200.31.xxx」であるネットワークに接続されており、物理サーバCはアドレスが「10.200.32.xxx」であるネットワークに接続されている。閾値180は、物理サーバA乃至Cについて一律に設定される閾値である。
図21の例においては、閾値180と各VMの性能に関する数値とを比較し、いずれの項目においても数値が閾値を下回る場合にはアイドルVMであると判定する。
 
【0076】
  図21の例においては、物理サーバAにおける「OS♯2−VM♯1」はアイドルVMとして検出される。しかし、「OS♯2−VM♯2」についてはアイドルVMであるにもかかわらず検出されない。これは、アドレスが「10.200.31.xxx」であるネットワークにはハートビート通信を行うサーバが接続されており、「OS♯2−VM♯2」のデータ転送量が通常のアイドルVMのデータ転送量より高いからである。また、「OS♯1−VM♯2」もアイドルVMであるにもかかわらず検出されない。これは、OSがOS♯1であるVMはアイドル状態であっても512MB(メガバイト)程度のメモリを使用するにもかかわらず、閾値180においてはその事情が反映されていないからである。さらに、OS♯2−VM♯4は稼働中であるにもかかわらずアイドルVMとして検出される。これは、物理サーバCのCPUの能力は物理サーバA及び物理サーバBと比較して2倍の能力であり、物理サーバA及び物理サーバBと同じ仕事をしたとしてもCPU使用率が閾値を超えないので、アイドル状態であると判定されるからである。
 
【0077】
  このように、本実施の形態を適用しない場合には、アイドルVMであるにもかかわらず検出することができないだけでなく、稼働中のVMを誤ってアイドルVMとして検出することがある。
 
【0078】
  図22を用いて、本実施の形態を適用する場合におけるアイドルVMの検出について説明する。
図22の例は、各物理サーバにOSの種別毎にアイドルVMを故意に配備した点が異なる。
図22の例においては、「OS♯1−Idle♯1」及び「OS♯2−Idle♯1」が物理サーバAにおいて実行されており、「OS♯1−Idle♯2」及び「OS♯2−Idle♯2」が物理サーバBにおいて実行されており、「OS♯1−Idle♯3」及び「OS♯2−Idle♯3」が物理サーバCにおいて実行されている。なお、例えば「OS♯2−Idle♯1」とは、「OSの種別が2であり、割り振られた番号が1であるアイドルVM」のことである。
図22の例においては、各物理サーバにおいてOSの種別毎に算出した閾値を用いてアイドル状態であるか否かが判定される。具体的には、「OS♯1−VM♯1」の性能に関する数値は「OS♯1−Idle♯1」の性能に関する数値を用いて算出された閾値と比較され、「OS♯2−VM♯1」の性能に関する数値は「OS♯2−Idle♯1」の性能に関する数値を用いて算出された閾値と比較され、「OS♯2−VM♯2」の性能に関する数値は「OS♯2−Idle♯2」の性能に関する数値を用いて算出された閾値と比較され、「OS♯2−VM♯3」の性能に関する数値は「OS♯2−Idle♯2」の性能に関する数値を用いて算出された閾値と比較され、「OS♯1−VM♯2」の性能に関する数値は「OS♯1−Idle♯3」の性能に関する数値を用いて算出された閾値と比較され、「OS♯2−VM♯4」の性能に関する数値は「OS♯2−Idle♯3」の性能に関する数値を用いて算出された閾値と比較される。
 
【0079】
  図22の例においては、「OS♯2−VM♯1」がアイドルVMとして検出されるだけでなく、「OS♯2−VM♯2」及び「OS♯1−VM♯2」もアイドルVMとして検出される。これは、「OS♯2−Idle♯2」が物理サーバBに配置されているため、データ転送量の閾値が
図21の例と比較して高く設定されているからである。また、「OS♯1−Idle♯3」の性能に関する数値をもとにメモリ使用量の閾値を算出したため、メモリ使用量の閾値が
図21の例と比較して高く設定されているからである。
 
【0080】
  また、稼動中である「OS♯2−VM♯4」は、
図21の例においては誤検出されていたが、
図22の例においては誤検出されず、稼動中であると判定される。これは、「OS♯2−Idle♯3」が物理サーバCに配置されているため、CPU使用率の閾値が
図21の例と比較して低く設定されているからである。
 
【0081】
  このように、本実施の形態を適用すれば、アイドルVMを高精度で検出できるようになる。
 
【0082】
  また、本実施の形態の考え方を応用することで、ストレージ装置が消費する電力を削減することができるようになる。これについては、
図23及び
図24を用いて説明する。
 
【0083】
  図23に、物理サーバとストレージ装置とを含むシステムの構成を示す。
図23の上段は本実施の形態の処理を実行する前の物理サーバの状態を表し、中段は実施の形態の処理を実行した後の物理サーバの状態を表し、下段は物理サーバに接続されるストレージ装置を表す。ストレージ装置のうち運用ストレージは、LUN(Logical Unit Number)♯0とLUN♯1とLUN♯2とを含み、ストレージ装置のうち保管ストレージは、LUN♯AとLUN♯Bとを含む。保管ストレージは、運用ストレージよりも安価であるが低速である。
図23の例においては、アイドルVMであるVM3及び6を停止し、VM7及び8を移動することにより、ホスト3についての物理サーバの電源を落としている。これにより、物理サーバ全体として消費電力を20%削減している。
図23においては、1RAID(Redundant Arrays of Inexpensive Disks)グループにLUNを1つ割り当てている。
 
【0084】
  図24に、運用ストレージ及び保管ストレージに格納されるVMのファイルを示す。
図24の上段は処理前の状態を示しており、
図24の下段は処理後の状態を示している。まず、停止したVM3及6のファイルを保管用ストレージのうちLUN♯Aに移動する。これにより、運用ストレージであるLUN♯0及びLUN♯1の空き容量を増加させることができる。次に、LUN♯2におけるVM7のファイルをLUN♯0に移動し、LUN♯2におけるVM8のファイルをLUN♯1に移動する。これにより、LUN♯2にはVMのファイルが無くなるので、MAID(Massive Array of Idle Disks)機能により自動でLUN♯2の電源をオフにすることができる。また、LUN♯Aについても、VM3及び6のファイルにアクセスがあるまでは、電源をオフにすることができる。なお、
図24におけるVM1乃至VM8は、VM本体を構成するファイルであってもよいし、VMからアクセスされるデータ領域であってもよい。
 
【0085】
  以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した管理サーバ1及び物理サーバA乃至Cの機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
 
【0086】
  また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
 
【0087】
  なお、目標電力(「PowerLimit=・・・」)は、カット率で指定(例えば「PowerCut=・・・」)してもよい。その場合には、どの期間のピーク電力に対するカット率であるのかを明確にするため、カット率と共にピーク電力を指定するようにしてもよい。
 
【0088】
  また、ステップS13の処理による閾値の算出が完了した場合には、ステップS5の処理によって配備されたアイドルVMを停止してもよい。このようにすれば、アイドルVMによって無駄に電力及び資源が消費されるのを防ぐことできるようになる。
 
【0089】
  また、例えば
図19において、VM4、VM5、VM8及びVM9の停止後に、これらのVMを電源をオフしない物理サーバに移動する手順を出力しておけば、万一停止されたVMを起動する必要が生じたときに迅速に対応(例えば起動)できる。
 
【0090】
[付録]
  本付録においては、本実施の形態に関連する事項について説明する。
 
【0091】
(1)物理サーバの電力特性
  物理サーバは、アイドル状態であっても相当の電力を消費することが知られている。
図25に、CPU使用率と消費電力との関係の一例を示す。
図25において、横軸はCPU使用率(%)を表し、縦軸は消費電力(W)を表す。
図25には、CPUのP−stateが「P0」である場合のデータと、CPUのP−stateが「P6」である場合のデータと、原点を通る点線とが示されている。
図25に示すように、物理サーバは、アイドル状態(すなわち、CPU使用率が0%付近)であっても相当の電力を消費しており、消費電力の曲線は、原点を通る直線にはならない。例えば、
図25の例に示した物理サーバを10台使用してクラウドシステムを構築した場合、10台の物理サーバのいずれもアイドル状態であったとしても、約1500Wの電力を消費することになる。
 
【0092】
  また、CPUのP−stateを変更したとしても、消費電力を大きく削減できるとは限らない。
図25の例では、CPU使用率が20%以下であるときは消費電力の削減率は数%であり、CPU使用率が80%以上であっても消費電力の削減率は約10%程度である。
 
【0093】
  なお、制御文において指定する最大消費電力として、
図25に示したグラフから求めた、最大負荷における消費電力を用いることができる。
 
【0094】
(2)VMに割り当てるメモリの量
  物理サーバにおいて動作するVMの数を徐々に増加させると、特定のタイミングにおいて急激に性能が劣化する。これについては、特定の物理サーバについての実測のデータから生成された、
図26のグラフを用いて説明する。
図26において、横軸はVMに割り当てるメモリの量を表し、縦軸はコンパイル実行時間の比を表す。コンパイル実行時間の比とは、測定用のVMだけを配置した環境におけるコンパイル実行時間(ここでは536秒)との比のことであり、値が大きいほど性能が劣化することを表す。物理サーバが備える物理メモリの量は32GBである。
図26に示すように、VMに割り当てるメモリの量が32GB以下である場合には性能はほとんど変わらない。しかしながら、VMに割り当てるメモリの量が32GBを超えると、コンパイル実行時間の比は急激に大きくなる。これは、メモリオーバーコミットが起きているためである。
 
【0095】
(3)データセンタにおけるCPU使用率
  データセンタにおいては、アイドルVMが多数存在し、VMが効率的に利用されていないことが指摘されている。これについては、特定のデータセンタにおける実測のデータから生成された、
図27のグラフを用いて説明する。
図27において、横軸はVMのCPU使用率(%)を表し、左の縦軸はVM数を表し、右の縦軸はVM数の累計(%)を表す。
図27が示すように、このデータセンタにおいてはCPU使用率が10%以下であるVMが約半数を占め、CPU使用率が50%以下であるVMが約8割を占める。CPU使用率が低いVMの中からアイドルVMを検出し、アイドルVMを停止すれば、データセンタによる電力の消費を大幅に減らすことができるようになる。また、アイドルVMが使用する資源を他の用途に使用することができるので、資源を効率的に使用することができるようになる。
 
【0096】
(4)ネットワークにおけるデータ転送量
  
図28に、OSがOS♯1であるVM1乃至4のデータ転送量を示す。VM1乃至4は、ネットワークアドレスが異なっており、その他の条件は同じである。VM1乃至4はアイドルVMである。
図28に示すように、VM2以外のVMのデータ転送量は概ね1KB/sであるが、VM2だけがデータ転送量が約4KB/sである。
 
【0097】
  図29に、OSがOS♯1であるVM5乃至8のデータ転送量を示す。VM5乃至8は、ネットワークアドレスが異なっており、その他の条件は同じである。VM5乃至8はアイドルVMである。
図29に示すように、VM8以外のVMのデータ転送量は概ね0KB/sであるが、VM8だけがデータ転送量が約3KB/sである。
 
【0098】
  このように、配置されるネットワークが異なるとデータ転送量が異なる原因の1つに、ハートビート通信がある。ハートビート通信は、コンピュータが正常に動作していることを周りに知らせるために行う通信である。ハートビート通信を行うコンピュータが存在するネットワークに配置されたVMは、ハートビート通信のブロードキャストパケットを受け取るため、VMが配置されたネットワークにおけるデータ転送量が多くなると考えられる。従って、データ転送量の閾値を本実施の形態のような方法を用いて適切に設定しなければ、アイドルVMを検出することはできない。
 
【0099】
  なお、上で述べた管理サーバ1は、コンピュータ装置であって、
図30に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
 
【0100】
  以上述べた本発明の実施の形態をまとめると、以下のようになる。
 
【0101】
  本実施の形態に係る管理方法は、情報処理装置において動作する仮想マシンを管理する管理装置により実行される管理方法である。そして、本管理方法は、(A)処理を実行しない第1の仮想マシンを情報処理装置に配備することを要求する配備要求を情報処理装置に送信し、(B)第1の仮想マシンの動作に関する情報及び情報処理装置において動作する、第1の仮想マシン以外の仮想マシンの動作に関する情報を、情報処理装置から取得し、(C)取得された第1の仮想マシンの動作に関する情報と第1の仮想マシン以外の仮想マシンの動作に関する情報とを用いて、第1の仮想マシン以外の仮想マシンの中から、処理を実行していない仮想マシンを特定する処理を含む。
 
【0102】
  このようにすれば、実際にアイドル状態である仮想マシンの動作に関する情報を利用できるので、アイドル状態である仮想マシンを高精度で特定できるようになる。
 
【0103】
  また、上で述べた情報処理装置の数が複数であってもよい。そして、上で述べた配備要求を情報処理装置に送信する処理において、(a1)複数の情報処理装置の中に属性が同じである複数の情報処理装置がある場合に、当該属性が同じである複数の情報処理装置のうちいずれかの情報処理装置に、配備要求を送信する処理を含む。属性(例えば、情報処理装置の機種、情報処理装置にインストールされたOS又は接続環境等)が同じである複数の情報処理装置から取得された、仮想マシンの動作に関する情報は、ほぼ同じになると考えられる。そこで、上で述べたようにすれば、情報処理装置のリソースを無駄に消費することがなくなる。
 
【0104】
  また、上で述べた処理を実行していない仮想マシンを特定する処理において、(c1)第1の仮想マシンの動作に関する情報から、アイドル状態か否かを判定するための閾値を算出し、(c2)第1の仮想マシン以外の仮想マシンの動作に関する情報に含まれる数値が、算出された閾値を超えているか否かを判定することにより、処理を実行していない仮想マシンを特定してもよい。このようにすれば、ユーザが一律に閾値を設定する場合等と比べて適切な閾値を設定することができるようになる。
 
【0105】
  また、上で述べた情報処理装置において動作する仮想マシンが実行するオペレーティングシステムの種別の数が複数であってもよい。そして、上で述べた配備要求を情報処理装置に送信する処理において、(a2)複数のオペレーティングシステムの各々について第1の仮想マシンを配備することを要求する配備要求を情報処理装置に送信してもよい。同じ情報処理装置で動作する仮想マシンであってもオペレーティングシステムが異なれば動作の特性は異なることがある。そこで、上で述べたようにすれば、オペレーティングシステムの種別の数が複数である場合にも適切に対処できるようになる。
 
【0106】
  また、本管理方法が、(D)特定された処理を実行していない仮想マシンを停止することを要求する停止要求を情報処理装置に送信する処理をさらに含むようにしてもよい。このようにすれば、アイドル状態である仮想マシンによって無駄に電力が消費されることを防止できるようになる。
 
【0107】
  また、本管理方法が、(E)情報処理装置が消費する電力が所定の目標電力以上であるか判断し、(F)情報処理装置が消費する電力が所定の目標電力以上であると判断された場合に、情報処理装置において動作する仮想マシンについて、当該仮想マシンが過去所定期間にアイドル状態であった時間を用いて、停止する仮想マシンを特定し、(G)特定された仮想マシンを停止することを要求する停止要求を情報処理装置に送信する処理をさらに含むようにしてもよい。このようにすれば、情報処理装置が所定の目標電力以上の電力を消費しないように制御できるようになる。また、過去のアイドル状態を考慮できるので、停止するべきではない仮想マシンを停止することを抑制できるようになる。
 
【0108】
  また、上で述べた停止要求を情報処理装置に送信する処理において、(d1)情報処理装置において動作する仮想マシンが実行する処理の優先度をさらに用いて、停止する仮想マシンを特定してもよい。このようにすれば、優先して実行すべき処理が実行されなくなることを抑制できるようになる。
 
【0109】
  なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
 
【0110】
  以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
 
【0111】
(付記1)
  情報処理装置において動作する仮想マシンを管理する管理装置に実行させるためのプログラムであって、
  処理を実行しない第1の仮想マシンを前記情報処理装置に配備することを要求する配備要求を前記情報処理装置に送信し、
  前記第1の仮想マシンの動作に関する情報及び前記情報処理装置において動作する、前記第1の仮想マシン以外の仮想マシンの動作に関する情報を、前記情報処理装置から取得し、
  取得された前記第1の仮想マシンの動作に関する情報と前記第1の仮想マシン以外の仮想マシンの動作に関する情報とを用いて、前記第1の仮想マシン以外の仮想マシンの中から、処理を実行していない仮想マシンを特定する
  処理を前記管理装置に実行させるための管理プログラム。
 
【0112】
(付記2)
  前記情報処理装置の数が複数であり、
  前記配備要求を前記情報処理装置に送信する処理において、
  複数の情報処理装置の中に属性が同じである複数の情報処理装置がある場合に、当該属性が同じである複数の情報処理装置のうちいずれかの情報処理装置に、前記配備要求を送信する
  ことを特徴とする付記1記載の管理プログラム。
 
【0113】
(付記3)
  前記処理を実行していない仮想マシンを特定する処理において、
  前記第1の仮想マシンの動作に関する情報から、アイドル状態か否かを判定するための閾値を算出し、
  前記第1の仮想マシン以外の仮想マシンの動作に関する情報に含まれる数値が、算出された前記閾値を超えているか否かを判定することにより、前記処理を実行していない仮想マシンを特定する
  ことを特徴とする付記1又は2記載の管理プログラム。
 
【0114】
(付記4)
  前記情報処理装置において動作する仮想マシンが実行するオペレーティングシステムの種別の数が複数であり、
  前記配備要求を前記情報処理装置に送信する処理において、
  複数のオペレーティングシステムの各々について前記第1の仮想マシンを配備することを要求する配備要求を前記情報処理装置に送信する
  ことを特徴とする付記1記載の管理プログラム。
 
【0115】
(付記5)
  特定された前記処理を実行していない仮想マシンを停止することを要求する停止要求を前記情報処理装置に送信する
  処理を前記管理装置にさらに実行させるための付記1記載の管理プログラム。
 
【0116】
(付記6)
  前記情報処理装置が消費する電力が所定の目標電力以上であるか判断し、
  前記情報処理装置が消費する電力が前記所定の目標電力以上であると判断された場合に、前記情報処理装置において動作する仮想マシンについて、当該仮想マシンが過去所定期間にアイドル状態であった時間を用いて、停止する仮想マシンを特定し、
  特定された前記仮想マシンを停止することを要求する停止要求を前記情報処理装置に送信する
  処理をさらに前記管理装置に実行させるための付記5記載の管理プログラム。
 
【0117】
(付記7)
  前記停止要求を前記情報処理装置に送信する処理において、
  前記情報処理装置において動作する仮想マシンが実行する処理の優先度をさらに用いて、停止する仮想マシンを特定する
  ことを特徴とする付記6記載の管理プログラム。
 
【0118】
(付記8)
  情報処理装置において動作する仮想マシンを管理する管理装置により実行される管理方法であって、
  処理を実行しない第1の仮想マシンを前記情報処理装置に配備することを要求する配備要求を前記情報処理装置に送信し、
  前記第1の仮想マシンの動作に関する情報及び前記情報処理装置において動作する、前記第1の仮想マシン以外の仮想マシンの動作に関する情報を、前記情報処理装置から取得し、
  取得された前記第1の仮想マシンの動作に関する情報と前記第1の仮想マシン以外の仮想マシンの動作に関する情報とを用いて、前記第1の仮想マシン以外の仮想マシンの中から、処理を実行していない仮想マシンを特定する
  処理を前記管理装置が実行する管理方法。
 
【0119】
(付記9)
  情報処理装置において動作する仮想マシンを管理する管理装置であって、
  処理を実行しない第1の仮想マシンを前記情報処理装置に配備することを要求する配備要求を前記情報処理装置に送信する第1処理部と、
  前記第1の仮想マシンの動作に関する情報及び前記情報処理装置において動作する、前記第1の仮想マシン以外の仮想マシンの動作に関する情報を、前記情報処理装置から取得し、取得された前記第1の仮想マシンの動作に関する情報と前記第1の仮想マシン以外の仮想マシンの動作に関する情報とを用いて、前記第1の仮想マシン以外の仮想マシンの中から、処理を実行していない仮想マシンを特定する第2処理部と、
  を有する管理装置。