説明

電力制御方法、計算機システム、及びプログラム

【課題】サーバに搭載されているメモリの消費電力を制御し、消費電力を削減する。
【解決手段】一つ以上の業務サーバと、業務サーバを管理する管理サーバと、業務サーバと管理サーバとを接続するネットワークと、を備える計算機システムで実行されるメモリの消費電力を制御する方法であって、業務サーバは、メモリチップと、メモリチップの消費電力を制御する電力制御機構と、一つ以上の仮想サーバを稼動させる仮想化機構と、を備え、管理サーバは、仮想サーバとメモリチップとの割り当て関係を保持し、管理サーバが、仮想サーバのメモリチップへのアクセス情報を取得し、管理サーバが、取得したアクセス情報が所定の目標性能を達成できるか否か、及び、仮想サーバとメモリチップとの割り当て関係に基づいて、メモリチップの消費電力を変更するよう業務サーバに指示し、業務サーバが、管理サーバからの指示に基づいてメモリチップの消費電力を変更する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリの電力を制御する方法に関し、特に、メモリを省電力化する方法に関する。
【背景技術】
【0002】
サーバ搭載メモリはコスト低下と64bitアドレス対応プロセッサの普及によって、大量のメモリがサーバに搭載されるようになってきている。また、大量のメモリを利用するインメモリデータベースシステム、及び、信頼性を向上させるためにメモリを二重にする等の技術も普及し始めている。
【0003】
しかし、前述した技術が普及した結果、メモリによって消費される電力は大幅に増大しており、メモリの消費電力を削減する技術が必要である。
【0004】
このような問題に解決する方法として、メモリチップのうち利用されていないメモリチップの電力供給を停止することによって、メモリの消費電力を抑える方法が存在する。
【0005】
しかし、一般的にOS及びアプリケーションプログラムは、一度メモリを利用すると、OS及びアプリケーションがシャットダウン又は終了するまでメモリを開放する場合が多いため、前述した方法を適用するのは不可能である。
【発明の開示】
【発明が解決しようとする課題】
【0006】
本発明が解決しようとする課題は、サーバに搭載されているメモリの消費電力を制御し、消費電力を削減することである。
【課題を解決するための手段】
【0007】
本発明の代表的な一例を示せば以下の通りである。すなわち、一つ以上の業務サーバと、前記業務サーバを管理する管理サーバと、前記業務サーバと前記管理サーバとを接続するネットワークと、を備える計算機システムで実行されるメモリの消費電力を制御する方法であって、前記業務サーバは、メモリの消費電力を制御できる単位である一つ以上のメモリチップと、前記メモリチップの消費電力を省電力状態と通常状態とに切り替える制御をする電力制御機構と、一つ以上の仮想サーバを稼動させる仮想化機構と、を備え、前記仮想化機構は、前記仮想サーバと前記メモリチップとの割り当て関係を管理するメモリマッピング部を備え、前記管理サーバは、前記仮想サーバと前記メモリチップとの割り当て関係を保持し、前記方法は、前記管理サーバが、前記仮想サーバのメモリチップへのアクセス情報を取得し、前記管理サーバが、前記取得したアクセス情報が所定の目標性能を達成できるか否か、及び、前記仮想サーバと前記メモリチップとの割り当て関係に基づいて、前記メモリチップの消費電力を変更するよう前記業務サーバに指示し、前記業務サーバが、前記管理サーバからの指示に基づいて前記メモリチップの消費電力を変更する。
【発明の効果】
【0008】
本発明の一実施形態によれば、OS及びアプリケーションに利用されるメモリが確保された状態である場合でも、その利用状況に応じてメモリの消費電力を適切に制御し、消費電力を削減することができる。
【発明を実施するための最良の形態】
【0009】
以下、本発明の実施の形態について図面を参照しながら説明する。
【0010】
なお、以下に記載する実施の形態は、本発明の実施の形態の一つであり、それぞれの実施の形態の組み合わせも本発明の実施の形態の一つとなりえる。また、以下に記載する実施の形態は本発明の範囲を限定するものではない。
【0011】
<実施形態1>
図1は、本発明の第1の実施の形態の計算機システムの構成図である。
【0012】
計算機システムは、管理サーバ101、及びサーバ103を備える。また、管理サーバ101及びサーバ103はネットワーク102によって接続される。
【0013】
管理サーバ101は、電力制御プログラム110及びテーブル群111を備える。
【0014】
サーバ103は、メモリ131、CPU132、補助記憶装置133、I/Oデバイス134及び電力制御機構135を備え、アプリケーションプログラムを実行することによって業務を行う。
【0015】
メモリ131は、仮想化機構150及び仮想サーバ140を含む。仮想化機構150及び仮想サーバ140は、プログラム及びデータから構成される。仮想化機構150は、仮想サーバ140を制御する。仮想サーバ140は、仮想化機構150によって、サーバ103のメモリ131を分割又は共有して、利用することができる。
【0016】
なお、本発明の第1の実施の形態では、仮想化機構150はプログラムとして実装しているが、一部又は全部をカスタムプロセッサ等のハードウェアの実装によって実現してもよい。
【0017】
CPU132は、メモリ131に格納されているプログラムを実行するプロセッサである。
【0018】
補助記憶装置133は、ハードディスク又はフラッシュメモリ等の記憶装置である。
【0019】
I/Oデバイス134は、NIC(Network Interface Card)等の入出力装置(インタフェイス)である。
【0020】
電力制御機構135は、メモリ131の電力消費状態を制御する。なお、電力制御機構135は、ハードウェアによって実装してもよいし、プログラム等のソフトウェアの実装によって実現してもよい。
【0021】
また、電力制御機構135は、I/Oデバイス134を介して管理サーバ101から電力の制御要求を受け付ける。なお、電力制御機構135がメモリ131の電力消費状態を制御する方法は、例えば、メモリ131の動作周波数や電圧を制御する方法、メモリ131の性能を制御する方法、及び、メモリ131に供給する電力を停止する方法等がある。
【0022】
また、電力制御機構135が制御可能なメモリ131の単位は、例えば、メモリ131を構成する一つ以上のメモリチップ単位である。すなわち、メモリチップは、電力制御機構135がメモリ131の消費電力を制御できる単位である。なお、前述した以外の電力消費状態の制御方法及び電力制御単位も、本発明の対象となる。
【0023】
なお、図1に示す例では、計算機システムは、一つのサーバ103を備えているが、複数のサーバ103を備えてもよい。また、仮想化機構150は、四つの仮想サーバ140を制御しているが、いくつ制御してもよい。
【0024】
図2は、本発明の第1の実施の形態の管理サーバ101の構成図である。
【0025】
管理サーバ101は、メモリ201、CPU202、NIC203及び入出力装置204を備える。
【0026】
メモリ201は電力制御プログラム110及びテーブル群111を格納する。
【0027】
CPU202は、メモリ201に格納されているプログラムを実行するプロセッサである。なお、図2に示す例では、管理サーバ101は、一つのCPU202を備えているが、複数のCPU202を備えてもよい。
【0028】
NIC203は、ネットワーク102に接続するためのインタフェイスである。
【0029】
入出力装置204は、管理サーバ101に情報を入出力するインタフェイスである。また、入出力装置204には、マウス及び/又はキーボード等の入力装置205、及び、ディスプレイ等の表示装置206が接続される。なお、入出力装置204にUSBメディア等の外部記憶装置を接続して、情報の読み書きを行ってもよい。また、管理サーバ101は、ハードディスク又はフラッシュメモリ等の補助記憶装置を備えてもよい。
【0030】
図3は、本発明の第1の実施の形態の仮想化機構150の構成を示している。
【0031】
仮想化機構150は、メモリマッピングサブプログラム301、メモリアクセス監視サブプログラム302、マッピング変更サブプログラム303、メモリマッピングテーブル310及び制御I/F320を備える。
【0032】
メモリマッピングサブプログラム301は、各仮想サーバ140とメモリ131とのマッピング関係(対応関係)を管理する。
【0033】
メモリアクセス監視サブプログラム302は、各仮想サーバ140のメモリアクセスの頻度(メモリ性能情報)を監視する。
【0034】
マッピング変更サブプログラム303は、各仮想サーバ140とメモリ131とのマッピング関係を変更する。
【0035】
メモリマッピングテーブル310は、各仮想サーバ140とメモリ131とのマッピング関係を保持する。なお、メモリマッピングテーブル310については、図5を用いて詳細に後述する。
【0036】
制御I/F320は、外部(例えば、管理サーバ101)と通信するインタフェイスである。
【0037】
なお、仮想化機構150及びその構成要素の一部又は全部は、カスタムプロセッサによってハードウェアとして実装されてもよい。
【0038】
図4は、本発明の第1の実施の形態のメモリ131と仮想サーバ140とのマッピング関係の例を示す図である。
【0039】
メモリ131は、メモリチップ401(メモリチップ1〜6)によって構成される。
【0040】
各メモリチップ401は、メモリ131のアドレスの所定の領域に対応する。例えば、メモリ131の全アドレスのうち、最初の4GBの領域のアドレスがメモリチップ1の一部又は全部に対応し、次の4GBの領域のアドレスがメモリチップ2の一部又は全部に対応する。
【0041】
図4に示す例では、メモリチップ1の領域には、仮想サーバ1及び仮想サーバ2で利用されるプログラム及びデータが保持されている。また、メモリチップ2及びメモリチップ3の領域には、仮想サーバ3で利用されるプログラム及びデータが、またがって保持されている。また、メモリチップ4の領域には、仮想サーバ4で利用されるプログラム及びデータが保持されている。メモリチップ5の領域には、仮想化機構150で利用されるプログラム及びデータが保持されている。
【0042】
なお、図4に示す例では、メモリ131は、六つのメモリチップ401によって構成されているが、六つ以外の複数のメモリチップ401によって構成されてもよい。
【0043】
図5は、本発明の第1の実施の形態のメモリマッピングテーブル310である。
【0044】
メモリマッピングテーブル310は、メモリマップ501、メモリチップアドレス502、割り当て先503及び仮想サーバアドレス504を含む。
【0045】
メモリマップ501は、図4に示されるメモリチップ401の識別子である。
【0046】
メモリチップアドレス502は、メモリマップ501に示すメモリチップ401に対応するアドレスの領域である。なお、図5に示す例では、メモリチップアドレス502に格納されるアドレスは、16進数で示される。また、メモリチップ1から順番に、連続したアドレスが割り当てられているが、任意のアドレスの範囲が各メモリチップ401に割り当てられてもよい。
【0047】
割り当て先503は、メモリチップアドレス502に示すアドレスの割り当て先の識別子である。割り当て先の識別子は、例えば、仮想サーバ140の識別子及び仮想化機構150である。なお、割り当て先が存在しない場合には「未割り当て」が格納される。
【0048】
仮想サーバアドレス504は、メモリチップアドレス502に示すアドレスに対応する割り当て先503に示す割り当て先のアドレスを示す。具体的には、仮想サーバアドレス504は、仮想サーバ140のOSからみたアドレスである。
【0049】
図5に示す例では、メモリマッピングテーブル310の第2行のメモリチップ501、メモリチップアドレス502、割り当て先503及び仮想サーバアドレス504には、それぞれ「1」、「80000000h−BFFFFFFFh」、「仮想サーバ2」、「0h−3FFFFFFFh」が格納されている。これは、メモリチップ「1」のメモリアドレスの領域「80000000h−BFFFFFFFh」は、「仮想サーバ2」のメモリアドレスの領域「0h−3FFFFFFFh」に対応していることを示している。
【0050】
なお、メモリマッピングテーブル310一部の情報は必ずしも必須ではない。また、メモリマッピングテーブル310の形式は、同等の情報を保持するものであれば、図5に示される形式に限定されるものではない。
【0051】
図6は、本発明の第1の実施の形態の電力管理プログラム110及びテーブル群111の構成を示している。
【0052】
電力管理プログラム110は、設定サブプログラム601、情報取得サブプログラム602、判定サブプログラム603、変更指示サブプログラム604及び電力制御サブプログラム605を含む。
【0053】
設定サブプログラム601は、仮想サーバ140の設定を行う。情報取得サブプログラム602は、サーバ103から情報を取得する。判定サブプログラム603は、メモリマッピングテーブル310の変更を判定する。変更指示サブプログラム604は、メモリマッピングテーブル310の変更を指示する。電力制御サブプログラム605は、メモリ131の電力の制御を行う。
【0054】
なお、電力管理プログラム110及びその構成要素の一部又は全部は、カスタムプロセッサによってハードウェアとして実装されてもよい。
【0055】
また、テーブル群111は、仮想サーバ管理テーブル610、メモリ管理テーブル611及び仮想サーバ設定テーブル612を含む。
【0056】
仮想サーバ管理テーブル610は、仮想サーバ140の状態を保持する。なお、仮想サーバ管理テーブル610については、図7を用いて詳細に後述する。
【0057】
メモリ管理テーブル611は、メモリ131の状態を保持する。なお、メモリ管理テーブル611については、図8を用いて詳細に後述する。
【0058】
仮想サーバ設定テーブル612は、仮想サーバ140の設定の情報を保持する。
【0059】
図7は、本発明の第1の実施の形態の仮想サーバ管理テーブル610である。
【0060】
仮想サーバ管理テーブル610は、仮想サーバ701、状態702、メモリ利用容量703及びメモリアクセス情報704を含む。
【0061】
仮想サーバ701は、仮想サーバ140の識別子である。
【0062】
状態702は、仮想サーバ701に示す仮想サーバ140の状態である。例えば、仮想サーバ140が起動中であれば「起動中」であり、停止中であれば「停止中」となる。なお、起動中とは、仮想サーバ140が稼動状態及びサスペンド状態のように、仮想サーバ140の状態がメモリ131に保持されている場合である。また、停止中とは、仮想サーバ140が非稼動状態及びスタンバイ状態のように、仮想サーバ140の状態がメモリに保存されていない場合である。
【0063】
メモリ利用容量703は、仮想サーバ701に示す仮想サーバ140が利用中のメモリの容量である。例えば、状態702が「停止中」である場合には、メモリ利用容量703は「0B」となる。
【0064】
メモリアクセス情報704は、仮想サーバ701の示す仮想サーバ140のメモリアクセスの情報を示す。なお、メモリアクセス情報704は、対象の仮想サーバ140が停止中であれば、値を持たないため、図7に示す例では「−」と示されている。また、メモリアクセス情報704には、「High」及び「Low」の値が格納される。「High」とは、例えば、メモリアクセスの頻度が高い状態であり、「Low」とは、例えば、メモリアクセスの頻度が低い状態である。
【0065】
なお、状態702がサスペンド状態である場合には、メモリアクセス情報704は、「Low」の状態となる。
【0066】
図7に示す例では、仮想サーバ管理テーブル610の第1行の仮想サーバ701、状態702、メモリ利用容量703及びメモリアクセス情報704には、それぞれ「1」、「起動中」、「2GB」及び「High」が格納されている。これは、仮想サーバ「1」は、起動中であり、2GBのメモリを利用していて、仮想サーバ「1」に割り当てられたメモリチップ401が通常状態であることを示す。
【0067】
なお、仮想サーバ管理テーブル610の一部の情報は、必ずしも必須ではない。また、仮想サーバ管理テーブル610の形式は同等の情報を保持するものであれば、図7に示される形式に限定されるものではない。
【0068】
図8は、本発明の第1の実施の形態のメモリ管理テーブル611である。
【0069】
メモリ管理テーブル611は、メモリチップ801、容量802、割り当て先803及び状態804を含む。
【0070】
メモリチップ801は、メモリチップ401の識別子である。
【0071】
容量802は、メモリチップ801に示すメモリチップ401の容量である。
【0072】
割り当て先803は、メモリチップ801に示すメモリチップ401の割り当て先の識別子である。例えば、「1,2」は、仮想サーバ1及び仮想サーバ2が割り当て先であることを示す。また、「仮想化機構」は、割り当て先が仮想化機構150であることを示す。また、「未割り当て」は、割り当て先がないことを示す。
【0073】
状態804は、メモリチップ801に示すメモリチップ401の電力消費状態である。例えば、メモリチップ401が通常状態で稼動している場合には「通常」となる。また、メモリチップ401が省電力状態で稼動する場合は「省電力」となる。なお、省電力状態には、複数の状態のレベルがあり、メモリ131の動作周波数及び電圧を低下させた状態、メモリ131の性能を低下させた状態、及び、メモリ131に供給する電力を停止した状態を含む。また、前述した状態以外のメモリの省電力化状態も含まれる。
【0074】
なお、メモリチップ401に確保されている仮想サーバ140が不要になった場合には、メモリチップ140を停止する場合もある。
【0075】
なお、メモリ管理テーブル611の一部の情報は必ずしも必須ではない。また、メモリ管理テーブル611の形式は同等の情報を保持するものであれば、図8に示される形式に限定されるものではない。
【0076】
図9は、本発明の第1の実施の形態の仮想サーバ設定テーブル612である。
【0077】
仮想サーバ設定テーブル612は、仮想サーバ901、メモリ容量902及び既定状態903を含む。
【0078】
仮想サーバ901は、仮想サーバ140の識別子である。
【0079】
メモリ容量902は、仮想サーバ901に示す仮想サーバ140が利用する最大メモリ容量である。ここで、最大メモリ容量とは、仮想サーバ901に示す仮想サーバ140が利用する最大のメモリ容量である。
【0080】
既定状態903は、仮想サーバ901に示す仮想サーバ140が利用するメモリチップの既定の状態(初期に設定される状態)である。ここで、「High」である場合には、仮想サーバ140に割り当てられたメモリチップ401は、通常状態を既定の状態とし、「Low」である場合には、省電力状態を既定の状態とする。なお、既定状態903の示す既定状態は、必ずしも「High」及び「Low」の2値である必要はなく、3値以上の値が格納されもよい。また、既定状態903には、数値によって示される情報が格納されてもよい。
【0081】
なお、仮想サーバ設定テーブル612の一部の情報は、必ずしも必須ではない。また、仮想サーバ設定テーブル612の形式は同等の情報を保持するものであれば、図9に示される形式に限定されるものではない。
【0082】
図10は、本発明の第1の実施形態の示す設定サブプログラム601の処理で、ユーザの設定情報を取得するために、電力管理プログラム110によって提供されるGUI(Graphical User Interface)の例を示す。
【0083】
図10に示すGUIは、図2に示される表示装置206又はネットワークを経由した他の表示装置に、ブラウザ及び専用のプログラムのいずれかを用いて仮想サーバ140のメモリ設定の情報を表示する。
【0084】
ウインドウ1001は、ブラウザ又は専用プログラムのウインドウを示す。ウインドウ1001には、仮想サーバ140のメモリ設定の情報が表示される。
【0085】
ユーザは、仮想サーバ140の選択枠1010によって、メモリ131に設定する仮想サーバ140の識別子を選択する。メモリ容量枠1010には、ユーザが選択枠1010で選択した仮想サーバ140の最大メモリ容量が入力される。既定状態枠1011には、ユーザが選択枠1010で選択した仮想サーバ140に割り当てられるメモリ131の既定状態が選択される。
【0086】
入力が完了すると、設定ボタン1020をマウス等で操作することによって設定が完了する。これらの入力された情報は、図9に示す仮想サーバ901、メモリ容量902及び既定状態903にそれぞれ格納される。
【0087】
また、設定をキャンセルする場合には、キャンセルボタン1021をマウス等で操作する。なお、GUIは、前述した一部の情報を必ずしも入力できるようにする必要はない。また、同等の情報を入力できるものであれば、図10に示されるGUIの形式に限定されるものではない。
【0088】
図11は、本発明の第1の実施の形態のメモリマッピングサブプログラム301と仮想サーバ140との処理を示すシーケンス図である。
【0089】
まず、ステップ1101では、仮想サーバ140は、メモリアクセス命令を実行する。メモリアクセス命令を発行する主体は、仮想サーバ140上のOS又はドライバ等である。また、命令の種類は、書き込み命令であっても、読み込み命令であってもよい。
【0090】
次に、ステップ1102では、メモリマッピングサブプログラム301は、ステップ1101でメモリアクセス命令が発行された後に、メモリアドレスを変換する。メモリアドレス変換処理については、図13を用いて詳細に後述する。
【0091】
次に、ステップ1103では、メモリマッピングサブプログラム301は、ステップ1102で変換されたメモリアドレスにメモリアクセスを行う。
【0092】
次に、ステップ1104では、仮想サーバ140は、ステップ1101で発行されたメモリアクセス命令の結果を受け取る。
【0093】
次に、ステップ1105では、メモリアクセス監視サブプログラム302にメモリアクセス情報を通知する。ここでメモリアクセス情報とは、書き込み及び読み込み等のアクセスの種類及びアクセスする際に利用されるメモリの容量等である。
【0094】
図12は、本発明の第1の実施の形態の図15に示すマッピング変更サブプログラムの処理のステップ1402で作成される一時的マッピングテーブルである。
【0095】
一時的マッピングテーブルは、メモリチップ1601、メモリチップアドレス1602、割り当て先1603、仮想サーバアドレス1604及び更新済みアドレス1605を含む。
【0096】
メモリチップ1601から仮想サーバアドレス1604は、それぞれ図5に示すメモリマッピングテーブル310のメモリチップ501から仮想サーバアドレス504に対応する。なお、割り当て先1603に格納される内容には、メモリ内容の移動元及び移動先を示す情報として、「移動元」及び「移動先」という情報が追加される。
【0097】
更新済みアドレス1605は、メモリの内容の移動が完了した仮想サーバ140のアドレス領域である。
【0098】
図13は、本発明の第1の実施の形態のメモリアドレス変換1102の処理のフローチャートである。
【0099】
メモリアドレス変換処理は、図11に示すステップ1101で、仮想サーバ140がメモリアクセス命令を発行した後に実行される。
【0100】
まず、ステップ1201では、メモリマッピングサブプログラム301は、メモリ131のマッピングが変更中であるか否かを判定する。なお、マッピングの変更中を示すフラグは、仮想化機構150がメモリ131上に保持しており、この保持されているフラグによってマッピングが変更中であるか否かを判定する。また、このフラグは、図3に示すマッピング変更サブプログラム303によって更新される。マッピングが変更中である場合には、処理はステップ1202に進む。一方、マッピングが変更中でない場合には、処理はステップ1205に進む。
【0101】
次に、ステップ1202では、メモリマッピングサブプログラム301は、メモリアクセス命令の種類が、読み込み命令及び書き込み命令のうち、どちらの命令であるかを判定する。読み込み命令である場合には、処理はステップ1204に進む。一方、書き込み命令である場合には、処理はステップ1203に進む。
【0102】
次に、ステップ1203では、メモリマッピングサブプログラム301は、書き込み命令の書き込み先のアドレス領域を、図12に示す一時的メモリマッピングテーブルの更新済みアドレス1605に登録する。
【0103】
ステップ1204では、メモリマッピングサブプログラム301は、読み込み先のアドレスが、図12に示す更新済みアドレス1605に登録されているか否かを判定する。登録されている場合には、処理はステップ1205に進む。一方、登録されていない場合には、ステップ1206に進む。
【0104】
ステップ1205では、メモリマッピングサブプログラム301は、メモリマッピングテーブル310を参照し、メモリアクセス元の仮想サーバ140の識別子を割り当て先503から検索し、メモリアクセス命令のアクセス先のアドレスを仮想サーバアドレス504に示す仮想サーバ140のアドレスから検索し、検索されたレコードに対応するメモリチップ501のメモリチップ401と、メモリチップアドレス502のアドレスとを取り出し、メモリアドレスを変換する。
【0105】
ステップ1206では、メモリマッピングサブプログラム301は、図12に示す一時的メモリマッピングテーブルを参照し、メモリアクセス元の仮想サーバ140の識別子を割り当て先1603から検索し、メモリアクセス命令のアクセス先のアドレスを仮想サーバアドレス1604に示す仮想サーバ140のアドレスから検索し、検索されたレコードに対応するメモリチップ1601のメモリチップ401と、メモリチップアドレス1602のアドレスとを取り出し、メモリアドレスを変換する。なお、割り当て先1603から仮想サーバ140の識別子を検索する際には、「移動元」の仮想サーバ140の識別子を検索する。
【0106】
図14は、本発明の第1の実施の形態のメモリアクセス監視サブプログラム302の処理のフローチャートである。
【0107】
まず、ステップ1301では、メモリアクセス監視サブプログラム302は、メモリマッピングサブプログラム301からメモリアクセス情報を受け付ける。
【0108】
次に、ステップ1302では、メモリアクセス監視サブプログラム302は、ステップ1301で受け付けたメモリアクセス情報からメモリ性能情報を計算し、計算された結果を保持する。ここで、メモリ性能情報とは、例えば、前回と今回とのアクセス間隔の情報から算出したメモリアクセス頻度、メモリのスループット、ページング頻度及びページング回数等である。そして、処理はステップ1301に戻る。
【0109】
図15は、本発明の第1の実施の形態のマッピング変更サブプログラム303の処理のフローチャートであり、管理サーバ101からマッピングの変更が指示されることによって開始される。
【0110】
まず、ステップ1401では、マッピング変更サブプログラム303は、マッピングが変更中であることを示すフラグを更新し、フラグを立てることによって、マッピング変更中のモードに遷移する。
【0111】
次に、ステップ1402では、マッピング変更サブプログラム303は、マッピングを変更する仮想サーバ140の識別子、現在のマッピング先のメモリチップ401のアドレス領域、及び、マッピングの変更先のメモリチップ401のアドレス領域に基づいて、図5に示すメモリマッピングテーブル310からメモリチップ401及び仮想サーバ140に関する情報を取り出し、図12に示す一時的メモリマッピングテーブルを作成する。例えば、「仮想サーバ2」のマッピングを「メモリチップ1」のアドレス領域「80000000h−BFFFFFFFh」から「メモリチップ4」のアドレス領域「300000000h−33FFFFFFFh」に変更する場合、図5に示すメモリチップ501及びメモリチップアドレス502のアドレス領域を取り出し、取り出した情報が図12に示すメモリチップ1601及びメモリチップアドレス1602に格納される。
【0112】
また、図12に示す割り当て先1603には、現在のマッピング先のアドレス領域「80000000h−BFFFFFFFh」に関しては「移動元 仮想サーバ2」が格納され、マッピングの変更先のアドレス領域「300000000h−33FFFFFFFh」に関しては、「移動先 仮想サーバ2」が格納される。
【0113】
また、図12に示す仮想サーバアドレス1604は、図5に示す仮想サーバアドレス504のうち、「仮想サーバ2」のアドレス領域が取り出された「0h−3FFFFFFFh」が格納される。なお、図12に示す更新済みアドレス1605は、この時点では値が格納されない。
【0114】
次に、ステップ1403では、マッピング変更サブプログラム303は、メモリマッピングテーブル310を更新する。ここでは、マッピングを変更する仮想サーバ140の識別子、現在のマッピング先のメモリチップ401のアドレス領域、マッピングの変更先のメモリチップ401のアドレス領域に基づいて、メモリマッピングテーブル310をマッピングの変更後の状態に更新する。なお、マッピングの変更中にメモリマッピングテーブル310から情報を読み取る場合には、メモリマッピングテーブル310と一時的メモリマッピングテーブルとを合わせた状態が取得される。
【0115】
次に、ステップ1404では、マッピング変更サブプログラム303は、メモリ内容の移動を行う。なお、メモリ内容移動処理については、図16を用いて詳細に後述する。
【0116】
次に、ステップ1405では、マッピング変更サブプログラム303は、メモリ131のマッピングを変更する全てのアドレスの内容の移動が完了したか否かを判定する。具体的には、図12に示す更新済みアドレス1605が、仮想サーバアドレス1604に示す仮想サーバのアドレスの全てのアドレス領域と一致するか否かで判定する。アドレスの内容の移動が完了した場合には、処理はステップ1406に進む。一方、アドレスの内容の移動が完了していない場合には、処理はステップ1404を繰り返し実行する。
【0117】
次に、ステップ1406では、マッピング変更サブプログラム303は、マッピング変更中のフラグを更新し、フラグを落とすことによってマッピング変更中のモードを解除する。
【0118】
図16は、本発明の第1の実施の形態のメモリ内容移動1404の処理のフローチャートである。
【0119】
メモリ内容移動処理は、図15に示すステップ1403で、メモリマッピングテーブルが更新された後に実行される。
【0120】
まず、ステップ1501では、マッピング変更サブプログラム303は、図12に示す更新済みアドレス1605の更新済みアドレスを除いた仮想サーバ140のアドレス領域を取得する。
【0121】
次に、ステップ1502では、マッピング変更サブプログラム303は、ステップ1501で取得したアドレス領域に対応するメモリ内容を、移動元のメモリアドレス領域から、移動先のメモリアドレス領域にコピーする。ここで、移動元のメモリアドレス領域及び移動先のメモリアドレス領域は、図12に示す割り当て先1603及びメモリチップアドレス1602から取得する。
【0122】
次に、ステップ1503では、マッピング変更サブプログラム303は、ステップ1502でメモリの内容をコピーしたアドレス領域を、図12に示す更新済みアドレス1605に格納する。
【0123】
次に、ステップ1504では、マッピング変更サブプログラム303は、ステップ1502でコピーしたメモリ内容をコピー元(移動元)から削除する。なお、ステップ1504で、移動元のメモリ内容は、必ずしも削除する必要はない。
【0124】
図17は、本発明の第1の実施の形態のメモリアクセス監視サブプログラム302と情報取得サブプログラム602との処理のシーケンス図である。
【0125】
まず、ステップ1701では、情報取得サブプログラム602は、メモリアクセス監視サブプログラム302にメモリ性能情報を要求する。
【0126】
次に、ステップ1702では、メモリアクセス監視サブプログラム302は、情報取得サブプログラム602からメモリ性能情報が要求されると、保持されているメモリ性能情報を情報取得サブプログラム602に通知する。ここで、情報取得サブプログラム602に通知されるメモリ性能情報は、図14に示すステップ1302で計算した値である。
【0127】
次に、ステップ1703では、情報取得サブプログラム602は、メモリアクセス監視サブプログラム302からメモリ性能情報を取得する。
【0128】
次に、ステップ1704では、情報取得サブプログラム602は、ステップ1703で取得したメモリ性能情報に基づいて、仮想サーバ管理テーブル610のメモリアクセス情報704を更新する。具体的には、メモリ性能情報の値が所定の閾値以上である場合には、メモリアクセス情報704に「High」が格納され、所定の閾値以下である場合には、メモリアクセス情報704に「Low」が格納される。
【0129】
閾値は、固定値を保持していてもよい。また、入力装置205等を利用してユーザが設定してもよい。さらに、第一の閾値及び第二の閾値等を含む一つ以上の閾値を保持し、メモリ性能情報の値が第一の閾値以上である場合には、メモリアクセス情報704に「High」を格納し、第二の閾値以下である場合には、メモリアクセス情報704に「Low」を格納することもできる。
【0130】
なお、本発明の第1の実施の形態では、メモリ性能情報は、アクセス頻度であり、メモリチップ401の状態が省電力状態であっても、メモリアクセスが遅延しないメモリアクセス頻度である場合には、メモリアクセス情報704に「Low」を格納し、メモリアクセスが遅延するメモリアクセス頻度である場合には、メモリアクセス情報704に「High」を格納する。なお、メモリアクセス情報704の示すメモリアクセス情報は、必ずしも「High」及び「Low」の2値である必要はなく、3値以上の値が格納されてもよい。
【0131】
次に、ステップ1705では、情報取得サブプログラム602は、判定サブプログラム603を呼び出す。そして、処理はステップ1701に戻る。
【0132】
図18は、本発明の第1の実施の形態の判定サブプログラム603の処理のフローチャートである。
【0133】
まず、ステップ1801では、判定サブプログラム603は、仮想サーバ管理テーブル610からメモリアクセス情報704を取得する。
【0134】
次に、ステップ1802では、判定サブプログラム603は、メモリ管理テーブル611からメモリ131の状態804を取得する。
【0135】
次に、ステップ1803では、判定サブプログラム603は、仮想サーバ140のマッピングを変更するか否かを判定し、必要である場合には、仮想サーバ140のマッピングを変更する。なお、マッピング変更判定の処理については、図19を用いて詳細に後述する。
【0136】
次に、ステップ1804では、判定サブプログラム603は、メモリ131の状態を変更するか否かを判定し、必要である場合には、メモリ131の状態を変更する。なお、メモリ状態変更判定の処理については、図20を用いて詳細に後述する。
【0137】
図19は、本発明の第1の実施の形態のマッピング変更判定1803の処理のフローチャートである。
【0138】
マッピング変更判定1803の処理は、図18に示すステップ1802で、メモリ131の状態が取得された後に実行される。
【0139】
まず、ステップ1901では、判定サブプログラム603は、仮想サーバ140が利用するメモリ131の領域をどのメモリチップ401にレイアウトするかを決定する。
【0140】
具体的には、以下に示す二つの条件に基づいてレイアウトを決定する:(1)図7に示す仮想サーバ管理テーブル610のメモリアクセス情報704が「High」の仮想サーバ140と「Low」の仮想サーバ140とが同一のメモリチップ401を利用する状態を最小に抑える。(2)現状の仮想サーバ140のメモリ131の割り当てを変更する容量を最小に抑える。
【0141】
なお、これらの条件は、ユーザによって新たに追加、変更、及び削除することができる。また、それぞれの条件に優先度を設定することもできる。例えば、前述した条件(1)と(2)とでは、条件(1)が優先されるように優先度を設定する。
【0142】
また、レイアウトの決定は、仮想サーバ管理テーブル610と、メモリ管理テーブル611を参照して行われる。例えば、図7及び図8に示す例では、「仮想サーバ1」及び「仮想サーバ2」は、それぞれメモリアクセス情報704は、「High」及び「Low」であり、同一の「メモリチップ1」に割り当てられているため、条件(1)に反する。
【0143】
また、「仮想サーバ4」のメモリアクセス情報704は、「Low」であり、「メモリチップ4」に割り当てられている。「メモリチップ4」の容量802は、「4GB」であり、「仮想サーバ2」及び「仮想サーバ4」のメモリ利用容量703は、それぞれ「1GB」及び「3GB」であることから、「仮想サーバ2」の割り当て先のメモリチップ401を「メモリチップ4」に変更しても容量を超えることはない。したがって、「仮想サーバ2」の割り当て先のメモリチップ401を「メモリチップ4」に変更すると、「仮想サーバ1」及び「仮想サーバ2」は、同一のメモリチップ401に割り当てられないため、条件(1)を満たすことができる。
【0144】
次に、ステップ1902では、判定サブプログラム603は、ステップ1901で決定したレイアウトと、現状の仮想サーバ140に割り当てられるメモリチップ401のマッピングとが異なるか否かを判定する。異なる場合には、マッピングの変更が必要と判定し、処理はステップ1903に進む。一方、同じである場合には、処理は終了する。
【0145】
次に、ステップ1903では、判定サブプログラム603は、ステップ1901で決定したレイアウトに変更するため、変更する仮想サーバ140の識別子、現在の割り当て先のメモリアドレス領域、及び、変更先のメモリアドレス領域を引数として変更指示サブプログラム604を呼び出す。そして、処理は終了する。
【0146】
図20は、本発明の第1の実施の形態のメモリ状態変更判定1804の処理のフローチャートであり、図18に示すステップ1803で、マッピングを変更するか否かを判定した後に実行される。
【0147】
まず、ステップ2001では、判定サブプログラム603は、メモリ管理テーブル611からメモリチップ401のメモリの状態804を取得し、通常状態であるか否かを判定する。通常状態である場合には、処理はステップ2004に進む。一方、通常状態でない場合には、処理はステップ2002に進む。
【0148】
次に、ステップ2002では、判定サブプログラム603は、メモリ管理テーブル611からメモリチップの割り当て先803を取得し、仮想サーバ管理テーブル610から、全ての割り当て先803の仮想サーバ140のメモリアクセス情報704を取得する。そして、取得したメモリアクセス情報704のうち、メモリアクセス情報704が「High」の仮想サーバ140が存在するか否かを判定する。一つでもメモリアクセス情報704が「High」の仮想サーバ140が存在する場合には、処理はステップ2003に進む。一方、メモリアクセス情報704が「High」の仮想サーバ140が存在しない場合には、処理は終了する。
【0149】
次に、ステップ2003では、判定サブプログラム603は、電力制御サブプログラム605を呼び出し、メモリチップ401の状態804を通常状態に変更するように指示する。そして、処理は終了する。
【0150】
ステップ2004では、判定サブプログラム603は、メモリ管理テーブル611からメモリチップ401の割り当て先803を取得し、未割り当てのメモリチップ401であるか否かを判定する。未割り当てのメモリチップ401である場合には、処理はステップ2006に進む。一方、未割り当てのメモリチップ401でない場合には、処理はステップ2005に進む。
【0151】
ステップ2005では、判定サブプログラム603は、メモリ管理テーブル611からメモリチップ401の割り当て先803を取得し、仮想サーバ管理テーブル610から、全ての割り当て先803の仮想サーバ140のメモリアクセス情報704を取得する。そして、取得した全ての仮想サーバ140のメモリアクセス情報704が「Low」であるか否かを判定する。取得した全ての仮想サーバ140のメモリアクセス情報704が「Low」である場合には、処理はステップ2006に進む。一方、取得した全ての仮想サーバ140のうち、一つでもメモリアクセス情報704が「Low」である場合には、処理は終了する。
【0152】
ステップ2006では、判定サブプログラム603は、電力制御サブプログラム605を呼び出し、メモリチップ401の状態804を省電力状態に変更するように指示する。なお、図20に示す処理(メモリ状態変更判定1804)は、全てのメモリチップ401について実行される。
【0153】
図21は、本発明の第1の実施の形態の変更指示サブプログラム604の処理のフローチャートである。
【0154】
まず、ステップ2101では、変更指示サブプログラム604は、変更する仮想サーバ140の識別子、現在の割り当て先のメモリアドレス領域、及び、変更先のメモリアドレス領域を引数として、マッピング変更サブプログラム303を呼び出す。なお、ステップ2101を実行した直後に、メモリ管理テーブル611にマッピングの変更中であることが分かる情報が付加されてもよい。
【0155】
次に、ステップ2102では、変更指示サブプログラム604は、メモリ管理テーブル611を、マッピングを変更した後の状態に更新する。
【0156】
図22は、本発明の第1の実施の形態の電力制御サブプログラム605の処理のフローチャートである。
【0157】
まず、ステップ2201では、電力制御サブプログラム605は、状態を変更するメモリチップ401の識別子と、変更後の状態とを引数として、電力制御機構135を呼び出し、メモリチップ401の状態804を変更する。
【0158】
次に、ステップ2202では、電力制御サブプログラム605は、メモリ管理テーブル611のメモリ131の状態804を更新する。
【0159】
図23は、本発明の第1の実施の形態の設定サブプログラム601の処理のフローチャートである。
【0160】
なお、設定サブプログラム601は、新たに仮想サーバ140を設定した場合、サーバ103のハードウェア構成及びソフトウェア構成を変更した場合、仮想サーバ140の構成を変更した場合、及び、ユーザが設定サブプログラム601を呼び出した場合に実行される。なお、ユーザが設定サブプログラム601を呼び出す手段は、電力管理プログラム110に備わる。
【0161】
ステップ2301では、設定サブプログラム601は、設定情報(仮想サーバ140の構成情報)を取得する。ここで、設定情報を取得する方法は、図10に示したように、電力管理プログラム110によって提供されるGUIを利用して、計算機システムの管理者が入力する方法がある。また、電力管理プログラム110によって提供されるコマンドラインを用いて、ユーザが入力する方法であってもよい。また、管理サーバ101に接続された記憶装置に保存されたファイルから設定情報を取得する方法であってもよい。また、ネットワークを経由して設定情報を取得する方法であってもよい。
【0162】
次に、ステップ2302では、設定サブプログラム601は、ステップ2301で取得した設定情報に基づいて、図9に示す仮想サーバ設定テーブル612を作成する。また、仮想サーバ管理テーブル610のメモリアクセス情報704には、仮想サーバ設定テーブル612の既定状態903が格納される。
【0163】
なお、仮想サーバ管理テーブル610のその他のカラム、及び、メモリ管理テーブル611は、図5に示すメモリマッピングテーブル310から情報を取得して、取得された情報が格納されてもよい。また、GUI、CLI、ファイル、及びネットワークを経由する方法等によって取得された情報が格納されてもよい。
【0164】
ステップ1803及びステップ1804は、図18に示すステップ1803及び1804と同じであるため説明を省略する。
【0165】
<実施形態2>
本発明の第2の実施の形態は、第1の実施の形態の仮想化機構150が、仮想サーバ140のCPUの利用状況を監視し、監視されたCPUの利用状況を仮想サーバ140のメモリアクセス情報704に反映する例である。第2の実施の形態によって、仮想サーバ140のメモリアクセス情報704だけでなく、CPUの利用状況も考慮して、仮想サーバ140とメモリチップ401とのマッピングを制御するとともに、メモリチップ401の状態を制御することができる。
【0166】
図24は、本発明の第2の実施の形態の仮想化機構150の構成を示している。第2の実施の形態は、仮想化機構150が、CPU監視サブプログラム304を備える点で異なる。
【0167】
CPU監視サブプログラム304は、仮想サーバ140のCPUの利用状況を監視する。
【0168】
図25は、本発明の第2の実施の形態の仮想サーバ管理テーブル610である。第2の実施の形態は、CPU利用率705を含む点で異なる。
【0169】
CPU利用率705は、仮想サーバ701が示す仮想サーバ140が利用するCPUの利用率である。
【0170】
図26は、本発明の第2の実施の形態のメモリアクセス監視サブプログラム302と、情報取得サブプログラム602と、CPU監視サブプログラム304との処理のシーケンス図である。
【0171】
第2の実施の形態は、CPU監視サブプログラム304のシーケンスが追加されている点と、ステップ2601、2602、2603及び2604が追加されている点で異なる。
【0172】
ステップ1701からステップ1705の処理は、図17に示すステップ1701からステップ1705と同じであるため、説明を省略する。
【0173】
ステップ2601では、情報取得サブプログラム602は、CPU監視サブプログラム304にCPUの利用率を要求する。
【0174】
ステップ2602では、CPU監視サブプログラム304は、ステップ2601で情報取得サブプログラム602からCPUの利用率が要求された後に、CPUの利用率を情報取得サブプログラム602に通知する。なお、CPU監視サブプログラム304は、仮想サーバ140のCPUの利用率を監視し、監視されたCPUの利用率の情報を保持する。
【0175】
ステップ2603では、情報取得サブプログラム602は、CPU監視サブプログラム304からCPUの利用率を取得する。
【0176】
ステップ2604では、情報取得サブプログラム602は、ステップ2603で取得したCPUの利用率を仮想サーバ管理テーブル610のCPU利用率705に格納する。そして、処理はステップ1705に進む。
【0177】
図27は、本発明の第2の実施の形態の判定サブプログラム603の処理のフローチャートである。
【0178】
第2の実施の形態は、ステップ2701、2702、2703、2704及び2705が追加されている点で異なる。
【0179】
ステップ2701では、判定サブプログラム603は、仮想サーバ管理テーブル610からメモリアクセス情報704及びCPU利用率705を取得する。
【0180】
ステップ2702では、判定サブプログラム603は、ステップ2701で取得したCPU利用率705が所定の閾値以上であるか否かを判定する。所定の閾値以上である場合には、処理はステップ2703に進む。一方、所定の閾値より小さい場合には、処理はステップ2704に進む。
【0181】
ステップ2703では、判定サブプログラム603は、ステップ2701で取得したメモリアクセス情報704を「High」であると判定する。なお、以降の処理でメモリアクセス情報704を利用する場合には、「High」の値が利用される。
【0182】
ステップ2704では、判定サブプログラム603は、ステップ2701で取得したCPU利用率705が所定の閾値以下であるか否かを判定する。所定の閾値以下である場合には、処理はステップ2705に進む。一方、所定の閾値より大きい場合には、処理はステップ1802に進む。
【0183】
ステップ2705では、判定サブプログラム603は、ステップ2701で取得したメモリアクセス情報704を「Low」であると判定する。なお、以降の処理でメモリアクセス情報704を利用する場合には、「Low」の値が利用される。
【0184】
なお、ステップ2702及びステップ2704で利用する閾値は、判定サブプログラム603にあらかじめ設定されている固定の値を利用する。また、ユーザが入力装置205を介して入力した値を利用してもよい。また、ステップ2702及びステップ2704で利用する閾値はそれぞれ異なってもよい。
【0185】
また、ステップ2703及びステップ2705では、ステップ2701で取得したメモリアクセス情報704が2値以上の値を持つ場合には、それぞれの値に応じてさらに「High」又は「Low」と判定するステップを追加してもよい。例えば、メモリアクセス情報704が「High」より高い値として「Very High」であった場合には、ステップ2705では、「Low」でなく「High」と判定するようにしてもよい。このように、CPUの利用率とメモリアクセス頻度との関係に応じて、ステップ2703及びステップ2705で利用するメモリアクセス情報704を補正する方法が判定されてもよい。
【0186】
ステップ1802からステップ1804は、図18に示すステップ1802からステップ1804と同じであるため、説明を省略する。
【0187】
<実施形態3>
本発明の第3の実施の形態は、第1の実施の形態の仮想化機構150が、スワッピングを行い、仮想サーバ140が利用するメモリ領域をメモリ131上だけでなく、補助記憶装置133にもメモリ領域の配置を可能にする例である。第2の実施の形態によって、仮想サーバ140からアクセスする頻度の低いメモリ領域をメモリ上に配置せず補助記憶装置に配置し、メモリの利用容量を節約することができる。
【0188】
図28は、本発明の第3の実施の形態の仮想化機構150の構成を示している。第3の実施の形態は、仮想化機構150がスワッピングサブプログラム305を備える点で異なる。
【0189】
スワッピングサブプログラム305は、仮想サーバ140が利用するメモリ領域をメモリ131と補助記憶装置133との間でスワップイン及びスワップアウトする。
【0190】
ここで、スワップインとは、補助記憶装置133に確保されているメモリ領域と同じ領域をメモリ131に確保し、補助記憶装置133に確保されているメモリ領域に書き込まれているデータと同じデータを、メモリ131に確保したメモリ領域に書き込み、補助記憶装置133のメモリ領域を開放することである。
【0191】
また、スワップアウトとは、メモリ131に確保されているメモリ領域と同じ領域を補助記憶装置133に確保し、メモリ131に確保されているメモリ領域に書き込まれているデータと同じデータを、補助記憶装置133に確保したメモリ領域に書き込み、メモリ131のメモリ領域を開放することである。
【0192】
図29は、本発明の第3の実施の形態のマッピング変更判定1803の処理のフローチャートである。第3の実施の形態は、ステップ2901が追加されている点で異なる。
【0193】
ステップ2901では、各仮想サーバ140が利用するメモリ領域について、メモリ領域の一部又は全部を補助記憶装置133にスワップイン及びスワップアウトを行うか否かを判定し、スワップイン及びスワップアウトを行う必要があれば実施する。スワッピング判定の処理については、図30を用いて詳細に後述する。
【0194】
図30は、本発明の第3の実施の形態のスワッピング判定2901の処理のフローチャートである。
【0195】
まず、ステップ3001では、判定サブプログラム603は、仮想サーバ140の仮想サーバ管理テーブル610のメモリアクセス情報704を取得し、取得したメモリアクセス情報704が「Low」であるか否かを判定する。メモリアクセス情報704が「Low」である場合には、処理はステップ3002に進む。一方、メモリアクセス情報704が「Low」でない場合には、ステップ3004に進む。
【0196】
次に、ステップ3002では、判定サブプログラム603は、仮想サーバ140のメモリアクセス情報704が「Low」である時間を保持し、所定の時間以上「Low」の状態が続くか否かを判定する。所定の時間以上「Low」の状態が続く場合には、処理はステップ3003進む。一方、所定の時間「Low」でない場合には、処理は終了する。
【0197】
次に、ステップ3003では、判定サブプログラム603は、スワッピングサブプログラム305に、仮想サーバ140が利用する一部又は全部のメモリ領域をスワップアウトするように指示する。ここで、メモリ領域の一部をスワップアウトするとは、例えば、仮想サーバ140のOS領域だけをメモリ131上に残し、仮想サーバ140のユーザ領域をスワップアウトすることである。なお、スワップアウトされた情報が記憶される補助記憶装置133が不揮発性のデバイスである場合には、補助記憶装置133の電力供給を停止してもよい。
【0198】
ステップ3004では、判定サブプログラム603は、仮想サーバ140が利用する一部又は全部のメモリ領域がメモリ上にあるか否かを判定する。メモリ領域がメモリ上にある場合には、処理は終了する。一方、メモリ領域がメモリ131上にない場合には、処理はステップ3005に進む。
【0199】
ステップ3005では、判定サブプログラム603は、スワッピングサブプログラム305に、補助記憶装置133に配置されているメモリ領域をスワップインするように指示する。なお、スワッピング判定2901の処理は、全ての仮想サーバ140を対象として行われる。
【0200】
<実施形態4>
本発明の第4の実施の形態は、第1の実施の形態の仮想化機構150が、仮想サーバ140間で利用しているメモリを融通し、サーバ103に搭載するメモリの利用容量以上の領域を仮想サーバ140に割り当てることを可能にする例である。第4の実施の形態によって、仮想サーバ140のメモリ131の割り当てを変更する場合に、変更先のメモリチップ401の容量が不足していても、メモリ131の割り当てを変更することができる。
【0201】
図31は、本発明の第4の実施の形態の仮想化機構150の構成を示している。第4の実施の形態は、仮想化機構150がメモリ融通サブプログラム306を備える点で異なる。
【0202】
メモリ融通サブプログラム306は、第一の仮想サーバ140が利用するメモリの一部を、第一の仮想サーバ140のOS及びアプリケーションに影響を与えずに、第二の仮想サーバ140に融通する。
【0203】
メモリの一部を融通する方法としては、例えば、第一の仮想サーバ140上のOSに特殊ドライバを備え、特殊ドライバがOS領域のメモリを確保することによって、確保したメモリの領域をOSが使用中とみなす方法がある。そして、特殊ドライバが確保したメモリの領域を第二の仮想サーバに融通することができる。
【0204】
なお、メモリ融通サブプログラム306は、第1の実施の形態の図19に示すステップ1901で、メモリチップ401の容量が不足したときにメモリを融通するときに呼び出される。また、メモリ融通サブプログラム306は、メモリチップ401の容量に余裕が出た場合には、メモリの融通を解除するために呼び出される。
【0205】
また、メモリの融通と同等の効果を得る別の方法として、第3の実施の形態の図28に示すスワッピングサブプログラム305を利用して、第一の仮想サーバ140のメモリ領域をメモリ上から補助記憶装置133にスワップアウトし、第二の仮想サーバ140にメモリ領域を融通する方法がある。
【0206】
<実施形態5>
本発明の第5の実施の形態は、メモリチップ401が通常状態で稼動する時間を、一部又は全てのメモリチップ401で平準化する例である。第5の実施の形態によって、頻繁に利用されるメモリチップ401が一部のメモリチップ401に集中することを避けるため、故障率を低減することができる。
【0207】
図32は、本発明の第5の実施の形態のメモリ管理テーブル611である。第5の実施の形態は、通常稼働時間805が追加されている点で異なる。
【0208】
通常稼働時間805は、メモリチップ801が示すメモリチップ401が、通常状態で稼動した時間の合計である。例えば、通常状態で300時間稼動した場合には、「300hour」が格納される。
【0209】
第5の実施の形態では、第1の実施の形態の図19に示すステップ1901で、図32に示すメモリ管理テーブル611の通常稼動時間805を参照し、できる限り各メモリチップ401の通常稼働時間805が平準化される条件に基づいて、レイアウトを決定する。
【0210】
<実施形態6>
本発明の第6の実施の形態では、仮想サーバ140の単位だけでなく、仮想サーバ140上のOS及びプロセスの単位でメモリの割り当てを変更する例である。第6の実施の形態によって、仮想サーバ140の単位よりもさらに細かい粒度でメモリの割り当てを制御することができる。
【0211】
図33は、本発明の第6の実施の形態のメモリマッピングテーブル310である。第6の実施の形態は、プロセス505が追加されている点で異なる。
【0212】
プロセス505は、割り当て先503の仮想サーバ140上で稼動するOS及びプロセスの識別子である。なお、プロセス505の情報は、ユーザが入力装置205を介して入力される。また、仮想サーバ140上のOSに保持されているプロセステーブルから取得してもよい。また、その他の手段を利用してプロセス505の情報が取得されてもよい。
【0213】
したがって、第6の実施の形態では、他の実施の形態における「仮想サーバ」を「プロセス」として取り扱うことができる。なお、メモリマッピングテーブル310にOS及びプロセスの情報を保持せずに、電力制御プログラム110が同等の情報を保持してもよい。
【0214】
<実施形態7>
本発明の第7の実施の形態は、第1の実施の形態の仮想化機構150が、仮想サーバ140が利用するメモリ領域を複数のメモリチップ401に書き込むことによって冗長化を行うとともに、複数のメモリチップ401をそれぞれ異なる消費電力状態で稼動することができる例である。第7の実施の形態によって、メモリチップ401を冗長化した時に、全てのメモリチップ401を高い消費電力状態で稼動させる必要がなく、一部のメモリチップ401を省電力化することができる。
【0215】
図34は、本発明の第7の実施の形態の仮想化機構150の構成を示している。第7の実施の形態は、冗長化サブプログラム307を備える点で異なる。
【0216】
冗長化サブプログラム307は、仮想サーバ140が利用するメモリ領域を複数のメモリチップ401に書き込む。また、冗長化サブプログラム307は、ある仮想サーバ140のメモリへの書き込みについて、冗長化する第一及び第二のメモリチップ401に同時にメモリ領域を書き込むとともに、一方のメモリチップ401への書き込みに遅延が発生した場合には、残りの書き込みを第三のメモリチップ401に一時的に書き込む。したがって、第一及び第二のメモリチップ401は、メモリチップ401の状態を通常状態と省電力状態とで混在させることができる。
【0217】
図35は、本発明の第7の実施の形態のメモリマッピングテーブル310である。
【0218】
第7の実施の形態は、冗長化されている仮想サーバ140、及び、バッファとなる仮想サーバ140であることを示す情報が、割り当て先503に付加されている点で異なる。
【0219】
例えば、メモリマッピングテーブル310の第1行及び第12行の割り当て先503の値には、冗長化されている仮想サーバ140であることを示す「仮想サーバ1 (冗長化)」が格納されている。また、メモリマッピングテーブル310の第6行の割り当て先503には、第三のメモリチップ401の領域であることを示す「仮想サーバ1 (バッファ)」が格納されている。
【0220】
図36は、本発明の第7の実施の形態のメモリ管理テーブル611である。
【0221】
第7の実施の形態は、冗長化されている仮想サーバ140、及び、バッファとなる仮想サーバ140であることを示す情報が、割り当て先803に付加されている点で異なる。
【0222】
例えば、メモリ管理テーブル611の第1行および第6行の割り当て先803には、冗長化されている仮想サーバ140であることを示す「1(冗)」が格納されている。また、メモリ管理テーブル611の第3行の割り当て先803には、第三のメモリチップ401の領域であることを示す「1(バ)」が格納されている。
【0223】
第7の実施の形態では、第一のメモリチップ401及び第二のメモリチップ401は、それぞれメモリの状態804が異なる。したがって、一方のメモリチップ401を省電力化することができる。なお、第三のメモリチップ401は、通常状態で稼動しなければならない。
【0224】
<実施形態8>
本発明の第8の実施の形態は、電力管理プログラム110がサーバ103の消費電力を監視し、サーバ103の消費電力が目標値以下になるように制御する例である。第8の実施の形態によって、サーバ103の消費電力を保障することができる。
【0225】
図37は、第1の実施の形態の図6に示す設定サブプログラム601において、ユーザが設定する消費電力の目標値を取得するために、電力管理プログラム110によって提供されるGUIの例を示す。
【0226】
図37に示すGUIは、図2に示される表示装置206又はネットワークを経由した他の表示装置に、ブラウザ及び専用のプログラムのいずれかを用いてサーバ103の消費電力の目標値を表示する。
【0227】
ウインドウ3701は、ブラウザ又は専用プログラムのウインドウを示す。ウインドウ3701には、現状の消費電力の値が表示(3710)される。また、グラフとして消費電力の値の履歴も表示される(3711及び3712)。
【0228】
ユーザは、消費電力の目標値を設定する枠(3714)に、目標とする電力を入力する。そして、入力された値は、グラフに反映される(3713)。
【0229】
入力が完了すると、設定ボタン3715をマウス等で操作することによって設定を完了する。これらの入力された情報は、電力管理プログラム110によって保持される。
【0230】
また、設定をキャンセルする場合には、キャンセルボタン1021をマウス等で操作する。なお、GUIは、前述した一部の情報を必ずしも入力できるようにする必要はない。また、同等の情報を入力できるものであれば、図37に示されるGUIの形式に限定されるものではない。
【0231】
第8の実施の形態では、第1の実施の形態に示すメモリ状態制御判定1804の処理において、サーバ103の消費電力が図37に示すGUIによって設定された目標値より大きい場合、図20に示すステップ2005で、メモリアクセス情報704の値にかかわらずステップ2006に進み、サーバ103の消費電力が図37に示すGUIによって設定された目標値より小さくなるようにメモリ131の状態を省電力状態に変更する。
【図面の簡単な説明】
【0232】
【図1】本発明の第1の実施の形態の計算機システムの構成図である。
【図2】本発明の第1の実施の形態の管理サーバの構成図である。
【図3】本発明の第1の実施の形態の仮想化機構の構成を示している。
【図4】本発明の第1の実施の形態のメモリと仮想サーバとのマッピング関係の例を示す図である。
【図5】本発明の第1の実施の形態のメモリマッピングテーブルである。
【図6】本発明の第1の実施の形態の電力管理プログラム及びテーブル群の構成を示している。
【図7】本発明の第1の実施の形態の仮想サーバ管理テーブルである。
【図8】本発明の第1の実施の形態のメモリ管理テーブルである。
【図9】本発明の第1の実施の形態の仮想サーバ設定テーブルである。
【図10】本発明の第1の実施の形態の電力管理プログラムによって提供されるGUIの例を示す。
【図11】本発明の第1の実施の形態のメモリマッピングサブプログラムと仮想サーバとの処理を示すシーケンス図である。
【図12】本発明の第1の実施の形態の一時的メモリマッピングテーブルである。
【図13】本発明の第1の実施の形態のメモリアドレス変換の処理のフローチャートである。
【図14】本発明の第1の実施の形態のメモリアクセス監視サブプログラムの処理のフローチャートである。
【図15】本発明の第1の実施の形態のマッピング変更サブプログラムの処理のフローチャートである。
【図16】本発明の第1の実施の形態のメモリ内容移動の処理のフローチャートである。
【図17】本発明の第1の実施の形態のメモリアクセス監視サブプログラムと情報取得サブプログラムとの処理のシーケンス図である。
【図18】本発明の第1の実施の形態の判定サブプログラムの処理のフローチャートである。
【図19】本発明の第1の実施の形態のマッピング変更判定の処理のフローチャートである。
【図20】本発明の第1の実施の形態のメモリ状態変更判定の処理のフローチャートである。
【図21】本発明の第1の実施の形態の変更指示サブプログラムの処理のフローチャートである。
【図22】本発明の第1の実施の形態の電力制御サブプログラムの処理のフローチャートである。
【図23】本発明の第1の実施の形態の設定サブプログラムの処理のフローチャートである。
【図24】本発明の第2の実施の形態の仮想化機構の構成を示している。
【図25】本発明の第2の実施の形態の仮想サーバ管理テーブルである。
【図26】本発明の第2の実施の形態のメモリアクセス監視サブプログラムと、情報取得サブプログラムと、CPU監視サブプログラムとの処理のシーケンス図である。
【図27】本発明の第2の実施の形態の判定サブプログラムの処理のフローチャートである。
【図28】本発明の第3の実施の形態の仮想化機構の構成を示している。
【図29】本発明の第3の実施の形態のマッピング変更判定の処理のフローチャートである。
【図30】本発明の第3の実施の形態のスワッピング判定の処理のフローチャートである。
【図31】本発明の第4の実施の形態の仮想化機構の構成を示している。
【図32】本発明の第5の実施の形態のメモリ管理テーブルである。
【図33】本発明の第6の実施の形態のメモリマッピングテーブルである。
【図34】本発明の第7の実施の形態の仮想化機構の構成を示している。
【図35】本発明の第7の実施の形態のメモリマッピングテーブルである。
【図36】本発明の第7の実施の形態のメモリ管理テーブルである。
【図37】本発明の第7の実施の形態の電力管理プログラムによって提供されるGUIの例を示す。
【符号の説明】
【0233】
101 管理サーバ
102 ネットワーク1
103 サーバ
110 電力管理プログラム
111 テーブル群
131 メモリ
132 CPU
133 補助記憶装置
134 I/Oデバイス
135 電力制御機構
140 仮想サーバ
150 仮想化機構

【特許請求の範囲】
【請求項1】
一つ以上の業務サーバと、前記業務サーバを管理する管理サーバと、前記業務サーバと前記管理サーバとを接続するネットワークと、を備える計算機システムで実行されるメモリの消費電力を制御する方法であって、
前記業務サーバは、メモリの消費電力を制御できる単位である一つ以上のメモリチップと、前記メモリチップの消費電力を省電力状態と通常状態とに切り替える制御をする電力制御機構と、一つ以上の仮想サーバを稼動させる仮想化機構と、を備え、
前記仮想化機構は、前記仮想サーバと前記メモリチップとの割り当て関係を管理するメモリマッピング部を備え、
前記管理サーバは、前記仮想サーバと前記メモリチップとの割り当て関係を保持し、
前記方法は、
前記管理サーバが、前記仮想サーバのメモリチップへのアクセス情報を取得する情報取得ステップと、
前記管理サーバが、前記取得したアクセス情報が所定の目標性能を達成できるか否か、及び、前記仮想サーバと前記メモリチップとの割り当て関係に基づいて、前記メモリチップの消費電力を変更するよう前記業務サーバに指示するステップと、
前記業務サーバが、前記管理サーバからの指示に基づいて前記メモリチップの消費電力を変更する電力制御ステップと、を含むことを特徴とする電力制御方法。
【請求項2】
前記アクセス情報は、前記メモリチップの消費電力状態を前記省電力状態にした場合に、前記メモリの性能が不足することを示す第1の値、及び、前記メモリの性能が不足しないことを示す第2の値のいずれかを含み、
前記電力制御ステップでは、前記メモリチップに割り当てられた前記各仮想サーバのアクセス情報が一つでも前記第1の値である場合には、前記メモリチップの消費電力状態を前記通常状態に変更し、前記メモリチップに割り当てられた前記各仮想サーバのアクセス情報の全てが前記第2の値である場合には、前記メモリチップの消費電力状態を前記省電力状態に変更することを特徴とする請求項1に記載の電力制御方法。
【請求項3】
前記管理サーバは、前記仮想サーバの前記メモリチップへのアクセス情報を設定する設定インタフェイスを備え、
前記情報取得ステップでは、前記設定インタフェイスを使用し、前記アクセス情報の既定値を取得することを特徴とする請求項1に記載の電力制御方法。
【請求項4】
前記仮想化機構は、前記アクセス情報を監視するメモリアクセス監視部を備え、
前記情報取得ステップでは、前記メモリアクセス監視部から前記アクセス情報を取得することを特徴とする請求項1に記載の電力制御方法。
【請求項5】
前記仮想化機構は、前記仮想サーバと前記メモリチップとの割り当て関係を変更するマッピング変更部を備え、
前記方法は、さらに、
前記管理サーバが、前記取得したアクセス情報に基づいて、前記仮想サーバと前記メモリチップとの割り当て関係を決定する判定ステップと、
前記管理サーバが、前記仮想サーバと前記メモリチップとの割り当て関係を、前記決定した割り当て関係に変更する変更指示ステップと、を含むことを特徴とする請求項4に記載の電力制御方法。
【請求項6】
前記アクセス情報は、前記メモリチップの消費電力状態を省電力状態にした場合に、前記メモリの性能が不足することを示す第1の値、及び、前記メモリの性能が不足しないことを示す第2の値のいずれかを含み、
前記判定ステップでは、前記アクセス情報が同一の値である前記仮想サーバが、同一のメモリチップに割り当てられるように、前記仮想サーバと前記メモリチップとの割り当て関係を決定することを特徴とする請求項5に記載の電力制御方法。
【請求項7】
前記仮想化機構は、前記仮想サーバのプロセッサ利用率を監視するプロセッサ監視部を備え、
前記情報取得ステップでは、前記プロセッサ監視部から前記仮想サーバのプロセッサ利用率を取得し、
前記判定ステップでは、前記取得したプロセッサ利用率が所定の閾値以上の場合に、前記所定の目標性能を可能な値に前記アクセス情報を補正することを特徴とする請求項5に記載の電力制御方法。
【請求項8】
前記業務サーバは、一つ以上の補助記憶装置を備え、
前記仮想化機構は、前記メモリチップから前記補助記憶装置に前記仮想サーバが利用するメモリの領域を移動するスワッピング部を備え、
前記方法は、さらに、
前記管理サーバが、前記アクセス情報が所定の割り当て性能を達成できるか否か、及び、前記仮想サーバとメモリチップとの割り当て関係に基づいて、前記メモリの性能が不足する状態が所定の時間継続したか否かを判定するステップと、
前記業務サーバが、前記判定結果に従って、前記メモリの領域の一部又は全部を、前記スワッピング部によって前記補助記憶装置に移動するステップと、を含むことを特徴とする請求項5に記載の電力制御方法。
【請求項9】
前記仮想サーバは、第1の仮想サーバ及び第2の仮想サーバを含み、
前記仮想化機構は、前記第1の仮想サーバが利用するメモリの領域を前記第2の仮想サーバが利用するメモリの領域に割り当てるメモリ融通部を備え、
前記判定ステップでは、
前記第1の仮想サーバと前記第2の仮想サーバとが同一のメモリチップに割り当てられることによって、前記業務サーバに割り当てられるメモリの領域が、当該メモリチップの容量を超える場合には、前記メモリ融通部によって、第1の仮想サーバに割り当てられたメモリの領域を第2の仮想サーバに割り当てるように、前記仮想サーバと前記メモリチップとの割り当て関係を決定することを特徴とする請求項5に記載の電力制御方法。
【請求項10】
前記管理サーバは、前記各メモリチップが前記通常状態で稼動している時間を記録し、
前記判定ステップでは、前記各メモリチップが通常状態で稼動している時間に基づいて、各メモリチップが前記通常状態で稼動している時間が平準化されるように、前記仮想サーバと前記メモリチップとの割り当て関係を決定することを特徴とする請求項5に記載の電力制御方法。
【請求項11】
前記方法は、さらに、前記仮想サーバで実行されるプロセスとメモリチップとの割り当て関係を取得するステップを含み、
前記管理サーバは、前記取得した仮想サーバで実行されるプロセスとメモリチップとの割り当て関係を保持し、
前記判定ステップでは、前記取得したアクセス情報に基づいて、前記プロセスと前記メモリチップとの割り当て関係を決定し、
前記変更指示ステップでは、前記プロセスと前記メモリチップとの割り当て関係を、前記決定した割り当て関係に変更することを特徴とする請求項5に記載の電力制御方法。
【請求項12】
前記メモリチップは、第1のメモリチップ及び第2のメモリチップを含み、
前記仮想化機構は、前記仮想サーバが利用するメモリの領域であって、同じデータが書き込まれるメモリの領域を第1のメモリチップと第2のメモリチップとの双方に割り当てる冗長化部を備え、
前記電力制御ステップでは、前記第1のメモリチップの消費電力状態を前記通常状態に変更し、第2のメモリチップの消費電力状態を省電力状態に変更することを特徴とする請求項5に記載の電力制御方法。
【請求項13】
前記方法は、さらに、前記管理サーバが、消費電力の目標値を取得する目標値取得ステップを含み、
前記電力制御ステップでは、前記取得された消費電力の目標値を満たすように前記メモリチップの消費電力状態を変更することを特徴とする請求項5に記載の電力制御方法。
【請求項14】
一つ以上の業務サーバと、前記業務サーバを管理する管理サーバと、前記業務サーバと前記管理サーバとを接続するネットワークと、を備える計算機システムであって、
前記業務サーバは、メモリの消費電力を制御できる単位である一つ以上のメモリチップと、前記メモリチップの消費電力を省電力状態と通常状態とに切り替える制御をする電力制御機構と、一つ以上の仮想サーバを稼動させる仮想化機構と、を備え、
前記仮想化機構は、前記仮想サーバと前記メモリチップとの割り当て関係を管理するメモリマッピング部を備え、
前記管理サーバは、
前記仮想サーバの前記メモリチップへのアクセス情報を設定する設定インタフェイスを備え、
前記仮想サーバと前記メモリチップとの割り当て関係を保持し、
前記メモリチップの消費電力状態を省電力状態にした場合に、前記メモリの性能が不足することを示す第1の値、及び、前記メモリの性能が不足しないことを示す第2の値のいずれかを含むアクセス情報を前記設定インタフェイスによって取得し、
前記取得したアクセス情報に基づいて、前記メモリチップに割り当てられた前記各仮想サーバのアクセス情報が一つでも前記第1の値である場合には、前記メモリチップの消費電力状態を通常状態に変更するよう前記業務サーバに指示し、前記メモリチップに割り当てられた前記各仮想サーバのアクセス情報の全てが前記第2の値である場合には、前記メモリチップの消費電力状態を省電力状態に変更するよう前記業務サーバに指示し、
前記業務サーバは、
前記管理サーバからの指示に基づいて前記メモリチップの消費電力を変更することを特徴とする計算機システム。
【請求項15】
一つ以上の業務サーバと、前記業務サーバを管理する管理サーバと、前記業務サーバと前記管理サーバとを接続するネットワークと、を備える計算機システムに備わる前記業務サーバのメモリの消費電力を制御するプログラムであって、
前記管理サーバは、ネットワークに接続されるインタフェイスと、前記インタフェイスに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記業務サーバは、メモリの消費電力を制御できる単位である一つ以上のメモリチップと、前記メモリチップの消費電力を省電力状態と通常状態とに切り替える制御をする電力制御機構と、一つ以上の仮想サーバを稼動させる仮想化機構と、を備え、
前記仮想化機構は、前記仮想サーバと前記メモリチップとの割り当て関係を管理するメモリマッピング部を備え、
前記メモリは、前記仮想サーバと前記メモリチップとの割り当て関係を保持し、
前記プログラムは、
前記メモリチップの消費電力状態を省電力状態にした場合に、前記メモリの性能が不足することを示す第1の値、及び、前記メモリの性能が不足しないことを示す第2の値のいずれかを含むアクセス情報を取得し、
前記メモリチップに割り当てられた前記各仮想サーバのアクセス情報が一つでも前記第1の値である場合には、前記メモリチップの消費電力状態を通常状態に変更するよう前記業務サーバに指示し、
前記メモリチップに割り当てられた前記各仮想サーバのアクセス情報の全てが前記第2の値である場合には、前記メモリチップの消費電力状態を省電力状態に変更するよう前記業務サーバに指示する処理を前記管理サーバのプロセッサに実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate


【公開番号】特開2009−122733(P2009−122733A)
【公開日】平成21年6月4日(2009.6.4)
【国際特許分類】
【出願番号】特願2007−292959(P2007−292959)
【出願日】平成19年11月12日(2007.11.12)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】