(57)【特許請求の範囲】
【請求項１】
少なくとも一つ以上の仮想サーバを有する物理サーバの消費電力を制御するための消費電力制御装置であって、
前記物理サーバは、前記物理サーバの有する演算処理資源が割り当てられて仮想的に生成される前記少なくとも一つ以上の仮想サーバと、この仮想サーバへ前記演算処理資源を割当てることにより前記仮想サーバを生成する仮想化機構と、を備えており、
前記仮想サーバにより使用されている前記演算処理資源の第１の量と前記仮想化機構により使用されている前記演算処理資源の第２の量との合計使用量を検出する使用量検出部と、
前記仮想化機構に前記演算処理資源を駆動する周波数の段階的変更を要求し、その要求に従って前記仮想化機構が前記周波数を段階的に変更した場合の前記演算処理資源の消費電力量を前記仮想化機構から受信することにより、前記演算処理資源に関する周波数と消費電力との関係を示す周波数−消費電力特性情報を取得し、前記周波数を段階的に変化させた場合の前記演算処理資源の消費電力の変化量を複数の所定の周波数範囲に分類し、前記各所定の周波数範囲の最も低い周波数を閾値周波数としてそれぞれ決定する消費電力特性取得部と、
前記演算処理資源の総量に対する前記合計使用量の割合を乗じた値を低下可能な周波数として求め、前記低下可能な周波数が現在の周波数と同一の所定の周波数範囲に属する場合は、前記低下可能な周波数を前記演算処理資源を駆動させる周波数として決定し、前記低下可能な周波数が現在の周波数の属する所定の周波数範囲よりも周波数の低い他の所定の周波数範囲に属する場合は、現在の周波数の属する前記所定の周波数範囲の前記閾値周波数を前記演算処理資源を駆動させる周波数として決定する周波数決定部と、
前記現在の周波数に対する前記演算処理資源を駆動させる周波数として決定された周波数の割合を前記第１の量に乗じることで、前記仮想サーバに割り当てる前記演算処理資源の第３の量を決定し、かつ、前記現在の周波数に対する前記演算処理資源を駆動させる周波数として決定された周波数の割合を前記第２の量に乗じることで前記仮想化管理機構に割り当てる前記演算処理資源の第４の量を決定する割当量決定部と、
前記決定された第３の量の前記演算処理資源を前記仮想サーバに割当て、かつ、前記決定された第４の量の前記演算処理資源を前記仮想化機構に割当て、さらに、前記決定された周波数で前記演算処理資源を駆動させるように、前記仮想化機構に要求する設定変更部と、
を備えるサーバの消費電力制御装置。
【請求項２】
少なくとも一つ以上の仮想サーバを有する物理サーバの消費電力を制御するための消費電力制御方法であって、
前記物理サーバは、前記物理サーバの有する演算処理資源が割り当てられて仮想的に生成される前記少なくとも一つ以上の仮想サーバと、この仮想サーバへ前記演算処理資源を割当てることにより前記仮想サーバを生成する仮想化機構と、を備えており、
前記仮想サーバにより使用されている前記演算処理資源の第１の量と前記仮想化機構により使用されている前記演算処理資源の第２の量との合計使用量を検出するステップと、
前記仮想化機構に前記演算処理資源を駆動する周波数の段階的変更を要求し、その要求に従って前記仮想化機構が前記周波数を段階的に変更した場合の前記演算処理資源の消費電力量を前記仮想化機構から受信することにより、前記演算処理資源に関する周波数と消費電力との関係を示す周波数−消費電力特性情報を取得し、前記周波数を段階的に変化させた場合の前記演算処理資源の消費電力の変化量を複数の所定の周波数範囲に分類し、前記各所定の周波数範囲の最も低い周波数を閾値周波数としてそれぞれ決定するステップと、
前記演算処理資源の総量に対する前記合計使用量の割合を乗じた値を低下可能な周波数として求め、前記低下可能な周波数が現在の周波数と同一の所定の周波数範囲に属する場合は、前記低下可能な周波数を前記演算処理資源を駆動させる周波数として決定し、前記低下可能な周波数が現在の周波数の属する所定の周波数範囲よりも周波数の低い他の所定の周波数範囲に属する場合は、現在の周波数の属する前記所定の周波数範囲の前記閾値周波数を前記演算処理資源を駆動させる周波数として決定するステップと、
前記現在の周波数に対する前記演算処理資源を駆動させる周波数として決定された周波数の割合を前記第１の量に乗じることで、前記仮想サーバに割り当てる前記演算処理資源の第３の量を決定し、かつ、前記現在の周波数に対する前記演算処理資源を駆動させる周波数として決定された周波数の割合を前記第２の量に乗じることで前記仮想化管理機構に割り当てる前記演算処理資源の第４の量を決定するステップと、
前記決定された第３の量の前記演算処理資源を前記仮想サーバに割当て、かつ、前記決定された第４の量の前記演算処理資源を前記仮想化機構に割当てさせるように、前記仮想化機構に要求するステップと、
前記決定された周波数で前記演算処理資源を駆動させるように、前記仮想化機構に要求するステップと、
をそれぞれ実行するサーバの消費電力制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバの消費電力制御装置、サーバの消費電力制御方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
サーバコンピュータ（以下、サーバ）に搭載されるＣＰＵ（Central Processing Unit）は、例えば、オペレーティングシステム（ＯＳ）やアプリケーションプログラム等を動作させるために使用される。サーバの処理効率を上げるために、サーバに搭載されるＣＰＵの数は、年々増加傾向にある。
【０００３】
一方、サーバの電力消費量も年々増大している。例えば、データセンタのような大量のサーバを有するシステムでは、情報処理システム全体の総消費電力が増大し、施設の許容電力量を超えてしまう場合もある。このため、電気コストが増大するばかりか、サーバの設置台数が制限されるという問題がある。
【０００４】
サーバの有する各種ハードウェアの中でも、ＣＰＵの消費する電力は特に大きい。従って、サーバに搭載されるＣＰＵの数及び動作周波数の増加に伴って、サーバの消費電力も増大する。
【０００５】
また、多数のプログラムを並列に実行して処理性能を向上させるべく、一つのＣＰＵに複数のプロセッサコアを集積するという、いわゆるマルチコア化も進展している。ＣＰＵ内のコア数が増加するほど、ＣＰＵの消費電力量も増大する。
【０００６】
さらに、消費電力が大きいと電源装置に大きな負担がかかるため、電源装置等の寿命が低下する恐れもある。
【０００７】
そこで、サーバの消費電力を低減するために、ＣＰＵの周波数を低減させる技術が提案されている（特許文献１，特許文献２，特許文献３）。この従来技術では、ＣＰＵがアイドル時や低負荷の場合に、ＣＰＵの動作周波数及び供給電圧を強制的に低下させることにより、消費電力及び発熱量を低減させる。
【特許文献１】米国特許第６，８４５，４５６号明細書
【特許文献２】米国特許第７，０８０，２６７号明細書
【特許文献３】米国特許第７，１５５，６１７号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、単一の物理サーバ上に、一つまたは複数の仮想的なサーバを設ける技術も知られている。この技術は、例えば、サーバ仮想化技術と呼ばれる。各仮想サーバは、それぞれ別々のＯＳを独立して動作させることができる。サーバ仮想化技術は、プロセッサ、メモリ、ディスク装置等の、物理サーバが有する各種のコンピュータ資源を、それぞれの仮想サーバに分割して割り当てる。これにより、物理サーバの有する限られたコンピュータ資源を有効に利用できる。
【０００９】
コンピュータ資源の割り当てや仮想サーバのスケジューリングは、物理サーバ上で稼動する仮想化機構が担当する。仮想サーバの生成や削除は、ユーザ（管理者を含む。以下同様。）が仮想化機構に指示することにより、実施される。コンピュータ資源を確保して仮想サーバに割り当てることにより、仮想サーバが生成される。仮想サーバに割り当てられているコンピュータ資源を解放させることにより、その仮想サーバは削除される。
【００１０】
前記文献に記載の従来技術では、ＣＰＵの周波数を低下させることにより、消費電力を削減することができる。しかし、その従来技術は、一つまたは複数の仮想サーバを有する物理サーバには、そのまま適用することはできない。即ち、仮想サーバ環境下では、従来技術をそのまま単純に利用しても、仮想サーバの機能を低下させずに消費電力を削減することはできない。
【００１１】
一つの課題としては、周波数を低下させるタイミングの問題がある。仮想サーバ環境では、一つのＣＰＵを複数の仮想サーバが共有する場合があり、この場合、同一のＣＰＵを利用して複数の仮想サーバが同時に稼動することができる。
【００１２】
従って、もしも、一方の仮想サーバがアイドル状態にあるからといって、ＣＰＵの動作周波数を低下させてしまうと、そのＣＰＵを共有する他方の仮想サーバの処理性能も同時に低下してしまう。
【００１３】
他の一つの課題として、ＣＰＵの動作周波数を低下させることにより、仮想サーバを管理する仮想化機構の性能も低下するという問題がある。仮想サーバ環境を機能させるためには、各仮想サーバを動作させるためにディスパッチ処理やリソース割り当て処理等を行うための仮想化機構が必要である。従って、仮想化機構が使用しているＣＰＵの周波数を低下させてしまうと、そのＣＰＵを共用する仮想サーバだけではなく、仮想化機構の動作にまで影響が及び、仮想サーバ全体の性能が低下してしまう。
【００１４】
そこで、本発明の目的は、仮想サーバの性能低下を抑制しつつ消費電力を低減できるようにしたサーバの消費電力制御装置、サーバの消費電力制御方法及びコンピュータプログラムを提供することにある。本発明の他の目的は、仮想サーバの負荷変動に追従して消費電力を制御することのできるサーバの消費電力制御装置、サーバの消費電力制御方法及びコンピュータプログラムを提供することにある。本発明の更なる目的は、後述する実施形態の記載から明らかとなるであろう。
【課題を解決するための手段】
【００１５】
上記課題を解決すべく、本発明の第１観点に従うサーバの消費電力制御装置は、少なくとも一つ以上の仮想サーバを有する物理サーバの消費電力を制御するための消費電力制御装置であって、物理サーバは、物理サーバの有する演算処理資源が割り当てられて仮想的に生成される少なくとも一つ以上の仮想サーバと、この仮想サーバへ演算処理資源を割当てることにより仮想サーバを生成する仮想化機構と、を備えており、仮想サーバにより使用されている演算処理資源の第１の量と仮想化機構により使用されている演算処理資源の第２の量との合計使用量を検出し、演算処理資源を駆動させる周波数の決定要求を出力する使用量検出部と、決定要求を受領した場合に、合計使用量と演算処理資源の総量との差分に基づいて、演算処理資源を駆動させる周波数を決定する周波数決定部と、決定された周波数に応じて、仮想サーバに割り当てる演算資源の第３の量及び仮想化機構に割り当てる演算処理資源の第４の量をそれぞれ決定する割当量決定部と、決定された第３の量の演算処理資源を仮想サーバに割当て、かつ、決定された第４の量の演算処理資源を仮想化機構に割当て、さらに、決定された周波数で演算処理資源を駆動させるように、仮想化機構に要求する設定変更部と、を備える。
【００１６】
第２観点では、第１観点において、演算処理資源に関する周波数と消費電力との関係を示す周波数−消費電力特性を予め取得する消費電力特性取得部を更に備え、周波数決定部は、周波数−消費電力特性に基づいて予め設定される所定の周波数範囲内で、演算処理資源を駆動させる周波数を決定する。
【００１７】
第３観点では、第２観点において、所定の周波数範囲は、周波数の変化に応じて消費電力が変化する特性線の傾きの値に応じて設定される。
【００１８】
第４観点では、第３観点において、特性線の傾きの値が変化する周波数に閾値がそれぞれ予め設定され、各閾値間の周波数範囲が所定の周波数範囲として使用される。
【００１９】
第５観点では、第１〜４観点のいずれかにおいて、使用量検出部は、仮想サーバから発行される処理要求のうち仮想化機構上で実行待ち状態におかれている処理要求の数を監視しており、実行待ち状態にある処理要求の数が予め設定される上限値に達した場合に、演算処理資源を駆動させる周波数を増加させるべく、周波数決定部に要求する。
【００２０】
第６観点では、第１〜５観点のいずれかにおいて、第３の量は、決定される周波数の下で仮想サーバに最低限必要な演算処理資源の量として決定され、第４の量は、決定される周波数の下で仮想化機構に最低限必要な演算処理資源の量として決定される。
【００２１】
第７観点では、第１〜６観点のいずれかにおいて、仮想化機構には、第４の量が仮想サーバに割り当てられる第２の量に優先して割り当てられる。
【００２２】
第８観点では、第１〜７観点のいずれかにおいて、使用量検出部は、所定の指示に応じて作動する。
【００２３】
第９観点では、第８観点において、所定の指示は、ユーザによって入力される。
【００２４】
第１０観点では、第９観点において、所定の指示には、第３の量の最低値が予め指定されている。
【００２５】
第１１観点では、第９観点において、所定の指示には、仮想サーバが処理を実行する時間を示すスケジュールが予め含まれており、使用量検出部は、スケジュールに基づいて、決定要求を出力する。
【００２６】
第１２観点では、第１〜１１観点のいずれかにおいて、使用量検出部は、物理サーバの有する演算処理資源を複数の仮想サーバが共有している場合に、決定要求を出力する。
【００２７】
第１３観点では、第１〜１２観点のいずれかにおいて、設定変更部は、周波数決定部により決定される周波数で演算処理資源を駆動させるよりも前に、決定された第３の量の演算処理資源を仮想サーバに割当て、かつ、決定された第４の量の演算処理資源を仮想化機構に割当て、次に、決定された周波数で演算処理資源を駆動させるように、仮想化機構に要求する。
【００２８】
第１４観点では、第２〜１３観点のいずれかにおいて、仮想化機構は、設定変更部からの要求に応じて演算処理資源のうち決定された第３の量を仮想サーバに割り当てると共に決定された第４の量を仮想化機構に割り当てるための演算処理資源割当て機能と、演算処理資源を駆動させる周波数を変更させるための周波数制御機能と、周波数制御機能を用いて周波数−消費電力特性を作成するための基礎データを取得する消費電力測定機能とを、含んで構成される。
【００２９】
第１５観点に従うサーバの消費電力制御方法は、少なくとも一つ以上の仮想サーバを有する物理サーバの消費電力を制御するための消費電力制御方法であって、物理サーバは、物理サーバの有する演算処理資源が割り当てられて仮想的に生成される少なくとも一つ以上の仮想サーバと、この仮想サーバへ演算処理資源を割当てることにより仮想サーバを生成する仮想化機構と、を備えており、仮想サーバにより使用されている演算処理資源の第１の量と仮想化機構により使用されている演算処理資源の第２の量との合計使用量を検出し、演算処理資源を駆動させる周波数の決定要求を出力するステップと、決定要求を受領した場合に、合計使用量と演算処理資源の総量との差分に基づいて、演算処理資源を駆動させる周波数を決定するステップと、決定された周波数に応じて、仮想サーバに割り当てる演算資源の第３の量及び仮想化機構に割り当てる演算処理資源の第４の量をそれぞれ決定するステップと、決定された第３の量の演算処理資源を仮想サーバに割当て、かつ、決定された第４の量の演算処理資源を仮想化機構に割当てさせるように、仮想化機構に要求するステップと、決定された周波数で演算処理資源を駆動させるように、仮想化機構に要求するステップと、をそれぞれ実行する。
【００３０】
第１６観点に従うサーバの消費電力制御方法は、少なくとも一つ以上の仮想サーバを有する物理サーバの消費電力を制御するための消費電力制御方法であって、物理サーバは、物理サーバの有する演算処理資源が割り当てられて仮想的に生成される少なくとも一つ以上の仮想サーバと、この仮想サーバへ演算処理資源を割当てることにより仮想サーバを生成する仮想化機構と、を備えており、演算処理資源に関する周波数と消費電力との関係を示す周波数−消費電力特性を取得するステップと、仮想サーバにより使用されている演算処理資源の第１の量と仮想化機構により使用されている演算処理資源の第２の量との合計使用量を検出し、演算処理資源を駆動させる周波数の決定要求を出力するステップと、決定要求を受領した場合に、周波数−消費電力特性に基づいて予め決定される所定の周波数範囲内で、合計使用量と演算処理資源の総量との差分に基づいて、演算処理資源を駆動させる周波数を決定するステップと、決定された周波数に応じて、仮想サーバに割り当てる演算資源の第３の量及び仮想化機構に割り当てる演算処理資源の第４の量をそれぞれ決定するステップと、決定された第３の量の演算処理資源を仮想サーバに割当て、かつ、決定された第４の量の演算処理資源を仮想化機構に割当てさせるように、仮想化機構に要求するステップと、決定された周波数で演算処理資源を駆動させるように、仮想化機構に要求するステップと、をそれぞれ実行する。
【００３１】
第１７観点に従うコンピュータプログラムは、コンピュータを、少なくとも一つ以上の仮想サーバを有する物理サーバの消費電力を制御するための消費電力制御装置として機能させるコンピュータプログラムであって、物理サーバは、物理サーバの有する演算処理資源が割り当てられて仮想的に生成される少なくとも一つ以上の仮想サーバと、この仮想サーバへ演算処理資源を割当てることにより仮想サーバを生成する仮想化機構と、を備えており、仮想サーバにより使用されている演算処理資源の第１の量と仮想化機構により使用されている演算処理資源の第２の量との合計使用量を検出し、演算処理資源を駆動させる周波数の決定要求を出力するステップと、決定要求を受領した場合に、合計使用量と演算処理資源の総量との差分に基づいて、演算処理資源を駆動させる周波数を決定するステップと、決定された周波数に応じて、仮想サーバに割り当てる演算資源の第３の量及び仮想化機構に割り当てる演算処理資源の第４の量をそれぞれ決定するステップと、決定された第３の量の演算処理資源を仮想サーバに割当て、かつ、決定された第４の量の演算処理資源を仮想化機構に割当てさせるように、仮想化機構に要求するステップと、決定された周波数で演算処理資源を駆動させるように、仮想化機構に要求するステップと、をそれぞれ実行する。
【発明を実施するための最良の形態】
【００３２】
以下、図面に基づき、本発明の実施の形態を説明する。本実施形態では、以下に詳述するように、仮想サーバの負荷に応じて、ＣＰＵの割当量及びＣＰＵ駆動周波数を調節することにより、物理サーバの消費電力を制御する。より詳細な構成は、後述の実施例で明らかにされる。
【００３３】
図１は、本実施形態の概要を示す説明図である。図１に示す情報処理システムは、例えば、一つの管理サーバ１と、一つまたは複数の物理サーバ２と、少なくとも一つのストレージ装置３とを備えて構成される。ストレージ装置３、物理サーバ２、管理サーバ１の順番で以下に説明する。
【００３４】
ストレージ装置３は、例えば、ハードディスクドライブやフラッシュメモリデバイスのような記憶ドライブを備えている。記憶ドライブの有する物理的記憶領域を用いて、論理ボリューム３Ａが形成される。ストレージ装置３は、物理サーバ２と別体の装置として構成し、物理サーバ２とストレージ装置３とをＦＣ−ＳＡＮ（Fibre Channel−Storage
Area Network）やＩＰ−ＳＡＮ（Internet Protocol−Storage
Area Network）のような通信経路で接続することができる。あるいは、ストレージ装置３を物理サーバ２内に設ける構成でもよい。なお、ストレージ装置３の備える記憶ドライブの種類は、特に問わない。
【００３５】
物理サーバ２は、例えば、ＣＰＵ（Central Processing Unit）２Ａやメモリ等の各種コンピュータ資源と、仮想化機構４と、一つまたは複数の仮想サーバ５を備える。物理サーバ２は、例えば、複数のコンピュータ基板（ブレード）をバックボードに装着するような形態で構成可能である。つまり、物理サーバ２は、いわゆるブレードサーバとして構成することができる。但し、物理サーバ２の具体的構造は、特に問わない。ブレードサーバ以外の構成にも本発明は適用可能である。
【００３６】
仮想化機構４は、仮想サーバ５に物理サーバ２の有するコンピュータ資源及びボリューム３Ａ内の仮想的記憶領域（仮想ディスクとも呼ぶ）を割り当てることにより、仮想サーバ５を生成する。仮想化機構４は、例えば、各仮想サーバ５の生成や削除と、各仮想サーバ５の作動に必要なバックグラウンド処理等を担当する。
【００３７】
各仮想サーバ５は、それぞれ別々のＯＳ（Operating System）を備える。各仮想サーバ５は、それぞれに割り当てられたコンピュータ資源や仮想ディスクを用いて、それぞれ別々の処理を行うことができる。
【００３８】
管理サーバ１は、「消費電力制御装置」に該当し、ＩＰネットワークのような通信経路ＣＮを介して物理サーバ２に接続されている。管理サーバ１は、各仮想サーバ５及び仮想化機構４の負荷状況や性能に着目しながら物理サーバ２に指示を与えることにより、物理サーバ２の消費電力を制御する。
【００３９】
管理サーバ１は、ユーザから入力される所定の指示に応じて、以下に述べるように、物理サーバ２の消費電力を制御する。後述の実施例から明らかとなるように、ユーザからの所定の指示は、消費電力の削減または増加という単純な指示の場合もあるし、各仮想サーバ５の処理時間やピーク負荷の生じる時期等を考慮した、消費電力制御スケジュールである場合もある。
【００４０】
管理サーバ１は、例えば、ＣＰＵ使用量等検出部１Ａ（以下、使用量等検出部１Ａとも呼ぶ）と、ＣＰＵ消費電力特性取得部１Ｂ（以下、消費電力特性取得部１Ｂとも呼ぶ）と、周波数決定部１Ｃと、ＣＰＵ割当量決定部１Ｄと、設定変更要求部１Ｅとを備えて構成される。
【００４１】
使用量等検出部１Ａは、仮想化機構４と通信を行うことにより、各仮想サーバ５及び仮想化機構４の負荷状態をそれぞれ検出する。使用量等検出部１Ａは、「使用量検出部」に該当する。負荷状態としては、各仮想サーバ５のＣＰＵ使用率、仮想化機構４のＣＰＵ使用率、各仮想サーバ５の実行処理待ち要求の数を挙げることができる。
【００４２】
周波数変更前のＣＰＵ使用状況８Ｂに示すように、この例では、第１仮想サーバ５（Ｖ１）は、第１仮想サーバ５（Ｖ１）に割り当てられたＣＰＵ量を全て使用しており、第２仮想サーバ５（Ｖ２）は、第２仮想サーバ５（Ｖ２）に割り当てられたＣＰＵ量の一部を使用しており、残りのＣＰＵ割当量は未使用状態（ｉｄｌｅ）となっている。仮想化機構４は、仮想化機構４に割り当てられたＣＰＵ量を全て使用している。
【００４３】
変更前状況８Ｂに示す調整前のＣＰＵ使用率（ＣＰＵ使用量）は、「第１の量」または「第２の量」に該当する。なお、仮想化機構４には、必要最低限度以上のＣＰＵ量が常に割り当てられるようになっている。
【００４４】
仮想サーバ５や仮想化機構４に割り当てられるＣＰＵの量とは、物理サーバ２の有するＣＰＵ２Ａを利用できる時間である。つまり、ＣＰＵ量ないしＣＰＵ割当量とは、ＣＰＵ２Ａを使用する時間量である。ＣＰＵ割当量が大きいほど、ＣＰＵ２Ａを用いて多くの命令を実行することができる。ＣＰＵ２Ａの駆動周波数ｆｂが大きいほど、単位時間内に多くの命令を実行することができる。
【００４５】
実行処理待ち要求の数は、仮想サーバ５や仮想化機構４の処理性能が低下しているか否かを検出するために使用されるパラメータである。例えば、ＣＰＵ割当量が少ないために仮想サーバ５の処理性能が低下している場合、仮想化機構４には多くの実行処理待ち要求が蓄積される。この場合は、処理性能の低下している仮想サーバ５（あるいは仮想化機構４）に、より多くのＣＰＵ量を割り当てることになる。
【００４６】
消費電力特性取得部１Ｂは、仮想化機構４と通信することにより、ＣＰＵ２Ａの周波数変化に対応する消費電力の変化を示す特性を取得する。特性図７は、横軸がＣＰＵ２Ａの駆動周波数（Hz）を、縦軸がＣＰＵ２Ａの消費電力（W）を、それぞれ示す。
【００４７】
一般的には、駆動周波数が増大するほど消費電力も増加する。しかし、ＣＰＵ２Ａの構造によっては、周波数変化と消費電力変化とが必ずしも単純な比例関係にならず、ある周波数ｆｔｈを堺に、消費電力の変化を示す傾き（θ）が変化する場合がある。
【００４８】
特性図７に示す例では、ＣＰＵ２Ａの駆動周波数を最低周波数ｆＬから閾値ｆｔｈまで増大させる場合、ＣＰＵ２Ａの消費電力は第１の傾きθ１で増大する。ＣＰＵ２Ａの駆動周波数を閾値ｆｔｈから最高周波数ｆＨまで増大させる場合、ＣＰＵ２Ａの消費電力は、第１の傾きθ１よりも大きい第２の傾きθ２で増加する。
【００４９】
特性図７において、最低周波数ｆＬでＣＰＵ２Ａを駆動する場合の消費電力をＷＬ、閾値ｆｔｈの周波数でＣＰＵ２Ａを駆動する場合の消費電力をＷｔｈ、最高周波数ｆＨでＣＰＵ２Ａを駆動する場合の消費電力をＷＨと、それぞれ示す。
【００５０】
特性図７に示す例では、ＣＰＵ２Ａの駆動周波数が閾値ｆｔｈを超えると、消費電力の変化量が大きくなる。なお、特性図７は、本発明の理解のために用意された一例であり、ＣＰＵ２Ａが常にこのような特性を備えていることを示すものではない。周波数変化と消費電力変化が単純に比例する場合、複数の閾値が検出される場合等もある。
【００５１】
特性図７に示す周波数−消費電力特性をＣＰＵ２Ａが備えている場合、ＣＰＵ２Ａの駆動周波数を閾値ｆｔｈ以下に低下させても、消費電力の節減効果は乏しい。例えば、現在の駆動周波数は最高周波数ｆＨであるが、各仮想サーバ５のＣＰＵ使用率が少ないため、ＣＰＵ２Ａの駆動周波数を閾値ｆｔｈ以下の値まで低下可能な場合を考える。
【００５２】
単純には、ＣＰＵ２Ａの駆動周波数を低下可能な値まで低下させる。しかし、この場合、周波数の低下量に比べて、消費電力の削減量は少ない。閾値ｆｔｈ以下の周波数領域では、消費電力の傾きθ１が小さいためである。
【００５３】
一方、ＣＰＵ２Ａの駆動周波数は、段階的に変化させる必要がある。ＣＰＵ２Ａの駆動周波数を現在の周波数から目標とする周波数まで一気に変化させると、ＣＰＵ２Ａの動作が不安定になる可能性があるためである。従って、ある程度の時間をかけて、ＣＰＵ２Ａの駆動周波数を目標とする駆動周波数まで徐々に変化させる必要があり、周波数を変化させるためには時間的コストが生じる。
【００５４】
仮想サーバ５の負荷は、時々刻々と変化する。先ほどまでアイドル状態にあった仮想サーバ５が、ある時点で突然多量の処理を実行する場合がある。従って、ＣＰＵ２Ａの駆動周波数を低下させた後で、そのＣＰＵ２Ａを利用する仮想サーバ５の負荷が上昇し、ＣＰＵ使用率が増大する場合がある。この場合、仮想サーバ５の負荷増大に合わせて、その仮想サーバ５へのＣＰＵ割当量を増加させるか、ＣＰＵ２Ａの駆動周波数を元の値（いま説明している例では、最高周波数ｆＨ）に戻すか、あるいはＣＰＵ割当量及び駆動周波数をそれぞれ増加させる必要がある。
【００５５】
しかし、上述のように、ＣＰＵ２Ａの駆動周波数を目標の駆動周波数まで急激に変化させるのは好ましくない。従って、ＣＰＵ２Ａの駆動周波数は段階的に変更される。このため、仮想サーバ５の負荷増大に速やかに追従することができず、仮想サーバ５の処理性能が低下する。
【００５６】
そこで、本実施形態では、周波数−消費電力の特性に基づいて予め閾値（ｆｔｈ）を設定し、ＣＰＵ２Ａの駆動周波数を閾値ｆｔｈ以下に低下させないようにする。上記の例では、ＣＰＵ２Ａの駆動周波数を最低周波数ｆＬまで低下可能な場合であっても、ＣＰＵ２Ａの駆動周波数を閾値ｆｔｈ（ｆｔｈ＞ｆＬ）まで低下させるにとどめる。これにより、消費電力を削減しつつ、仮想サーバ５の負荷増大に速やかに追従することができる。
【００５７】
換言すれば、本実施形態では、ＣＰＵ２Ａの駆動周波数を低下可能な値ｆＬまで低下させるのではなく、その手前の閾値ｆｔｈにとどめることにより、周波数の変更にマージン（＝ｆｔｈ−ｆＬ）を残している。このマージンにより、仮想サーバ５の負荷増大時に、ＣＰＵ２Ａの駆動周波数を比較的速やかに増大させることができる。
【００５８】
周波数決定部１Ｃは、使用量等検出部１Ａで検出された各仮想サーバ５のＣＰＵ使用率と仮想化機構４のＣＰＵ使用率との合計使用量と、ＣＰＵ２Ａの総量との差分（変更前状況８Ｂ内の”ｉｄｌｅ”）に基づいて、ＣＰＵ２Ａの駆動周波数を求める。周波数決定部１Ｃは、周波数−消費電力特性に基づいて、求められた駆動周波数よりも値が大きく、かつ、求められた駆動周波数に最も近い閾値を検出し、その検出された閾値をＣＰＵ２Ａの駆動周波数として決定する。上記の例では、未使用率に基づいて算出される駆動周波数はｆＬであるが、周波数決定部１Ｃは、その算出された駆動周波数ｆＬに最も近い閾値ｆｔｈを駆動周波数として選択する。
【００５９】
ＣＰＵ割当量決定部１Ｄは、周波数決定部１Ｃにより決定された駆動周波数に基づいて、各仮想サーバ５及び仮想化機構４にそれぞれ割り当てられるべき新たなＣＰＵ量を算出する。ＣＰＵ割当量決定部１Ｄは、周波数変更前における各仮想サーバ５のＣＰＵ使用率及び仮想化機構４のＣＰＵ使用率に基づいて、周波数変更後も各仮想サーバ５及び仮想化機構４がそれぞれ円滑に処理を実行できるだけのＣＰＵ割当量を算出する。
【００６０】
上述の通り、ＣＰＵ割当量はＣＰＵ２Ａを使用できる時間である。周波数が大きいほど単位時間内に実行可能な命令数は多くなる。従って、ＣＰＵ割当量にＣＰＵ２Ａの駆動周波数をかけた面積が、その仮想サーバ５または仮想化機構４に与えられた処理資源の量となる。この面積が大きくなるほど、より多くの処理を実行可能である。
【００６１】
従って、ＣＰＵ２Ａの駆動周波数を低下させる場合、ＣＰＵ使用率の大きい仮想サーバ５（Ｖ１）には、現在のＣＰＵ量（Ｖ１ｂ）よりも多くのＣＰＵ量（Ｖ１ａ）が割り当てられる。ＣＰＵ使用率の少ない仮想サーバ５（Ｖ２）には、現在のＣＰＵ量（Ｖ２ｂ）よりも少ないＣＰＵ量（Ｖ２ａ）が割り当てられる。なお、ＣＰＵ駆動周波数の低下に先立って、仮想化機構４へのＣＰＵ割当量もＭｂからＭａに変更される。
【００６２】
即ち、ＣＰＵ割当量決定部１Ｄは、周波数変更前に実行していた処理量を周波数変更後においても実行できるように、各仮想サーバ５及び仮想化機構４への新たなＣＰＵ割当量を決定する。
【００６３】
設定変更要求部１Ｅは、決定されたＣＰＵ割当量と決定された周波数とを仮想化機構４に通知する。設定変更要求部１Ｅは、まず先に、決定されたＣＰＵ割当量を仮想化機構４に通知して、ＣＰＵ割当量を変更させ、次に、決定された周波数を仮想化機構４に通知して、ＣＰＵ２Ａの駆動周波数を変更させる。
【００６４】
仮想化機構４は、管理サーバ１からの指示に応じて、各仮想サーバ５及び仮想化機構４のＣＰＵ割当量をそれぞれ変更し、さらに、ＣＰＵ２Ａの駆動周波数を変更する。これにより、ＣＰＵ２Ａの未使用率に応じてＣＰＵ２Ａの駆動周波数を低下させることができ、ＣＰＵ２Ａの消費電力を削減することができる。
【００６５】
ＣＰＵ２Ａの駆動周波数を低下させた後も、使用量等検出部１Ａは、各仮想サーバ５及び仮想化機構４の負荷状態を監視している。ある仮想サーバ５（Ｖ２）の負荷が増大し、割り当てられたＣＰＵ量（Ｖ２ａ）では足りなくなったような場合、仮想化機構４内には、その仮想サーバ５（Ｖ２）から発行された実行待ち要求が蓄積されていく。
【００６６】
使用量等検出部１Ａは、仮想化機構４に蓄積された実行待ち要求の数が予め設定される所定値に達した場合、周波数決定部１Ｃに周波数の再決定を要求する。周波数決定部１Ｃは、駆動周波数を低下させる場合と同様に、各仮想サーバ５のＣＰＵ使用率と、仮想化機構４のＣＰＵ使用率と、周波数−消費電力特性等を用いて、ＣＰＵ２Ａの駆動周波数を求める。
【００６７】
ＣＰＵ割当量決定部１Ｄは、前記同様に、変更後の周波数の下で各仮想サーバ５及び仮想化機構４がそれぞれ必要な処理を行えるように、各仮想サーバ５へのＣＰＵ割当量及び仮想化機構４へのＣＰＵ割当量をそれぞれ決定する。
【００６８】
決定された周波数及びＣＰＵ割当量は、設定変更要求部１Ｅから仮想化機構４に通知される。仮想化機構４は、設定変更要求部１Ｅからの指示に従って、ＣＰＵ割当量を再設定し、さらに、ＣＰＵ２Ａの駆動周波数を変更する。
【００６９】
このように構成される本実施形態によれば、各仮想サーバ５の処理性能の低下を抑制しつつ、各仮想サーバ５を有する物理サーバ２の消費電力を適切に制御できる。本実施形態では、ＣＰＵ２Ａの駆動周波数を低下可能な周波数まで下げるのではなく、消費電力量の変化を示す傾きの値が変化する場合の周波数（閾値ｆｔｈ）を用いて、ＣＰＵ２Ａの駆動周波数を決定する。
【００７０】
つまり、閾値（ｆｔｈ）によって区切られる所定の周波数範囲内で、ＣＰＵ２Ａの駆動周波数を決定する。従って、ＣＰＵ２Ａの消費電力を低下させることができ、さらに、仮想サーバ５の負荷増大に応じてＣＰＵ２Ａの駆動周波数を上昇させることができる。以下、本実施形態を詳細に説明する。
【実施例１】
【００７１】
図２は、本実施例の全体構成を示す説明図である。この仮想化システムは、例えば、管理サーバ１０と、一つまたは複数の物理サーバ２０と、少なくとも一つのストレージ装置３０とを備えている。
【００７２】
図１との対応関係を説明する。管理サーバ１０は図１中の管理サーバ１に、物理サーバ２０は図１中の物理サーバ２に、ストレージ装置３０は図１中のストレージ装置３に、それぞれ対応する。仮想化機構２００は図１中の仮想化機構４に、仮想サーバ２２０は図１中の仮想サーバ５に、論理ボリューム３５は図１中の論理ボリューム３Ａに、それぞれ対応する。仮想化機構管理部１００は、図１中の使用量等検出部１Ａと、周波数決定部１Ｃと、ＣＰＵ割当量決定部１Ｄ及び設定変更要求部に対応する。電力管理部１１０は、図１中の消費電力特性取得部１Ｂに対応する。なお、後述のように、仮想化機構管理部１００は、その内部に複数の機能１０１〜１０３を備えており、各機能１０１〜１０３がＣＰＵ使用率や実行待ち要求数の検出と、周波数の決定と、ＣＰＵ割当量の決定と、周波数とＣＰＵ割当量の変更指示とを、担当する。
【００７３】
管理サーバ１０は、本実施例による消費電力制御を行う装置である。管理サーバ１０は、例えば、仮想化機構管理部１００と、電力管理部１１０と、各種テーブル１２１〜１２４とを備える。管理サーバ１０は、ＩＰネットワークのような通信ネットワークＣＮ１を介して、各物理サーバ２０にそれぞれ接続されている。
【００７４】
詳細は後述するが、管理サーバ１０は、ユーザから消費電力調整要求を受け取った場合、仮想サーバ２２０と仮想化機構２００の負荷状況を測定し、他の仮想サーバ２２０の処理性能に影響を与えない最適な周波数を算出する。管理サーバ１０は、その算出された周波数に基づいて、各仮想サーバ２２０に対するＣＰＵ割当量及び仮想化機構２００へのＣＰＵ割当量をそれぞれ調整する。
【００７５】
仮想化機構管理部１００は、各種リソースの割当てや解放、負荷状況の取得に応じた周波数の調整を実施する機能を有する。電力管理部１１０は、ＣＰＵの周波数―消費電力特性を取得する機能と、電力モードを通常モードと省電力モードのいずれに設定するかを決定する機能と、を有する。
【００７６】
物理サーバ管理テーブル１２１には、ＣＰＵやディスク情報等の、各物理サーバ２０毎のリソースに関する情報が格納される。仮想サーバ管理テーブル１２２には、各仮想サーバ２２０に割り当てられているリソースの情報が格納される。ワークロード管理テーブル１２３には、各仮想サーバ２２０へのＣＰＵ割当量やＣＰＵ使用率に関する情報が格納される。電力特性管理テーブル１２４には、各物理サーバの各ＣＰＵに関する、駆動周波数と消費電力との関係を示す消費電力特性マトリクスが格納される。
【００７７】
本実施例では、管理サーバ１０が、ユーザからの消費電力調整要求を受け取った後、仮想サーバ２２０と仮想化機構２００の負荷状況を監視し、ＣＰＵの周波数変更によって仮想サーバ２２０及び仮想化機構２００のそれぞれの処理性能が悪化しないように、ＣＰＵ割当量を変更し、かつ、ＣＰＵの駆動周波数を調整する。ＣＰＵの駆動周波数を低下させる場合、ＣＰＵの駆動電圧も同時に低下させることができる。これにより、本実施例では、ＣＰＵの消費電力を削減する。
【００７８】
物理サーバ２０は、仮想化機構２００を搭載している。仮想化機構２００は、複数の仮想サーバ２２０を管理する。仮想化機構２００は、物理サーバ２０の有するコンピュータ資源を管理するためのリソース制御部２１０を備える。
【００７９】
物理サーバ２０は、ストレージ装置３０を利用可能である。ストレージ装置３０は、物理サーバ２０内に設ける構成でもよいし、あるいは、ファイバーチャネルプロトコルを使用する通信経路ＣＮ２を介して各物理サーバ２０とストレージ装置３０とを接続する構成でもよい。
【００８０】
先にストレージ装置３０について説明する。ストレージ装置３０は、コントローラ３１と、ドライブ搭載部３２とを備える。ドライブ搭載部３２には、例えば、ハードディスクドライブやフラッシュメモリデバイスのような記憶ドライブ３３が複数搭載される。一つまたは複数の記憶ドライブ３３をグループ化することにより、パリティグループ３４が形成される。このパリティグループ３４の有する物理的記憶領域の一部を用いて、論理ボリューム３５が生成される。そして、論理ボリューム３５には、仮想ディスク領域３５Ｖが設定される。なお、一つの記憶ドライブ３３に一つまたは複数の論理ボリューム３５を設ける構成も可能である。
【００８１】
仮想化機構２００の有するリソース制御部２１０は、仮想化機構管理部１００からの要求に応じて、リソースの割当てや駆動周波数を制御するための機能を有する。
【００８２】
図３は、管理サーバ１０の構成例を示す説明図である。管理サーバ１０は、例えば、メモリ１２と、ＣＰＵ１１と、ネットワークインターフェース１３と、ディスクインターフェース１４とをバス１５で相互に接続することにより、構成される。
【００８３】
なお、図示は省略するが、管理サーバ１０は、ユーザと情報を交換するためのユーザインターフェース部を備える。ユーザインターフェース部は、ユーザが情報を入力するための入力装置と、ユーザに情報を提供するための出力装置とを備える。入力装置としては、例えば、キーボードスイッチ、ポインティングデバイス、マイクロフォン、タッチパネル等を挙げることができる。出力装置としては、例えば、ディスプレイ装置、スピーカー、プリンタ等を挙げることができる。ユーザは、ユーザインターフェース部を介して、管理サーバ１０に、消費電力の調整を要求することができる。
【００８４】
メモリ１２内には、仮想化機構管理部１００と、電力管理部１１０と、物理サーバ管理テーブル１２１と、仮想サーバ管理テーブル１２２と、ワークロード管理テーブル１２３と、電力特性管理テーブル１２４とが格納される。
【００８５】
仮想化機構管理部１００には、例えば、仮想環境性能管理部１０１と、リソース管理部１０２と、ワークロード管理部１０３とが含まれている。電力管理部１１０には、例えば、電力モード管理部１１１と、消費電力特性取得部１１２が含まれる。
【００８６】
メモリ１２に格納された仮想環境性能管理部１０１と、リソース管理部１０２と、ワークロード管理部１０３と、電力モード管理部１１１と、消費電力特性取得部１１２等に関する各種プログラムをＣＰＵ１１がそれぞれ適宜実行することで、リソース管理、リソース割当管理、サーバ性能監視、周波数―消費電力特性取得、ＣＰＵ周波数調整等の各機能が実現される。
【００８７】
ネットワークインターフェース１３は、ネットワークＣＮ１を介して、各物理サーバ２０に接続される。このネットワークインターフェース１３を用いて、管理サーバ１０から各物理サーバ２０に設定変更要求が送信される。また、ネットワークインターフェース１３を用いて、各物理サーバ２０から周波数―消費電力特性に関する情報が、管理サーバ１０に送信される。ディスクインターフェース１４は、ストレージ装置３０または図外の別のストレージ装置を利用するために使用されるインターフェースである。
【００８８】
なお、リソース管理、リソース割当管理、サーバ性能監視、周波数―消費電力特性取得、周波数調整等の各処理は、それぞれの処理に関する所定プログラムをＣＰＵ１１が実行することにより実現される。しかし、これに限らず、例えば、仮想環境性能管理部１０１、リソース管理部１０２、ワークロード管理部１０３等の全部または一部を、電子回路によって実現する構成でもよい。
【００８９】
図４は、物理サーバ２０の構成例を示す説明図である。各物理サーバ２０は、例えば、ＣＰＵ２１と、メモリ２２と、ネットワークインターフェース２３と、ディスクインターフェース２４とをバス２５で相互接続することにより、それぞれ構成される。さらに、各物理サーバ２０は、消費電力を測定するための消費電力測定部２６と、その測定結果を管理サーバ１０に送信するためのネットワークインターフェース２７とを備える。なお、ＣＰＵ２１は複数でも良いし、ＣＰＵ２１の中に複数のプロセッサコアを有するマルチコア型ＣＰＵでも良い。
【００９０】
メモリ２２内には、一つまたは複数の仮想サーバ２２０と、仮想化機構２００とが格納される。仮想化機構２００はリソース制御部２１０を備える。リソース制御部２１０は、例えば、ＣＰＵ割当て部２１１と、性能取得部２１２と、電力制御部２１３と、周波数制御部２１４とを備える。仮想化機構２００は、仮想サーバ２２０にメモリ２２やＣＰＵ２１等のコンピュータリソースを分割して割り当てる処理や、各仮想サーバ２２０の実行スケジュールを制御する処理等を実行する。
【００９１】
ＣＰＵ割当て部２１１、性能取得部２１２、電力制御部２１３、周波数制御部２１４等に関する所定の各プログラムをＣＰＵ１１が適宜実行することで、仮想サーバ２２０へのリソース割当て処理、仮想サーバの負荷情報の取得処理、ＣＰＵの周波数制御処理等の各処理が実行される。なお、仮想化機構２００の有する各機能２１０−２１４の全部または一部を、ハードウェア回路で実現する構成でもよい。
【００９２】
各仮想サーバ２２０には、それぞれ別々のＯＳ２２１がインストールされる。仮想サーバ２２０毎に、ＯＳ２２１はそれぞれ独立して動作可能である。
【００９３】
リソース制御部２１０の構成を説明する。ＣＰＵ割当て部２１１は、ＣＰＵ２１の駆動周波数を低下させる場合に、各仮想サーバ２２０の負荷情報とＣＰＵ２１の現在の駆動周波数とに応じて、各仮想サーバ２２０へのワークロード（ＣＰＵ割当量）を変更する。性能取得部２１２は、仮想サーバ２２０及び仮想化機構２００のそれぞれの負荷情報(ＣＰＵ使用率)を取得する。
【００９４】
電力制御部２１３は、ＣＰＵ２１の駆動周波数が変更される前のタイミング、または、仮想化機構２００が稼動したタイミングの少なくともいずれか一方で、ＣＰＵ２１に関する周波数−消費電力特性に関する情報を取得する。電力制御部２１３は、ＣＰＵ２１の駆動周波数を段階的に変更しながら消費電力をそれぞれ測定し、ＣＰＵの駆動周波数に対応する消費電力を採取する。
【００９５】
周波数制御部２１４は、消費電力の調整を行うタイミング（ＣＰＵ２１の駆動周波数を変更するタイミング）と、周波数−消費電力特性に関する情報を取得するタイミングとの両方で、ＣＰＵ２１の駆動周波数を変更させるものである。
【００９６】
消費電力測定部２６は、物理サーバ２０の消費電力を測定し、その測定結果をネットワークインターフェース２７を介して、管理サーバ１０に送信する。例えば、ＣＰＵ２１に電源を供給するための電線上に直列に抵抗を設け、その抵抗による電圧降下をセンサで検出することにより、物理サーバ２０の消費電力を測定可能である。測定された消費電力は、デジタル信号として管理サーバ１０に送信される。なお、消費電力の測定方法は、上述の例に限定されない。例えば、赤外線温度センサを用いて、ＣＰＵ２１の表面温度を測定する方法等でもよい。表面温度と消費電力との関係を示す既知の特性図があれば、ＣＰＵ２１の表面温度から消費電力を推定可能である。
【００９７】
図５は、各仮想サーバ２２０に各種リソースを割り当てる様子を模式的に示す説明図である。仮想化機構２００は、例えば、物理サーバ２０内のメモリ２２とＣＰＵグループ２１Ｇと、論理ボリューム３５内に設けられた仮想ディスク３５Ｖとを、各仮想サーバ２２０にそれぞれ割り当てる。
【００９８】
メモリ２２を仮想サーバ２２０に割り当てるとは、仮想化機構２００が管理している物理サーバ２０内のメモリ２２の一部を、各仮想サーバ２２０毎の専用メモリ領域として割り当てることを意味する。各仮想サーバ２２０は、自分自身に割り当てられたメモリ領域にのみアクセスすることができ、他の仮想サーバ２２０に割り当てられているメモリ領域にアクセスすることはできない。
【００９９】
ＣＰＵグループ２１Ｇとは、物理サーバ２０の有する一つまたは複数のＣＰＵ２１をグループ化したものである。ＣＰＵグループ２１Ｇは、一つまたは複数設けることができ、各ＣＰＵグループ２１Ｇは、それぞれ少なくとも一つ以上のＣＰＵ２１を備える。
【０１００】
ＣＰＵグループ２１Ｇを仮想サーバ２２０に割り当てるとは、仮想サーバ２２０が所定の時間だけＣＰＵグループ２１Ｇを使用できるように、使用時間をスケジューリングすることを意味する。
【０１０１】
仮想サーバ２２０にＣＰＵグループ２１Ｇを割り当てる方法には幾つかあるが、例えば、ＣＰＵグループ２１Ｇを複数の仮想サーバ２２０で共有する方法等が考えられる。ＣＰＵグループ２１Ｇ内のＣＰＵ２１の数は、仮想サーバ２２０の生成時に管理者等が自由に設定することが出来る。
【０１０２】
複数のＣＰＵグループ２１Ｇを有する場合、各仮想サーバ２２０がそれぞれ専用のＣＰＵグループ２１Ｇを占有する構成でもよい。例えば、各仮想サーバ２２０がそれぞれ特定のＣＰＵグループ２１Ｇを占有する構成と、各仮想サーバ２２０が一つまたは複数のＣＰＵグループ２１Ｇを共有する構成とが混在するような場合、仮想サーバ２２０がＣＰＵを共有利用しているか占有利用しているかを区別するための情報を、仮想化機構２００は管理する。なお、仮想サーバ２２０がＣＰＵ２１を占有して利用している場合は、コアごとに駆動周波数を変更する機能を用いて、指定したＣＰＵ２１のみ駆動周波数を低下させて、消費電力を調整することもできる。
【０１０３】
仮想ディスク３５Ｖを仮想サーバ２２０に割り当てるとは、論理ボリューム３５の一部の領域を、仮想サーバ２２０の専用領域３５Ｖとして割り当てることを意味する。従って、仮想ディスク３５Ｖは、論理ボリューム３５の部分領域である。仮想サーバ２２０上で稼動するＯＳ２２１は、仮想ディスク３５Ｖを通常のディスクとして認識する。しかし、実際には、各仮想サーバ２２０は、論理ボリューム３５内の一部の領域だけを使用することになる。
【０１０４】
図６は、本実施例による動作の概要を示す説明図である。ユーザは、電力モード管理部１１１に、消費電力調整要求を指示する（Ｓ１０）。消費電力調整要求は、各仮想サーバ２２０及び仮想化機構２００の負荷状況に応じて、最適な消費電力に調整させるための要求である。
【０１０５】
ユーザからの要求を受領した電力モード管理部１１１は、仮想環境性能管理部１０１に周波数調整要求を発行する（Ｓ１１）。周波数調整要求とは、ＣＰＵ２１の駆動周波数を調整させるための要求である。
【０１０６】
仮想化機構２００内の性能取得部２１２は、各仮想サーバ２２０及び仮想化機構２００の負荷情報（ＣＰＵ使用率）を定期的に収集している（Ｓ１２）。仮想環境性能管理部１０１は、性能取得部２１２から各仮想サーバ２２０及び仮想化機構２００のそれぞれの負荷情報を取得する。仮想環境性能管理部１０１は、各仮想サーバ２２０のＣＰＵ使用率と仮想化機構２００のＣＰＵ使用率とを合計した合計使用量を算出する（Ｓ１３）。
【０１０７】
本実施例では、各仮想サーバ２２０の負荷情報だけではなく、仮想化機構２００の負荷情報も取得して、ＣＰＵ２１（ＣＰＵグループ２１Ｇ）全体の使用量を算出する。これにより、ＣＰＵ２１の駆動周波数を下げた場合でも、仮想化機構２００が仮想サーバ２２０を動作させるための処理に悪影響が及ぶのを防止できる。
【０１０８】
消費電力を削減させる場合、仮想環境性能管理部１０１からリソース管理部１０２へ処理が移行する。仮想化機構２００内の電力制御部２１３は、ＣＰＵ２１の周波数−消費電力特性に関する情報をリソース管理部１０２に提供する（Ｓ１４）。
【０１０９】
リソース管理部１０２は、仮想環境性能管理部１０１から渡された合計使用量と、電力制御部２１３から入手した周波数−消費電力特性に関する情報とに基づいて、現在の各仮想サーバ２２０及び仮想化機構２００のそれぞれの負荷状態に応じた、最適な駆動周波数を算出する（Ｓ１５）。
【０１１０】
ワークロード管理部１０３は、リソース管理部１０２によって算出された周波数に基づいて、各仮想サーバ２２０への新たなＣＰＵ割当量を算出する（Ｓ１６）。さらに、ワークロード管理部１０３は、仮想化機構２００内のＣＰＵ割当て部２１１に、算出されたＣＰＵ割当量に変更するように指示し、その次に、仮想化機構２００内の周波数制御部２１４に、ＣＰＵ２１の駆動周波数を変更させるための指示を発行する（Ｓ１７）。
【０１１１】
ＣＰＵ割当て部２１１は、ワークロード管理部１０３から指示されたＣＰＵ割当量に従って、各仮想サーバ２２０及び仮想化機構２００のそれぞれのＣＰＵ割当量を変更する（Ｓ１８）。周波数制御部２１４は、ワークロード管理部１０３から指示された駆動周波数に従って、周波数変更指示をＣＰＵ２１に出力する（Ｓ１９）。ＣＰＵ２１は、周波数制御部２１４からの指示に従って、駆動周波数を変更する（Ｓ２０）。
【０１１２】
このように動作することにより、本実施例では、負荷の高い仮想サーバ２２０の処理性能に影響を与えることなく、消費電力を削減することができる。
【０１１３】
なお、例えば、ユーザが仮想サーバ２２０の負荷ピーク時を予め知っている場合や、特定の仮想サーバ２２０の負荷の発生期間等を予め把握している場合もある。これらの場合には、消費電力を調整するタイミング等を規定するスケジュールを予め作成しておき、このスケジュールを電力モード管理部１１１に入力することにより、適切なタイミングで消費電力を制御することもできる。この例については、後述する別の実施例で述べる。
【０１１４】
消費電力を削減するタイミングを事前に指定することにより、各仮想サーバ２２０の負荷を分散させることができる。従って、ＣＰＵ２１の駆動周波数を低下させて消費電力を削減する期間を延ばすことができる。
【０１１５】
ＣＰＵ２１の周波数−消費電力特性を予め把握し、かつ、ＣＰＵ２１の消費電力量と仮想サーバ２２０の実行時間の積分値とを求めることで、時間の経過を考慮して消費電力を制御することができる。これにより、消費電力をさらに最適化できる。
【０１１６】
例えば、ＣＰＵ２１の周波数−消費電力特性によっては、高負荷状態で短時間に処理を完了させる方が、中負荷状態で長時間処理させるよりも、消費電力が少なくなる場合も考えられる。
【０１１７】
また、予め仮想サーバ２２０に優先度を付けておき、特定の仮想サーバ２２０の性能をだけを保証し、その他の仮想サーバ２２０の性能を考慮しないことにより、より一層消費電力の削減効果を得ることも可能である。
【０１１８】
仮想サーバ２２０の性能低下よりも消費電力の削減量を優先する運用の場合、優先度の低い仮想サーバ２２０の性能を意図的に低下させることにより、ＣＰＵ２１の駆動周波数を大幅に低下させることができる。
【０１１９】
例えば、高速応答の要求される処理を実行する仮想サーバ２２０や、完了時間の決定されている処理を実行する仮想サーバ２２０には、相対的に高い優先度を設定し、それ以外の処理を担当する仮想サーバ２２０の優先度を相対的に低く設定する。この結果、物理サーバ２０の消費電力を一層低減することができる。
【０１２０】
仮想環境性能管理部１０１は、駆動周波数の調整後に、再度、性能取得部２１２から各仮想サーバ２２０及び仮想化機構２００のそれぞれの負荷情報を取得する。実行待ち要求の数が所定値を超えたような場合、仮想環境性能管理部１０１は、リソース管理部１０２に駆動周波数の再調整を要求する。これにより、仮想サーバ２２０の負荷が突然上昇した場合でも、比較的速やかに、ＣＰＵ２１の駆動周波数及び／またはＣＰＵ割当量を、元の状態に戻すことができる。
【０１２１】
本実施例の電力制御部２１３は、ＣＰＵ２１の駆動周波数と消費電力の関係の情報を取得し登録する。この情報は、各物理サーバ毎にそれぞれ保持される。一般に、ＣＰＵの駆動周波数を変更するには時間的コストがかかる。ＣＰＵの駆動周波数を変更する場合は、段階的に駆動周波数及び電圧を変更する必要があるためである。従って、いったん低下させた駆動周波数を元の駆動周波数に戻すためには、ある程度の時間を要する。
【０１２２】
仮想サーバ２２０の負荷が断続的に変化する場合は、ＣＰＵ２１の駆動周波数を変更する回数も増加する。従って、各回の変更に要するコストが顕著に現れ、物理サーバ２０の性能を低下させるおそれがある。そこで、本実施例では、駆動周波数を元の値あるいは元の値に近い値に戻すことを考慮して、ＣＰＵ２１の駆動周波数を決定する。その詳細は後述する。
【０１２３】
図７は、本実施例の適用前の状態（図７（ａ））と適用後の状態（図７（ｂ））とを示すためのテーブル４００である。このテーブル４００は、本実施例による効果を説明するためのテーブルであり、実際の制御に使用されるテーブルではない。テーブル４００には、各仮想サーバ２２０及び仮想化機構２００毎に、通常モード４１０及び省電力モード４２０の状態がそれぞれ示されている。
【０１２４】
通常モード４１０とは、ＣＰＵ２１の駆動周波数を低下させずに物理サーバ２０を使用するモードである。省電力モード４２０とは、ＣＰＵ２１の駆動周波数及び電圧を低下させて、物理サーバ２０を使用するモードである。
【０１２５】
通常モード４１０において、各仮想サーバ２２０及び仮想化機構２００に、カラム４１１に示すＣＰＵ割当量がそれぞれ予め割り当てられている。そのＣＰＵ割当量を実際に使用している割合は、カラム４１２にＣＰＵ使用率として示されている。省電力モード４２０の場合も、通常モード４１０で述べたと同様に、カラム４２１はＣＰＵ割当量を、カラム４２２はＣＰＵ使用率をそれぞれ示す。
【０１２６】
図７（ａ）の通常モード４１０に着目すると、第２仮想サーバ及び第３仮想サーバには、それぞれ１９％ずつＣＰＵ量が割り当てられているにも関わらず、実際のＣＰＵ使用率はそれぞれ６％ずつとなっている。つまり、ＣＰＵ２１の全量のうち２６％が使用されていない。これに対し、第１仮想サーバのＣＰＵ割当量は６０％であるが、第１仮想サーバは割り当てられたＣＰＵ量を全て使用している（ＣＰＵ使用率６０％）。
【０１２７】
そこで、本実施例による消費電力の削減処理を行う。未使用のＣＰＵ使用率は、上述の通り、２６％（＝１００−(６０＋６＋６＋２)）であるから、ＣＰＵ２１の駆動周波数を約７０％低下させても、全体の処理性能はほぼ変化しないと考えられる。
【０１２８】
従って、ＣＰＵ２１の駆動周波数を７０％まで低下させることも可能である。しかし、単純にＣＰＵ２１の駆動周波数のみを低下させると、各仮想サーバ２２０及び仮想化機構２００のそれぞれの性能も低下してしまう。そこで、本実施例では、第１仮想サーバへのＣＰＵ割当量を８５％（＝６０％÷７０／１００）に増加させることにより、第１仮想サーバの性能と第２、第３仮想サーバの性能とをそれぞれ維持する。また、この際に、仮想化機構２００の負荷も考慮してＣＰＵ割当量を変更することにより、サーバ仮想化環境全体の性能も維持する。
【０１２９】
上述のように、本実施例では、図７（ｂ）の省電力モード４２０に示すように、駆動周波数を低下させると共に、各仮想サーバ２２０及び仮想化機構２００へのそれぞれのＣＰＵ割当量を変更する。第１仮想サーバのＣＰＵ割当量は、変更前の値（６０％）よりも大きい値（８５％）に設定される。第２仮想サーバ及び第３仮想サーバのＣＰＵ割当量は、変更前の値（１９％）よりも小さい値（６％）に設定される。仮想化機構２００のＣＰＵ割当量は、ＣＰＵ２１の駆動周波数の低下を補うことができるように、変更前の値（２％）よりも大きい値（３％）に設定される。
、ＣＰＵ２１の駆動周波数を変更するよりも前に、各仮想サーバ２２０及び仮想化機構２００のそれぞれのＣＰＵ割当量を変更させる。高負荷の仮想サーバ２２０のＣＰＵ割当量は増加され、低負荷の仮想サーバ２２０のＣＰＵ割当量は減少される。これにより、仮想化機構２００の管理する全ての仮想サーバ２２０の性能を維持しつつ、物理サーバ２０の消費電力を低減できる。
【０１３０】
図８は、物理サーバ管理テーブル１２１の構成例を示す説明図である。カラムＣ１２１０は、各物理サーバ２０を識別するための物理サーバ識別子を示す。カラムＣ１２１１には、ＣＰＵ２１のスペックが格納される。カラムＣ１２１２には、物理サーバ２０の搭載するメモリ２２の容量が格納される。カラムＣ１２１３には、物理サーバ２０に接続されているデバイスに関する情報が格納される。
【０１３１】
デバイスとしては、例えば、ＮＩＣ（Network Interface Card）やＨＢＡ（Host Bus Adapter）等を挙げることができる。ＮＩＣの場合は、ＭＡＣ（Media Access Control）アドレスが、カラムＣ１２１３に格納される。ＨＢＡの場合は、ＷＷＮ（World Wide Name）が格納される。
【０１３２】
カラムＣ１２１４には、物理サーバ２０が利用する論理ボリューム３５に関する情報が格納される。例えば、論理ボリューム３５を識別するためのボリューム識別子やボリューム容量等がカラムＣ１２１４に格納される。なお、複数のサーバ２０が同一の論理ボリューム３５を共有してもよい。この場合は、異なる物理サーバ２０に同一のボリューム識別子がそれぞれ設定される。
【０１３３】
図９は、仮想サーバ２２０管理テーブル１２２の構成例を示す説明図である。カラムＣ１２２０には、仮想化機構２００を識別するための仮想化機構識別子が格納される。通常、一つの物理サーバ２０には、一つの仮想化機構２００が含まれる。カラムＣ１２２１には、仮想化機構２００が稼動している物理サーバ２０を識別するための物理サーバ識別子が格納される。
【０１３４】
カラムＣ１２２２には、仮想サーバ２２０を識別するための仮想サーバ識別子が格納される。仮想サーバ識別子は、仮想化機構２００内でユニークな値でも良いし、複数の仮想化機構２００に渡ってユニークな値でも構わない。仮想サーバ識別子は、仮想化機構２００上で生成された仮想サーバ２２０の数だけ登録される。
【０１３５】
カラムＣ１２２３には、各仮想サーバ２２０に割り当てられたリソースに関する情報が格納される。例えば、どのＣＰＵが割り当てられているかを示す情報、割り当てられたメモリの容量、使用するＮＩＣの情報、使用する仮想ディスクの識別子等である。ＣＰＵの割り当てに関する情報には、例えば、ＣＰＵグループ識別子、ＣＰＵを占有しているか共有しているかを区別する値等が含まれる。
【０１３６】
図１０は、ワークロード管理テーブル１２３の構成例を示す説明図である。カラムＣ１２３０には、仮想化機構２００を識別するための仮想化機構識別子が格納される。カラムＣ１２３１には、その仮想化機構２００が稼働している物理サーバを識別するための物理サーバ識別子が格納される。一つの物理サーバ２０上で複数の仮想化機構２００が稼動している場合は、カラムＣ１２３１に複数の仮想化機構識別子が格納される。
【０１３７】
カラムＣ１２３２には、Ｃ１２３０で特定される仮想化機構２００によって生成される仮想サーバ２２０を特定するための仮想サーバ識別子が格納される。なお、同一の仮想化機構２００により生成された全ての仮想サーバ２２０の仮想サーバ識別子を格納してもよいし、ワークロードの制御対象（ＣＰＵ割当量の変更対象）の仮想サーバ２２０の識別子のみを格納してもよい。
【０１３８】
また、カラムＣ１２３２には、仮想化機構２００を識別するための仮想化機構識別子も格納される。本実施例では、仮想化機構２００のオーバヘッドを管理するべく、仮想化機構識別子も管理する。
【０１３９】
カラムＣ１２３３には、仮想サーバ２２０に関するＣＰＵ割当量が格納される。ＣＰＵ割当量とは、仮想サーバ２２０に対して割り当てられる、ＣＰＵグループ２１Ｇの時間的な量である。ＣＰＵ割当量が大きいほど仮想サーバ２２０の処理性能は向上する。
【０１４０】
なお、ＣＰＵ割当量の単位は、ユーザが任意に指定できる。例えば、仮想化機構２００毎に、ＣＰＵ全体の量を１００％として、仮想サーバ２２０毎に百分率で値を格納しても良い。仮想化機構２００の管理下にある全てのＣＰＵ量（ＣＰＵを使用できる時間）を、余さずに各仮想サーバ２２０に割り当てる必要はない。仮想サーバ２２０の急な負荷増大に備えて、未使用のＣＰＵ量を予め残しておく構成でも良い。
【０１４１】
カラムＣ１２３４には、物理ＣＰＵ使用率が格納される。物理ＣＰＵ使用率とは、ＣＰＵグループ２１Ｇの全処理量を１００％とした場合の使用率である。物理ＣＰＵ使用率は、仮想化機構２００が各仮想サーバ２２０のＣＰＵ利用率をスケジューリングした時間に基づいて算出することができる。あるいは、仮想サーバ２２０上で、その仮想サーバ２２０のＣＰＵ使用率を採取し、ＣＰＵ割当量Ｃ１２３３と乗算して算出してもよい。物理ＣＰＵ利用率Ｃ１２３４によって、物理サーバ２０の負荷を知ることができる。なお、便宜上、物理ＣＰＵ利用率を「ＣＰＵ利用率」と略す場合がある。
【０１４２】
本実施例では、仮想サーバ２２０を動作させるために必要な処理を仮想化機構２００に実行させるべく、仮想サーバ２２０への割当てよりも優先的に、ＣＰＵグループ２１Ｇが仮想化機構２００に割り当てられる。
【０１４３】
本実施例において、ユーザは、仮想化機構２００へのＣＰＵ割当量を明示して指定する必要はない。管理サーバ１０は、必要最低限以上のＣＰＵ割当量を仮想化機構２００に自動的に設定する。なお、仮想化機構２００の物理ＣＰＵ使用率は、例えば、仮想化機構２００で稼働する各仮想サーバ２２０のディスパッチ率や、各仮想サーバ２２０のＩ/Ｏ（Input/Output）リクエスト数、仮想サーバ２２０の実行処理待ち数等に基づいて算出することができる。
【０１４４】
図１１は、電力特性管理テーブル１２４の構成例を示す説明図である。電力特性管理テーブル１２４は、物理サーバ２０の有する各ＣＰＵ２１の、駆動周波数の変化に対する消費電力の変化を示す特性を管理する。電力特性管理テーブル１２４には、仮想サーバ２２０及び仮想化機構２００がそれぞれ適切に動作可能な、最適な周波数を得るための情報が格納される。
【０１４５】
カラムＣ１２４０には、物理サーバ識別子が格納される。カラムＣ１２４１には、ＣＰＵ２１に関する、周波数・電力特性マトリクス１２５が格納される。通常、物理サーバ２０には、同一種類のＣＰＵ２１が搭載される。周波数・電力マトリクス１２５は、物理サーバ２０の有するＣＰＵ２１の、駆動周波数に応じた消費電力等の変化を示すマトリクスである。
【０１４６】
一般に、ＣＰＵの駆動周波数ｆと消費電力Ｗとの間には、Ｗ=Ｖ×Ｖ×ｆという線形関係がある(ＶはＣＰＵの駆動電圧)。また、駆動周波数を低下させると、ＣＰＵの駆動電圧も低下させることができ、この結果、効果的に消費電力を削減できる。
【０１４７】
しかし、実際には、駆動周波数と消費電力との間に、きれいな線形関係が成立しない場合もある。この場合、駆動周波数の低下量のわりに消費電力の削減効果が小さい周波数範囲が存在する。
【０１４８】
一方、ＣＰＵの駆動周波数と駆動電圧は、急速に変更することができないという、ＣＰＵの特性がある。従って、仮想サーバ２２０の負荷が上昇して性能が低下した場合に、速やかに元の状態に戻すことができない。
【０１４９】
そこで、本実施例では、駆動周波数の変更コストをできるだけ少なくするために、低下可能な周波数であっても、消費電力の削減効果が少ない場合には、低下可能な周波数に閾値を設け、それ以上周波数を低下させない。つまり、本実施例では、ある周波数ｆ（１）までＣＰＵ２１の駆動周波数を低下可能な場合でも、その周波数ｆ（１）の付近における消費電力の減少量が少ない場合には、ＣＰＵ２１の駆動周波数を、設定可能な周波数ｆ（１）よりも大きい値の所定の閾値周波数ｆｔｈにとどめるという、制御を行う。
【０１５０】
また、例えば、メーカや種類等が異なると、駆動周波数と消費電力の関係が異なるケースもある。このような場合に、電力特性管理テーブル１２４を用いることで、各ＣＰＵ毎の特性の差を事前に知ることができる。
【０１５１】
図１２は、周波数・電力マトリクス１２５の構成例を示す説明図である。図１２（ａ）に示すカラムＣ１２５０には、ＣＰＵの駆動周波数が周波数レベル毎に格納される。カラムＣ１２５１には、消費電力の値が格納される。
【０１５２】
周波数レベルとは、周波数の変化量に対する消費電力の変化量が異なる周波数範囲を区分したものである。
【０１５３】
本実施例では、仮想サーバ２２０の負荷が突発的に上昇した場合、仮想サーバ２２０の性能を比較的速やかに元の状態に戻すことを想定する。このために、本実施例では、仮想サーバ２２０の負荷状況に対応した量だけ駆動周波数を低下可能な場合でも、現在属する周波数レベルと異なる周波数レベルにまたがって、周波数は変更はしないという特徴的な機能を備える。
【０１５４】
例えば、仮想サーバ２２０の負荷（ＣＰＵ使用率）が少なく、ＣＰＵの駆動周波数を半分まで低下可能な場合を考える。この場合、駆動周波数を半分に低下させてしまうと、その後、仮想サーバ２２０の負荷が突発的に増大した場合に、その急激な負荷増大に速やかに対応することができない。上述の通り、ＣＰＵの駆動周波数及び駆動電圧は、段階的に変化させる必要があるためである。負荷増大に対応すべく、ＣＰＵの駆動周波数を元の値に戻すには、時間がかかる。
【０１５５】
また、頻繁に仮想サーバ２２０の負荷が変動する場合、頻繁に駆動周波数を変更すると、この駆動周波数変更に伴う負荷を生じる場合もある。従って、本実施例では、駆動周波数を下げても消費電力の削減効果が少ないと予想される場合は、予め設定される閾値以上、駆動周波数を低下させない。
【０１５６】
駆動周波数の閾値を設定する方法としては、例えば、周波数・電力特性マトリクス１２５を用いて、駆動周波数の変化量に対する消費電力の変化量(電力特性の傾き)等に基づいて行うことができる。
【０１５７】
例えば、図１２（ｂ）に示すように、消費電力特性の傾き毎に駆動周波数をレベル分類する。図１２では、周波数レベル１（１．６〜２．２GHz）、周波数レベル２（２．２〜２．４GHz）、周波数レベル３（２．４〜２．６GHz）、周波数レベル４（２．６〜２．８GHz）、周波数レベル５（２．８〜３．２GHz）の合計５つの周波数レベルを例示している。周波数レベルは、「所定の周波数範囲」に該当する。
【０１５８】
図示の例では、周波数レベル１における消費電力の変化量（傾き）は最も小さく、周波数レベルの値が増加するほど消費電力の変化量も増大する。周波数レベル５の消費電力の変化量は最も大きい。
【０１５９】
各周波数レベルにおいて、消費電力の変化の傾きは一定である。隣接する周波数レベルでは、消費電力の変化の傾きは異なる。換言すると、周波数の閾値は、各周波数レベルの境界にそれぞれ設定される。図示の例では、周波数レベル１と周波数レベル２の境界の周波数、周波数レベル２と周波数レベル３の境界の周波数、周波数レベル３と周波数レベル４の境界の周波数、周波数レベル５と周波数レベル５の境界の周波数が、それぞれ閾値となる。
【０１６０】
本実施例では、変更可能な周波数が異なる周波数レベルに属する場合には、駆動周波数をその値まで低下させず、変更可能な周波数が同一の周波数レベルに属する場合は、駆動周波数を低下させる。これにより、仮想サーバ２２０の突発的な負荷増大に対応するための、ＣＰＵ駆動周波数のマージンを予め確保することができる。
【０１６１】
なお、閾値の周波数は、隣接する各周波数レベルの両方に属する。例えば、周波数レベル２と周波数レベル３の境界の閾値は、周波数レベル２及び周波数レベル３のいずれにも属する値である。従って、例えば、最初の駆動周波数が周波数レベル３の中間程度の値である場合、各仮想サーバ２２０の負荷が少なければ、同一の周波数レベル３の下限値（閾値）まで駆動周波数は低下する。その後、さらに、各仮想サーバ２２０の負荷が減少した場合、駆動周波数は周波数レベル２の範囲内で低下する。
【０１６２】
例えば、最初は、各仮想サーバ２２０が高負荷で作動していても、その後、引き続いてアイドル状態が続く場合を考える。この場合、ＣＰＵの駆動周波数は、周波数レベルを段階的に下っていき、最終的には、周波数レベル１の下限値である、最低周波数まで低下するであろう。
【０１６３】
図１３は、電力モード管理部１１１により実行される電力モード管理処理を示すフローチャートをである。以下に示す各フローチャートは、本発明の理解及び実施に必要な程度で、各処理の概要をそれぞれ示しており、実際のコンピュータプログラムとは異なる場合もある。いわゆる当業者であれば、図示されたステップの変更、削除、追加を容易に行うことができるであろう。
【０１６４】
図１３に示す処理は、ユーザからの消費電力削減要求や消費電量増加要求に対して、最初に実施される。電力モード管理部１１１は、ユーザから入力される要求を受け付けると（Ｓ３０）、その要求が消費電力の削減要求であるか、それとも消費電力の増加要求であるかを判定する（Ｓ３１，Ｓ３２）。
【０１６５】
消費電力削減要求とは、仮想化機構２００及び各仮想サーバ２２０のそれぞれの性能測定結果に基づいた、駆動周波数の減少要求である。消費電力増加要求とは、仮想化機構２００及び各仮想サーバ２２０のそれぞれの性能測定結果に基づいた、駆動周波数の増加要求である。
【０１６６】
消費電力の削減要求の場合（S31:YES）、または、消費電力の増加要求の場合（S32:YES）のいずれかの場合、仮想環境性能管理部１０１に制御を移す（Ｓ３３）。電力モード管理部１１１は、仮想環境性能管理部１０１からの通知を受領することにより、仮想環境性能管理部１０１に制御が受け継がれたことを確認する（Ｓ３４）。電力モード管理部１１１は、ユーザの出した要求が正常に受け付けられた旨を報告する（Ｓ３５）。
【０１６７】
ユーザが、消費電力の調整要求（消費電力の削減要求または増加要求）を一度発行すると、その後、管理サーバ１０は、定期的に消費電力の調整を実行可能である。即ち、管理サーバ１０は、各仮想サーバ２２０及び仮想化機構２００のそれぞれの負荷状態を、定期的または不定期に監視し、その負荷状態に応じてＣＰＵ２１の駆動周波数を増加または減少させるという、フィードバック制御を自動的に実行可能である。
【０１６８】
図１４は、電力特性取得部１１２により実行される、電力特性取得処理を示すフローチャートである。本処理は、ユーザから消費電力の調整を要求されるよりも前に、周波数―消費電力特性に関する情報を予め取得するために実施される。取得された周波数−消費電力特性に関する情報は、最適な駆動周波数を選択するために使用される。最適な駆動周波数とは、例えば、将来の負荷増大への対応が可能であり、かつ、消費電力を有効に削減可能な、駆動周波数である。
【０１６９】
本発明は、周波数−消費電力特性に関する情報を必ずしも必要としない。周波数−消費電力特性に関する情報を利用しない場合でも、仮想サーバ２２０及び仮想化機構２００の性能低下を抑制しつつ、物理サーバ２０の消費電力を削減することができる。しかし、周波数−消費電力特性に関する情報を用いることにより、適切な駆動周波数を選択することができ、より効果的に物理サーバ２０の消費電力を制御可能となる。
【０１７０】
まず最初に、電力特性取得部１１２は、特定の駆動周波数における物理サーバ２０の消費電力を得るために、仮想化機構２００内の周波数制御部２１４に駆動周波数の変更を要求する（Ｓ４０）。この要求のパラメータには、例えば、物理サーバ識別子や駆動周波数の値等が含まれる。
【０１７１】
電力特性取得部１１２は、周波数制御部２１４から受領する通知により、Ｓ４０で発行した要求が周波数制御部２１４によって受け付けられたことを、確認する（Ｓ４１）。電力特性取得部１１２は、消費電力測定部２６から、物理サーバ２０の消費電力を取得する（Ｓ４２）。
【０１７２】
消費電力測定部２６は、例えば、物理サーバ２０のマザーボードに取り付けられる電流センサー等を用いて、消費電力を測定する。測定される消費電力には、各ＣＰＵ２１やメモリ２２で消費される電力と、例えば冷却ファンやインターフェース回路等のその他の電子回路で消費される電力とが含まれる。しかし、電力を主に消費するのは、ＣＰＵ２１である。
【０１７３】
電力特性取得部１１２は、情報をさらに取得するか否かを判断する（Ｓ４３）。即ち、電力特性取得部１１２は、周波数−消費電力特性マトリクス１２５を作成するために必要な情報が全て得られたか否かを判断し（Ｓ４３）、更なる情報取得が必要であると判断した場合（S43:YES）、Ｓ４０に戻る。そして、再びＳ４０〜Ｓ４２が繰り返される。
【０１７４】
電力特性取得部１１２は、例えば、周波数調整を行っていない通常モードのＣＰＵ２１の駆動周波数を、最低周波数から最高周波数まで１００段階に分割して、各段階毎の周波数に対応する消費電力を取得する。なお、取得回数は１００に限らない。１００回以下でもよいし、１００回以上でもよい。また、ＣＰＵの種類に応じて取得回数を変化させる構成でもよい。さらに、測定する周波数の幅や回数等を、ユーザが任意の値に設定可能な構成でもよい。
【０１７５】
周波数−消費電力特性マトリクス１２５の作成に必要な情報を取得できた場合（S43:NO）、電力特性取得部１１２は、駆動周波数毎の消費電力の変化量を分類し、周波数−消費電力特性マトリクス１２５を作成する（Ｓ４４）。
【０１７６】
電力特性取得部１１２は、Ｓ４４で作成した周波数−消費電力特性マトリクス１２５に基づいて、駆動周波数に対する消費電力の変化量の程度を、複数段階に分類し、周波数レベルを得る。電力特性取得部１１２は、各周波数レベル毎に、各周波数レベル内の一番低い周波数を、閾値周波数として決定する（Ｓ４５）。
【０１７７】
電力特性取得部１１２は、周波数―消費電力特性に関する情報と、周波数−消費電力特性マトリクス１２５を電力特性管理テーブル１２４に登録する（Ｓ４６）。
【０１７８】
これにより、周波数−消費電力特性がそれぞれ異なる物理サーバ２０が情報処理システム内に混在している場合でも、各物理サーバ２０の周波数−消費電力特性に応じて、消費電力を制御することができる。
【０１７９】
例えば、ＣＰＵ２１の構造の違いやプロセッサコア数等によって、消費電力の絶対値や特性は大きく変化する。このような場合にも、周波数−消費電力特性マトリクス１２５を各物理サーバ２０毎に用意することにより、消費電力の制御対象となる物理サーバ２０の特性に応じて、効果的な周波数を決定できる。
【０１８０】
なお、周波数−消費電力特性に関する情報の収集及び周波数−消費電力特性マトリクス１２５の作成は、物理サーバ２０の稼動中に複数回実行しても良い。例えば、物理サーバ２０の連続稼動時間によって消費電力が異なる場合には、周波数−消費電力特性に関する情報を所定の間隔で取得することにより、より正確な周波数−消費電力特性マトリクス１２５を得ることができる。また、物理サーバ２０の負荷が予め設定される所定値よりも小さい時間帯に、周波数−消費電力特性に関する情報を収集することにより、物理サーバ２０の性能低下を抑制できる。
【０１８１】
図１５は、仮想環境性能管理部１０１により実行される仮想環境性能管理処理を示すフローチャートである。本処理は、例えば、電力モード管理部１１１から呼び出されることにより、実行される。本処理では、各仮想サーバ２２０及び仮想化機構２００のそれぞれの負荷状況を収集し、ワークロード管理テーブル１２３に登録する。
【０１８２】
仮想環境性能管理部１０１は、要求を受け付けた旨を呼出元に通知する（Ｓ５０）。呼出元としては、電力モード管理部１１１（図１３のＳ３３）が挙げられる。以下、説明の便宜上、仮想環境性能管理部１０１を「性能管理部１０１」と呼ぶ場合がある。
【０１８３】
性能管理部１０１は、仮想化機構２００から、各仮想サーバ２２０の物理ＣＰＵ使用率をそれぞれ取得する（Ｓ５１）。なお、仮想サーバ２２０の処理するタスクの内容によっては、ＣＰＵ２１の性能や駆動周波数に関わらず、物理ＣＰＵ利用率が大きくなる場合がある。この場合、物理ＣＰＵ使用率に代えて、仮想化機構２００に対するタスクの依頼数等を使用してもよい。
【０１８４】
性能管理部１０１は、仮想化機構２００から、各仮想サーバ２２０の実行処理待ち数を取得する（Ｓ５２）。仮想サーバ２２０の実行処理待ち数とは、各仮想サーバ２２０が仮想化機構２００に発行した処理命令のうち、仮想化機構２００上で実行処理待ち状態になっている処理命令の数（タスク数）である。
【０１８５】
仮想サーバ２２０の実行処理待ち数の取得方法としては、例えば、単位時間当たりに仮想サーバ２２０から仮想化機構２００に発行される処理命令を、単位時間毎に仮想化機構２００が監視してカウントする方法等が考えられる。
【０１８６】
性能管理部１０１は、Ｓ５２で取得した実行処理待ち数等に基づいて、仮想化機構２００の物理ＣＰＵ使用率を算出する（Ｓ５３）。
【０１８７】
仮想サーバ２２０の実行処理待ち数が所定数を超える状態が続く場合、性能管理部１０１は、仮想サーバ２２０の負荷が増加していると判断できる。これにより、仮想化機構２００のオーバヘッドと、仮想サーバ２２０の真の負荷状態とを検出できる。
【０１８８】
性能管理部１０１は、一時的な負荷変動による影響を取り除いて平均的な値を取得するために、Ｓ５１〜Ｓ５３のステップを所定時間繰り返して実行する（Ｓ５４）。
【０１８９】
性能管理部１０１は、所定時間収集した情報（仮想サーバ２２０の物理ＣＰＵ使用率、仮想サーバ２２０の実行処理待ち数、仮想化機構２００の物理ＣＰＵ使用率）の平均値を、ワークロード管理テーブル１２３に登録する（Ｓ５５）。
【０１９０】
性能管理部１０１は、仮想サーバ２２０の実行処理待ち数が所定数以上の場合（S56:YES）、または、強制的にリソースの割当てを変更させるためのリソース変更要求が入力された場合（S57:YES）のいずれかの場合に、リソース管理部１０２にリソース変更要求を発行する（Ｓ５８）。例えば、ユーザから手動で、消費電力の調整要求が管理サーバ１０に入力された場合、Ｓ５７で「ＹＥＳ」と判定される。
【０１９１】
リソース管理部１０２に発行されるリソース変更要求には、例えば、仮想サーバ２２０のＣＰＵ利用率と仮想化機構のＣＰＵ使用率の合計値と、仮想サーバ２２０の実行処理待ち数等とが、パラメータとして含まれる。
【０１９２】
性能管理部１０１は、リソース管理部１０２からの通知を受領することにより、リソース管理部１０２がＳ５８で発行された要求を受け付けた旨を確認する（Ｓ５９）。
【０１９３】
なお、Ｓ５６では、仮想サーバ２２０の実行処理待ちの数に基づいて、リソースの割当てを変更させるか否かを判断している。リソースの割当て変更とは、つまり、駆動周波数の変更と、変更された駆動周波数の下でのＣＰＵ割当量の変更とを意味する。
【０１９４】
ＣＰＵの駆動周波数を下げて消費電力を削減した後に、仮想サーバ２２０の負荷が高騰し、省電力モードから通常モードに復帰させる必要がある場合と、駆動周波数を下げた後に、さらに消費電力を削減できる場合とがある。
【０１９５】
そこで、仮想サーバ２２０の実行処理待ち数の閾値として、下限値と上限値を予め設定することが考えられる。例えば、実行処理待ち数が（仮想サーバ２２０の数）×２に等しい場合を下限値とし、実行処理待ち数が（仮想サーバ２２０の数）×３に等しい場合を上限値とする。
【０１９６】
仮想環境性能管理部１０１で測定した値が上限値より小さい場合は、リソース変更が可能な状態であると判定し、測定した値が下限値を下回っている場合は、強制的にリソース変更を行う。これにより、仮想サーバ２２０の一時的な負荷上昇に対応して、リソース変更要求が頻繁に発行されるのを防止することができる。従って、必要以上にＣＰＵ２１の駆動周波数が変更させるのを防止し、変更コストを低減できる。
【０１９７】
図１６は、リソース管理部１０２により実行されるリソース管理処理を示すフローチャートである。本処理は、ＣＰＵ２１の駆動周波数の増加または減少と、各仮想サーバ２２０及び仮想化機構２００へのそれぞれのＣＰＵ割当量の変更とを行う場合に、呼び出されて実行される。
【０１９８】
リソース管理部１０２は、呼出元である仮想環境性能管理部１０１に、要求を受け付けた旨を通知する（Ｓ７０）。リソース管理部１０２は、仮想サーバ管理テーブル１２２を検索し、仮想サーバ２２０に割り当てられているリソースを把握する（Ｓ７１）。
【０１９９】
リソース管理部１０２は、ワークロード管理テーブル１２３を使用し、仮想サーバ２２０の割当リソース情報(ＣＰＵ割当量、ＣＰＵ使用率)等に基づいて、ＣＰＵの未使用率を算出する（Ｓ７２）。ＣＰＵ未使用率とは、物理サーバ２０有するＣＰＵの全量とＣＰＵ使用量との差である。
【０２００】
ＣＰＵ未使用率の算出方法としては、例えば、ＣＰＵグループ２１Ｇを利用する各仮想サーバ２２０のＣＰＵ使用率と仮想化機構２００のＣＰＵ使用率とを合計したＣＰＵ使用率を、１００％から差し引いた値として求める方法がある。
【０２０１】
リソース管理部１０２は、算出されたＣＰＵ未使用率に基づいて、消費電力を削減するために変更可能な周波数を算出する（Ｓ７３）。
【０２０２】
ＣＰＵ未使用率に基づいて変更可能な周波数を計算する方法としては、例えば、周波数変更前におけるＣＰＵ（ＣＰＵグループ２１Ｇ）の駆動周波数に、ＣＰＵ未使用率を乗算する方法が考えられる。例えば、周波数変更前の物理サーバ２０のＣＰＵ駆動周波数が３ＧＨｚ(１００％フル稼働の状態)、ＣＰＵ未使用率が３０％の場合を考える。この場合、変更可能な周波数は、３ＧＨｚ×（１００−３０）％＝２．１ＧＨｚ（フル稼働の７０％の状態）として算出可能である。
【０２０３】
リソース管理部１０２は、電力特性管理テーブル１２４を使用することにより、最適な駆動周波数を決定する（Ｓ７４）。
【０２０４】
例えば、リソース管理部１０２は、周波数−消費電力特性マトリクス１２５を、Ｓ７３で算出された周波数で検索することにより、Ｓ７３で算出された周波数の含まれる周波数レベルを検出する。リソース管理部１０２は、例えば、検出された周波数レベル内の上限周波数を最適な周波数として選択することができる（Ｓ７４）。
【０２０５】
例えば、Ｓ７４で算出された、変更可能な周波数が２．１ＧＨｚであり、この周波数が周波数レベル１に属する場合を考える。変更前の駆動周波数は、３ＧＨｚである。この場合、図１２に示すように、周波数レベル１では、消費電力の削減効果が少ない。従って、周波数レベル１の上限値（周波数レベル１と周波数レベル２との間の閾値周波数）である、２．２ＧＨｚになるようにする。従って、この例の場合、変更可能な周波数（２．１ＧＨｚ）と決定された周波数（２．２ＧＨｚ）との間に、０．１ＧＨｚのマージンが生まれることになる。
【０２０６】
このように、リソース管理部１０２は、周波数の変更量が閾値を上回っている場合または下回っている場合等に、閾値以上の周波数変更を行わないことができる。これにより、ＣＰＵ２１の駆動周波数を低下させても電力削減効果が少ない場合に、駆動周波数の変更に要するコストを低減させることができる。
【０２０７】
上述の通り、駆動周波数を変更可能な範囲を予め設定することにより、駆動周波数の変更量を所定の範囲内にとどめて、駆動周波数の急激な変更を防止できる。従って、ＣＰＵ２１の誤動作を未然に防止でき、さらに、仮想サーバ２２０の負荷増大に対応して駆動周波数を速やかに増加させることができる。
【０２０８】
リソース管理部１０２は、ワークロード管理部１０３にＣＰＵ割当量の変更を要求する（Ｓ７５）。このＣＰＵ割当量を変更する要求に含まれるパラメータとしては、例えば、Ｓ７４で決定された最適周波数がある。リソース管理部１０２は、ワークロード管理部１０３からの通知を受領することにより、ＣＰＵ割当量の変更要求をワークロード管理部１０３が受け付けたことを確認する（Ｓ７６）。
【０２０９】
図１７は、ワークロード管理部１０３により実行されるワークロード管理処理を示すフローチャートである。本処理は、ＣＰＵ割当て部２１１にＣＰＵ割当量の変更を要求する場合等に呼び出されて、実行される。
【０２１０】
ワークロード管理部１０３は、呼出元であるリソース管理部１０２に、要求を受け付けた旨を通知する（Ｓ８０）。次に、ワークロード管理部１０３は、仮想化機構２００のＣＰＵ割当て部２１１から、各仮想サーバ２２０及び仮想化機構２００のそれぞれのＣＰＵ割当量を取得する（Ｓ８１）。
【０２１１】
ワークロード管理部１０３は、ワークロード管理テーブル１２３に、各仮想サーバ２２０のＣＰＵ割当量を登録する（Ｓ８２）。ワークロード管理部１０３は、各仮想サーバ２２０及び仮想化機構２００のそれぞれのＣＰＵ割当量と、各仮想サーバ２２０のＣＰＵ使用率及び仮想化機構２００のＣＰＵ使用率とに基づいて、駆動周波数の変更後における新たなＣＰＵ割当量を算出する（Ｓ８３）。
【０２１２】
ワークロード管理部１０３は、ＣＰＵ２１の駆動周波数を最適周波数に変更した場合でも、各仮想サーバ２２０及び仮想化機構２００のそれぞれの処理性能が低下しないように、新たなＣＰＵ割当量を算出する。
【０２１３】
ＣＰＵ割当量の計算方法としては、例えば、駆動周波数を変更する前の仮想サーバ２２０のＣＰＵ使用率に、駆動周波数の変更量を乗算する方法が考えられる。
【０２１４】
例えば、周波数変更前の仮想サーバ２２０のＣＰＵ使用率が６０％であって、ＣＰＵの駆動周波数を最高周波数（１００％（３ＧＨｚ））から最高周波数の７４％の値（３×０．７４＝２．２ＧＨｚ）に低下させる場合を考える。この場合、周波数変更後における仮想サーバ２２０のＣＰＵ割当量を、６０％×（１００％÷７４％）＝８１％として、算出する。そして、各仮想サーバ２２０のＣＰＵ使用率と仮想化機構２００のＣＰＵ使用率との合計値が、１００％または１００％近傍の値になるように、各仮想サーバ２２０及び仮想化機構２００のそれぞれのＣＰＵ割当量を決定する。
【０２１５】
ワークロード管理部１０３は、リソースの割当てを変更するか否かを判定し（Ｓ８４）、変更する場合には（S84:YES）、仮想化機構２００のＣＰＵ割当て部２１１に、仮想化機構２００及び各仮想サーバ２２０のそれぞれついて、ＣＰＵ割当量の変更を要求する（Ｓ８５）。このＣＰＵ割当量の変更要求には、Ｓ８３で算出されたＣＰＵ割当量がパラメータとして含まれる。
【０２１６】
ワークロード管理部１０３は、ＣＰＵ割当て部２１１からの通知を受領することにより、Ｓ８５で発行された要求がＣＰＵ割当て部２１１に受け付けられたことを確認する（Ｓ８６）。そして、ワークロード管理部１０３は、ワークロード管理テーブル１２３内の、各仮想サーバ２２０のＣＰＵ割当量を更新する（Ｓ８７）。
【０２１７】
ワークロード管理部１０３は、周波数制御部２１４に、周波数の変更を要求する（Ｓ８８）。この周波数変更要求には、最適周波数とＣＰＵグループ識別子等がパラメータとして含まれる。
【０２１８】
なお、ＣＰＵ割当量の算出方法としては、上述のように仮想サーバ２２０のＣＰＵ使用率に基づいて算出する方法でも良いし、あるいは、予めユーザにより設定される最低値を満たすようにＣＰＵ割当量を算出する方法でもよい。仮想サーバ２２０が最低限有するべき最低値を予め指定することにより、ＣＰＵの駆動周波数を低下可能な量を大きくすることができ、より一層消費電力を低減できる。
【０２１９】
図１８は、周波数制御部２１４により実行される周波数制御処理を示すフローチャートである。
【０２２０】
周波数制御部２１４は、呼出元であるワークロード管理部１０３に、要求を受け付けた旨を通知する（Ｓ１００）。周波数制御部２１４は、周波数変更対象のＣＰＵ２１に対して、周波数の変更を指示する（Ｓ１０１）。ＣＰＵ２１への周波数の変更要求は、例えば周波数の値を指定しても良いし、あるいは、周波数が複数のレベルに区切られている場合は、レベル番号を指定しても良い。
【０２２１】
なお、ＣＰＵ２１の駆動周波数を低下させる場合は、ＣＰＵ２１の駆動電圧も下げることができる。駆動周波数だけでなく駆動電圧も低下させることにより、消費電力の削減効果を大きくすることができる。
【０２２２】
周波数制御部２１４は、仮想環境性能管理部１０１に、周波数の変更が完了した旨を通知する（Ｓ１０２）。さらに、周波数制御部２１４は、仮想環境性能管理部１０１に、周波数変更後における各仮想サーバ２２０及び仮想化機構２００の負荷状態を測定することを、要求する（Ｓ１０２）。
【０２２３】
このように構成される本実施例によれば、各仮想サーバ２２０の処理性能の低下を抑制しつつ、各仮想サーバ２２０及び仮想化機構２００を有する物理サーバ２０の消費電力を適切に制御できる。
【０２２４】
本実施例では、ＣＰＵ２１の駆動周波数を低下可能な周波数まで下げるのではなく、消費電力量の変化を示す傾きの値が変化する場合の周波数（閾値周波数）を用いて、ＣＰＵ２１の駆動周波数の決定範囲を制限する。従って、本実施例では、所定の周波数範囲内で、ＣＰＵ２１の駆動周波数を決定でき、仮想サーバ２２０の負荷増大に速やかに対応することができる。
【実施例２】
【０２２５】
図１９は、本発明の第２実施例に係る管理サーバ１０が実行する、電力モード管理処理を示すフローチャートである。本実施例は、第１実施例の変形例に該当するため、第１実施例との相違点を中心に説明する。
【０２２６】
電力モード管理部１１１は、消費電力制御スケジュール５００を受け取ると（Ｓ３０Ａ）、図１３で述べたＳ３１〜Ｓ３５のステップを実行する。消費電力制御スケジュールには、例えば、各仮想サーバ２２０が稼働する時間帯に関する情報等が含まれる。
【０２２７】
従って、電力モード管理部１１１は、消費電力制御スケジュール５００に従って動作することにより、、各仮想サーバ２２０の稼働時間に合わせて、駆動周波数の変更及びＣＰＵ割当量の変更を行うことができる。
【０２２８】
例えば、各仮想サーバ２２０が稼働する時間帯や各仮想サーバ２２０の負荷ピーク時刻がスケジュール５００に記録されていれば、各仮想サーバ２２０が同時に稼働するのを防止し、各仮想サーバ２２０の負荷を分散させることができる。これにより、ＣＰＵ２１の駆動周波数を比較的長時間低い値にとどめておくことができ、消費電力をより一層低減することができる。
【０２２９】
なお、本発明は、上述した実施の形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
【図面の簡単な説明】
【０２３０】
【図１】本発明の実施形態の概念を示す説明図である。
【図２】本実施例に係るシステムの全体構成を示す説明図である。
【図３】管理サーバの構成を示す説明図である。
【図４】物理サーバの構成を示す説明図である。
【図５】仮想サーバにリソースを割り当てる様子を示す説明図である。
【図６】本システムの全体動作の流れを示す説明図である。
【図７】最適な駆動周波数に調整する前（ａ）と調整した後（ｂ）の状態をそれぞれ示す説明図である。
【図８】物理サーバ管理テーブルの構成を示す説明図である。
【図９】仮想サーバ管理テーブルの構成を示す説明図である。
【図１０】ワークロード管理テーブルの構成を示す説明図である。
【図１１】電力特性管理テーブルの構成を示す説明図である。
【図１２】駆動周波数と消費電力との関係を示す説明図である。
【図１３】電力モード管理処理を示すフローチャートである。
【図１４】電力特性取得処理を示すフローチャートである。
【図１５】仮想環境性能管理処理を示すフローチャートである。
【図１６】リソース管理処理を示すフローチャートである。
【図１７】ワークロード管理処理を示すフローチャートである。
【図１８】周波数制御処理を示すフローチャートである。
【図１９】第２実施例に係る電力モード管理処理のフローチャートである。
【符号の説明】
【０２３１】
１：管理サーバ、１Ａ：ＣＰＵ使用量等検出部、１Ｂ：ＣＰＵ消費電力特性取得部、１Ｃ：周波数決定部、１Ｄ：ＣＰＵ割当量決定部、１Ｅ：設定変更要求部、２：物理サーバ、２Ａ：ＣＰＵ、３：ストレージ装置、３Ａ：論理ボリューム、４：仮想化機構、５：仮想サーバ、１０：管理サーバ、２０：物理サーバ、２１：ＣＰＵ、２１Ｇ：ＣＰＵグループ、２２：メモリ、２６：消費電力測定部、３０：ストレージ装置、３１：コントローラ、３２：ドライブ搭載部、３３：記憶ドライブ、３５：論理ボリューム、３５Ｖ：仮想ディスク、１００：仮想化機構管理部、１０１：仮想環境性能管理部、１０２：リソース管理部、１０３：ワークロード管理部、１１０：電力管理部、１１１：電力モード管理部、１１２：電力特性取得部、１２１：物理サーバ管理テーブル、１２２：仮想サーバ管理テーブル、１２３：ワークロード管理テーブル、１２４：電力特性管理テーブル、１２５：周波数−消費電力特性マトリクス、２００：仮想化機構、２１０：リソース制御部、２１１：ＣＰＵ割当て部、２１２：性能取得部、２１３：電力制御部、２１４：周波数制御部、２２０：仮想サーバ、５００：消費電力制御スケジュール。
【図１】
0004839328.tif 000002
【図２】
0004839328.tif 000003
【図３】
0004839328.tif 000004
【図４】
0004839328.tif 000005
【図５】
0004839328.tif 000006
【図６】
0004839328.tif 000007
【図７】
0004839328.tif 000008
【図８】
0004839328.tif 000009
【図９】
0004839328.tif 000010
【図１０】
0004839328.tif 000011
【図１１】
0004839328.tif 000012
【図１２】
0004839328.tif 000013
【図１３】
0004839328.tif 000014
【図１４】
0004839328.tif 000015
【図１５】
0004839328.tif 000016
【図１６】
0004839328.tif 000017
【図１７】
0004839328.tif 000018
【図１８】
0004839328.tif 000019
【図１９】
0004839328.tif 000020