(57)【特許請求の範囲】
【請求項１】
複数の仮想マシンを同時に自己の装置上で動作させることが可能なコンピュータ装置であって、
各仮想マシンにメモリリソースを配分し、配分した前記メモリリソースの割り当て及び切り離しを行う仮想マシンメモリ管理部を備え、
前記仮想マシンメモリ管理部は、
前記メモリリソースが、配分先の前記仮想マシンの仮想記憶空間に割り当てた状態の使用中メモリリソース、配分先の前記仮想マシンの仮想記憶空間から切り離されているが、切り離し前の記憶内容を保持している内容記憶メモリリソース、それ以外の状態である未使用メモリリソースのいずれに該当するかを管理するテーブルと、前記仮想マシンの識別情報に対応づけて、該仮想マシンの仮想記憶空間のページアウトされたページへのアクセスであるミッシングの発生の頻度情報を格納するテーブルとを備え、所定の仮想マシンからメモリリソース割当て指示を受信したときに、前記所定の仮想マシン用に配分した前記メモリリソースに前記未使用メモリリソースが存在しない場合、複数の前記仮想マシンにそれぞれ配分した前記メモリリソースから、前記未使用メモリリソース又は前記内容記憶メモリリソースを選択して前記所定の仮想マシンに割り当てるものであり、
更に、前記仮想マシンメモリ管理部は、
前記内容記憶メモリリソースを選択する場合、前記ミッシング発生の頻度が小さい前記仮想マシンの前記内容記憶メモリリソースを選択する、
ことを特徴とするコンピュータ装置。
【請求項２】
前記管理するテーブルは、
前記仮想マシンごとに設けられ、前記メモリリソースのアドレスに対応づけて、前記仮想記憶空間のアドレスと、該メモリリソースが前記使用中メモリリソースであるか、前記内容記憶メモリリソースであるかの情報を格納する第１のテーブルと、
複数の前記仮想マシンに共有して設けられ、前記メモリリソースのアドレスに対応づけ、前記仮想マシンの識別情報と、前記仮想記憶空間のアドレスと、該メモリリソースが配分先以外の前記仮想マシンによって使用されているかどうかを示すフラグとを格納する第２のテーブルと、
を備え、
前記仮想マシンメモリ管理部は、
前記未使用メモリリソースが、配分した前記仮想マシンとは異なる他の仮想マシンによって使用されていない場合、当該未使用メモリリソースを前記所定の仮想マシンに割り当てる、
ことを特徴とする請求項１に記載のコンピュータ装置。
【請求項３】
複数の仮想マシンを同時に自己の装置上で動作させることが可能なコンピュータ装置のメモリリソース割当て方法であって、
仮想マシンメモリ管理部が、各前記仮想マシンにメモリリソースを配分し、配分した前記メモリリソースの割り当て及び切り離しを行う第１のステップと、
前記仮想マシンメモリ管理部が、所定の仮想マシンからメモリリソース割当て指示を受信したときに、前記メモリリソースが、配分先の前記仮想マシンの仮想記憶空間に割り当てた状態の使用中メモリリソース、配分先の前記仮想マシンの仮想記憶空間から切り離されているが、切り離し前の記憶内容を保持している内容記憶メモリリソース、それ以外の状態である未使用メモリリソースのいずれに該当するかを管理するテーブルと、前記仮想マシンの識別情報に対応づけて、該仮想マシンの仮想記憶空間のページアウトされたページへのアクセスであるミッシングの発生の頻度情報を格納するテーブルとを参照し、前記所定の仮想マシン用に配分した前記メモリリソースに前記未使用メモリリソースが存在しない場合、複数の前記仮想マシンにそれぞれ配分した前記メモリリソースから、前記未使用メモリリソース又は前記内容記憶メモリリソースを選択して前記所定の仮想マシンに割り当てる第２のステップと、を備え、
前記第２のステップは、前記内容記憶メモリリソースを選択する場合、前記仮想マシンのうち仮想記憶空間のページアウトされたページへのアクセスであるミッシングの発生の頻度が小さい仮想マシンの前記内容記憶メモリリソースを選択するステップを含む、
ことを特徴とするコンピュータ装置のメモリリソース割当て方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、コンピュータシステムにおける論理区画間でリソースの割り当てるコンピュータ装置及びメモリリソース割当て方法に関する。
【背景技術】
【０００２】
従来、仮想マシンなど、ハイパバイザと呼ばれる制御プログラムにより複数の論理区画を設け、それぞれの論理区画でオペレーティングシステム（ゲストＯＳ（Operating System））を稼動させるシステムが広く知られている。このように、ゲストＯＳを稼働させて論理区画間でリソースの割り当てを変更する方法として、例えば、特許文献１の計算機システムが開示されている。
【０００３】
特許文献１の計算機システムは、１つの物理計算機中に１つ以上の論理区画を設け、論理区画のそれぞれでオペレーティングシステムを稼動させる論理区画式計算機システムであって、各論理区画において、割り当てられているリソース量の内の使用しているリソース量を監視し、監視の結果、所定の閾値以上にリソースを使用している場合には物理計算機に対してリソースの割り当てを要求し、リソース全体に対して所定の閾値以上の余剰がある場合にはリソースの回収を要求する。
【０００４】
そして、特許文献１の計算機システムは、物理計算機において該要求を受け、割り当て要求の場合には前記論理区画に予備リソースを割り当て、回収要求の場合には該論理区画に割り当て中のリソースを回収して予備リソースにする。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３２３８７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のシステムでは、割り当てられたメモリ中に未使用のメモリページが残っていない仮想マシンにおいては、新規メモリページの割当て要求があると、該仮想マシンの既に内容が記憶されたメモリページが割り当てられる。その後、該内容が記憶されたメモリページが割り当てられていた仮想記憶空間上のページに対してアクセスがあり、ミッシングとなった場合、ディスクＩ／Ｏを伴うページイン処理が必要となり、該仮想マシンの性能が低下するというおそれがある。
【０００７】
また、特許文献１の計算機システムは、論理区画間でリソースの割り当てを変更した場合であって、リソースの割り当て状態を元に戻す際には、前記リソースが追加された論理区画において、改めて前記リソースが余剰リソースとして解放されるのを待つ必要があり、柔軟に論理区画間でリソースの割り当てを変更することができないというおそれがある。
【０００８】
本発明は以上の点を考慮してなされたものであり、システムの使い勝手を向上させ得るコンピュータ装置及びメモリリソース割当て方法を提案するものである。
【課題を解決するための手段】
【０００９】
かかる課題を解決するために本発明は、複数の仮想マシンを同時に自己の装置上で動作させることが可能なコンピュータ装置であって、各仮想マシンにメモリリソースを配分し、配分した前記メモリリソースの割り当て及び切り離しを行う仮想マシンメモリ管理部を備え、前記仮想マシンメモリ管理部は、前記メモリリソースが、配分先の前記仮想マシンの仮想記憶空間に割り当てた状態の使用中メモリリソース、配分先の前記仮想マシンの仮想記憶空間から切り離されているが、切り離し前の記憶内容を保持している内容記憶メモリリソース、それ以外の状態である未使用メモリリソースのいずれに該当するかを管理するテーブルと、前記仮想マシンの識別情報に対応づけて、該仮想マシンの仮想記憶空間のページアウトされたページへのアクセスであるミッシングの発生の頻度情報を格納するテーブルとを備え、所定の仮想マシンからメモリリソース割当て指示を受信したときに、前記所定の仮想マシン用に配分した前記メモリリソースに前記未使用メモリリソースが存在しない場合、複数の前記仮想マシンにそれぞれ配分した前記メモリリソースから、前記未使用メモリリソース又は前記内容記憶メモリリソースを選択して前記所定の仮想マシンに割り当てるものであり、更に、前記仮想マシンメモリ管理部は、前記内容記憶メモリリソースを選択する場合、前記ミッシング発生の頻度が小さい前記仮想マシンの前記内容記憶メモリリソースを選択する、ことを特徴とする。
また、参考例は、複数の仮想マシンを同時に自己の装置上で動作させることが可能なコンピュータ装置であって、各前記仮想マシンにメモリリソースを配分し、配分した前記メモリリソースの割り当て及び切り離しを行う仮想マシンメモリ管理部を備え、前記仮想マシンメモリ管理部は、前記メモリリソースが、配分先の前記仮想マシンの仮想記憶空間に割り当てた状態の使用中メモリリソース、配分先の前記仮想マシンの仮想記憶空間から切り離されているが、切り離し前の記憶内容を保持している内容記憶メモリリソース、それ以外の状態である未使用メモリリソースのいずれに該当するかを管理するテーブルを備ており、所定の仮想マシンからメモリリソース割当て指示を受信したときに、前記所定の仮想マシン用に配分した前記メモリリソースに前記未使用メモリリソースが存在しない場合、複数の前記仮想マシンにそれぞれ配分した前記メモリリソースから、前記未使用メモリリソース又は前記内容記憶メモリリソースを選択して前記所定の仮想マシンに割り当てることを特徴とする。
【００１０】
また、本発明は、複数の仮想マシンを同時に自己の装置上で動作させることが可能なコンピュータ装置のメモリリソース割当て方法であって、仮想マシンメモリ管理部が、各前記仮想マシンにメモリリソースを配分し、配分した前記メモリリソースの割り当て及び切り離しを行う第１のステップと、前記仮想マシンメモリ管理部が、所定の仮想マシンからメモリリソース割当て指示を受信したときに、前記メモリリソースが、配分先の前記仮想マシンの仮想記憶空間に割り当てた状態の使用中メモリリソース、配分先の前記仮想マシンの仮想記憶空間から切り離されているが、切り離し前の記憶内容を保持している内容記憶メモリリソース、それ以外の状態である未使用メモリリソースのいずれに該当するかを管理するテーブルと、前記仮想マシンの識別情報に対応づけて、該仮想マシンの仮想記憶空間のページアウトされたページへのアクセスであるミッシングの発生の頻度情報を格納するテーブルとを参照し、前記所定の仮想マシン用に配分した前記メモリリソースに前記未使用メモリリソースが存在しない場合、複数の前記仮想マシンにそれぞれ配分した前記メモリリソースから、前記未使用メモリリソース又は前記内容記憶メモリリソースを選択して前記所定の仮想マシンに割り当てる第２のステップと、を備え、前記第２のステップは、前記内容記憶メモリリソースを選択する場合、前記仮想マシンのうち仮想記憶空間のページアウトされたページへのアクセスであるミッシングの発生の頻度が小さい仮想マシンの前記内容記憶メモリリソースを選択するステップを含む、ことを特徴とする。
また、参考例は、複数の仮想マシンを同時に自己の装置上で動作させることが可能なコンピュータ装置のメモリリソース割当て方法であって、仮想マシンメモリ管理部が、各前仮想マシンにメモリリソースを配分し、配分した前記メモリリソースの割り当て及び切り離しを行う第１のステップと、前記仮想マシンメモリ管理部が、所定の仮想マシンからメモリリソース割当て指示を受信したときに、前記メモリリソースが、配分先の前記仮想マシンの仮想記憶空間に割り当てた状態の使用中メモリリソース、配分先の前記仮想マシンの仮想記憶空間から切り離されているが、切り離し前の記憶内容を保持している内容記憶メモリリソース、それ以外の状態である未使用メモリリソースのいずれに該当するかを管理するテーブルを参照し、前記所定の仮想マシン用に配分した前記メモリリソースに前記未使用メモリリソースが存在しない場合、複数の前記仮想マシンにそれぞれ配分した前記メモリリソースから、前記未使用メモリリソース又は前記内容記憶メモリリソースを選択して前記所定の仮想マシンに割り当てることを特徴とする。
【００１１】
従って、複数の仮想マシンを同時に自己の装置上で動作させるコンピュータシステムにおいて、仮想マシン上でミッシングを解決する必要が生じた場合において、ページインの発生を抑制することができる。
【００１２】
具体的に、本実施形態のコンピュータシステム１は、ホストマシン１０上で動作する全ての仮想マシン２０において、未使用ページを共通して管理するため、未使用ページの割当てを仮想マシン２０間で容易に変更することができる。従って、従来、ある仮想マシン２０においてＥページ（ページアウトされた後もページの内容を保持しているメモリページ）を割り当てることが必要な場合にも、他の仮想マシン２０の未使用ページを割り当てるため、Ｅページをメモリ上に残しておくことができる。
【００１３】
また、本実施形態のコンピュータシステム１は、さらに、ホストマシン１０上で動作する全ての仮想マシン２０において未使用ページが存在しない場合、ミッシング発生頻度の低い仮想マシン２０のＥページから割り当てる。従って、ミッシング発生頻度の高い仮想マシン２０においては、極力Ｅページをメモリ上に残しておくことができる。
【００１４】
かくして、本実施形態のコンピュータシステム１は、仮想マシン２０上でミッシングを解決する必要が生じた場合において、ページインが発生する頻度を低減することができ、仮想マシン２０の性能低下を未然かつ有効に防止することができる。
【発明の効果】
【００１５】
本発明によれば、システムの使い勝手を向上させ得るコンピュータ装置及びメモリリソース割当て方法を実現することができる。
【図面の簡単な説明】
【００１６】
【図１】コンピュータシステムの構成を示すブロック図の一例である。
【図２】仮想記憶機構の説明に供する概念図の一例である。
【図３】未使用ページ管理テーブルの説明に供する概念図の一例である。
【図４】仮想マシンメモリ管理テーブルの説明に供する概念図の一例である。
【図５】ミッシング発生頻度管理テーブルの説明に供する概念図の一例である。
【図６】メモリ管理テーブルの説明に供する概念図の一例である。
【図７】ページ状態監視／通知処理手順を示すフローチャートの一例である。
【図８】ページ状態受取／反映処理手順を示すフローチャートの一例である。
【図９】ミッシング発生頻度監視／通知処理手順を示すフローチャートの一例である。
【図１０】ミッシング発生頻度受取／反映処理手順を示すフローチャートの一例である。
【図１１】仮想記憶管理処理手順を示すフローチャートの一例である。
【図１２】仮想マシンメモリ管理処理手順を示すフローチャートの一例である。
【図１３】仮想マシンメモリ管理処理手順を示すフローチャートの一例である。
【図１４】ミッシング解決処理手順を示すフローチャートの一例である。
【発明を実施するための形態】
【００１７】
以下、本発明の一実施の形態を、図面を参照して詳細に説明する。なお、これにより本発明が限定されるものではない。
【００１８】
図１は、本実施形態のコンピュータシステム１の構成の一例を示している。コンピュータシステム１は、ホストマシン１０及び仮想マシン２０を含んで構成されている。ホストマシン１０は、主記憶５０、仮想記憶管理手段１００及び仮想マシン管理手段１１０を含んで構成されている。
【００１９】
仮想記憶管理手段１００は、ホストマシン１０の仮想記憶機構を実現する手段であり、ホストマシン１０上の全てのタスクからの主記憶５０へのアクセス処理を行う。仮想マシン管理手段１１０は、ホストマシン１０上で動作している全ての仮想マシン２０の制御を行う。
【００２０】
この場合、コンピュータシステム１は、同一のホストマシン１０上で同時に複数の仮想マシン２０が動作可能なコンピュータシステムである。また、各仮想マシン２０は、ホストマシン１０の主記憶５０のメモリを共有する。
【００２１】
ホストマシン１０は、各仮想マシン２０へのメモリの割当てを行い、仮想マシン２０毎に割り当てるメモリの大きさを決定する。ホストマシン１０上の仮想記憶管理手段１００は、ホストマシン１０上の仮想マシン管理手段１１０を通して実際の主記憶５０へのアクセスを行う。
【００２２】
図２は、ホストマシン１０及び各仮想マシン２０の仮想記憶機構を示している。
【００２３】
仮想マシン２０は、ページと呼ばれる固定長のブロックで構成された仮想記憶空間に対してメモリアクセスを行い、当該仮想マシン２０の実行に必要なページのみ、メモリページ（メモリリソース）が割り当てられる。このように、仮想記憶空間のページに割り当てられたメモリページを「使用中ページ（使用中メモリリソース）」と呼ぶ。
【００２４】
メモリページが割り当てられた仮想記憶空間のページは、その後、ＬＲＵ（Least Recently Used）制御等により不要と判断された場合、ページアウト処理によってスワップファイルにページの内容が格納される。また、割り当てられていたメモリページは、当該仮想記憶空間から切り離される。
【００２５】
ページアウトされるまで仮想記憶空間のページに割り当てられていたメモリページは、仮想記憶空間の他のページに割り当てられる等、ページアウトされる前とは異なる用途で使用されるまでは、その内容が保持される。このように、ページアウトされた後もページの内容を保持しているメモリページを「Ｅページ（内容記憶メモリリソース）」と呼ぶ。なお、仮想記憶空間のページに割り当てられていないページのうち、Ｅページ以外のページを「未使用ページ（未使用メモリリソース）」と呼ぶ。
【００２６】
アクセスされた仮想記憶空間上のページが既にページアウトされていた場合、当該アクセスはミッシングとなり、その解決処理を行う必要がある。しかしながら、当該ページに割り当てられていたメモリページの内容が、Ｅページとして主記憶５０上に残されている場合、当該Ｅページがメモリページとしてそのまま取り戻される。
【００２７】
ミッシングとなった仮想記憶空間上のページに割り当てられていたメモリページの内容が、Ｅページとして主記憶５０上に残されていない場合、当該ページに対してメモリページが新規に割り当てられ、ページイン処理によってスワップファイルからページの内容が読み込まれる。
【００２８】
新規にメモリページの割当て要求があった場合、未使用ページが割当てられるが未使用ページが主記憶上に残っていない場合、Ｅページが割り当てられる。その際、当該未使用ページ又はＥページは、使用中ページへと遷移する。
【００２９】
以下、本実施形態のコンピュータシステム１の構成について具体的に説明する。
【００３０】
仮想マシン管理手段１１０は、仮想マシンメモリ管理手段１２０（仮想マシンメモリ管理部）、未使用ページ管理テーブル１２１、仮想マシンメモリ管理テーブル１２２、ページ状態受取／反映手段１３０、ミッシング発生頻度受取／反映手段１４０及びミッシング発生頻度管理テーブル１４１を含んで構成されている。仮想マシンメモリ管理テーブル１２２は、同時に動作している仮想マシン２０の数と同数存在する。すなわち、１つの仮想マシン２０につき、１つの仮想マシンメモリ管理テーブル１２２が対応している。
【００３１】
仮想マシンメモリ管理手段１２０は、仮想マシン２０の開始時に、仮想マシン２０に割り当てるメモリページを仮想記憶管理手段１００に指示して確保する。仮想マシンメモリ管理手段１２０は、仮想マシン２０の運用中、仮想マシン２０の仮想記憶管理手段２００の指示を受信して、仮想マシン２０に対するメモリページの割り当て変更処理を、未使用ページ管理テーブル１２１、仮想マシン２０に対応する仮想マシンメモリ管理テーブル１２２及びミッシング発生頻度管理テーブル１４１を基に行う。
【００３２】
そして、仮想マシンメモリ管理手段１２０は、メモリページの割り当て変更処理の結果を、未使用ページ管理テーブル１２１及び仮想マシン２０に対応する仮想マシンメモリ管理テーブル１２２に反映する。
【００３３】
ページ状態受取／反映手段１３０は、仮想マシン２０が具備するページ状態監視／通知手段２１０によって通知される仮想マシン２０上で管理されているメモリページの状態を受信し、未使用ページ管理テーブル１２１及び仮想マシンメモリ管理テーブル１２２に当該メモリページの状態を反映する。
【００３４】
ミッシング発生頻度受取／反映手段１４０は、仮想マシン２０が具備するミッシング発生頻度監視／通知手段２２０によって通知される仮想マシン２０において発生するミッシング処理の発生頻度を受信し、その結果及びミッシング発生頻度管理テーブル１４１を参照し、ホストマシン１０上で動作している全ての仮想マシン２０のミッシング発生頻度について比較を行った結果を、ミッシング発生頻度管理テーブル１４１に反映する。
【００３５】
仮想マシン２０は、タスク２１、仮想記憶管理手段２００、メモリ管理テーブル２０１、ページ状態監視／通知手段２１０、及びミッシング発生頻度監視／通知手段２２０を含んで構成されている。
【００３６】
仮想記憶管理手段２００は、仮想マシン２０の仮想記憶機構を実現する手段であり、ホストマシン１０が具備する仮想マシンメモリ管理手段１２０によって割り当てられたメモリページについて、全てのメモリページの状態を常にメモリ管理テーブル２０１に記録し、タスク２１を含む仮想マシン２０における全てのタスク２１からの主記憶５０へのアクセス処理を、ホストマシン１０が具備する仮想マシンメモリ管理手段１２０に指示する。
【００３７】
ページ状態監視／通知手段２１０は、仮想マシン２０が具備するメモリ管理テーブル２０１を常に監視し、更新があった場合、ホストマシン１０が具備するページ状態受取／反映手段１３０に通知する。
【００３８】
ミッシング発生頻度監視／通知手段２２０は、仮想マシン２０において発生するミッシング処理の発生頻度を常に監視し、ホストマシン１０が具備するミッシング発生頻度受取／反映手段１４０に通知する。
【００３９】
図３は、未使用ページ管理テーブル１２１の構成の一例を示している。未使用ページ管理テーブル１２１は、ホストマシン１０上で動作する全ての仮想マシン２０に割り当てられた全てのメモリページのうち、各仮想マシン２０上で未使用ページとして管理されているページについての情報を格納する。
【００４０】
すなわち、未使用ページ管理テーブル１２１には、ホストマシン１０の物理アドレス１２１Ａ、メモリページが割り当てられている仮想マシン２０を識別する仮想マシン番号１２１Ｂ、メモリページが割り当てられている仮想マシン２０の物理アドレス１２１Ｃ及び未使用ページが、対応する仮想マシン２０とは異なる他の仮想マシン２０によって使用されているかどうかを識別する使用フラグ１２１Ｄが格納される。
【００４１】
図４は、仮想マシンメモリ管理テーブル１２２の構成の一例を示している。仮想マシンメモリ管理テーブル１２２は、ホストマシン１０上で動作している全ての仮想マシン２０ごとに、それぞれ対応して用意される。仮想マシンメモリ管理テーブル１２２には、各仮想マシン２０上で使用中ページ及びＥページとして管理されている全てのメモリページについて、ホストマシン１０の物理アドレス１２２Ａ、メモリページが割り当てられている仮想マシン２０の物理アドレス１２２Ｂ及びメモリページの状態情報１２２Ｃ（使用中ページであるか又はＥページであるか）が格納される。
【００４２】
図５は、ミッシング発生頻度管理テーブル１４１の構成の一例を示している。ミッシング発生頻度管理テーブル１４１は、ホストマシン１０上で動作している全ての仮想マシン２０ごとに、それぞれ対応して用意される。ミッシング発生頻度管理テーブル１４１には、各仮想マシン２０を識別する仮想マシン番号１４１Ａ、各仮想マシン２０において発生している単位時間あたりのミッシングの発生頻度情報１４１Ｂ及び各仮想マシン２０間でミッシングの発生頻度の比較を行った際の発生頻度の順位情報１４１Ｃが格納される。
【００４３】
図６は、メモリ管理テーブル２０１の構成の一例を示している。メモリ管理テーブル２０１は、仮想マシン２０に割り当てられた全てのメモリページについて、仮想マシン２０の物理アドレス２０１Ａ及び仮想マシン２０のメモリページの状態情報２０１Ｂ（使用中ページであるか、Ｅページであるか又は未使用ページであるか）が格納される。
【００４４】
次に、本実施形態のコンピュータシステム１の動作について説明する。
【００４５】
図７は、本実施形態のコンピュータシステム１のページ状態監視／通知処理を示すフローチャートである。
【００４６】
ページ状態監視／通知手段２１０は、メモリ管理テーブル２０１を常に監視し（ステップＳＰ１）、仮想マシン２０上で管理されているメモリページの状態を、ページ状態受取／反映手段１３０に通知する（ステップＳＰ２）。
【００４７】
図８は、本実施形態のコンピュータシステム１のページ状態受取／反映処理を示すフローチャートである。
【００４８】
ページ状態受取／反映手段１３０は、ページ状態監視／通知手段２１０によって通知される仮想マシン２０上で管理されているメモリページの状態を受信する（ステップＳＰ１１）。続いて、ページ状態受取／反映手段１３０は、新たに未使用ページに状態が遷移したメモリページがあるか否かをチェックする（ステップＳＰ１２）。そして、ページ状態受取／反映手段１３０は、新たに未使用ページに状態が遷移したメモリページがない場合（ステップＳＰ１２：ＮＯ）、ステップＳＰ１７に進む。
【００４９】
これに対して、ページ状態受取／反映手段１３０は、新たに未使用ページに状態が遷移したメモリページがある場合（ステップＳＰ１２：ＹＥＳ）、仮想マシン２０に対応する仮想マシンメモリ管理テーブル１２２から、当該メモリページに関するエントリを削除する（ステップＳＰ１３）。
【００５０】
続いて、ページ状態受取／反映手段１３０は、仮想マシン２０に対応する仮想マシンメモリ管理テーブル１２２をサーチし、当該メモリページに関するエントリが既に存在するか否かをチェックする（ステップＳＰ１４）。そして、ページ状態受取／反映手段１３０は、仮想マシンメモリ管理テーブル１２２において、当該メモリページに関するエントリが既に存在する場合（ステップＳＰ１４：ＹＥＳ）、当該メモリページに関するエントリに対し、使用フラグ１２１Ｄを「０」に変更する（ステップＳＰ１５）。これに対して、仮想マシンメモリ管理テーブル１２２において、当該メモリページに関するエントリが存在しない場合（ステップＳＰ１４：ＮＯ）、ステップＳＰ１６に進む。
【００５１】
続いて、ページ状態受取／反映手段１３０は、未使用ページ管理テーブル１２１に、当該メモリページのエントリを追加し、当該メモリページの、ホストマシン１０におけるホストマシン側物理アドレス１２１Ａ、仮想マシン２０に割り当てられているメモリページであることを区別する仮想マシン番号１２１Ｂ及び仮想マシン２０における仮想マシン側物理アドレス１２１Ｃを格納すると共に、当該メモリページの使用フラグ１２１Ｄを「０」として格納する（ステップＳＰ１６）。
【００５２】
続いて、ページ状態受取／反映手段１３０は、それまで未使用ページだったが未使用ページ以外の状態に遷移したメモリページがあるか否かをチェックする（ステップＳＰ１７）。そして、ページ状態受取／反映手段１３０は、それまで未使用ページだったが未使用ページ以外の状態に遷移したメモリページがない場合（ステップＳＰ１７：ＮＯ）、ページ状態受取／反映処理を終了する（ステップＳＰ２０）。
【００５３】
これに対して、ページ状態受取／反映手段１３０は、それまで未使用ページだったが未使用ページ以外の状態に遷移したメモリページがある場合（ステップＳＰ１７：ＹＥＳ）、未使用ページ管理テーブル１２１の、当該メモリページに関するエントリを削除する（ステップＳＰ１８）。続いて、ページ状態受取／反映手段１３０は、仮想マシン２０に対応する仮想マシンメモリ管理テーブル１２２に当該メモリページのエントリを追加し、当該メモリページの、ホストマシン１０におけるホストマシン側物理アドレス１２２Ａ、仮想マシン２０における仮想マシン側物理アドレス１２２Ｂ及びメモリページの状態情報１２２Ｃを格納し（ステップＳＰ１９）、その後、ページ状態受取／反映処理を終了する（ステップＳＰ２０）。
【００５４】
図９は、本実施形態のコンピュータシステム１のミッシング発生頻度監視／通知処理を示すフローチャートである。
【００５５】
ミッシング発生頻度監視／通知手段２２０は、仮想マシン２０における単位時間あたりのミッシング処理の発生頻度を常に監視し（ステップＳＰ２１）、ミッシング発生頻度受取／反映手段１４０に通知する（ステップＳＰ２２）。
【００５６】
図１０は、本実施形態のコンピュータシステム１のミッシング発生頻度受取／反映処理を示すフローチャートである。
【００５７】
ミッシング発生頻度受取／反映手段１４０は、ミッシング発生頻度監視／通知手段２２０によって通知される仮想マシン２０における単位時間あたりのミッシング発生頻度を受信する（ステップＳＰ３１）。続いて、ミッシング発生頻度受取／反映手段１４０は、受信したミッシング発生頻度を、ミッシング発生頻度管理テーブル１４１の仮想マシン２０に対応するエントリに格納する（ステップＳＰ３２）。
【００５８】
その際、ミッシング発生頻度受取／反映手段１４０は、全てのエントリの単位時間あたりのミッシング発生頻度情報１４１Ｂを比較し（ステップＳＰ３３）、各仮想マシン間のミッシング発生頻度の順位情報１４１Ｃに変動があるか否かをチェックする（ステップＳＰ３４）。そして、ミッシング発生頻度受取／反映手段１４０は、各仮想マシン間のミッシング発生頻度の順位情報１４１Ｃに変動がない場合（ステップＳＰ３４：ＮＯ）、ミッシング発生頻度受取／反映処理を終了する（ステップＳＰ３６）。
【００５９】
これに対して、ミッシング発生頻度受取／反映手段１４０は、各仮想マシン間のミッシング発生頻度の順位情報１４１Ｃに変動がある場合（ステップＳＰ３４：ＹＥＳ）、変動のあったエントリについて、各仮想マシン間のミッシング発生頻度の順位情報１４１Ｃを更新し（ステップＳＰ３５）、その後、ミッシング発生頻度受取／反映処理を終了する（ステップＳＰ３６）。
【００６０】
図１１は、本実施形態のコンピュータシステム１の仮想記憶管理処理を示すフローチャートである。
【００６１】
仮想記憶管理手段２００は、タスク２１においてメモリページの割当て要求があった場合、メモリ管理テーブル２０１を確認し（ステップＳＰ４１）、未使用ページが存在するか否かをチェックする（ステップＳＰ４２）。また、仮想記憶管理手段２００は、未使用ページが存在しない場合（ＳＰ４２：ＮＯ）、Ｅページが存在するか否かをチェックする（ステップＳＰ４３）。
【００６２】
そして、仮想記憶管理手段２００は、未使用ページが存在する場合（ＳＰ４２：ＹＥＳ）、又はＥページが存在する場合（ＳＰ４３：ＹＥＳ）、メモリページを割り当てた結果、仮想マシン２０上で管理されている使用中ページの総量が、仮想マシン２０に対して定められているメモリ割り当て量を超えるか否かをチェックする（ステップＳＰ４４）。
【００６３】
そして、仮想記憶管理手段２００は、使用中ページの総量がメモリ割り当て量を超える場合（ＳＰ４４：ＹＥＳ）、又はステップＳＰ４３においてＥページが存在しない場合（ＳＰ４３：ＮＯ）、メモリページの割り当てに失敗したことをタスク２１に通知し（ステップＳＰ４５）、その後、仮想記憶管理処理を終了する（ステップＳＰ４９）。
【００６４】
これに対して、仮想記憶管理手段２００は、使用中ページの総量がメモリ割り当て量を超えない場合（ＳＰ４４：ＮＯ）、未使用ページ又はＥページの割当てを、仮想マシンメモリ管理手段１２０に指示する（ステップＳＰ４６）。続いて、仮想記憶管理手段２００は、仮想マシンメモリ管理手段１２０から割当てを完了した旨の割当て通知を受信し（ステップＳＰ４７）、メモリ管理テーブル２０１の割り当てられたページに関するエントリについて、メモリページの状態を使用中ページに変更し（ステップＳＰ４８）、その後、仮想記憶管理処理を終了する（ステップＳＰ４９）。
【００６５】
ただし、本実施形態においては、後述の通り、仮想マシンメモリ管理手段１２０によって割り当てられるページは、仮想記憶管理手段２００が割当てを依頼したページとは必ずしも一致しない。これは、仮想マシン２０からのメモリページの割当て要求に先立ち、予め割り当てるメモリページに関して、ホストマシン１０と仮想マシン２０の間で折衝を行うことにより解決することができる。
【００６６】
図１２及び図１３は、本実施形態のコンピュータシステム１の仮想マシンメモリ管理処理を示すフローチャートである。
【００６７】
仮想マシンメモリ管理手段１２０は、仮想記憶管理手段２００からメモリページの割当て指示を受信した場合、当該メモリページが仮想マシン２０上で未使用ページとして管理されているか否かをチェックする（ステップＳＰ５１）。そして、仮想マシンメモリ管理手段１２０は、当該メモリページが仮想マシン２０上で未使用ページとして管理されている場合（ステップＳＰ５１：ＹＥＳ）、未使用ページ管理テーブル１２１の当該メモリページのエントリを参照する（ステップＳＰ５２）。
【００６８】
続いて、仮想マシンメモリ管理手段１２０は、未使用ページ管理テーブル１２１の当該メモリページのエントリの使用フラグ１２１Ｄが「０」（未使用ページが、対応する仮想マシン２０によって使用されていることを示す）であるか否かをチェックする（ステップＳＰ５３）。そして、仮想マシンメモリ管理手段１２０は、当該メモリページのエントリの使用フラグ１２１Ｄが「０」である場合（ステップＳＰ５３：ＹＥＳ）、当該メモリページをそのまま割り当て、仮想記憶管理手段２００に割当て通知を送信し（ステップＳＰ５４）、その後、仮想マシンメモリ管理処理を終了する（ステップＳＰ６７）。
【００６９】
これに対して、仮想マシンメモリ管理手段１２０は、当該メモリページのエントリの使用フラグ１２１Ｄが「０」でない場合（ステップＳＰ５３：ＮＯ）、又はステップＳＰ５１において当該メモリページが仮想マシン２０上で未使用ページとして管理されていない場合（ステップＳＰ５１：ＮＯ）、未使用ページ管理テーブル１２１を確認し（ステップＳＰ５５）、未使用ページ管理テーブル１２１の使用フラグ１２１Ｄが「０」のメモリページが存在するか否かをチェックする（ステップＳＰ５６）。
【００７０】
そして、仮想マシンメモリ管理手段１２０は、未使用ページ管理テーブル１２１の使用フラグ１２１Ｄが「０」のメモリページが存在する場合（ステップＳＰ５６：ＹＥＳ）、当該メモリページを割当て、仮想記憶管理手段２００に割当て通知を送信する（ステップＳＰ５７）。
【００７１】
続いて、仮想マシンメモリ管理手段１２０は、未使用ページ管理テーブル１２１の当該メモリページのエントリについて、使用フラグ１２１Ｄを「１」（未使用ページが、対応する仮想マシン２０とは異なる他の仮想マシン２０によって使用されていることを示す）に変更し（ステップＳＰ５８）、その後、仮想マシンメモリ管理処理を終了する（ステップＳＰ６７）。
【００７２】
そして、仮想マシンメモリ管理手段１２０は、未使用ページ管理テーブル１２１の使用フラグ１２１Ｄが「０」のメモリページが存在しない場合（ステップＳＰ５６：ＮＯ）、図１３に示すＥページ奪取処理を行う。
【００７３】
すなわち、仮想マシンメモリ管理手段１２０は、ミッシング発生頻度管理テーブル１４１を参照し、ミッシング発生頻度の低い順に、対応する仮想マシンメモリ管理テーブルを確認し、最初に発見されたＥページを奪取して仮想マシン２０に割り当てる。
【００７４】
具体的に、仮想マシンメモリ管理手段１２０は、ミッシング発生頻度管理テーブル１４１を参照し、ミッシング発生頻度の最も低い仮想マシン２０を特定する（ステップＳＰ５９）。続いて、仮想マシンメモリ管理手段１２０は、当該仮想マシン２０に対応する対応する仮想マシンメモリ管理テーブル１２２を確認し（ステップＳＰ６０）、メモリページの状態情報１２２ＣがＥページを示しているメモリページが存在するか否かをチェックする（ステップＳＰ６１）。
【００７５】
そして、仮想マシンメモリ管理手段１２０は、メモリページの状態情報１２２ＣがＥページを示しているメモリページが存在しない場合（ステップＳＰ６１：ＮＯ）、ミッシング発生頻度管理テーブル１４１を参照し、ミッシング発生頻度が次に低い仮想マシン２０を特定し（ステップＳＰ６２）、ステップＳＰ６０に戻る。
【００７６】
これに対して、仮想マシンメモリ管理手段１２０は、メモリページの状態情報１２２ＣがＥページを示しているメモリページが存在する場合（ステップＳＰ６１：ＹＥＳ）、当該Ｅページを奪取して仮想マシン２０に割り当て、仮想記憶管理手段２００に割当て通知を送信する（ステップＳＰ６３）。
【００７７】
その際、仮想マシンメモリ管理手段１２０は、Ｅページが奪取された仮想マシン２０の仮想記憶管理手段２００に対し、Ｅページが未使用ページとなったことを通知し（ステップＳＰ６４）、仮想マシンメモリ管理テーブル１２２の、当該メモリページのエントリを削除する（ステップＳＰ６５）。
【００７８】
続いて、仮想マシンメモリ管理手段１２０は、未使用ページ管理テーブル１２１に当該メモリページのエントリを追加し、当該メモリページの、ホストマシン１０におけるホストマシン側物理アドレス１２１Ａ、Ｅページが奪取された仮想マシン２０の仮想マシン番号１２１Ｂ、当該仮想マシン２０における仮想マシン側物理アドレス１２１Ｃを格納すると共に、当該メモリページの使用フラグ１２１Ｄを「１」として格納し（ステップＳＰ６６）、その後、仮想マシンメモリ管理処理を終了する（ステップＳＰ６７）。
【００７９】
この場合、上述の通り、仮想マシンメモリ管理手段１２０によって割り当てられたページは、仮想記憶管理手段２００が割当てを指示したページとは異なる。
【００８０】
仮想マシンメモリ管理手段１２０は、仮想記憶管理手段２００からメモリページの割当て指示があった場合、当該メモリページが仮想マシン２０上でＥページとして管理されている場合、当該メモリページが仮想マシン２０上で未使用ページとして管理されている場合に、未使用ページ管理テーブル１２１の当該メモリページのエントリを参照し、使用フラグが「１」であった場合と同様に処理を行う（ステップＳＰ５５〜）。
【００８１】
図１４は、本実施形態のコンピュータシステム１のミッシング解決処理を示すフローチャートである。
【００８２】
仮想記憶管理手段２００は、仮想マシン２０上で動作するタスク２１において、ミッシング処理が発生した場合、当該ページの内容が主記憶５０のメモリ上にＥページとして残されているか否かをチェックする（ステップＳＰ７１）。
【００８３】
そして、仮想記憶管理手段２００は、当該ページの内容が主記憶５０のメモリ上にＥページとして残されている場合（ステップＳＰ７１：ＹＥＳ）、メモリ管理テーブル２０１の当該メモリページの状態を使用中ページに変更する（ステップＳＰ７２）。
【００８４】
続いて、仮想記憶管理手段２００は、仮想マシン２０上で管理されている使用中ページの総量が仮想マシン２０に対して定められているメモリ割当て量を超えるか否かをチェックする（ステップＳＰ７３）。
【００８５】
そして、仮想記憶管理手段２００は、使用中ページの総量が仮想マシン２０に対して定められているメモリ割当て量を超えない場合（ステップＳＰ７３：ＮＯ）、そのまま、ミッシング解決処理を終了する（ステップＳＰ７６）。
【００８６】
これに対して、仮想記憶管理手段２００は、使用中ページの総量が仮想マシン２０に対して定められているメモリ割当て量を超える場合（ステップＳＰ７３：ＹＥＳ）、当該割り当て量を超えた分の使用中ページについて、ページアウト処理を行い（ステップＳＰ７４）、その後、ミッシング解決処理を終了する（ステップＳＰ７６）。
【００８７】
一方、仮想記憶管理手段２００は、当該ページの内容が主記憶５０のメモリ上にＥページとして残されていない場合（ステップＳＰ７１：ＮＯ）、ページイン処理を行ってミッシングを解決しその後、ミッシング解決処理を終了する（ステップＳＰ７６）。
【００８８】
このようにして、本実施形態のコンピュータシステム１は、仮想マシン２０上で管理しているメモリページの状態をホストマシン１０上でも管理しており、仮想マシン２０からメモリページ割当て指示を受信したときに、割り当てるべきメモリページが、未使用ページではない場合、複数の仮想マシン２０にそれぞれ割り当てられているページから、未使用ページ又はＥページを選択してメモリページ割当て指示を送信した仮想マシン２０に割り当てる。
【００８９】
従って、同一ホストマシン１０上で複数の仮想マシン２０が動作しているコンピュータシステム１において、仮想マシン２０上でミッシングを解決する必要が生じた場合において、ページインの発生を抑制することができると共に、改めてメモリページが余剰のメモリページとして仮想記憶空間から切り離されるのを待つことなく、複数の仮想マシン２０の論理区画間で柔軟にリソースの割り当てを変更することができる。
【００９０】
また、本実施形態のコンピュータシステム１は、仮想マシン２０上でミッシングを解決する必要が生じた場合において、ページインの発生を抑制できることに加えて、仮想マシン２０上で管理されている使用中ページの総量が、仮想マシン２０に対して定められているメモリ割り当て量を超えるか否かをチェックするため、各仮想マシン２０間でメモリページの割当てを変更した場合であっても、各仮想マシン２０に対して設定されたメモリの割当て量を保護することができる。従って、同一ホストマシン１０上で複数の仮想マシン２０が動作しているコンピュータシステム１において、複数の仮想マシン２０の論理区画間でリソースの割り当てを変更した場合であっても、仮想マシン２０の性能を安定させることができる。
【００９１】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００９２】
（付記１）複数の仮想マシンを同時に自己の装置上で動作させることが可能なコンピュータ装置であって、各前記仮想マシンにメモリリソースを配分し、配分した前記メモリリソースの割り当て及び切り離しを行う仮想マシンメモリ管理部を備え、前記仮想マシンメモリ管理部は、前記メモリリソースが、配分先の前記仮想マシンの仮想記憶空間に割り当てた状態の使用中リソース、配分先の前記仮想マシンの仮想記憶空間から切り離されているが、切り離し前の記憶内容を保持している内容記憶リソース、それ以外の状態である未使用リソースのいずれに該当するかを管理するテーブルを備えており、所定の仮想マシンからメモリリソース割当て指示を受信したときに、前記所定の仮想マシン用に配分した前記メモリリソースに前記未使用リソースが存在しない場合、複数の前記仮想マシンにそれぞれ配分した前記メモリリソースから、前記未使用メモリリソース又は前記内容記憶メモリリソースを選択して前記所定の仮想マシンに割り当てることを特徴とするコンピュータ装置である。
【００９３】
（付記２）前記テーブルは、前記仮想マシンごとに設けられ、前記メモリリソースのアドレスに対応づけて、前記仮想記憶空間のアドレスと、該メモリリソースが前記使用中リソースであるか、前記内容記憶リソースであるかを格納する第１のテーブルと、複数の前記仮想マシンに共有して設けられ、前記メモリリソースのアドレスに対応づけて、前記仮想マシンの識別情報と、前記仮想記憶空間のアドレスと、該メモリリソースが配分先以外の前記仮想マシンによって使用されているかどうかを示すフラグとを格納する第２のテーブルとを備え、前記仮想マシンメモリ管理部は、前記未使用リソースが、配分した前記仮想マシンとは異なる他の仮想マシンによって使用されていない場合、当該未使用リソースを前記所定の仮想マシンに割り当てることを特徴とする付記１に記載のコンピュータ装置である。
【００９４】
（付記３）前記仮想マシンの識別情報に対応づけて、該仮想マシンおけるミッシング発生の頻度情報を格納する第３のテーブルを備え、前記仮想マシンメモリ管理部は、前記内容記憶リソースを選択する場合、前記ミッシングの発生の頻度が小さい前記仮想マシンの前記内容記憶リソースを選択することを特徴とする付記２に記載のコンピュータ装置である。
【００９５】
（付記４）複数の仮想マシンを同時に自己の装置上で動作させることが可能なコンピュータ装置のメモリリソース割当て方法であって、仮想マシンメモリ管理部が、各前記仮想マシンにメモリリソースを配分し、配分した前記メモリリソースの割り当て及び切り離しを行う第１のステップと、前記仮想マシンメモリ管理部が、所定の仮想マシンからメモリリソース割当て指示を受信したときに、前記メモリリソースが、配分先の前記仮想マシンの仮想記憶空間に割り当てた状態の使用中リソース、配分先の前記仮想マシンの仮想記憶空間から切り離されているが、切り離し前の記憶内容を保持している内容記憶リソース、それ以外の状態である未使用リソースのいずれに該当するかを管理するテーブルを参照し、前記所定の仮想マシン用に配分した前記メモリリソースに前記未使用リソースが存在しない場合、複数の前記仮想マシンにそれぞれ配分した前記メモリリソースから、前記未使用メモリリソース又は前記内容記憶メモリリソースを選択して前記所定の仮想マシンに割り当てることを特徴とするコンピュータ装置のメモリリソース割当て方法である。
【産業上の利用可能性】
【００９６】
本発明は、同一ホストマシン１０上で、それぞれが異なる業務を担当する複数の仮想マシン２０を同時に運用するといった用途や、同一ホストマシン１０上で、メモリリソースの負荷が高くなる時間帯が異なる複数の仮想マシン２０を、時間帯で停止させずに継続して運用するといった用途にも適用することができる。
【符号の説明】
【００９７】
１……コンピュータシステム、１０……ホストマシン、２０……仮想マシン、２１……タスク、５０……主記憶、１００……仮想記憶管理手段、１１０……仮想マシン管理手段、１２０……仮想マシンメモリ管理手段、１２１……未使用ページ管理テーブル、１２２……仮想マシンメモリ管理テーブル、１３０……ページ状態受取／反映手段、１４０……ミッシング発生頻度受取／反映手段、１４１……ミッシング発生頻度管理テーブル、２００……仮想記憶管理手段、２０１……メモリ管理テーブル、２１０……ページ状態監視／通知手段、２２０……ミッシング発生頻度監視／通知手段
【図１】
0005601516.tif 000002
【図２】
0005601516.tif 000003
【図３】
0005601516.tif 000004
【図４】
0005601516.tif 000005
【図５】
0005601516.tif 000006
【図６】
0005601516.tif 000007
【図７】
0005601516.tif 000008
【図８】
0005601516.tif 000009
【図９】
0005601516.tif 000010
【図１０】
0005601516.tif 000011
【図１１】
0005601516.tif 000012
【図１２】
0005601516.tif 000013
【図１３】
0005601516.tif 000014
【図１４】
0005601516.tif 000015