(57)【特許請求の範囲】
【請求項１】
一つ以上の業務サーバ、前記業務サーバを管理する管理サーバ、及び、前記業務サーバと前記管理サーバとを接続するネットワーク、を備える計算機システムで実行されるメモリの消費電力を制御する方法であって、
前記業務サーバは、メモリの消費電力を制御できる単位である一つ以上のメモリチップと、前記メモリチップの消費電力を省電力状態と通常状態とに切り替える制御を実施する電力制御機構と、一つ以上の仮想サーバを稼動させる仮想化機構と、を備え、
前記仮想化機構は、前記仮想サーバのメモリアドレス空間と前記メモリチップのアドレス空間との対応関係を保持するメモリマッピング情報を備え、
前記管理サーバは、前記仮想サーバと前記メモリチップとの割り当て関係を保持し、
前記方法は、
前記管理サーバが、前記メモリチップのうち前記通常状態のメモリチップを特定するステップと、
前記管理サーバが、前記特定された通常状態のメモリチップのうち、前記仮想サーバに対して未割り当てのメモリチップを特定するステップと、
前記管理サーバが、前記特定された未割り当てのメモリチップの消費電力を前記省電力状態に変更するように前記業務サーバに指示するステップと、
前記業務サーバが、前記管理サーバからの指示に基づいて前記メモリチップの消費電力を変更する電力制御ステップと、を含み、
前記業務サーバは、第１メモリチップと第２メモリチップとを有し、
前記方法は、
前記管理サーバが、前記仮想サーバのうち前記第１メモリチップに割り当てられた仮想サーバを特定するステップと、
前記管理サーバが、前記特定された仮想サーバの割り当て先を前記第１メモリチップから前記第２メモリチップに変更するように前記仮想化機構に指示するステップと、を含み、
前記仮想化機構が、前記管理サーバから前記仮想サーバの割り当て先の変更指示を受け付け、前記仮想サーバの割り当て先を前記第１メモリチップから前記第２メモリチップに変更するステップは、
前記仮想サーバのメモリアドレス空間と前記第１メモリチップのメモリアドレス空間との対応関係、前記仮想サーバのメモリアドレス空間と前記第２メモリチップのアドレス空間との対応関係、及び前記第２メモリチップにデータの移動が完了した前記仮想サーバのメモリアドレスが登録される更新済みアドレスを一時的に保持する一時的メモリマッピング情報を生成するステップと、
前記仮想化機構が、前記仮想サーバの割り当て先を前記第２メモリに変更するように、前記メモリマッピング情報を更新するステップと、
前記仮想化機構が、前記第１メモリチップに格納されたデータを前記第２メモリチップに移動するステップと、を含み、
前記方法は、
前記仮想化機構が、前記仮想サーバの割り当て先の変更中に、前記仮想サーバから書き込み命令を受信した場合、前記一時的メモリマッピング情報の前記更新済みアドレスに書き込み先のアドレスを登録し、前記更新後のメモリマッピング情報を参照して、前記書き込み先のアドレスを前記第２メモリチップのメモリアドレスに変換するステップと、
前記仮想化機構が、前記仮想サーバの割り当て先の変更中に、前記仮想サーバから読み込み命令を受信した場合、読み込み先のアドレスが前記一時的メモリマッピング情報の前記更新済みアドレスに登録されたアドレスであるか否かを判定するステップと、
前記読み込み先のアドレスが前記一時的メモリマッピング情報の前記更新済みアドレスに登録されたアドレスであると判定された場合、前記仮想化機構が、前記更新後のメモリマッピング情報を参照して、前記読み込み先のアドレスを前記第２メモリチップのメモリアドレスに変換するステップと、
前記読み込み先のアドレスが前記一時的メモリマッピング情報の前記更新済みアドレスに登録されたアドレスでないと判定された場合、前記仮想化機構が、前記一時的メモリマッピング情報を参照して、前記読み込み先のアドレスを前記第１メモリチップのメモリアドレスに変換するステップと、を含むことを特徴とする電力制御方法。
【請求項２】
前記管理サーバは、前記仮想サーバ上で稼働するＯＳ及び前記仮想サーバ上で稼働するプロセスと、前記ＯＳ及び前記プロセスに割り当てられたメモリチップとの割り当て関係を保持し、
前記管理サーバが未割り当てのメモリチップを特定するステップでは、前記特定された通常状態のメモリチップのうち、前記ＯＳ及び前記プロセスに対して未割り当てのメモリチップを特定することを特徴とする請求項１に記載の電力制御方法。
【請求項３】
前記メモリチップは、第３メモリチップ、第４メモリチップ、及び第５メモリチップを含み、
前記第３メモリチップ及び第５メモリチップは通常状態に設定され、前記第４メモリチップは省電力状態に設定され、
前記方法は、前記仮想化機構が、前記仮想サーバからメモリへの書き込みについて、同じデータを前記第３メモリチップと、前記第４メモリチップとに書き込むステップを含み、
前記書き込みステップでは、前記４メモリチップへの書き込みに遅延が生じた場合、前記第４メモリチップに書き込むデータを前記第５メモリチップに一時的に書き込むことを特徴とする請求項１に記載の電力制御方法。
【請求項４】
一つ以上の業務サーバと、前記業務サーバを管理する管理サーバ、前記業務サーバと前記管理サーバとを接続するネットワークと、を備える計算機システムであって、
前記業務サーバは、メモリの消費電力を制御できる単位である一つ以上のメモリチップと、前記メモリチップの消費電力を省電力状態と通常状態とに切り替える制御を実施する電力制御機構と、一つ以上の仮想サーバを稼動させる仮想化機構と、を備え、
前記仮想化機構は、前記仮想サーバのメモリアドレス空間と前記メモリチップのアドレス空間との対応関係を保持するメモリマッピング情報を備え、
前記管理サーバは、
前記仮想サーバと前記メモリチップとの割り当て関係を保持し、
前記メモリチップのうち前記通常状態のメモリチップを特定し、
前記特定された通常状態のメモリチップのうち、前記仮想サーバに対して未割り当てのメモリチップを特定し、
前記特定された未割り当てのメモリチップの消費電力を前記省電力状態に変更するように前記業務サーバに指示し、
前記業務サーバは、前記管理サーバからの指示に基づいて前記メモリチップの消費電力を変更し、
前記業務サーバは、第１メモリチップと第２メモリチップとを有し、
前記管理サーバは、前記仮想サーバのうち前記第１メモリチップに割り当てられた仮想サーバを特定し、
前記管理サーバが、前記特定された仮想サーバの割り当て先を前記第１メモリチップから前記第２メモリチップに変更するように前記仮想化機構に指示し、
前記仮想化機構は、前記管理サーバから前記仮想サーバの割り当て先の変更指示を受け付け、前記仮想サーバの割り当て先を前記第１メモリチップから前記第２メモリチップに変更する場合、
前記仮想サーバのメモリアドレス空間と前記第１メモリチップのメモリアドレス空間との対応関係、前記仮想サーバのメモリアドレス空間と前記第２メモリチップのアドレス空間との対応関係、及び前記第２メモリチップに移動が完了した前記仮想サーバのメモリアドレスが登録される更新済みアドレスを一時的に保持する一時的メモリマッピング情報を生成し、
前記仮想化機構は、前記仮想サーバの割り当て先を前記第２メモリに変更するように、前記マッピング情報を更新し、
前記仮想化機構は、前記第１メモリチップに格納されたデータを前記第２メモリチップに移動し、
前記仮想化機構は、前記仮想サーバの割り当て先の変更中に、前記仮想サーバから書き込み命令を受信した場合、前記一時的メモリマッピング情報の前記更新済みアドレスに書き込み先のアドレスを登録し、前記更新後のメモリマッピング情報を参照して、前記書き込み先のアドレスを前記第２メモリチップのメモリアドレスに変換し、
前記仮想化機構は、前記仮想サーバの割り当て先の変更中に、前記仮想サーバから読み込み命令を受信した場合、読み込み先のアドレスが前記一時的メモリマッピング情報の前記更新済みアドレスに登録されたアドレスであるか否かを判定し、
前記読み込み先のアドレスが前記一時的メモリマッピング情報の前記更新済みアドレスに登録されたアドレスであると判定された場合、前記更新後のメモリマッピング情報を参照して、前記読み込み先のアドレスを前記第２メモリチップのメモリアドレスに変換し、
前記読み込み先のアドレスが前記一時的メモリマッピング情報の前記更新済みアドレスに登録されたアドレスでないと判定された場合、前記一時的メモリマッピング情報を参照して、前記読み込み先のアドレスを前記第１メモリチップのメモリアドレスに変換することを特徴とする計算機システム。
【請求項５】
前記管理サーバは、
前記仮想サーバ上で稼働するＯＳ及び前記仮想サーバ上で稼働するプロセスと、前記ＯＳ及び前記プロセスに割り当てられたメモリチップとの割り当て関係を保持し、
前記管理サーバが未割り当てのメモリチップを特定する場合、前記特定された通常状態のメモリチップのうち、前記ＯＳ及び前記プロセスに対して未割り当てのメモリチップを特定することを特徴とする請求項４に記載の計算機システム。
【請求項６】
前記メモリチップは、第３メモリチップ、第４メモリチップ、及び第５メモリチップを含み、
前記第３メモリチップ及び第５メモリチップは通常状態に設定され、前記第４メモリチップは省電力状態に設定され、
前記仮想化機構は、
前記仮想サーバからメモリへの書き込みについて、同じデータを前記第３メモリチップと、前記第４メモリチップとに書き込み、
前記４メモリチップへの書き込みに遅延が生じた場合、前記第４メモリチップに書き込むデータを前記第５メモリチップに一時的に書き込むことを特徴とする請求項４に記載の計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリの電力を制御する方法に関し、特に、メモリを省電力化する方法に関する。
【背景技術】
【０００２】
サーバ搭載メモリはコスト低下と６４ｂｉｔアドレス対応プロセッサの普及によって、大量のメモリがサーバに搭載されるようになってきている。また、大量のメモリを利用するインメモリデータベースシステム、及び、信頼性を向上させるためにメモリを二重にする等の技術も普及し始めている。
【０００３】
しかし、前述した技術が普及した結果、メモリによって消費される電力は大幅に増大しており、メモリの消費電力を削減する技術が必要である。
【０００４】
このような問題に解決する方法として、メモリチップのうち利用されていないメモリチップの電力供給を停止することによって、メモリの消費電力を抑える方法が存在する。
【０００５】
しかし、一般的にＯＳ及びアプリケーションプログラムは、一度メモリを利用すると、ＯＳ及びアプリケーションがシャットダウン又は終了するまでメモリを開放する場合が多いため、前述した方法を適用するのは不可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、サーバに搭載されているメモリの消費電力を制御し、消費電力を削減することである。
【課題を解決するための手段】
【０００７】
本発明の代表的な一例を示せば以下の通りである。すなわち、一つ以上の業務サーバ、前記業務サーバを管理する管理サーバ、及び、前記業務サーバと前記管理サーバとを接続するネットワーク、を備える計算機システムで実行されるメモリの消費電力を制御する方法であって、前記業務サーバは、メモリの消費電力を制御できる単位である一つ以上のメモリチップと、前記メモリチップの消費電力を省電力状態と通常状態とに切り替える制御を実施する電力制御機構と、一つ以上の仮想サーバを稼動させる仮想化機構と、を備え、前記仮想化機構は、前記仮想サーバのメモリアドレス空間と前記メモリチップのアドレス空間との対応関係を保持するメモリマッピング情報を備え、前記管理サーバは、前記仮想サーバと前記メモリチップとの割り当て関係を保持し、前記方法は、前記管理サーバが、前記メモリチップのうち前記通常状態のメモリチップを特定するステップと、前記管理サーバが、前記特定された通常状態のメモリチップのうち、前記仮想サーバに対して未割り当てのメモリチップを特定するステップと、前記管理サーバが、前記特定された未割り当てのメモリチップの消費電力を前記省電力状態に変更するように前記業務サーバに指示するステップと、前記業務サーバが、前記管理サーバからの指示に基づいて前記メモリチップの消費電力を変更する電力制御ステップと、を含み、前記業務サーバは、第１メモリチップと第２メモリチップとを有し、さらに、前記方法は、前記管理サーバが、前記仮想サーバのうち前記第１メモリチップに割り当てられた仮想サーバを特定するステップと、前記管理サーバが、前記特定された仮想サーバの割り当て先を前記第１メモリチップから前記第２メモリチップに変更するように前記仮想化機構に指示するステップと、前記仮想化機構は、前記管理サーバから前記仮想サーバの割り当て先の変更指示を受け付け、前記仮想サーバの割り当て先を前記第１メモリチップから前記第２メモリチップに変更する場合に、前記仮想サーバのメモリアドレス空間と前記第１メモリチップのメモリアドレス空間との対応関係、前記仮想サーバのメモリアドレス空間と前記第２メモリチップのアドレス空間との対応関係、及び前記第２メモリチップに移動が完了した前記仮想サーバのメモリアドレスが登録される更新済みアドレスを一時的に保持する一時的メモリマッピング情報を生成するとともに、前記仮想サーバの割り当て先を前記第２メモリに変更するように、前記マッピング情報を更新するステップと、前記仮想化機構は、前記仮想サーバの割り当て先の変更中に、前記仮想サーバから書き込み命令を受信した場合、前記一時的メモリマッピング情報の前記更新済みアドレスに書き込み先のアドレスを登録し、前記更新後のメモリマッピング情報を参照して、前記書き込み先のアドレスを前記第２メモリチップのメモリアドレスに変換するステップと、前記仮想化機構は、前記仮想サーバの割り当て先の変更中に、前記仮想サーバから読み込み命令を受信した場合、読み込み先のアドレスが前記一時的メモリマッピング情報の前記更新済みアドレスに登録されたアドレスであるか否かを判定するステップと、前記読み込み先のアドレスが前記一時的メモリマッピング情報の前記更新済みアドレスに登録されたアドレスであると判定された場合、前記更新後のメモリマッピング情報を参照して、前記読み込み先のアドレスを前記第２メモリチップのメモリアドレスに変換するステップと、前記読み込み先のアドレスが前記一時的メモリマッピング情報の前記更新済みアドレスに登録されたアドレスでないと判定された場合、前記一時的メモリマッピング情報を参照して、前記読み込み先のアドレスを前記第１メモリチップのメモリアドレスに変換するステップと、を含むことを特徴とする。
【発明の効果】
【０００８】
本発明の一実施形態によれば、ＯＳ及びアプリケーションに利用されるメモリが確保された状態である場合でも、その利用状況に応じてメモリの消費電力を適切に制御し、消費電力を削減することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１の実施の形態の計算機システムの構成図である。
【図２】本発明の第１の実施の形態の管理サーバの構成図である。
【図３】本発明の第１の実施の形態の仮想化機構の構成を示している。
【図４】本発明の第１の実施の形態のメモリと仮想サーバとのマッピング関係の例を示す図である。
【図５】本発明の第１の実施の形態のメモリマッピングテーブルである。
【図６】本発明の第１の実施の形態の電力管理プログラム及びテーブル群の構成を示している。
【図７】本発明の第１の実施の形態の仮想サーバ管理テーブルである。
【図８】本発明の第１の実施の形態のメモリ管理テーブルである。
【図９】本発明の第１の実施の形態の仮想サーバ設定テーブルである。
【図１０】本発明の第１の実施の形態の電力管理プログラムによって提供されるＧＵＩの例を示す。
【図１１】本発明の第１の実施の形態のメモリマッピングサブプログラムと仮想サーバとの処理を示すシーケンス図である。
【図１２】本発明の第１の実施の形態の一時的メモリマッピングテーブルである。
【図１３】本発明の第１の実施の形態のメモリアドレス変換の処理のフローチャートである。
【図１４】本発明の第１の実施の形態のメモリアクセス監視サブプログラムの処理のフローチャートである。
【図１５】本発明の第１の実施の形態のマッピング変更サブプログラムの処理のフローチャートである。
【図１６】本発明の第１の実施の形態のメモリ内容移動の処理のフローチャートである。
【図１７】本発明の第１の実施の形態のメモリアクセス監視サブプログラムと情報取得サブプログラムとの処理のシーケンス図である。
【図１８】本発明の第１の実施の形態の判定サブプログラムの処理のフローチャートである。
【図１９】本発明の第１の実施の形態のマッピング変更判定の処理のフローチャートである。
【図２０】本発明の第１の実施の形態のメモリ状態変更判定の処理のフローチャートである。
【図２１】本発明の第１の実施の形態の変更指示サブプログラムの処理のフローチャートである。
【図２２】本発明の第１の実施の形態の電力制御サブプログラムの処理のフローチャートである。
【図２３】本発明の第１の実施の形態の設定サブプログラムの処理のフローチャートである。
【図２４】本発明の第２の実施の形態の仮想化機構の構成を示している。
【図２５】本発明の第２の実施の形態の仮想サーバ管理テーブルである。
【図２６】本発明の第２の実施の形態のメモリアクセス監視サブプログラムと、情報取得サブプログラムと、ＣＰＵ監視サブプログラムとの処理のシーケンス図である。
【図２７】本発明の第２の実施の形態の判定サブプログラムの処理のフローチャートである。
【図２８】本発明の第３の実施の形態の仮想化機構の構成を示している。
【図２９】本発明の第３の実施の形態のマッピング変更判定の処理のフローチャートである。
【図３０】本発明の第３の実施の形態のスワッピング判定の処理のフローチャートである。
【図３１】本発明の第４の実施の形態の仮想化機構の構成を示している。
【図３２】本発明の第５の実施の形態のメモリ管理テーブルである。
【図３３】本発明の第６の実施の形態のメモリマッピングテーブルである。
【図３４】本発明の第７の実施の形態の仮想化機構の構成を示している。
【図３５】本発明の第７の実施の形態のメモリマッピングテーブルである。
【図３６】本発明の第７の実施の形態のメモリ管理テーブルである。
【図３７】本発明の第７の実施の形態の電力管理プログラムによって提供されるＧＵＩの例を示す。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について図面を参照しながら説明する。
【００１１】
なお、以下に記載する実施の形態は、本発明の実施の形態の一つであり、それぞれの実施の形態の組み合わせも本発明の実施の形態の一つとなりえる。また、以下に記載する実施の形態は本発明の範囲を限定するものではない。
【００１２】
＜実施形態１＞
図１は、本発明の第１の実施の形態の計算機システムの構成図である。
【００１３】
計算機システムは、管理サーバ１０１、及びサーバ１０３を備える。また、管理サーバ１０１及びサーバ１０３はネットワーク１０２によって接続される。
【００１４】
管理サーバ１０１は、電力制御プログラム１１０及びテーブル群１１１を備える。
【００１５】
サーバ１０３は、メモリ１３１、ＣＰＵ１３２、補助記憶装置１３３、Ｉ／Ｏデバイス１３４及び電力制御機構１３５を備え、アプリケーションプログラムを実行することによって業務を行う。
【００１６】
メモリ１３１は、仮想化機構１５０及び仮想サーバ１４０を含む。仮想化機構１５０及び仮想サーバ１４０は、プログラム及びデータから構成される。仮想化機構１５０は、仮想サーバ１４０を制御する。仮想サーバ１４０は、仮想化機構１５０によって、サーバ１０３のメモリ１３１を分割又は共有して、利用することができる。
【００１７】
なお、本発明の第１の実施の形態では、仮想化機構１５０はプログラムとして実装しているが、一部又は全部をカスタムプロセッサ等のハードウェアの実装によって実現してもよい。
【００１８】
ＣＰＵ１３２は、メモリ１３１に格納されているプログラムを実行するプロセッサである。
【００１９】
補助記憶装置１３３は、ハードディスク又はフラッシュメモリ等の記憶装置である。
【００２０】
Ｉ／Ｏデバイス１３４は、ＮＩＣ（Ｎｅｔｗｏｒｋ Ｉｎｔｅｒｆａｃｅ Ｃａｒｄ）等の入出力装置（インタフェイス）である。
【００２１】
電力制御機構１３５は、メモリ１３１の電力消費状態を制御する。なお、電力制御機構１３５は、ハードウェアによって実装してもよいし、プログラム等のソフトウェアの実装によって実現してもよい。
【００２２】
また、電力制御機構１３５は、Ｉ／Ｏデバイス１３４を介して管理サーバ１０１から電力の制御要求を受け付ける。なお、電力制御機構１３５がメモリ１３１の電力消費状態を制御する方法は、例えば、メモリ１３１の動作周波数や電圧を制御する方法、メモリ１３１の性能を制御する方法、及び、メモリ１３１に供給する電力を停止する方法等がある。
【００２３】
また、電力制御機構１３５が制御可能なメモリ１３１の単位は、例えば、メモリ１３１を構成する一つ以上のメモリチップ単位である。すなわち、メモリチップは、電力制御機構１３５がメモリ１３１の消費電力を制御できる単位である。なお、前述した以外の電力消費状態の制御方法及び電力制御単位も、本発明の対象となる。
【００２４】
なお、図１に示す例では、計算機システムは、一つのサーバ１０３を備えているが、複数のサーバ１０３を備えてもよい。また、仮想化機構１５０は、四つの仮想サーバ１４０を制御しているが、いくつ制御してもよい。
【００２５】
図２は、本発明の第１の実施の形態の管理サーバ１０１の構成図である。
【００２６】
管理サーバ１０１は、メモリ２０１、ＣＰＵ２０２、ＮＩＣ２０３及び入出力装置２０４を備える。
【００２７】
メモリ２０１は電力制御プログラム１１０及びテーブル群１１１を格納する。
【００２８】
ＣＰＵ２０２は、メモリ２０１に格納されているプログラムを実行するプロセッサである。なお、図２に示す例では、管理サーバ１０１は、一つのＣＰＵ２０２を備えているが、複数のＣＰＵ２０２を備えてもよい。
【００２９】
ＮＩＣ２０３は、ネットワーク１０２に接続するためのインタフェイスである。
【００３０】
入出力装置２０４は、管理サーバ１０１に情報を入出力するインタフェイスである。また、入出力装置２０４には、マウス及び／又はキーボード等の入力装置２０５、及び、ディスプレイ等の表示装置２０６が接続される。なお、入出力装置２０４にＵＳＢメディア等の外部記憶装置を接続して、情報の読み書きを行ってもよい。また、管理サーバ１０１は、ハードディスク又はフラッシュメモリ等の補助記憶装置を備えてもよい。
【００３１】
図３は、本発明の第１の実施の形態の仮想化機構１５０の構成を示している。
【００３２】
仮想化機構１５０は、メモリマッピングサブプログラム３０１、メモリアクセス監視サブプログラム３０２、マッピング変更サブプログラム３０３、メモリマッピングテーブル３１０及び制御Ｉ／Ｆ３２０を備える。
【００３３】
メモリマッピングサブプログラム３０１は、各仮想サーバ１４０とメモリ１３１とのマッピング関係（対応関係）を管理する。
【００３４】
メモリアクセス監視サブプログラム３０２は、各仮想サーバ１４０のメモリアクセスの頻度（メモリ性能情報）を監視する。
【００３５】
マッピング変更サブプログラム３０３は、各仮想サーバ１４０とメモリ１３１とのマッピング関係を変更する。
【００３６】
メモリマッピングテーブル３１０は、各仮想サーバ１４０とメモリ１３１とのマッピング関係を保持する。なお、メモリマッピングテーブル３１０については、図５を用いて詳細に後述する。
【００３７】
制御Ｉ／Ｆ３２０は、外部（例えば、管理サーバ１０１）と通信するインタフェイスである。
【００３８】
なお、仮想化機構１５０及びその構成要素の一部又は全部は、カスタムプロセッサによってハードウェアとして実装されてもよい。
【００３９】
図４は、本発明の第１の実施の形態のメモリ１３１と仮想サーバ１４０とのマッピング関係の例を示す図である。
【００４０】
メモリ１３１は、メモリチップ４０１（メモリチップ１〜６）によって構成される。
【００４１】
各メモリチップ４０１は、メモリ１３１のアドレスの所定の領域に対応する。例えば、メモリ１３１の全アドレスのうち、最初の４ＧＢの領域のアドレスがメモリチップ１の一部又は全部に対応し、次の４ＧＢの領域のアドレスがメモリチップ２の一部又は全部に対応する。
【００４２】
図４に示す例では、メモリチップ１の領域には、仮想サーバ１及び仮想サーバ２で利用されるプログラム及びデータが保持されている。また、メモリチップ２及びメモリチップ３の領域には、仮想サーバ３で利用されるプログラム及びデータが、またがって保持されている。また、メモリチップ４の領域には、仮想サーバ４で利用されるプログラム及びデータが保持されている。メモリチップ５の領域には、仮想化機構１５０で利用されるプログラム及びデータが保持されている。
【００４３】
なお、図４に示す例では、メモリ１３１は、六つのメモリチップ４０１によって構成されているが、六つ以外の複数のメモリチップ４０１によって構成されてもよい。
【００４４】
図５は、本発明の第１の実施の形態のメモリマッピングテーブル３１０である。
【００４５】
メモリマッピングテーブル３１０は、メモリマップ５０１、メモリチップアドレス５０２、割り当て先５０３及び仮想サーバアドレス５０４を含む。
【００４６】
メモリマップ５０１は、図４に示されるメモリチップ４０１の識別子である。
【００４７】
メモリチップアドレス５０２は、メモリマップ５０１に示すメモリチップ４０１に対応するアドレスの領域である。なお、図５に示す例では、メモリチップアドレス５０２に格納されるアドレスは、１６進数で示される。また、メモリチップ１から順番に、連続したアドレスが割り当てられているが、任意のアドレスの範囲が各メモリチップ４０１に割り当てられてもよい。
【００４８】
割り当て先５０３は、メモリチップアドレス５０２に示すアドレスの割り当て先の識別子である。割り当て先の識別子は、例えば、仮想サーバ１４０の識別子及び仮想化機構１５０である。なお、割り当て先が存在しない場合には「未割り当て」が格納される。
【００４９】
仮想サーバアドレス５０４は、メモリチップアドレス５０２に示すアドレスに対応する割り当て先５０３に示す割り当て先のアドレスを示す。具体的には、仮想サーバアドレス５０４は、仮想サーバ１４０のＯＳからみたアドレスである。
【００５０】
図５に示す例では、メモリマッピングテーブル３１０の第２行のメモリチップ５０１、メモリチップアドレス５０２、割り当て先５０３及び仮想サーバアドレス５０４には、それぞれ「１」、「８０００００００ｈ−ＢＦＦＦＦＦＦＦｈ」、「仮想サーバ２」、「０ｈ−３ＦＦＦＦＦＦＦｈ」が格納されている。これは、メモリチップ「１」のメモリアドレスの領域「８０００００００ｈ−ＢＦＦＦＦＦＦＦｈ」は、「仮想サーバ２」のメモリアドレスの領域「０ｈ−３ＦＦＦＦＦＦＦｈ」に対応していることを示している。
【００５１】
なお、メモリマッピングテーブル３１０一部の情報は必ずしも必須ではない。また、メモリマッピングテーブル３１０の形式は、同等の情報を保持するものであれば、図５に示される形式に限定されるものではない。
【００５２】
図６は、本発明の第１の実施の形態の電力管理プログラム１１０及びテーブル群１１１の構成を示している。
【００５３】
電力管理プログラム１１０は、設定サブプログラム６０１、情報取得サブプログラム６０２、判定サブプログラム６０３、変更指示サブプログラム６０４及び電力制御サブプログラム６０５を含む。
【００５４】
設定サブプログラム６０１は、仮想サーバ１４０の設定を行う。情報取得サブプログラム６０２は、サーバ１０３から情報を取得する。判定サブプログラム６０３は、メモリマッピングテーブル３１０の変更を判定する。変更指示サブプログラム６０４は、メモリマッピングテーブル３１０の変更を指示する。電力制御サブプログラム６０５は、メモリ１３１の電力の制御を行う。
【００５５】
なお、電力管理プログラム１１０及びその構成要素の一部又は全部は、カスタムプロセッサによってハードウェアとして実装されてもよい。
【００５６】
また、テーブル群１１１は、仮想サーバ管理テーブル６１０、メモリ管理テーブル６１１及び仮想サーバ設定テーブル６１２を含む。
【００５７】
仮想サーバ管理テーブル６１０は、仮想サーバ１４０の状態を保持する。なお、仮想サーバ管理テーブル６１０については、図７を用いて詳細に後述する。
【００５８】
メモリ管理テーブル６１１は、メモリ１３１の状態を保持する。なお、メモリ管理テーブル６１１については、図８を用いて詳細に後述する。
【００５９】
仮想サーバ設定テーブル６１２は、仮想サーバ１４０の設定の情報を保持する。
【００６０】
図７は、本発明の第１の実施の形態の仮想サーバ管理テーブル６１０である。
【００６１】
仮想サーバ管理テーブル６１０は、仮想サーバ７０１、状態７０２、メモリ利用容量７０３及びメモリアクセス情報７０４を含む。
【００６２】
仮想サーバ７０１は、仮想サーバ１４０の識別子である。
【００６３】
状態７０２は、仮想サーバ７０１に示す仮想サーバ１４０の状態である。例えば、仮想サーバ１４０が起動中であれば「起動中」であり、停止中であれば「停止中」となる。なお、起動中とは、仮想サーバ１４０が稼動状態及びサスペンド状態のように、仮想サーバ１４０の状態がメモリ１３１に保持されている場合である。また、停止中とは、仮想サーバ１４０が非稼動状態及びスタンバイ状態のように、仮想サーバ１４０の状態がメモリに保存されていない場合である。
【００６４】
メモリ利用容量７０３は、仮想サーバ７０１に示す仮想サーバ１４０が利用中のメモリの容量である。例えば、状態７０２が「停止中」である場合には、メモリ利用容量７０３は「０Ｂ」となる。
【００６５】
メモリアクセス情報７０４は、仮想サーバ７０１の示す仮想サーバ１４０のメモリアクセスの情報を示す。なお、メモリアクセス情報７０４は、対象の仮想サーバ１４０が停止中であれば、値を持たないため、図７に示す例では「−」と示されている。また、メモリアクセス情報７０４には、「Ｈｉｇｈ」及び「Ｌｏｗ」の値が格納される。「Ｈｉｇｈ」とは、例えば、メモリアクセスの頻度が高い状態であり、「Ｌｏｗ」とは、例えば、メモリアクセスの頻度が低い状態である。
【００６６】
なお、状態７０２がサスペンド状態である場合には、メモリアクセス情報７０４は、「Ｌｏｗ」の状態となる。
【００６７】
図７に示す例では、仮想サーバ管理テーブル６１０の第１行の仮想サーバ７０１、状態７０２、メモリ利用容量７０３及びメモリアクセス情報７０４には、それぞれ「１」、「起動中」、「２ＧＢ」及び「Ｈｉｇｈ」が格納されている。これは、仮想サーバ「１」は、起動中であり、２ＧＢのメモリを利用していて、仮想サーバ「１」に割り当てられたメモリチップ４０１が通常状態であることを示す。
【００６８】
なお、仮想サーバ管理テーブル６１０の一部の情報は、必ずしも必須ではない。また、仮想サーバ管理テーブル６１０の形式は同等の情報を保持するものであれば、図７に示される形式に限定されるものではない。
【００６９】
図８は、本発明の第１の実施の形態のメモリ管理テーブル６１１である。
【００７０】
メモリ管理テーブル６１１は、メモリチップ８０１、容量８０２、割り当て先８０３及び状態８０４を含む。
【００７１】
メモリチップ８０１は、メモリチップ４０１の識別子である。
【００７２】
容量８０２は、メモリチップ８０１に示すメモリチップ４０１の容量である。
【００７３】
割り当て先８０３は、メモリチップ８０１に示すメモリチップ４０１の割り当て先の識別子である。例えば、「１，２」は、仮想サーバ１及び仮想サーバ２が割り当て先であることを示す。また、「仮想化機構」は、割り当て先が仮想化機構１５０であることを示す。また、「未割り当て」は、割り当て先がないことを示す。
【００７４】
状態８０４は、メモリチップ８０１に示すメモリチップ４０１の電力消費状態である。例えば、メモリチップ４０１が通常状態で稼動している場合には「通常」となる。また、メモリチップ４０１が省電力状態で稼動する場合は「省電力」となる。なお、省電力状態には、複数の状態のレベルがあり、メモリ１３１の動作周波数及び電圧を低下させた状態、メモリ１３１の性能を低下させた状態、及び、メモリ１３１に供給する電力を停止した状態を含む。また、前述した状態以外のメモリの省電力化状態も含まれる。
【００７５】
なお、メモリチップ４０１に確保されている仮想サーバ１４０が不要になった場合には、メモリチップ１４０を停止する場合もある。
【００７６】
なお、メモリ管理テーブル６１１の一部の情報は必ずしも必須ではない。また、メモリ管理テーブル６１１の形式は同等の情報を保持するものであれば、図８に示される形式に限定されるものではない。
【００７７】
図９は、本発明の第１の実施の形態の仮想サーバ設定テーブル６１２である。
【００７８】
仮想サーバ設定テーブル６１２は、仮想サーバ９０１、メモリ容量９０２及び既定状態９０３を含む。
【００７９】
仮想サーバ９０１は、仮想サーバ１４０の識別子である。
【００８０】
メモリ容量９０２は、仮想サーバ９０１に示す仮想サーバ１４０が利用する最大メモリ容量である。ここで、最大メモリ容量とは、仮想サーバ９０１に示す仮想サーバ１４０が利用する最大のメモリ容量である。
【００８１】
既定状態９０３は、仮想サーバ９０１に示す仮想サーバ１４０が利用するメモリチップの既定の状態（初期に設定される状態）である。ここで、「Ｈｉｇｈ」である場合には、仮想サーバ１４０に割り当てられたメモリチップ４０１は、通常状態を既定の状態とし、「Ｌｏｗ」である場合には、省電力状態を既定の状態とする。なお、既定状態９０３の示す既定状態は、必ずしも「Ｈｉｇｈ」及び「Ｌｏｗ」の２値である必要はなく、３値以上の値が格納されもよい。また、既定状態９０３には、数値によって示される情報が格納されてもよい。
【００８２】
なお、仮想サーバ設定テーブル６１２の一部の情報は、必ずしも必須ではない。また、仮想サーバ設定テーブル６１２の形式は同等の情報を保持するものであれば、図９に示される形式に限定されるものではない。
【００８３】
図１０は、本発明の第１の実施形態の示す設定サブプログラム６０１の処理で、ユーザの設定情報を取得するために、電力管理プログラム１１０によって提供されるＧＵＩ（Ｇｒａｐｈｉｃａｌ Ｕｓｅｒ Ｉｎｔｅｒｆａｃｅ）の例を示す。
【００８４】
図１０に示すＧＵＩは、図２に示される表示装置２０６又はネットワークを経由した他の表示装置に、ブラウザ及び専用のプログラムのいずれかを用いて仮想サーバ１４０のメモリ設定の情報を表示する。
【００８５】
ウインドウ１００１は、ブラウザ又は専用プログラムのウインドウを示す。ウインドウ１００１には、仮想サーバ１４０のメモリ設定の情報が表示される。
【００８６】
ユーザは、仮想サーバ１４０の選択枠１０１０によって、メモリ１３１に設定する仮想サーバ１４０の識別子を選択する。メモリ容量枠１０１０には、ユーザが選択枠１０１０で選択した仮想サーバ１４０の最大メモリ容量が入力される。既定状態枠１０１１には、ユーザが選択枠１０１０で選択した仮想サーバ１４０に割り当てられるメモリ１３１の既定状態が選択される。
【００８７】
入力が完了すると、設定ボタン１０２０をマウス等で操作することによって設定が完了する。これらの入力された情報は、図９に示す仮想サーバ９０１、メモリ容量９０２及び既定状態９０３にそれぞれ格納される。
【００８８】
また、設定をキャンセルする場合には、キャンセルボタン１０２１をマウス等で操作する。なお、ＧＵＩは、前述した一部の情報を必ずしも入力できるようにする必要はない。また、同等の情報を入力できるものであれば、図１０に示されるＧＵＩの形式に限定されるものではない。
【００８９】
図１１は、本発明の第１の実施の形態のメモリマッピングサブプログラム３０１と仮想サーバ１４０との処理を示すシーケンス図である。
【００９０】
まず、ステップ１１０１では、仮想サーバ１４０は、メモリアクセス命令を実行する。メモリアクセス命令を発行する主体は、仮想サーバ１４０上のＯＳ又はドライバ等である。また、命令の種類は、書き込み命令であっても、読み込み命令であってもよい。
【００９１】
次に、ステップ１１０２では、メモリマッピングサブプログラム３０１は、ステップ１１０１でメモリアクセス命令が発行された後に、メモリアドレスを変換する。メモリアドレス変換処理については、図１３を用いて詳細に後述する。
【００９２】
次に、ステップ１１０３では、メモリマッピングサブプログラム３０１は、ステップ１１０２で変換されたメモリアドレスにメモリアクセスを行う。
【００９３】
次に、ステップ１１０４では、仮想サーバ１４０は、ステップ１１０１で発行されたメモリアクセス命令の結果を受け取る。
【００９４】
次に、ステップ１１０５では、メモリアクセス監視サブプログラム３０２にメモリアクセス情報を通知する。ここでメモリアクセス情報とは、書き込み及び読み込み等のアクセスの種類及びアクセスする際に利用されるメモリの容量等である。
【００９５】
図１２は、本発明の第１の実施の形態の図１５に示すマッピング変更サブプログラムの処理のステップ１４０２で作成される一時的マッピングテーブルである。
【００９６】
一時的マッピングテーブルは、メモリチップ１６０１、メモリチップアドレス１６０２、割り当て先１６０３、仮想サーバアドレス１６０４及び更新済みアドレス１６０５を含む。
【００９７】
メモリチップ１６０１から仮想サーバアドレス１６０４は、それぞれ図５に示すメモリマッピングテーブル３１０のメモリチップ５０１から仮想サーバアドレス５０４に対応する。なお、割り当て先１６０３に格納される内容には、メモリ内容の移動元及び移動先を示す情報として、「移動元」及び「移動先」という情報が追加される。
【００９８】
更新済みアドレス１６０５は、メモリの内容の移動が完了した仮想サーバ１４０のアドレス領域である。
【００９９】
図１３は、本発明の第１の実施の形態のメモリアドレス変換１１０２の処理のフローチャートである。
【０１００】
メモリアドレス変換処理は、図１１に示すステップ１１０１で、仮想サーバ１４０がメモリアクセス命令を発行した後に実行される。
【０１０１】
まず、ステップ１２０１では、メモリマッピングサブプログラム３０１は、メモリ１３１のマッピングが変更中であるか否かを判定する。なお、マッピングの変更中を示すフラグは、仮想化機構１５０がメモリ１３１上に保持しており、この保持されているフラグによってマッピングが変更中であるか否かを判定する。また、このフラグは、図３に示すマッピング変更サブプログラム３０３によって更新される。マッピングが変更中である場合には、処理はステップ１２０２に進む。一方、マッピングが変更中でない場合には、処理はステップ１２０５に進む。
【０１０２】
次に、ステップ１２０２では、メモリマッピングサブプログラム３０１は、メモリアクセス命令の種類が、読み込み命令及び書き込み命令のうち、どちらの命令であるかを判定する。読み込み命令である場合には、処理はステップ１２０４に進む。一方、書き込み命令である場合には、処理はステップ１２０３に進む。
【０１０３】
次に、ステップ１２０３では、メモリマッピングサブプログラム３０１は、書き込み命令の書き込み先のアドレス領域を、図１２に示す一時的メモリマッピングテーブルの更新済みアドレス１６０５に登録する。
【０１０４】
ステップ１２０４では、メモリマッピングサブプログラム３０１は、読み込み先のアドレスが、図１２に示す更新済みアドレス１６０５に登録されているか否かを判定する。登録されている場合には、処理はステップ１２０５に進む。一方、登録されていない場合には、ステップ１２０６に進む。
【０１０５】
ステップ１２０５では、メモリマッピングサブプログラム３０１は、メモリマッピングテーブル３１０を参照し、メモリアクセス元の仮想サーバ１４０の識別子を割り当て先５０３から検索し、メモリアクセス命令のアクセス先のアドレスを仮想サーバアドレス５０４に示す仮想サーバ１４０のアドレスから検索し、検索されたレコードに対応するメモリチップ５０１のメモリチップ４０１と、メモリチップアドレス５０２のアドレスとを取り出し、メモリアドレスを変換する。
【０１０６】
ステップ１２０６では、メモリマッピングサブプログラム３０１は、図１２に示す一時的メモリマッピングテーブルを参照し、メモリアクセス元の仮想サーバ１４０の識別子を割り当て先１６０３から検索し、メモリアクセス命令のアクセス先のアドレスを仮想サーバアドレス１６０４に示す仮想サーバ１４０のアドレスから検索し、検索されたレコードに対応するメモリチップ１６０１のメモリチップ４０１と、メモリチップアドレス１６０２のアドレスとを取り出し、メモリアドレスを変換する。なお、割り当て先１６０３から仮想サーバ１４０の識別子を検索する際には、「移動元」の仮想サーバ１４０の識別子を検索する。
【０１０７】
図１４は、本発明の第１の実施の形態のメモリアクセス監視サブプログラム３０２の処理のフローチャートである。
【０１０８】
まず、ステップ１３０１では、メモリアクセス監視サブプログラム３０２は、メモリマッピングサブプログラム３０１からメモリアクセス情報を受け付ける。
【０１０９】
次に、ステップ１３０２では、メモリアクセス監視サブプログラム３０２は、ステップ１３０１で受け付けたメモリアクセス情報からメモリ性能情報を計算し、計算された結果を保持する。ここで、メモリ性能情報とは、例えば、前回と今回とのアクセス間隔の情報から算出したメモリアクセス頻度、メモリのスループット、ページング頻度及びページング回数等である。そして、処理はステップ１３０１に戻る。
【０１１０】
図１５は、本発明の第１の実施の形態のマッピング変更サブプログラム３０３の処理のフローチャートであり、管理サーバ１０１からマッピングの変更が指示されることによって開始される。
【０１１１】
まず、ステップ１４０１では、マッピング変更サブプログラム３０３は、マッピングが変更中であることを示すフラグを更新し、フラグを立てることによって、マッピング変更中のモードに遷移する。
【０１１２】
次に、ステップ１４０２では、マッピング変更サブプログラム３０３は、マッピングを変更する仮想サーバ１４０の識別子、現在のマッピング先のメモリチップ４０１のアドレス領域、及び、マッピングの変更先のメモリチップ４０１のアドレス領域に基づいて、図５に示すメモリマッピングテーブル３１０からメモリチップ４０１及び仮想サーバ１４０に関する情報を取り出し、図１２に示す一時的メモリマッピングテーブルを作成する。例えば、「仮想サーバ２」のマッピングを「メモリチップ１」のアドレス領域「８０００００００ｈ−ＢＦＦＦＦＦＦＦｈ」から「メモリチップ４」のアドレス領域「３００００００００ｈ−３３ＦＦＦＦＦＦＦｈ」に変更する場合、図５に示すメモリチップ５０１及びメモリチップアドレス５０２のアドレス領域を取り出し、取り出した情報が図１２に示すメモリチップ１６０１及びメモリチップアドレス１６０２に格納される。
【０１１３】
また、図１２に示す割り当て先１６０３には、現在のマッピング先のアドレス領域「８０００００００ｈ−ＢＦＦＦＦＦＦＦｈ」に関しては「移動元 仮想サーバ２」が格納され、マッピングの変更先のアドレス領域「３００００００００ｈ−３３ＦＦＦＦＦＦＦｈ」に関しては、「移動先 仮想サーバ２」が格納される。
【０１１４】
また、図１２に示す仮想サーバアドレス１６０４は、図５に示す仮想サーバアドレス５０４のうち、「仮想サーバ２」のアドレス領域が取り出された「０ｈ−３ＦＦＦＦＦＦＦｈ」が格納される。なお、図１２に示す更新済みアドレス１６０５は、この時点では値が格納されない。
【０１１５】
次に、ステップ１４０３では、マッピング変更サブプログラム３０３は、メモリマッピングテーブル３１０を更新する。ここでは、マッピングを変更する仮想サーバ１４０の識別子、現在のマッピング先のメモリチップ４０１のアドレス領域、マッピングの変更先のメモリチップ４０１のアドレス領域に基づいて、メモリマッピングテーブル３１０をマッピングの変更後の状態に更新する。なお、マッピングの変更中にメモリマッピングテーブル３１０から情報を読み取る場合には、メモリマッピングテーブル３１０と一時的メモリマッピングテーブルとを合わせた状態が取得される。
【０１１６】
次に、ステップ１４０４では、マッピング変更サブプログラム３０３は、メモリ内容の移動を行う。なお、メモリ内容移動処理については、図１６を用いて詳細に後述する。
【０１１７】
次に、ステップ１４０５では、マッピング変更サブプログラム３０３は、メモリ１３１のマッピングを変更する全てのアドレスの内容の移動が完了したか否かを判定する。具体的には、図１２に示す更新済みアドレス１６０５が、仮想サーバアドレス１６０４に示す仮想サーバのアドレスの全てのアドレス領域と一致するか否かで判定する。アドレスの内容の移動が完了した場合には、処理はステップ１４０６に進む。一方、アドレスの内容の移動が完了していない場合には、処理はステップ１４０４を繰り返し実行する。
【０１１８】
次に、ステップ１４０６では、マッピング変更サブプログラム３０３は、マッピング変更中のフラグを更新し、フラグを落とすことによってマッピング変更中のモードを解除する。
【０１１９】
図１６は、本発明の第１の実施の形態のメモリ内容移動１４０４の処理のフローチャートである。
【０１２０】
メモリ内容移動処理は、図１５に示すステップ１４０３で、メモリマッピングテーブルが更新された後に実行される。
【０１２１】
まず、ステップ１５０１では、マッピング変更サブプログラム３０３は、図１２に示す更新済みアドレス１６０５の更新済みアドレスを除いた仮想サーバ１４０のアドレス領域を取得する。
【０１２２】
次に、ステップ１５０２では、マッピング変更サブプログラム３０３は、ステップ１５０１で取得したアドレス領域に対応するメモリ内容を、移動元のメモリアドレス領域から、移動先のメモリアドレス領域にコピーする。ここで、移動元のメモリアドレス領域及び移動先のメモリアドレス領域は、図１２に示す割り当て先１６０３及びメモリチップアドレス１６０２から取得する。
【０１２３】
次に、ステップ１５０３では、マッピング変更サブプログラム３０３は、ステップ１５０２でメモリの内容をコピーしたアドレス領域を、図１２に示す更新済みアドレス１６０５に格納する。
【０１２４】
次に、ステップ１５０４では、マッピング変更サブプログラム３０３は、ステップ１５０２でコピーしたメモリ内容をコピー元（移動元）から削除する。なお、ステップ１５０４で、移動元のメモリ内容は、必ずしも削除する必要はない。
【０１２５】
図１７は、本発明の第１の実施の形態のメモリアクセス監視サブプログラム３０２と情報取得サブプログラム６０２との処理のシーケンス図である。
【０１２６】
まず、ステップ１７０１では、情報取得サブプログラム６０２は、メモリアクセス監視サブプログラム３０２にメモリ性能情報を要求する。
【０１２７】
次に、ステップ１７０２では、メモリアクセス監視サブプログラム３０２は、情報取得サブプログラム６０２からメモリ性能情報が要求されると、保持されているメモリ性能情報を情報取得サブプログラム６０２に通知する。ここで、情報取得サブプログラム６０２に通知されるメモリ性能情報は、図１４に示すステップ１３０２で計算した値である。
【０１２８】
次に、ステップ１７０３では、情報取得サブプログラム６０２は、メモリアクセス監視サブプログラム３０２からメモリ性能情報を取得する。
【０１２９】
次に、ステップ１７０４では、情報取得サブプログラム６０２は、ステップ１７０３で取得したメモリ性能情報に基づいて、仮想サーバ管理テーブル６１０のメモリアクセス情報７０４を更新する。具体的には、メモリ性能情報の値が所定の閾値以上である場合には、メモリアクセス情報７０４に「Ｈｉｇｈ」が格納され、所定の閾値以下である場合には、メモリアクセス情報７０４に「Ｌｏｗ」が格納される。
【０１３０】
閾値は、固定値を保持していてもよい。また、入力装置２０５等を利用してユーザが設定してもよい。さらに、第一の閾値及び第二の閾値等を含む一つ以上の閾値を保持し、メモリ性能情報の値が第一の閾値以上である場合には、メモリアクセス情報７０４に「Ｈｉｇｈ」を格納し、第二の閾値以下である場合には、メモリアクセス情報７０４に「Ｌｏｗ」を格納することもできる。
【０１３１】
なお、本発明の第１の実施の形態では、メモリ性能情報は、アクセス頻度であり、メモリチップ４０１の状態が省電力状態であっても、メモリアクセスが遅延しないメモリアクセス頻度である場合には、メモリアクセス情報７０４に「Ｌｏｗ」を格納し、メモリアクセスが遅延するメモリアクセス頻度である場合には、メモリアクセス情報７０４に「Ｈｉｇｈ」を格納する。なお、メモリアクセス情報７０４の示すメモリアクセス情報は、必ずしも「Ｈｉｇｈ」及び「Ｌｏｗ」の２値である必要はなく、３値以上の値が格納されてもよい。
【０１３２】
次に、ステップ１７０５では、情報取得サブプログラム６０２は、判定サブプログラム６０３を呼び出す。そして、処理はステップ１７０１に戻る。
【０１３３】
図１８は、本発明の第１の実施の形態の判定サブプログラム６０３の処理のフローチャートである。
【０１３４】
まず、ステップ１８０１では、判定サブプログラム６０３は、仮想サーバ管理テーブル６１０からメモリアクセス情報７０４を取得する。
【０１３５】
次に、ステップ１８０２では、判定サブプログラム６０３は、メモリ管理テーブル６１１からメモリ１３１の状態８０４を取得する。
【０１３６】
次に、ステップ１８０３では、判定サブプログラム６０３は、仮想サーバ１４０のマッピングを変更するか否かを判定し、必要である場合には、仮想サーバ１４０のマッピングを変更する。なお、マッピング変更判定の処理については、図１９を用いて詳細に後述する。
【０１３７】
次に、ステップ１８０４では、判定サブプログラム６０３は、メモリ１３１の状態を変更するか否かを判定し、必要である場合には、メモリ１３１の状態を変更する。なお、メモリ状態変更判定の処理については、図２０を用いて詳細に後述する。
【０１３８】
図１９は、本発明の第１の実施の形態のマッピング変更判定１８０３の処理のフローチャートである。
【０１３９】
マッピング変更判定１８０３の処理は、図１８に示すステップ１８０２で、メモリ１３１の状態が取得された後に実行される。
【０１４０】
まず、ステップ１９０１では、判定サブプログラム６０３は、仮想サーバ１４０が利用するメモリ１３１の領域をどのメモリチップ４０１にレイアウトするかを決定する。
【０１４１】
具体的には、以下に示す二つの条件に基づいてレイアウトを決定する：（１）図７に示す仮想サーバ管理テーブル６１０のメモリアクセス情報７０４が「Ｈｉｇｈ」の仮想サーバ１４０と「Ｌｏｗ」の仮想サーバ１４０とが同一のメモリチップ４０１を利用する状態を最小に抑える。（２）現状の仮想サーバ１４０のメモリ１３１の割り当てを変更する容量を最小に抑える。
【０１４２】
なお、これらの条件は、ユーザによって新たに追加、変更、及び削除することができる。また、それぞれの条件に優先度を設定することもできる。例えば、前述した条件（１）と（２）とでは、条件（１）が優先されるように優先度を設定する。
【０１４３】
また、レイアウトの決定は、仮想サーバ管理テーブル６１０と、メモリ管理テーブル６１１を参照して行われる。例えば、図７及び図８に示す例では、「仮想サーバ１」及び「仮想サーバ２」は、それぞれメモリアクセス情報７０４は、「Ｈｉｇｈ」及び「Ｌｏｗ」であり、同一の「メモリチップ１」に割り当てられているため、条件（１）に反する。
【０１４４】
また、「仮想サーバ４」のメモリアクセス情報７０４は、「Ｌｏｗ」であり、「メモリチップ４」に割り当てられている。「メモリチップ４」の容量８０２は、「４ＧＢ」であり、「仮想サーバ２」及び「仮想サーバ４」のメモリ利用容量７０３は、それぞれ「１ＧＢ」及び「３ＧＢ」であることから、「仮想サーバ２」の割り当て先のメモリチップ４０１を「メモリチップ４」に変更しても容量を超えることはない。したがって、「仮想サーバ２」の割り当て先のメモリチップ４０１を「メモリチップ４」に変更すると、「仮想サーバ１」及び「仮想サーバ２」は、同一のメモリチップ４０１に割り当てられないため、条件（１）を満たすことができる。
【０１４５】
次に、ステップ１９０２では、判定サブプログラム６０３は、ステップ１９０１で決定したレイアウトと、現状の仮想サーバ１４０に割り当てられるメモリチップ４０１のマッピングとが異なるか否かを判定する。異なる場合には、マッピングの変更が必要と判定し、処理はステップ１９０３に進む。一方、同じである場合には、処理は終了する。
【０１４６】
次に、ステップ１９０３では、判定サブプログラム６０３は、ステップ１９０１で決定したレイアウトに変更するため、変更する仮想サーバ１４０の識別子、現在の割り当て先のメモリアドレス領域、及び、変更先のメモリアドレス領域を引数として変更指示サブプログラム６０４を呼び出す。そして、処理は終了する。
【０１４７】
図２０は、本発明の第１の実施の形態のメモリ状態変更判定１８０４の処理のフローチャートであり、図１８に示すステップ１８０３で、マッピングを変更するか否かを判定した後に実行される。
【０１４８】
まず、ステップ２００１では、判定サブプログラム６０３は、メモリ管理テーブル６１１からメモリチップ４０１のメモリの状態８０４を取得し、通常状態であるか否かを判定する。通常状態である場合には、処理はステップ２００４に進む。一方、通常状態でない場合には、処理はステップ２００２に進む。
【０１４９】
次に、ステップ２００２では、判定サブプログラム６０３は、メモリ管理テーブル６１１からメモリチップの割り当て先８０３を取得し、仮想サーバ管理テーブル６１０から、全ての割り当て先８０３の仮想サーバ１４０のメモリアクセス情報７０４を取得する。そして、取得したメモリアクセス情報７０４のうち、メモリアクセス情報７０４が「Ｈｉｇｈ」の仮想サーバ１４０が存在するか否かを判定する。一つでもメモリアクセス情報７０４が「Ｈｉｇｈ」の仮想サーバ１４０が存在する場合には、処理はステップ２００３に進む。一方、メモリアクセス情報７０４が「Ｈｉｇｈ」の仮想サーバ１４０が存在しない場合には、処理は終了する。
【０１５０】
次に、ステップ２００３では、判定サブプログラム６０３は、電力制御サブプログラム６０５を呼び出し、メモリチップ４０１の状態８０４を通常状態に変更するように指示する。そして、処理は終了する。
【０１５１】
ステップ２００４では、判定サブプログラム６０３は、メモリ管理テーブル６１１からメモリチップ４０１の割り当て先８０３を取得し、未割り当てのメモリチップ４０１であるか否かを判定する。未割り当てのメモリチップ４０１である場合には、処理はステップ２００６に進む。一方、未割り当てのメモリチップ４０１でない場合には、処理はステップ２００５に進む。
【０１５２】
ステップ２００５では、判定サブプログラム６０３は、メモリ管理テーブル６１１からメモリチップ４０１の割り当て先８０３を取得し、仮想サーバ管理テーブル６１０から、全ての割り当て先８０３の仮想サーバ１４０のメモリアクセス情報７０４を取得する。そして、取得した全ての仮想サーバ１４０のメモリアクセス情報７０４が「Ｌｏｗ」であるか否かを判定する。取得した全ての仮想サーバ１４０のメモリアクセス情報７０４が「Ｌｏｗ」である場合には、処理はステップ２００６に進む。一方、取得した全ての仮想サーバ１４０のうち、一つでもメモリアクセス情報７０４が「Ｌｏｗ」である場合には、処理は終了する。
【０１５３】
ステップ２００６では、判定サブプログラム６０３は、電力制御サブプログラム６０５を呼び出し、メモリチップ４０１の状態８０４を省電力状態に変更するように指示する。なお、図２０に示す処理（メモリ状態変更判定１８０４）は、全てのメモリチップ４０１について実行される。
【０１５４】
図２１は、本発明の第１の実施の形態の変更指示サブプログラム６０４の処理のフローチャートである。
【０１５５】
まず、ステップ２１０１では、変更指示サブプログラム６０４は、変更する仮想サーバ１４０の識別子、現在の割り当て先のメモリアドレス領域、及び、変更先のメモリアドレス領域を引数として、マッピング変更サブプログラム３０３を呼び出す。なお、ステップ２１０１を実行した直後に、メモリ管理テーブル６１１にマッピングの変更中であることが分かる情報が付加されてもよい。
【０１５６】
次に、ステップ２１０２では、変更指示サブプログラム６０４は、メモリ管理テーブル６１１を、マッピングを変更した後の状態に更新する。
【０１５７】
図２２は、本発明の第１の実施の形態の電力制御サブプログラム６０５の処理のフローチャートである。
【０１５８】
まず、ステップ２２０１では、電力制御サブプログラム６０５は、状態を変更するメモリチップ４０１の識別子と、変更後の状態とを引数として、電力制御機構１３５を呼び出し、メモリチップ４０１の状態８０４を変更する。
【０１５９】
次に、ステップ２２０２では、電力制御サブプログラム６０５は、メモリ管理テーブル６１１のメモリ１３１の状態８０４を更新する。
【０１６０】
図２３は、本発明の第１の実施の形態の設定サブプログラム６０１の処理のフローチャートである。
【０１６１】
なお、設定サブプログラム６０１は、新たに仮想サーバ１４０を設定した場合、サーバ１０３のハードウェア構成及びソフトウェア構成を変更した場合、仮想サーバ１４０の構成を変更した場合、及び、ユーザが設定サブプログラム６０１を呼び出した場合に実行される。なお、ユーザが設定サブプログラム６０１を呼び出す手段は、電力管理プログラム１１０に備わる。
【０１６２】
ステップ２３０１では、設定サブプログラム６０１は、設定情報（仮想サーバ１４０の構成情報）を取得する。ここで、設定情報を取得する方法は、図１０に示したように、電力管理プログラム１１０によって提供されるＧＵＩを利用して、計算機システムの管理者が入力する方法がある。また、電力管理プログラム１１０によって提供されるコマンドラインを用いて、ユーザが入力する方法であってもよい。また、管理サーバ１０１に接続された記憶装置に保存されたファイルから設定情報を取得する方法であってもよい。また、ネットワークを経由して設定情報を取得する方法であってもよい。
【０１６３】
次に、ステップ２３０２では、設定サブプログラム６０１は、ステップ２３０１で取得した設定情報に基づいて、図９に示す仮想サーバ設定テーブル６１２を作成する。また、仮想サーバ管理テーブル６１０のメモリアクセス情報７０４には、仮想サーバ設定テーブル６１２の既定状態９０３が格納される。
【０１６４】
なお、仮想サーバ管理テーブル６１０のその他のカラム、及び、メモリ管理テーブル６１１は、図５に示すメモリマッピングテーブル３１０から情報を取得して、取得された情報が格納されてもよい。また、ＧＵＩ、ＣＬＩ、ファイル、及びネットワークを経由する方法等によって取得された情報が格納されてもよい。
【０１６５】
ステップ１８０３及びステップ１８０４は、図１８に示すステップ１８０３及び１８０４と同じであるため説明を省略する。
【０１６６】
＜実施形態２＞
本発明の第２の実施の形態は、第１の実施の形態の仮想化機構１５０が、仮想サーバ１４０のＣＰＵの利用状況を監視し、監視されたＣＰＵの利用状況を仮想サーバ１４０のメモリアクセス情報７０４に反映する例である。第２の実施の形態によって、仮想サーバ１４０のメモリアクセス情報７０４だけでなく、ＣＰＵの利用状況も考慮して、仮想サーバ１４０とメモリチップ４０１とのマッピングを制御するとともに、メモリチップ４０１の状態を制御することができる。
【０１６７】
図２４は、本発明の第２の実施の形態の仮想化機構１５０の構成を示している。第２の実施の形態は、仮想化機構１５０が、ＣＰＵ監視サブプログラム３０４を備える点で異なる。
【０１６８】
ＣＰＵ監視サブプログラム３０４は、仮想サーバ１４０のＣＰＵの利用状況を監視する。
【０１６９】
図２５は、本発明の第２の実施の形態の仮想サーバ管理テーブル６１０である。第２の実施の形態は、ＣＰＵ利用率７０５を含む点で異なる。
【０１７０】
ＣＰＵ利用率７０５は、仮想サーバ７０１が示す仮想サーバ１４０が利用するＣＰＵの利用率である。
【０１７１】
図２６は、本発明の第２の実施の形態のメモリアクセス監視サブプログラム３０２と、情報取得サブプログラム６０２と、ＣＰＵ監視サブプログラム３０４との処理のシーケンス図である。
【０１７２】
第２の実施の形態は、ＣＰＵ監視サブプログラム３０４のシーケンスが追加されている点と、ステップ２６０１、２６０２、２６０３及び２６０４が追加されている点で異なる。
【０１７３】
ステップ１７０１からステップ１７０５の処理は、図１７に示すステップ１７０１からステップ１７０５と同じであるため、説明を省略する。
【０１７４】
ステップ２６０１では、情報取得サブプログラム６０２は、ＣＰＵ監視サブプログラム３０４にＣＰＵの利用率を要求する。
【０１７５】
ステップ２６０２では、ＣＰＵ監視サブプログラム３０４は、ステップ２６０１で情報取得サブプログラム６０２からＣＰＵの利用率が要求された後に、ＣＰＵの利用率を情報取得サブプログラム６０２に通知する。なお、ＣＰＵ監視サブプログラム３０４は、仮想サーバ１４０のＣＰＵの利用率を監視し、監視されたＣＰＵの利用率の情報を保持する。
【０１７６】
ステップ２６０３では、情報取得サブプログラム６０２は、ＣＰＵ監視サブプログラム３０４からＣＰＵの利用率を取得する。
【０１７７】
ステップ２６０４では、情報取得サブプログラム６０２は、ステップ２６０３で取得したＣＰＵの利用率を仮想サーバ管理テーブル６１０のＣＰＵ利用率７０５に格納する。そして、処理はステップ１７０５に進む。
【０１７８】
図２７は、本発明の第２の実施の形態の判定サブプログラム６０３の処理のフローチャートである。
【０１７９】
第２の実施の形態は、ステップ２７０１、２７０２、２７０３、２７０４及び２７０５が追加されている点で異なる。
【０１８０】
ステップ２７０１では、判定サブプログラム６０３は、仮想サーバ管理テーブル６１０からメモリアクセス情報７０４及びＣＰＵ利用率７０５を取得する。
【０１８１】
ステップ２７０２では、判定サブプログラム６０３は、ステップ２７０１で取得したＣＰＵ利用率７０５が所定の閾値以上であるか否かを判定する。所定の閾値以上である場合には、処理はステップ２７０３に進む。一方、所定の閾値より小さい場合には、処理はステップ２７０４に進む。
【０１８２】
ステップ２７０３では、判定サブプログラム６０３は、ステップ２７０１で取得したメモリアクセス情報７０４を「Ｈｉｇｈ」であると判定する。なお、以降の処理でメモリアクセス情報７０４を利用する場合には、「Ｈｉｇｈ」の値が利用される。
【０１８３】
ステップ２７０４では、判定サブプログラム６０３は、ステップ２７０１で取得したＣＰＵ利用率７０５が所定の閾値以下であるか否かを判定する。所定の閾値以下である場合には、処理はステップ２７０５に進む。一方、所定の閾値より大きい場合には、処理はステップ１８０２に進む。
【０１８４】
ステップ２７０５では、判定サブプログラム６０３は、ステップ２７０１で取得したメモリアクセス情報７０４を「Ｌｏｗ」であると判定する。なお、以降の処理でメモリアクセス情報７０４を利用する場合には、「Ｌｏｗ」の値が利用される。
【０１８５】
なお、ステップ２７０２及びステップ２７０４で利用する閾値は、判定サブプログラム６０３にあらかじめ設定されている固定の値を利用する。また、ユーザが入力装置２０５を介して入力した値を利用してもよい。また、ステップ２７０２及びステップ２７０４で利用する閾値はそれぞれ異なってもよい。
【０１８６】
また、ステップ２７０３及びステップ２７０５では、ステップ２７０１で取得したメモリアクセス情報７０４が２値以上の値を持つ場合には、それぞれの値に応じてさらに「Ｈｉｇｈ」又は「Ｌｏｗ」と判定するステップを追加してもよい。例えば、メモリアクセス情報７０４が「Ｈｉｇｈ」より高い値として「Ｖｅｒｙ Ｈｉｇｈ」であった場合には、ステップ２７０５では、「Ｌｏｗ」でなく「Ｈｉｇｈ」と判定するようにしてもよい。このように、ＣＰＵの利用率とメモリアクセス頻度との関係に応じて、ステップ２７０３及びステップ２７０５で利用するメモリアクセス情報７０４を補正する方法が判定されてもよい。
【０１８７】
ステップ１８０２からステップ１８０４は、図１８に示すステップ１８０２からステップ１８０４と同じであるため、説明を省略する。
【０１８８】
＜実施形態３＞
本発明の第３の実施の形態は、第１の実施の形態の仮想化機構１５０が、スワッピングを行い、仮想サーバ１４０が利用するメモリ領域をメモリ１３１上だけでなく、補助記憶装置１３３にもメモリ領域の配置を可能にする例である。第２の実施の形態によって、仮想サーバ１４０からアクセスする頻度の低いメモリ領域をメモリ上に配置せず補助記憶装置に配置し、メモリの利用容量を節約することができる。
【０１８９】
図２８は、本発明の第３の実施の形態の仮想化機構１５０の構成を示している。第３の実施の形態は、仮想化機構１５０がスワッピングサブプログラム３０５を備える点で異なる。
【０１９０】
スワッピングサブプログラム３０５は、仮想サーバ１４０が利用するメモリ領域をメモリ１３１と補助記憶装置１３３との間でスワップイン及びスワップアウトする。
【０１９１】
ここで、スワップインとは、補助記憶装置１３３に確保されているメモリ領域と同じ領域をメモリ１３１に確保し、補助記憶装置１３３に確保されているメモリ領域に書き込まれているデータと同じデータを、メモリ１３１に確保したメモリ領域に書き込み、補助記憶装置１３３のメモリ領域を開放することである。
【０１９２】
また、スワップアウトとは、メモリ１３１に確保されているメモリ領域と同じ領域を補助記憶装置１３３に確保し、メモリ１３１に確保されているメモリ領域に書き込まれているデータと同じデータを、補助記憶装置１３３に確保したメモリ領域に書き込み、メモリ１３１のメモリ領域を開放することである。
【０１９３】
図２９は、本発明の第３の実施の形態のマッピング変更判定１８０３の処理のフローチャートである。第３の実施の形態は、ステップ２９０１が追加されている点で異なる。
【０１９４】
ステップ２９０１では、各仮想サーバ１４０が利用するメモリ領域について、メモリ領域の一部又は全部を補助記憶装置１３３にスワップイン及びスワップアウトを行うか否かを判定し、スワップイン及びスワップアウトを行う必要があれば実施する。スワッピング判定の処理については、図３０を用いて詳細に後述する。
【０１９５】
図３０は、本発明の第３の実施の形態のスワッピング判定２９０１の処理のフローチャートである。
【０１９６】
まず、ステップ３００１では、判定サブプログラム６０３は、仮想サーバ１４０の仮想サーバ管理テーブル６１０のメモリアクセス情報７０４を取得し、取得したメモリアクセス情報７０４が「Ｌｏｗ」であるか否かを判定する。メモリアクセス情報７０４が「Ｌｏｗ」である場合には、処理はステップ３００２に進む。一方、メモリアクセス情報７０４が「Ｌｏｗ」でない場合には、ステップ３００４に進む。
【０１９７】
次に、ステップ３００２では、判定サブプログラム６０３は、仮想サーバ１４０のメモリアクセス情報７０４が「Ｌｏｗ」である時間を保持し、所定の時間以上「Ｌｏｗ」の状態が続くか否かを判定する。所定の時間以上「Ｌｏｗ」の状態が続く場合には、処理はステップ３００３進む。一方、所定の時間「Ｌｏｗ」でない場合には、処理は終了する。
【０１９８】
次に、ステップ３００３では、判定サブプログラム６０３は、スワッピングサブプログラム３０５に、仮想サーバ１４０が利用する一部又は全部のメモリ領域をスワップアウトするように指示する。ここで、メモリ領域の一部をスワップアウトするとは、例えば、仮想サーバ１４０のＯＳ領域だけをメモリ１３１上に残し、仮想サーバ１４０のユーザ領域をスワップアウトすることである。なお、スワップアウトされた情報が記憶される補助記憶装置１３３が不揮発性のデバイスである場合には、補助記憶装置１３３の電力供給を停止してもよい。
【０１９９】
ステップ３００４では、判定サブプログラム６０３は、仮想サーバ１４０が利用する一部又は全部のメモリ領域がメモリ上にあるか否かを判定する。メモリ領域がメモリ上にある場合には、処理は終了する。一方、メモリ領域がメモリ１３１上にない場合には、処理はステップ３００５に進む。
【０２００】
ステップ３００５では、判定サブプログラム６０３は、スワッピングサブプログラム３０５に、補助記憶装置１３３に配置されているメモリ領域をスワップインするように指示する。なお、スワッピング判定２９０１の処理は、全ての仮想サーバ１４０を対象として行われる。
【０２０１】
＜実施形態４＞
本発明の第４の実施の形態は、第１の実施の形態の仮想化機構１５０が、仮想サーバ１４０間で利用しているメモリを融通し、サーバ１０３に搭載するメモリの利用容量以上の領域を仮想サーバ１４０に割り当てることを可能にする例である。第４の実施の形態によって、仮想サーバ１４０のメモリ１３１の割り当てを変更する場合に、変更先のメモリチップ４０１の容量が不足していても、メモリ１３１の割り当てを変更することができる。
【０２０２】
図３１は、本発明の第４の実施の形態の仮想化機構１５０の構成を示している。第４の実施の形態は、仮想化機構１５０がメモリ融通サブプログラム３０６を備える点で異なる。
【０２０３】
メモリ融通サブプログラム３０６は、第一の仮想サーバ１４０が利用するメモリの一部を、第一の仮想サーバ１４０のＯＳ及びアプリケーションに影響を与えずに、第二の仮想サーバ１４０に融通する。
【０２０４】
メモリの一部を融通する方法としては、例えば、第一の仮想サーバ１４０上のＯＳに特殊ドライバを備え、特殊ドライバがＯＳ領域のメモリを確保することによって、確保したメモリの領域をＯＳが使用中とみなす方法がある。そして、特殊ドライバが確保したメモリの領域を第二の仮想サーバに融通することができる。
【０２０５】
なお、メモリ融通サブプログラム３０６は、第１の実施の形態の図１９に示すステップ１９０１で、メモリチップ４０１の容量が不足したときにメモリを融通するときに呼び出される。また、メモリ融通サブプログラム３０６は、メモリチップ４０１の容量に余裕が出た場合には、メモリの融通を解除するために呼び出される。
【０２０６】
また、メモリの融通と同等の効果を得る別の方法として、第３の実施の形態の図２８に示すスワッピングサブプログラム３０５を利用して、第一の仮想サーバ１４０のメモリ領域をメモリ上から補助記憶装置１３３にスワップアウトし、第二の仮想サーバ１４０にメモリ領域を融通する方法がある。
【０２０７】
＜実施形態５＞
本発明の第５の実施の形態は、メモリチップ４０１が通常状態で稼動する時間を、一部又は全てのメモリチップ４０１で平準化する例である。第５の実施の形態によって、頻繁に利用されるメモリチップ４０１が一部のメモリチップ４０１に集中することを避けるため、故障率を低減することができる。
【０２０８】
図３２は、本発明の第５の実施の形態のメモリ管理テーブル６１１である。第５の実施の形態は、通常稼働時間８０５が追加されている点で異なる。
【０２０９】
通常稼働時間８０５は、メモリチップ８０１が示すメモリチップ４０１が、通常状態で稼動した時間の合計である。例えば、通常状態で３００時間稼動した場合には、「３００ｈｏｕｒ」が格納される。
【０２１０】
第５の実施の形態では、第１の実施の形態の図１９に示すステップ１９０１で、図３２に示すメモリ管理テーブル６１１の通常稼動時間８０５を参照し、できる限り各メモリチップ４０１の通常稼働時間８０５が平準化される条件に基づいて、レイアウトを決定する。
【０２１１】
＜実施形態６＞
本発明の第６の実施の形態では、仮想サーバ１４０の単位だけでなく、仮想サーバ１４０上のＯＳ及びプロセスの単位でメモリの割り当てを変更する例である。第６の実施の形態によって、仮想サーバ１４０の単位よりもさらに細かい粒度でメモリの割り当てを制御することができる。
【０２１２】
図３３は、本発明の第６の実施の形態のメモリマッピングテーブル３１０である。第６の実施の形態は、プロセス５０５が追加されている点で異なる。
【０２１３】
プロセス５０５は、割り当て先５０３の仮想サーバ１４０上で稼動するＯＳ及びプロセスの識別子である。なお、プロセス５０５の情報は、ユーザが入力装置２０５を介して入力される。また、仮想サーバ１４０上のＯＳに保持されているプロセステーブルから取得してもよい。また、その他の手段を利用してプロセス５０５の情報が取得されてもよい。
【０２１４】
したがって、第６の実施の形態では、他の実施の形態における「仮想サーバ」を「プロセス」として取り扱うことができる。なお、メモリマッピングテーブル３１０にＯＳ及びプロセスの情報を保持せずに、電力制御プログラム１１０が同等の情報を保持してもよい。
【０２１５】
＜実施形態７＞
本発明の第７の実施の形態は、第１の実施の形態の仮想化機構１５０が、仮想サーバ１４０が利用するメモリ領域を複数のメモリチップ４０１に書き込むことによって冗長化を行うとともに、複数のメモリチップ４０１をそれぞれ異なる消費電力状態で稼動することができる例である。第７の実施の形態によって、メモリチップ４０１を冗長化した時に、全てのメモリチップ４０１を高い消費電力状態で稼動させる必要がなく、一部のメモリチップ４０１を省電力化することができる。
【０２１６】
図３４は、本発明の第７の実施の形態の仮想化機構１５０の構成を示している。第７の実施の形態は、冗長化サブプログラム３０７を備える点で異なる。
【０２１７】
冗長化サブプログラム３０７は、仮想サーバ１４０が利用するメモリ領域を複数のメモリチップ４０１に書き込む。また、冗長化サブプログラム３０７は、ある仮想サーバ１４０のメモリへの書き込みについて、冗長化する第一及び第二のメモリチップ４０１に同時にメモリ領域を書き込むとともに、一方のメモリチップ４０１への書き込みに遅延が発生した場合には、残りの書き込みを第三のメモリチップ４０１に一時的に書き込む。したがって、第一及び第二のメモリチップ４０１は、メモリチップ４０１の状態を通常状態と省電力状態とで混在させることができる。
【０２１８】
図３５は、本発明の第７の実施の形態のメモリマッピングテーブル３１０である。
【０２１９】
第７の実施の形態は、冗長化されている仮想サーバ１４０、及び、バッファとなる仮想サーバ１４０であることを示す情報が、割り当て先５０３に付加されている点で異なる。
【０２２０】
例えば、メモリマッピングテーブル３１０の第１行及び第１２行の割り当て先５０３の値には、冗長化されている仮想サーバ１４０であることを示す「仮想サーバ１ （冗長化）」が格納されている。また、メモリマッピングテーブル３１０の第６行の割り当て先５０３には、第三のメモリチップ４０１の領域であることを示す「仮想サーバ１ （バッファ）」が格納されている。
【０２２１】
図３６は、本発明の第７の実施の形態のメモリ管理テーブル６１１である。
【０２２２】
第７の実施の形態は、冗長化されている仮想サーバ１４０、及び、バッファとなる仮想サーバ１４０であることを示す情報が、割り当て先８０３に付加されている点で異なる。
【０２２３】
例えば、メモリ管理テーブル６１１の第１行および第６行の割り当て先８０３には、冗長化されている仮想サーバ１４０であることを示す「１（冗）」が格納されている。また、メモリ管理テーブル６１１の第３行の割り当て先８０３には、第三のメモリチップ４０１の領域であることを示す「１（バ）」が格納されている。
【０２２４】
第７の実施の形態では、第一のメモリチップ４０１及び第二のメモリチップ４０１は、それぞれメモリの状態８０４が異なる。したがって、一方のメモリチップ４０１を省電力化することができる。なお、第三のメモリチップ４０１は、通常状態で稼動しなければならない。
【０２２５】
＜実施形態８＞
本発明の第８の実施の形態は、電力管理プログラム１１０がサーバ１０３の消費電力を監視し、サーバ１０３の消費電力が目標値以下になるように制御する例である。第８の実施の形態によって、サーバ１０３の消費電力を保障することができる。
【０２２６】
図３７は、第１の実施の形態の図６に示す設定サブプログラム６０１において、ユーザが設定する消費電力の目標値を取得するために、電力管理プログラム１１０によって提供されるＧＵＩの例を示す。
【０２２７】
図３７に示すＧＵＩは、図２に示される表示装置２０６又はネットワークを経由した他の表示装置に、ブラウザ及び専用のプログラムのいずれかを用いてサーバ１０３の消費電力の目標値を表示する。
【０２２８】
ウインドウ３７０１は、ブラウザ又は専用プログラムのウインドウを示す。ウインドウ３７０１には、現状の消費電力の値が表示（３７１０）される。また、グラフとして消費電力の値の履歴も表示される（３７１１及び３７１２）。
【０２２９】
ユーザは、消費電力の目標値を設定する枠（３７１４）に、目標とする電力を入力する。そして、入力された値は、グラフに反映される（３７１３）。
【０２３０】
入力が完了すると、設定ボタン３７１５をマウス等で操作することによって設定を完了する。これらの入力された情報は、電力管理プログラム１１０によって保持される。
【０２３１】
また、設定をキャンセルする場合には、キャンセルボタン１０２１をマウス等で操作する。なお、ＧＵＩは、前述した一部の情報を必ずしも入力できるようにする必要はない。また、同等の情報を入力できるものであれば、図３７に示されるＧＵＩの形式に限定されるものではない。
【０２３２】
第８の実施の形態では、第１の実施の形態に示すメモリ状態制御判定１８０４の処理において、サーバ１０３の消費電力が図３７に示すＧＵＩによって設定された目標値より大きい場合、図２０に示すステップ２００５で、メモリアクセス情報７０４の値にかかわらずステップ２００６に進み、サーバ１０３の消費電力が図３７に示すＧＵＩによって設定された目標値より小さくなるようにメモリ１３１の状態を省電力状態に変更する。
【０２３３】
特許請求の範囲に記載した以外の本発明の観点の代表的なものとして、次のものがあげられる。
【０２３４】
（１）一つ以上の業務サーバと、前記業務サーバを管理する管理サーバと、前記業務サーバと前記管理サーバとを接続するネットワークと、を備える計算機システムで実行されるメモリの消費電力を制御する方法であって、前記業務サーバは、メモリの消費電力を制御できる単位である一つ以上のメモリチップと、前記メモリチップの消費電力を省電力状態と通常状態とに切り替える制御をする電力制御機構と、一つ以上の仮想サーバを稼動させる仮想化機構と、を備え、前記仮想化機構は、前記仮想サーバと前記メモリチップとの割り当て関係を管理するメモリマッピング部を備え、前記管理サーバは、前記仮想サーバと前記メモリチップとの割り当て関係を保持し、前記方法は、前記管理サーバが、前記仮想サーバのメモリチップへのアクセス情報を取得する情報取得ステップと、前記管理サーバが、前記取得したアクセス情報が所定の目標性能を達成できるか否か、及び、前記仮想サーバと前記メモリチップとの割り当て関係に基づいて、前記メモリチップの消費電力を変更するよう前記業務サーバに指示するステップと、前記業務サーバが、前記管理サーバからの指示に基づいて前記メモリチップの消費電力を変更する電力制御ステップと、を含むことを特徴とする電力制御方法。
【０２３５】
（２）前記アクセス情報は、前記メモリチップの消費電力状態を前記省電力状態にした場合に、前記メモリの性能が不足することを示す第１の値、及び、前記メモリの性能が不足しないことを示す第２の値のいずれかを含み、前記電力制御ステップでは、前記メモリチップに割り当てられた前記各仮想サーバのアクセス情報が一つでも前記第１の値である場合には、前記メモリチップの消費電力状態を前記通常状態に変更し、前記メモリチップに割り当てられた前記各仮想サーバのアクセス情報の全てが前記第２の値である場合には、前記メモリチップの消費電力状態を前記省電力状態に変更することを特徴とする（１）に記載の電力制御方法。
【０２３６】
（３）前記管理サーバは、前記仮想サーバの前記メモリチップへのアクセス情報を設定する設定インタフェイスを備え、前記情報取得ステップでは、前記設定インタフェイスを使用し、前記アクセス情報の既定値を取得することを特徴とする（１）に記載の電力制御方法。
【０２３７】
（４）前記仮想化機構は、前記アクセス情報を監視するメモリアクセス監視部を備え、前記情報取得ステップでは、前記メモリアクセス監視部から前記アクセス情報を取得することを特徴とする（１）に記載の電力制御方法。
【０２３８】
（５）前記仮想化機構は、前記仮想サーバと前記メモリチップとの割り当て関係を変更するマッピング変更部を備え、前記方法は、さらに、前記管理サーバが、前記取得したアクセス情報に基づいて、前記仮想サーバと前記メモリチップとの割り当て関係を決定する判定ステップと、前記管理サーバが、前記仮想サーバと前記メモリチップとの割り当て関係を、前記決定した割り当て関係に変更する変更指示ステップと、を含むことを特徴とする（４）に記載の電力制御方法。
【０２３９】
（６）前記アクセス情報は、前記メモリチップの消費電力状態を省電力状態にした場合に、前記メモリの性能が不足することを示す第１の値、及び、前記メモリの性能が不足しないことを示す第２の値のいずれかを含み、前記判定ステップでは、前記アクセス情報が同一の値である前記仮想サーバが、同一のメモリチップに割り当てられるように、前記仮想サーバと前記メモリチップとの割り当て関係を決定することを特徴とする（５）に記載の電力制御方法。
【０２４０】
（７）前記仮想化機構は、前記仮想サーバのプロセッサ利用率を監視するプロセッサ監視部を備え、前記情報取得ステップでは、前記プロセッサ監視部から前記仮想サーバのプロセッサ利用率を取得し、前記判定ステップでは、前記取得したプロセッサ利用率が所定の閾値以上の場合に、前記所定の目標性能を可能な値に前記アクセス情報を補正することを特徴とする（５）に記載の電力制御方法。
【０２４１】
（８）前記業務サーバは、一つ以上の補助記憶装置を備え、前記仮想化機構は、前記メモリチップから前記補助記憶装置に前記仮想サーバが利用するメモリの領域を移動するスワッピング部を備え、前記方法は、さらに、前記管理サーバが、前記アクセス情報が所定の割り当て性能を達成できるか否か、及び、前記仮想サーバとメモリチップとの割り当て関係に基づいて、前記メモリの性能が不足する状態が所定の時間継続したか否かを判定するステップと、前記業務サーバが、前記判定結果に従って、前記メモリの領域の一部又は全部を、前記スワッピング部によって前記補助記憶装置に移動するステップと、を含むことを特徴とする（５）に記載の電力制御方法。
【０２４２】
（９）前記仮想サーバは、第１の仮想サーバ及び第２の仮想サーバを含み、前記仮想化機構は、前記第１の仮想サーバが利用するメモリの領域を前記第２の仮想サーバが利用するメモリの領域に割り当てるメモリ融通部を備え、前記判定ステップでは、前記第１の仮想サーバと前記第２の仮想サーバとが同一のメモリチップに割り当てられることによって、前記業務サーバに割り当てられるメモリの領域が、当該メモリチップの容量を超える場合には、前記メモリ融通部によって、第１の仮想サーバに割り当てられたメモリの領域を第２の仮想サーバに割り当てるように、前記仮想サーバと前記メモリチップとの割り当て関係を決定することを特徴とする（５）に記載の電力制御方法。
【０２４３】
（１０）前記管理サーバは、前記各メモリチップが前記通常状態で稼動している時間を記録し、前記判定ステップでは、前記各メモリチップが通常状態で稼動している時間に基づいて、各メモリチップが前記通常状態で稼動している時間が平準化されるように、前記仮想サーバと前記メモリチップとの割り当て関係を決定することを特徴とする（５）に記載の電力制御方法。
【０２４４】
（１１）前記方法は、さらに、前記仮想サーバで実行されるプロセスとメモリチップとの割り当て関係を取得するステップを含み、前記管理サーバは、前記取得した仮想サーバで実行されるプロセスとメモリチップとの割り当て関係を保持し、前記判定ステップでは、前記取得したアクセス情報に基づいて、前記プロセスと前記メモリチップとの割り当て関係を決定し、前記変更指示ステップでは、前記プロセスと前記メモリチップとの割り当て関係を、前記決定した割り当て関係に変更することを特徴とする（５）に記載の電力制御方法。
【０２４５】
（１２）前記メモリチップは、第１のメモリチップ及び第２のメモリチップを含み、前記仮想化機構は、前記仮想サーバが利用するメモリの領域であって、同じデータが書き込まれるメモリの領域を第１のメモリチップと第２のメモリチップとの双方に割り当てる冗長化部を備え、前記電力制御ステップでは、前記第１のメモリチップの消費電力状態を前記通常状態に変更し、第２のメモリチップの消費電力状態を省電力状態に変更することを特徴とする（５）に記載の電力制御方法。
【０２４６】
（１３）前記方法は、さらに、前記管理サーバが、消費電力の目標値を取得する目標値取得ステップを含み、前記電力制御ステップでは、前記取得された消費電力の目標値を満たすように前記メモリチップの消費電力状態を変更することを特徴とする（５）に記載の電力制御方法。
【０２４７】
（１４）一つ以上の業務サーバと、前記業務サーバを管理する管理サーバと、前記業務サーバと前記管理サーバとを接続するネットワークと、を備える計算機システムであって、前記業務サーバは、メモリの消費電力を制御できる単位である一つ以上のメモリチップと、前記メモリチップの消費電力を省電力状態と通常状態とに切り替える制御をする電力制御機構と、一つ以上の仮想サーバを稼動させる仮想化機構と、を備え、前記仮想化機構は、前記仮想サーバと前記メモリチップとの割り当て関係を管理するメモリマッピング部を備え、
前記管理サーバは、
前記仮想サーバの前記メモリチップへのアクセス情報を設定する設定インタフェイスを備え、
前記仮想サーバと前記メモリチップとの割り当て関係を保持し、
前記メモリチップの消費電力状態を省電力状態にした場合に、前記メモリの性能が不足することを示す第１の値、及び、前記メモリの性能が不足しないことを示す第２の値のいずれかを含むアクセス情報を前記設定インタフェイスによって取得し、
前記取得したアクセス情報に基づいて、前記メモリチップに割り当てられた前記各仮想サーバのアクセス情報が一つでも前記第１の値である場合には、前記メモリチップの消費電力状態を通常状態に変更するよう前記業務サーバに指示し、前記メモリチップに割り当てられた前記各仮想サーバのアクセス情報の全てが前記第２の値である場合には、前記メモリチップの消費電力状態を省電力状態に変更するよう前記業務サーバに指示し、前記業務サーバは、前記管理サーバからの指示に基づいて前記メモリチップの消費電力を変更することを特徴とする計算機システム。
【０２４８】
（１５）一つ以上の業務サーバと、前記業務サーバを管理する管理サーバと、前記業務サーバと前記管理サーバとを接続するネットワークと、を備える計算機システムに備わる前記業務サーバのメモリの消費電力を制御するプログラムであって、前記管理サーバは、ネットワークに接続されるインタフェイスと、前記インタフェイスに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、前記業務サーバは、メモリの消費電力を制御できる単位である一つ以上のメモリチップと、前記メモリチップの消費電力を省電力状態と通常状態とに切り替える制御をする電力制御機構と、一つ以上の仮想サーバを稼動させる仮想化機構と、を備え、前記仮想化機構は、前記仮想サーバと前記メモリチップとの割り当て関係を管理するメモリマッピング部を備え、前記メモリは、前記仮想サーバと前記メモリチップとの割り当て関係を保持し、前記プログラムは、前記メモリチップの消費電力状態を省電力状態にした場合に、前記メモリの性能が不足することを示す第１の値、及び、前記メモリの性能が不足しないことを示す第２の値のいずれかを含むアクセス情報を取得し、前記メモリチップに割り当てられた前記各仮想サーバのアクセス情報が一つでも前記第１の値である場合には、前記メモリチップの消費電力状態を通常状態に変更するよう前記業務サーバに指示し、前記メモリチップに割り当てられた前記各仮想サーバのアクセス情報の全てが前記第２の値である場合には、前記メモリチップの消費電力状態を省電力状態に変更するよう前記業務サーバに指示する処理を前記管理サーバのプロセッサに実行させるプログラム。
【符号の説明】
【０２４９】
１０１  管理サーバ
１０２  ネットワーク１
１０３  サーバ
１１０  電力管理プログラム
１１１  テーブル群
１３１  メモリ
１３２  ＣＰＵ
１３３  補助記憶装置
１３４  Ｉ／Ｏデバイス
１３５  電力制御機構
１４０  仮想サーバ
１５０  仮想化機構
【図１】
0005382471.tif 000002
【図２】
0005382471.tif 000003
【図３】
0005382471.tif 000004
【図４】
0005382471.tif 000005
【図５】
0005382471.tif 000006
【図６】
0005382471.tif 000007
【図７】
0005382471.tif 000008
【図８】
0005382471.tif 000009
【図９】
0005382471.tif 000010
【図１０】
0005382471.tif 000011
【図１１】
0005382471.tif 000012
【図１２】
0005382471.tif 000013
【図１３】
0005382471.tif 000014
【図１４】
0005382471.tif 000015
【図１５】
0005382471.tif 000016
【図１６】
0005382471.tif 000017
【図１７】
0005382471.tif 000018
【図１８】
0005382471.tif 000019
【図１９】
0005382471.tif 000020
【図２０】
0005382471.tif 000021
【図２１】
0005382471.tif 000022
【図２２】
0005382471.tif 000023
【図２３】
0005382471.tif 000024
【図２４】
0005382471.tif 000025
【図２５】
0005382471.tif 000026
【図２６】
0005382471.tif 000027
【図２７】
0005382471.tif 000028
【図２８】
0005382471.tif 000029
【図２９】
0005382471.tif 000030
【図３０】
0005382471.tif 000031
【図３１】
0005382471.tif 000032
【図３２】
0005382471.tif 000033
【図３３】
0005382471.tif 000034
【図３４】
0005382471.tif 000035
【図３５】
0005382471.tif 000036
【図３６】
0005382471.tif 000037
【図３７】
0005382471.tif 000038