(57)【特許請求の範囲】
【請求項１】
ハイパバイザにより１以上のＣＰＵおよび２以上のメモリモジュールから成る物理計算機を複数の仮想計算機に分割し、各仮想計算機に前記ＣＰＵおよび前記メモリモジュールのメモリ領域を割当てて動作させる仮想計算機システムの制御方法において、
前記ハイパバイザにより、
前記メモリモジュールのメモリ障害を検知した仮想計算機を停止させるステップと、
前記メモリモジュールのアドレスであるホスト物理アドレス、前記仮想計算機の論理メモリモジュールのアドレスであるゲスト物理アドレス及び前記仮想計算機の対応を前記メモリモジュールのエントリ毎に管理するメモリ管理情報を用いて、前記仮想計算機が使用していたメモリ障害が検知されたメモリモジュールと同じメモリモジュールを使用している他の仮想計算機を検知するステップと、
前記他の仮想計算機が使用していた前記メモリ障害が検知されたメモリモジュールと同じメモリモジュールのメモリ領域に記憶されている第一の情報を、前記メモリモジュールとは異なるメモリモジュールのメモリ領域に移動させるステップと、
前記メモリ障害の検知により停止させた仮想計算機に割当てられていたメモリモジュールのメモリ領域に記憶されている第二の情報を、前記メモリモジュールとは異なるメモリモジュールのメモリ領域に移動させるステップと、
前記メモリ管理情報において、前記第一の情報の移動後のメモリ領域に含まれるエントリのゲスト物理アドレスを、前記他の仮想計算機が使用していたメモリモジュールのメモリ領域に含まれるエントリのゲスト物理アドレスに置き換え、前記第二の情報の移動後のメモリ領域に含まれるエントリのゲスト物理アドレスを、前記停止させた仮想計算機に割当てられていたメモリモジュールのメモリ領域に含まれるエントリのゲスト物理アドレスに置き換えるステップと、
前記ゲスト物理アドレスを前記ホスト物理アドレスに変換するためのベースアドレスを管理するアドレス変換情報において、前記ホスト物理アドレスと前記置き換えたゲスト物理アドレスとに基づき新たなベースアドレスに更新するステップと、
前記停止させた仮想計算機を再稼動させるステップとが実行され、
前記再稼動した仮想計算機上で動作するゲストOSにより、
前記更新したアドレス変換情報を用いて、前記ゲスト物理アドレスから前記ホスト物理アドレスにアクセスするステップが実行される
ことを特徴とする仮想計算機システムの制御方法。
【請求項２】
前記ハイパバイザは、
各仮想計算機に割当てた前記ＣＰＵと各仮想計算機に割当てた前記メモリモジュールとの配置関係を検知するステップと、
仮想計算機に割当てられたメモリモジュールが前記仮想計算機に割当てられたＣＰＵにとってリモートメモリとなる仮想計算機を停止させるステップと、
前記停止させた仮想計算機に割当てられていたメモリモジュールのメモリ領域に記憶されている情報を、前記停止させた仮想計算機に割当てられたＣＰＵにとってローカルメモリとなるメモリモジュールのメモリ領域に移動させるステップと、
前記停止させた仮想計算機に前記情報の移動後のメモリモジュールのメモリ領域を割当てるステップと、
前記停止させた仮想計算機を再稼動させるステップとを実行することを特徴とする請求項１記載の仮想計算機システムの制御方法。
【請求項３】
前記ハイパバイザは、
所定の仮想計算機にＣＰＵを占有させるステップと、
各仮想計算機に割当てた前記ＣＰＵと各仮想計算機に割当てた前記メモリモジュールとの配置関係を検知するステップと、
前記ＣＰＵを占有させた仮想計算機を停止させるステップと、
前記停止させた仮想計算機に割当てられていたメモリモジュールのメモリ領域に記憶されている情報を、前記仮想計算機に占有させたＣＰＵにとってローカルメモリとなるメモリモジュールのメモリ領域に移動させるステップと、
前記停止させた仮想計算機に前記情報の移動後のメモリモジュールのメモリ領域を割当てるステップと、
前記停止させた仮想計算機を再稼動させるステップとを実行することを特徴とする請求項１記載の仮想計算機システムの制御方法。
【請求項４】
ハイパバイザにより１以上のＣＰＵおよび２以上のメモリモジュールから成る物理計算機を複数の仮想計算機に分割し、各仮想計算機に前記ＣＰＵおよび前記メモリモジュールのメモリ領域を割当てて制御する仮想計算機システムにおいて、
前記ハイパバイザは、
前記メモリモジュールのメモリ障害を検知した仮想計算機を停止し、
前記メモリモジュールのアドレスであるホスト物理アドレス、前記仮想計算機の論理メモリモジュールのアドレスであるゲスト物理アドレス及び前記仮想計算機の対応を前記メモリモジュールのエントリ毎に管理するメモリ管理情報を用いて、前記仮想計算機が使用していたメモリ障害が検知されたメモリモジュールと同じメモリモジュールを使用している他の仮想計算機を検知し、
前記他の仮想計算機が使用していた前記メモリ障害が検知されたメモリモジュールと同じメモリモジュールのメモリ領域に記憶されている第一の情報を、前記メモリモジュールとは異なるメモリモジュールのメモリ領域に移動し、
前記メモリ障害の検知により停止させた仮想計算機に割当てられていたメモリモジュールのメモリ領域に記憶されている第二の情報を、前記メモリモジュールとは異なるメモリモジュールのメモリ領域に移動し、
前記メモリ管理情報において、前記第一の情報の移動後のメモリ領域に含まれるエントリのゲスト物理アドレスを、前記他の仮想計算機が使用していたメモリモジュールのメモリ領域に含まれるエントリのゲスト物理アドレスに置き換え、前記第二の情報の移動後のメモリ領域に含まれるエントリのゲスト物理アドレスを、前記停止させた仮想計算機に割当てられていたメモリモジュールのメモリ領域に含まれるエントリのゲスト物理アドレスに置き換え、
前記ゲスト物理アドレスを前記ホスト物理アドレスに変換するためのベースアドレスを管理するアドレス変換情報において、前記ホスト物理アドレスと前記置き換えたゲスト物理アドレスとに基づき新たなベースアドレスに更新し、
前記停止させた仮想計算機を再稼動させ、
前記再稼動した仮想計算機上で動作するゲストOSは、
前記更新したアドレス変換情報を用いて、前記ゲスト物理アドレスから前記ホスト物理アドレスにアクセスする
ことを特徴とする仮想計算機システム。
【請求項５】
前記ハイパバイザは、
各仮想計算機に割当てた前記ＣＰＵと各仮想計算機に割当てた前記メモリモジュールとの配置関係を検知し、
仮想計算機に割当てられたメモリモジュールが前記仮想計算機に割当てられたＣＰＵにとってリモートメモリとなる仮想計算機を停止し、
前記停止させた仮想計算機に割当てられていたメモリモジュールのメモリ領域に記憶されている情報を、前記停止させた仮想計算機に割当てられたＣＰＵにとってローカルメモリとなるメモリモジュールのメモリ領域に移動し、
前記停止させた仮想計算機に前記情報の移動後のメモリモジュールのメモリ領域を割当て、
前記停止させた仮想計算機を再稼動させることを特徴とする請求項４記載の仮想計算機システム。
【請求項６】
前記ハイパバイザは、
所定の仮想計算機にＣＰＵを占有させ、
各仮想計算機に割当てた前記ＣＰＵと各仮想計算機に割当てた前記メモリモジュールとの配置関係を検知し、
前記ＣＰＵを占有させた仮想計算機を停止し、
前記停止させた仮想計算機に割当てられていたメモリモジュールのメモリ領域に記憶されている情報を、前記仮想計算機に占有させたＣＰＵにとってローカルメモリとなるメモリモジュールのメモリ領域に移動し、
前記停止させた仮想計算機に前記情報の移動後のメモリモジュールのメモリ領域を割当て、
前記停止させた仮想計算機を再稼動させることを特徴とする請求項４記載の仮想計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は仮想計算機システムにおいて、１台の物理計算機上に複数台動作させる仮想計算機であるLPAR(Logical  Partitioning)の占有物理メモリ領域のメモリ移動方式に関する。
【背景技術】
【０００２】
仮想計算機システムは、ハイパバイザにより物理計算機を複数のLPARに分割し、各LPARに対して計算機資源（ＣＰＵ、主記憶、Ｉ／Ｏ）を割当て、各LPAR上でそれぞれOSを動作させるものである。各LPAR上で動作するOSのことを、ハイパバイザという制御プログラムの上で動作するOSであることを表現するためゲストOSと呼ぶ。
【０００３】
ゲストOSは論理的には一般のOSとまったく同様に動作するため、割当てた主記憶もゲストOSには通常のメモリのように０番地から連続したアドレスを提供する必要がある。そのため、主記憶のアドレスはゲスト物理アドレスとホスト物理アドレスに区別され、LPAR上ではゲスト物理アドレスからホスト物理アドレスへの変換が行われることで、ゲストOSは通常に動作する。
【０００４】
【特許文献１】特許公開平５−２０４７６０
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ひとつのDIMM（Dual Inline Memory Module）を複数LPARが共有していることから、あるLPARでメモリ障害を検出して停止した場合、他LPARでの当該DIMMの使用を制御していないため、その後も使用し続けることにより、共有している全LPARが障害となる可能性があった。
【０００６】
また、複数サーバで構成されるNUMA（Non-Uniform Memory Access）構成やSMP（Symmetric Multi Processing）構成では、ひとつのLPARが使用するメモリ領域が複数サーバのDIMMに分散されることがあり、CPUのメモリアクセスにおいて性能を低下させていた。
【課題を解決するための手段】
【０００７】
上記課題を解決する為、本発明では、ハイパバイザにより１以上のＣＰＵおよび２以上のメモリモジュールから成る物理計算機を複数の仮想計算機に分割し、各仮想計算機に前記ＣＰＵおよび前記メモリモジュールのメモリ領域を割当てて動作させる仮想計算機システムの制御方法において、前記ハイパバイザは制御対象の仮想計算機を停止させるステップと、前記停止させた仮想計算機に割当てられていたメモリモジュールのメモリ領域に記憶されている情報を、該メモリモジュールとは異なるメモリモジュールのメモリ領域に移動させるステップと、前記停止させた仮想計算機に前記情報の移動後のメモリモジュールのメモリ領域を割当てるステップと、前記停止させた仮想計算機を再稼動させるステップとを有することを特徴とする仮想計算機システムの制御方法を実現する。  
【発明の効果】
【０００８】
本発明により、LPARをディアクティベイトすることなくメモリフラグメンテーションを回避することができる。また、NUMA構成やSMP構成において複数サーバにおいて分散されていたLPARのメモリ領域をひとつのサーバに収めることができ、メモリアクセスの性能を改善することができる。さらに、メモリ障害が発生したDIMMを使用していた場合、他のDIMMに移動させることが可能となり、障害拡大の防止が可能となる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施例を図面に基づいて説明する。
【００１０】
図１は、LPAR上で動作するゲストOSがアクセスする論理的なメモリに対する実際の物理メモリの割当て状況を示している。本実施形態では、DIMM０とDIMM１の２つのバンクから構成されるメモリブロックと、DIMM２とDIMM３の２つのバンクから構成されるメモリブロックとを有し、ハイパバイザがこれら２つのメモリブロックをLPAR１、LPAR２、LPAR３、LPAR４のメモリ領域に分割している。
【００１１】
LPAR１とLPAR２にはDIMM０とDIMM１から構成されるメモリブロックのメモリ領域が割当てられている。すなわち、LPAR１のゲストOS(１０６)がアクセスする論理メモリ(１１０)はDIMM０とDIMM１のアドレス３０番地から始まる領域(１２０)に割当てられている。LPAR２のゲストOS(１０７)がアクセスする論理メモリ(１１１)はDIMM０とDIMM１のアドレス８０番地から始まる領域１２２に割当てられている。
【００１２】
LPAR３にはDIMM０とDIMM１から構成されるメモリブロックのメモリ領域と、このメモリブロックとは異なるDIMM２とDIMM３から構成されるメモリブロックのメモリ領域とが割当てられている。すなわち、LPAR３のゲストOS(１０８)がアクセスする論理メモリ(１１２)の前半分（０〜５１２MB）はDIMM０とDIMM１のアドレス１４０番地から始まる領域１２４-１とに割当てられて、後半分（５１２〜１０２４MB）はDIMM２とDIMM３のアドレス２００番地から始まる領域(１２４-２)に割当てられている。
【００１３】
LPAR４はDIMM２とDIMM３から構成されるメモリブロックのメモリ領域が割当てられている。すなわち、LPAR４のゲストOS(１０９)がアクセスする論理メモリ(１１３)はDIMM２とDIMM３のアドレス１６０番地から始まる領域(１２５)に割当てられている。
【００１４】
サーバ(１００)は４枚のDIMM(２GB)(１１５、１１６、１１７、１１８)を実装しDIMM０とDIMM１、DIMM２とDIMM３の２ウェイインタリーブ構成となっている。ハイパバイザ(１０１)は物理的な１台のサーバを論理的に複数のサーバに見せる仮想化機構である。本実施形態ではハイパバイザ上に４台の論理計算機(LPAR)(１０２、１０３、１０４、１０５)が、実装される４枚のDIMM(２GB)(１１５、１１６、１１７、１１８)を共有して動作しており、各LPARが使用するメモリ領域(１２０、１２２、１２４-１、１２４-２、１２５)は動的に未使用領域へ移動できる。矢印１３０はLPAR３のゲストOSが使用するアドレス２００番地から始まる領域(１２４-２)が、アドレス１２０番地から始まる領域(１２３)に移動することを表している。ただし、ハイパバイザが使用するメモリ領域(１１９、１２１)はメモリ移動の対象外とする。
【００１５】
図２は、図１に示す物理メモリ(１１４)のメモリ管理テーブル(２００)である。メモリ管理テーブル(２００)はハイパバイザ(１０１)によって物理メモリ(１１４)を２５６MBずつに分けられたエントリ(２０１)からなり、全エントリ情報を管理している。
【００１６】
メモリ管理テーブルはエントリ(２０１)毎に、そのエントリ(２０１)を割当てられたLPAR(２０２)、そのエントリ(２０１)に対応する物理メモリの開始アドレスであるホスト物理アドレス(２０３)、そのエントリのサイズ(２０４)(２５６MB)、そのエントリ(２０１)を割当てられたLPAR(２０２)上の論理メモリにおけるそのエントリに対応する論理メモリの開始アドレスであるゲスト物理アドレス(２０５)、そのエントリを含む一群のメモリ領域であるセグメントの開始アドレスであるベースアドレス(２０６)を管理する。
【００１７】
メモリ移動を実施する際はエントリ単位で行う。ただし、ハイパバイザ領域(１１９、１２１)はメモリ管理テーブル(２００)からは除外され、メモリの移動対象とはならない。
【００１８】
LPARへのエントリ割り当ては、ハイパバイザ(１０１)がメモリ管理テーブルから未割り当てエントリ（LPAR#が０のエントリ）を検索し、LPAR#(２０２)にLPAR番号を登録することで割当てる。割当てるエントリ数はオペレータが指定した２５６×n(MB)に依存する。
【００１９】
図３は、図１に示す各LPAR(１０２、１０３、１０４、１０５)上で稼動するゲストOS (１０６、１０７、１０８、１０９)が、ホスト物理アドレス(１２６)にアクセスするためのアドレス変換についてLPAR３(１０４)を例にして示した図である。各LPARはLPAR上の論理メモリのアドレスであるゲスト物理アドレスを、物理メモリのアドレスであるホスト物理アドレスへ変換する際に利用するアドレス変換テーブル(３０３)を保持している。このアドレス変換テーブル(３０３)はエントリ毎のゲスト物理アドレスの開始アドレス、ゲスト物理アドレスの終了アドレス、ベースアドレスを管理する。
【００２０】
図３ではLPAR３(３００)上のゲストOS (３０１)がゲスト物理アドレス２０(３０２)にアクセスすると、アドレス変換テーブル(３０３)に登録してあるベースアドレス１８０(３０４)をゲスト物理アドレス２０(３０２)に加算することで算出した(３０５)ホスト物理アドレス２００(３０６)にアクセスすることになる。
【００２１】
図４は、LPAR３に割当てるメモリ領域を物理メモリ(１２４-２)から物理メモリ(１２３)に移動(１３０)した後の、メモリ管理テーブルを示したものである。図２のメモリ管理テーブル(２００)はLPAR３(１０４)のメモリ領域移動前(１２４-２)の全エントリ情報を管理しており、LPAR３(１０４)にはエントリ#１０、１１、１６、１７が割当てられている。図４のメモリ管理テーブル(４００)はメモリ領域移動後(１２３)の更新された全エントリ情報を管理しており、LPAR３(１０４)にはエントリ#８、９、１０、１１が割当てられている。
【００２２】
図５は、LPAR３に割当てるメモリ領域を物理メモリ(１２４-２)から物理メモリ(１２３)に移動(１３０)した後の、アドレス変換テーブルを示したものである。
【００２３】
図３はLPAR３(１０４)のメモリ領域移動前(１２４-２)の、図５はメモリ領域移動後(１２３)のホスト物理アドレス(１２６)へのアクセスに利用するメモリアドレス変換テーブルを示している。
LPAR３(１０４)のメモリ移動(１３０)が行われるとメモリ変換テーブルが更新され、更新されたメモリ変換テーブル(５０３)の新たなベースアドレス(５０４、５０５)をゲスト物理アドレス(５０２)に加算することで(５０６)、ゲストOS(５０１)は移動先のホスト物理アドレス(５０７)にアクセスすることができる。
【００２４】
図６は本発明の実施におけるシステム構成図である。ハイパバイザ(６００)は、メモリ移動プログラム(６０５)、性能管理プログラム(６０３)、障害管理プログラム(６０４)、LPAR(６０２)、メモリ管理テーブル(６０１)を持っている。物理メモリ(６０７)に対して実際のメモリ移動処理を行うのがメモリ移動プログラム(６０５)である。
【００２５】
メモリ移動プログラム(６０５)は、性能管理プログラム(６０３)、障害管理プログラム(６０４)、オペレータ(６０６)からメモリ移動要求があると、メモリ管理テーブル(６０１)が管理するエントリ単位(２０１)でメモリの移動を行う。
【００２６】
性能管理プログラム(６０３)は、各LPARにディパッチされているCPUと割り与えられているメモリ領域との関係を検知し、論理計算機のメモリアクセスの遅延を解消するためにメモリ移動プログラムに移動要求を出す。障害管理プログラム(６０４)はメモリ障害がおきたDIMMを使用しているLPARを、そのDIMMから退避させるためにメモリ移動要求を出す。オペレータ(６０６)が、LPARの使用するメモリ領域を任意の未使用領域に移動させる指示を出した場合に、メモリ移動プログラムに移動要求を出す。
【００２７】
図７はメモリ移動プログラム(６０５)の手順について説明したものである。図１〜図４の例を用いて図７の手順を説明する。まず、メモリ移動プログラム(７０３)は、性能管理プログラム(７００)、障害管理プログラム(７０１)、オペレータ(７０２)のいずれかからメモリ移動要求を受け付ける(７０４)。この時メモリ移動プログラム(７０３)にはメモリ移動の対象となるLPAR３と移動元のエントリ#１６と#１７、移動先のエントリ#８と#９が伝えられる。
【００２８】
移動要求を受け付けると、メモリ移動プログラム(７０３)は、対象LPARであるLPAR３をアクティベイト状態に維持したままCPUのディスパッチ対象から外し、停止させる(７０５)。
【００２９】
その後、移動元エントリ#１６と#１７のメモリ領域の内容を移動先エントリ#８と#９のメモリ領域に移動させる(７０６)。すなわち、移動元エントリ#１６と移動先エントリ#８に従い、LPAR３(１０４)が使用する２００番地から始まる２５６MBのメモリ領域を１２０番地から始まる２５６MBのメモリ領域へ移動し、また移動元エントリ#１７と移動先エントリ#９に従い、２１０番地から始まる２５６MBのメモリ領域を１３０番地から始まる２５６MBのメモリ領域への移動する。メモリ移動プログラム(７０３)は一度に複数エントリの移動要求を受け付けることにより、複数のエントリを一度に移動することもできる。
【００３０】
移動後、メモリ管理テーブル(６０１)を移動後のメモリ状態を示すように更新する(７０７)。すなわち、図４に示すように、エントリ#８と#９がLPAR３に割当てられるので、メモリ管理テーブル(６０１)のエントリ#８と#９のLPAR#が３となり、エントリ#１６と#１７のLPAR#は０（未割当て）となる。
【００３１】
また、このメモリ領域の内容の移動によって、LPAR３上の論理メモリ(１１２)におけるゲスト物理アドレスは動かない。このため、エントリ#８と#９にLPAR３が割当てられたことに伴い、メモリ管理テーブル(６０１)のエントリ#８と#９のゲスト物理アドレスは、移動前のLPAR３のゲスト物理アドレスであった２０と３０となる。
【００３２】
ベースアドレスは、ホスト物理アドレスとゲスト物理アドレスに基づき算出する。すなわち、エントリ#８のホスト物理アドレスは１２０となり、ゲスト物理アドレスは２０であることから、１２０から２０を差し引いて、ベースアドレスは１００となる。また、エントリ#９のホスト物理アドレスは１３０となり、ゲスト物理アドレスは３０であることから、１３０から３０を差し引いて、ベースアドレスも１００となる。
【００３３】
続いて対象となるLPARのアドレス変換テーブルを、メモリ管理テーブルの更新後の情報をもとに更新する(７０８)。すなわち、図５に示すようにメモリ管理テーブルにてLPAR３に割当てられるエントリ#がエントリ#１６、#１７からエントリ#８、#９に変更されるので、LPAR３のアドレス変換テーブルの対象となるエントリ#もエントリ#１６、#１７からエントリ#８、#９に変更される。
【００３４】
また、LPAR３上の論理メモリにおけるゲスト物理アドレスは変更されないため、開始アドレス、終了アドレスの変更はなく、エントリ#８の開始アドレスは２０、終了アドレスは２９、エントリ#９の開始アドレスは３０、終了アドレスは３９となる。
【００３５】
ベースアドレスは、メモリ管理テーブルで算出した結果に従い変更し、エントリ#８、#９のベースアドレスはともに１００となる。
【００３６】
最後に停止させていた対象LPARであるLPAR３をCPUのディスパッチ対象に戻し再稼動させる(７０９)。なお、LPARをCPUのディスパッチ対象から外し、CPUのディスパッチ対象に戻すまでの間、LPARはアクティベイト状態を維持している。
【００３７】
図８はNUMA構成時の実施形態である。サーバモジュール０(８００)は、CPU０(８０７)、CPU１(８０８)の２つのCPUと、DIMM０(８１３)とDIMM１(８１４)、DIMM２(８１５)とDIMM３(８１６)の２つの２ウェイインタリーブを構成する４枚のDIMM(２GB)(８１３、８１４、８１５、８１６)を実装している。また、サーバモジュール１(８０１)は、CPU２(８０９)、CPU３(８１０)の２つのCPUとDIMM４(８１７)とDIMM５(８１８)、DIMM６(８１９)とDIMM７(８２０)の２つの２ウェイインタリーブを構成する４枚のDIMM(２GB)(８１７、８１８、８１９、８２０)を実装している。メモリアドレスはサーバモジュール０(８００)からサーバモジュール１(８０１)へと連続的に割り振られ、サーバモジュール０(８００)のDIMM(８１３、８１４、８１５、８１６)が低位アドレス、サーバモジュール１(８０１)のDIMM(８１７、８１８、８１９、８２０)が高位アドレスとなる。サーバ(８００、８０１)には４つのLPAR(８０３、８０４、８０５、８０６)が稼動しており、各LPARはアクティベイトした順に低位アドレスの領域から順に使用する。また、CPU０(８０７)はLPAR１(８０３)、CPU１(８０８)はLPAR２(８０４)、CPU２(８０９)はLPAR３(８０５)、CPU３(８１０)はLPAR４(８０６)の占有CPUとして使用されている。また、MC０(８１１)、MC１(８１２)はCPUからのメモリアクセスの際に、そのアクセスが自サーバモジュールのメモリへのアクセスかを判断し、自サーバモジュールへのアクセスの場合は当該メモリにアクセスし、他サーバモジュールのメモリへのアクセスの場合は他サーバのMCから当該メモリにアクセスを行う。
【００３８】
本実施例では、LPAR２(８０４)のメモリ領域(８２１-１、８２１-２)が２つのサーバ(８００、８０１)に分散される。CPU１は、CPU１と同一ノードに存在するローカルメモリDIMM２(８１５)、DIMM３(８１６)のメモリ領域(８２１-１)と、CPU１とは異なるノードに存在するリモートメモリであるDIMM４(８１７)、DIMM５(８１８)のメモリ領域(８２１-２)にアクセスすることとなる。CPU１からローカルメモリとなるメモリ領域(８２１-１)へのアクセスはMC０を経由しアクセスすることとなる。一方、CPU１からリモートメモリとなるメモリ領域(８２１-２)へのアクセスは、MC０及びMC１を経由しアクセスすることとなり、CPU１(８０８)のメモリアクセスに遅延が生じる。
【００３９】
このようなメモリアクセスの遅延を解消するため、図６に示す性能管理プログラム(６０３)はCPUとＤＩＭＭとの配置関係を図１５のメモリモジュール配置テーブルから検知し、メモリアクセスの遅延解消の要否を判定する。
【００４０】
図１５のメモリモジュール配置テーブルはDIMM(１５０１)とCPU(１５０２、１５０３、１５０４、１５０５)の関係を表している。このメモリモジュール配置テーブルはハイパバイザにより管理され、CPUからみたDIMMがローカルメモリに相当するか、リモートメモリに相当するかを管理している。なお、Lはローカルメモリを、Rはリモートメモリに表している。図８ではCPU０、CPU１にとって、DIMM０〜DIMM３はローカルメモリとなり、DIMM４〜DIMM７はリモートメモリとなる。一方、CPU２、CPU３にとって、DIMM０〜DIMM３はリモートメモリとなり、DIMM４〜DIMM７はローカルメモリとなる。
【００４１】
メモリアクセスの遅延の解消が必要な場合は、LPAR２(８０４)のメモリ領域(８２１-２)をサーバモジュール０(８００)上DIMM(８１３、８１４、８１５、８１６)に移動できないかメモリ管理テーブル(６０１)の未使用エントリの有無を確認する。移動可能であれば、性能管理プログラム(６０３)はメモリ移動プログラム(６０５)に移動要求を出す。移動不可である場合は、サーバモジュール０(８００)上のDIMM(８１３、８１４、８１５、８１６)が未使用になるまで待つ。
【００４２】
本実施例の場合はLPAR１(８０３)がDIMM(８１３、８１４、８１５、８１６)を使用しているので、LPAR１(８０３)がディアクトベイトされるまで待つことになる。後にLPAR１(８０３)がディアクトベイトされDIMM(８１３、８１４、８１５、８１６)が未使用となれば、性能管理プログラム(６０３)はメモリ移動プログラムにメモリ移動要求を出す。その後は図７の手順に従って、LPAR２(８０４)のメモリ領域(８２１-２)を移動させる。
【００４３】
すなわち、メモリ移動プログラムは移動要求を受付け(７０４)、LPAR２をアクティベイト状態に維持したままCPU１のディスパッチ対象から外し(７０５)、メモリ領域(８２１-２)をメモリ領域(８２１-２)に移動する(７０６)。この後、メモリ管理テーブルを更新し(７０７)、対象LPARのアドレス変換テーブルを更新し(７０８)、LPAR２をCPU１のディスパッチ対象に戻す(７０９)。なお、LPAR２をCPUのディスパッチ対象から外し、CPUのディスパッチ対象に戻すまでの間、LPAR２はアクティベイト状態を維持している。
【００４４】
図９は上記手順により、図８のLPAR１(８０３)がディアクトベイトされ、LPAR２(８０４)のメモリ領域(８２１-２)が移動された後の状態を示す。
【００４５】
図１０、図１１は、SMP構成時における実施形態である。図１０のサーバモジュール０(１０００)およびサーバモジュール１(１００１)は図８のサーバモジュール(８００、８０１)と同様の構成をとる。
【００４６】
メモリアドレスはサーバモジュール０(１０００)とサーバモジュール１(１００１)のメモリバンクに対して、交互に連続して割り振る。LPAR１を例にとると、アドレス２０、２１をサーバモジュール０(１０００)のDIMM０、DIMM１に、アドレス２２、２３をサーバモジュール１(１００１)のDIMM４、DIMM５…にと、順に割り振っていくこととなる。
【００４７】
サーバモジュール(１０００、１００１)には４つのLPAR(１００３、１００４、１００５、１００６)が稼動しており、各LPARはアクティベイトした順に低位アドレスの領域から使用している。
【００４８】
また、各LPARは４つのCPU(１００７、１００８、１００９、１０１０)を共有論理CPUとして時分割共有で使用している。
【００４９】
図１０に示す４つのCPU(１００３、１００４、１００５、１００６)のうち、CPU３(１０１０)だけをLPAR４(１００６)の占有CPUに切り替えた場合、CPU３(１０１０)と各LPAR(１００６)との関係は図１０の実線１０２３、１０２４での接続はなくなり、点線１０２５にて接続されることとなる。一方、LPAR４(１００６)のメモリ領域(１０２１-１、１０２１-２)は図１０に示すように、２つのサーバモジュール(１０００、１００１)に分散される。このため、CPU３(１０１０)のメモリアクセスに問題が生じる。すなわち、サーバモジュール１(１００１)のメモリ領域(１０２１-２)はローカルメモリであるが、サーバモジュール０(１０００)のメモリ領域(１０２１-１)はリモートメモリとなり、CPU３はMC１、MC０を経由してメモリ領域(１０２１-１)にアクセスすることとなる。この結果、メモリ領域(１０２１-１)の情報がローカルメモリにある場合よりも、メモリアクセスが遅くなり、アクセス性能が低下する。
【００５０】
このようにメモリアクセスの遅延を解消するため、図６に示す性能管理プログラム(６０３)はCPUとメモリの配置関係を図１６のメモリモジュール配置テーブルから検知し、メモリアクセスの遅延解消の要否を判定する。
【００５１】
メモリアクセスの遅延の解消が必要な場合は、LPAR４(１００６)のメモリ領域(１０２１-１)をサーバモジュール１(１００１)上のDIMM(１０１７、１０１８、１０１９、１０２０)に移動できないかメモリ管理テーブル(６０１)の未使用エントリの有無を確認する。移動可能であれば、性能管理プログラム(６０３)はメモリ移動プログラム(６０５)に移動要求を出す。本実施例の場合はDIMM６(１０１９)、DIMM７(１０２０)が未使用であり、メモリ領域(１０２１-１)のLPAR４を移動するのに十分なエントリが確保できるため、メモリ移動プログラム(６０５)は図７の手順に従って、DIMM０(１０１３)及びDIMM１(１０１４)のLPAR４(１００６)のメモリ領域(１０２１-１)をDIMM６(１０１９)及びDIMM７(１０２０)に移動させる。
【００５２】
すなわち、メモリ移動プログラムは移動要求を受付け(７０４)、LPAR４をCPUのディスパッチ対象から外し(７０５)、メモリ領域(１０２１-１)をDIMM６(１０１９)、DIMM７(１０２０)に移動する(７０６)。この後、メモリ管理テーブルを更新し(７０７)、対象LPARのアドレス変換テーブルを更新し(７０８)、LPAR４をCPU３のディスパッチ対象に戻す(７０９)。
【００５３】
図１１は上記手順により、図１０のLPAR４(１００６)がディアクトベイトされ、LPAR４(１００６)のメモリ領域(１０２１-１)がメモリ領域(１１２１-２)に移動された後の状態を示す。
【００５４】
図１２はメモリ障害時における実施形態である。ひとつのDIMMを複数LPARが共有している場合、ひとつのLPARでメモリ障害を検出して停止した場合も、他LPARでの当該DIMMの使用を制御していないため、その後も他LPARが当該DIMMを使用し続けることにより、共有している全LPARが障害となる可能性がある。本実施例は、メモリ障害で停止したLPAR１(１２００)と同じDIMM(１２０５)をLPAR２(１２０１)が使用していた場合、LPAR２(１２０１)にも障害が起きるという可能性から、LPAR２のメモリ領域(１２０１)を別のDIMM３(１２０６)、DIMM４(１２０７)の領域(１２０３)に移動させて被害の拡大を防ぐ実施形態である。
【００５５】
本実施例では、LPAR１(１２００)の配置された番地(１２０２)でメモリ障害を検出し停止している。障害管理プログラム(６０４)はこれを検知し、LPAR１が使用していたDIMM(１２０５)を他のLPARが使用していないかメモリ管理テーブル(６０１)の情報をもとに調べる。調査の結果、LPAR２が使用しているので、障害管理プログラム(６０４)は、メモリ管理テーブル(６０１)から他のDIMMの未使用エントリを確認する。移動可能であれば、メモリ移動プログラム(６０５)に移動要求を出す。その後は図７の手順に従って、LPAR２のメモリ領域(１２０１)をDIMM２(１２０６)、DIMM３(１２０７)のメモリ領域(１２０３)に移動させる。
【００５６】
図１３は、MC（メモリコントロール）(１３０３)にメモリのインタリーブの変更機能を設け、ハイパバイザはMCにメモリインタリーブの設定コマンドを送出することにより、インタリーブ状態に設定し、解除コマンドを送出することによるインタリーブ状態の解除について示している。
【００５７】
本実施例の場合は、特定のバンクのみインタリーブを解除可能とする実施形態である。ハイパバイザはMC(１３０３)にインタリーブ解除コマンドを送出し、動的にDIMM２(１３０６)とDIMM３(１３０７)のみインタリーブを解除し、それぞれ単独のバンクに変更する。DIMM２(１３０６)、DIMM３(１３０７)のメモリアドレスはDIMM２(１３０８)、DIMM３(１３０９)のように割り振り直され、LPAR１のメモリ領域(１３１０)も２バンクから１バンクに変更される。
【００５８】
本実施例では、メモリインタリーブの解除について示したが、LPARを割当てるメモリ領域を１バンクから複数バンクにして新たにメモリインタリーブを構成したり、LPARを割当てるメモリ領域を元の複数バンクとは異なる複数バンクにしてメモリインタリーブの構成を変更したり、変更前後で使用するバンク数は本実施例に限らない。
【００５９】
図１４は図１３に示したメモリ移動の詳細を表したものである。ハイパバイザ(１４００)はMCにインタリーブ解除コマンドを送出すると一旦LPAR１(１４０１)をアクティベイト状態に維持したままCPUのディスパッチ対象から外し、停止させる。また、この時もとのメモリ情報(1)〜(16)を記憶する。その後、MCによってDIMM２(１４０２)、DIMM３(１４０３)のインタリーブは解除され、メモリアドレスが振り直される。記憶したメモリ情報のメモリ移動は高位のアドレス(１４０８)から順々に行い、最終的にはDIMM２(１４０４)のみにメモリが配置し直される(１４０７)。メモリ移動が終了したら、LPAR１(１４０１)を再びCPUのディスパッチ対象に戻し、再稼動させる。なお、LPAR１をCPUのディスパッチ対象から外し、CPUのディスパッチ対象に戻すまでの間、LPAR１はアクティベイト状態を維持している。
【図面の簡単な説明】
【００６０】
【図１】本発明の基本的な実施形態を示す図
【図２】図１に示す物理メモリのメモリ管理テーブル(LPAR３のメモリ移動前)
【図３】ゲストOSが、ホスト物理アドレスにアクセスするためのアドレス変換について図１のLPAR３を例に示した図(LPAR３のメモリ移動前)
【図４】図１に示す物理メモリのメモリ管理テーブル(LPAR３のメモリ移動後)
【図５】ゲストOSが、ホスト物理アドレスにアクセスするためのアドレス変換について図１のLPAR３を例に示した図(LPAR３のメモリ移動後)
【図６】本発明の実施におけるシステム構成図
【図７】メモリ移動プログラムの実施手順を示した図
【図８】NUMA構成時の実施形態
【図９】図８に示すLPAR２のメモリ領域を移動させたことを示す図
【図１０】SMP構成時の実施形態
【図１１】図１０に示すLPAR４のメモリ領域を移動させたことを示す図
【図１２】メモリ障害時の実施形態
【図１３】MC（メモリコントロール）にメモリインタリーブの設定、解除機能を設けた場合の動作を示した図
【図１４】図１３の機能を実施した時のメモリ移動を示した図
【図１５】メモリモジュール配置テーブル
【符号の説明】
【００６１】
１００  サーバモジュール
１０１  ハイパバイザ
１０２、１０３、１０４、１０５  LPAR
１０６、１０７、１０８、１０９  ゲストOS
１１０、１１１、１１２、１１３  論理メモリ
１１４  物理メモリ
１１５、１１６、１１７、１１８  DIMM
１１９、１２１  ハイパバイザメモリ領域
１２０  LPAR１のメモリ領域
１２２  LPAR２のメモリ領域
１２３  LPAR３の移動先メモリ領域
１２４-１、１２４-２  LPAR３のメモリ領域
１２５  LPAR４のメモリ領域
【図１】
0004792434.tif 000002
【図２】
0004792434.tif 000003
【図３】
0004792434.tif 000004
【図４】
0004792434.tif 000005
【図５】
0004792434.tif 000006
【図６】
0004792434.tif 000007
【図７】
0004792434.tif 000008
【図８】
0004792434.tif 000009
【図９】
0004792434.tif 000010
【図１０】
0004792434.tif 000011
【図１１】
0004792434.tif 000012
【図１２】
0004792434.tif 000013
【図１３】
0004792434.tif 000014
【図１４】
0004792434.tif 000015
【図１５】
0004792434.tif 000016