(57)【要約】  仮想化制御部が複数台の仮想マシンを制御する計算機システムにあって、仮想マシンのメモリ利用状況によらずにメモリを回収すると、キャッシュミスが増加してシステム全体のＩＯ性能が劣化することを解決するために、複数の仮想マシンが有する各ＯＳが利用するメモリ内のキャッシュ領域の使用状況を監視し、その監視結果に基づいて、仮想化制御部は、各ＯＳに割り当て済みであるメモリの割当領域の中から回収対象となるメモリの割当領域を決定し、その回収対象となるメモリの割当領域を現在の割当先であるＯＳから回収する。
2015045046.tif 000002
【特許請求の範囲】
【請求項１】
それぞれにＯＳを有する複数の仮想マシンと、
前記複数の仮想マシンを管理する仮想化制御部と、
前記ＯＳそれぞれが少なくとも一部をキャッシュ領域として利用するメモリと、
前記ＯＳそれぞれによる前記キャッシュ領域の利用状況を監視する監視部と、
を有し、
前記仮想化制御部は、
前記ＯＳそれぞれに対する前記メモリの割当領域を管理し、
前記監視部から通知される前記キャッシュ領域の使用状況に基づいて、前記ＯＳそれぞれに割り当て済みである前記メモリの割当領域の中から回収対象となるメモリの割当領域を決定し、
前記決定した回収対象となるメモリの割当領域を現在の割当先であるＯＳから回収する
ことを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記キャッシュ領域の使用状況は、前記仮想化制御部から前記監視部に対する監視要求を受けた時点での前記キャッシュ領域で使用されているキャッシュ容量および使用されていないキャッシュ容量である
ことを特徴とする計算機システム。
【請求項３】
請求項１に記載の計算機システムであって、
前記仮想化制御部は、
前記メモリの割り当てを必要とするＯＳがあるか否かを判定し、該割り当てを必要とするＯＳがある場合には、前記回収したメモリの割当領域を当該ＯＳに割り当てる
ことを特徴とする計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、
前記メモリの割り当てを必要とするＯＳは、新規仮想マシンの生成時に必要とするメモリ容量を確保できない場合の該新規仮想マシンのＯＳである
ことを特徴とする計算機システム。
【請求項５】
請求項３に記載の計算機システムであって、
前記メモリの割り当てを必要とするＯＳは、前記キャッシュ領域のキャッシュヒット率の変化量が所定の閾値以上に低下した場合の既存仮想マシンのＯＳである
ことを特徴とする計算機システム。
【請求項６】
請求項５に記載の計算機システムであって、
前記監視部は、前記キャッシュヒット率を、前記ＯＳが有するファイル管理部に対して発行されるＩＯサイズの総量と前記ＯＳを有する仮想マシンが有する仮想デバイスに対して発行されるＩＯサイズの総量に基づいて算出する
ことを特徴とする計算機システム。
【請求項７】
請求項５に記載の計算機システムであって、
前記仮想化制御部は、
前記監視部から通知される前記ＯＳそれぞれが利用する前記キャッシュ領域のキャッシュヒット率から、前記変化量を算出する
ことを特徴とする計算機システム。
【請求項８】
請求項１に記載の計算機システムであって、
前記複数の仮想マシンの少なくとも１つに対してＳＬＡ（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ）が設定されている場合には、
前記仮想化制御部は、前記ＳＬＡが設定されている仮想マシンが該ＳＬＡの条件を満足するか否かの判断を前記監視部に要求し、該判断の結果に応じて該仮想マシンが有するＯＳが利用するメモリを前記回収対象となるメモリから外す
ことを特徴とする計算機システム。
【請求項９】
それぞれにＯＳを有する複数の仮想マシンと、
前記複数の仮想マシンを管理する仮想化制御部と、
前記ＯＳそれぞれが少なくとも一部をキャッシュ領域として利用するメモリと、
を有する計算機システムであって、
前記仮想制御部は、
前記仮想マシンそれぞれのＯＳが利用する前記キャッシュ領域として割り当てた領域から前記仮想マシンそれぞれにおける前記メモリの回収可能量を算出する第１のステップと、
前記キャッシュ領域の中で使用されていない容量に基づいて前記仮想マシンそれぞれの回収率を算出する第２のステップと、
必要とされる回収量と前記回収率にしたがって前記仮想マシンそれぞれに対する回収要求量を算出する第３のステップと、
前記仮想マシンそれぞれについて前記回収可能量と前記回収要求量を比較する第４のステップと、
前記回収要求量の方が前記回収可能量より大きい仮想マシンについては該回収可能量を前記メモリの割当領域からの回収量として設定し、前記回収可能量の方が前記回収要求量より大きい仮想マシンについては該回収要求量を前記回収量として設定する第５のステップと、
前記仮想マシンそれぞれに対して前記設定した回収量の回収を要求する第６のステップと、を有し、
前記仮想マシンそれぞれのＯＳは、
前記要求された回収量を前記メモリの割当領域から回収する第７のステップを有する
ことを特徴とする計算機システムのメモリ割当調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機に割り当てるメモリ量の調整方法に関する。
【背景技術】
【０００２】
仮想マシンに割り当てられるメモリの回収／割当を行なってメモリの割当量を調整するメモリバルーニング技術がある。例えば、仮想マシンを提供する仮想化制御部が仮想マシン内でのスワップの発生や仮想マシンの監視結果をもとに、メモリを過回収していることを判断する。さらに、仮想化制御部は、当該仮想マシンからのメモリの回収を取りやめることやメモリの割り当てを実行する技術がある（例えば特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第８３５９４５１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
前述のメモリバルーニング方式では、仮想マシン内でのスワップの発生や仮想マシンの監視結果をもとづいてメモリを回収が行なわれる。しかし、仮想マシンにおけるキャッシュの利用状況を考慮せずにメモリを回収することで、キャッシュミスが増加してＩＯ性能が劣化する場合が想定される。
【課題を解決するための手段】
【０００５】
複数の仮想マシンが有する各ＯＳが利用するメモリ内のキャッシュ領域の使用状況を監視し、その監視結果に基づいて、仮想化制御部は、各ＯＳに割り当て済みであるメモリの割当領域の中から回収対象となるメモリの割当領域を決定し、その回収対象となるメモリの割当領域を現在の割当先であるＯＳから回収する。
【発明の効果】
【０００６】
本発明により、仮想化制御部が管理する複数の仮想マシンによるメモリの使用状況、特にキャッシュの使用状況に応じて、割り当てメモリ量を調整することが可能になる。これにより、システム全体のキャッシュミスを軽減し、ＩＯ性能の劣化を防ぐことができる。
【図面の簡単な説明】
【０００７】
【図１】仮想化制御部が有するメモリプールにおけるメモリの割当例を示す図である。
【図２】本発明に係る計算機システムの全体構成を示す図である。
【図３】図２に示した全体構成の内、仮想化制御部の構成図を示す図である。
【図４】図２に示した全体構成の内、仮想マシンの構成図を示す図である。
【図５】図３に示した、仮想化制御部内のメモリマネージャが有する、調整履歴、メモリ管理テーブル、全体キャッシュ管理テーブル、仮想マシン設定情報、ポリシの具体例を示す図である。
【図６】図４に示した、仮想マシン内の利用状況監視機構が有するキャッシュ管理テーブルの例を示す図である。
【図７】仮想化制御部のメモリマネージャにより実行されるメモリ割当処理のフローチャートを示す図である。
【図８】仮想化制御部のメモリマネージャにより実行される全体キャッシュ管理テーブル作成の処理フローチャートを示す図である。
【図９】仮想マシンの利用状況監視機構により実行される監視処理のフローチャートを示す図である。
【図１０】仮想化制御部のメモリマネージャにより実行されるメモリ回収先および回収量の決定処理のフローチャートを示す図である。
【図１１】仮想化制御部のメモリマネージャにより実行されるメモリ平衡割当処理のフローチャートを示す図である。
【図１２】仮想化制御部のアクセス傾向判断機構により実行されるＳＬＡ対応処理のフローチャートを示す図である。
【図１３】仮想マシンの利用状況監視機構（主にファイル監視部）により実行されるＳＬＡ対応処理内の特性判断処理のフローチャートを示す図である。
【発明を実施するための形態】
【０００８】
図面を参照して、本発明の実施の形態に係る実施例の構成および機能等について説明する。
【実施例】
【０００９】
図１は、仮想化制御部が有するメモリプールにおけるメモリの割当例を示した図である。
仮想化制御部は、仮想化制御部が管理する仮想マシンに割り当て可能なメモリをメモリプールとして管理する。
図１の１−ａは、仮想化制御部が管理する仮想マシンである、仮想マシンＡと仮想マシンＢが動作している場合のメモリプールの様子を示す。メモリプールで管理しているメモリの一部を仮想マシンＡと仮想マシンＢに割り当てて割当済メモリとし、仮想マシンに割り当てていない残りの領域を未割当メモリとしている。
図１の１−ｂは、仮想化制御部の管理する仮想マシンである仮想マシンＣを動作させる際の様子を示す。仮想マシンＣを動作させるには、仮想マシンＣに割り当てるメモリが必要になる。この仮想マシンＣに割り当てるメモリの容量を割当要求メモリ量とする。【００１０】
図１の１−ｃは、メモリプールで管理している未割当メモリ量が、１−ｂで要求された割当要求メモリ量に対して不足していることを示す。
図１の１−ｄは、１−ｃで判明した不足分を補うために、仮想マシンＡ、仮想マシンＢに割り当てていたメモリから一部の領域を回収する様子を示す。稼働中の仮想マシンから回収したメモリを未割当メモリに追加することで、メモリプールで管理している未割当メモリ量は１−ｂで要求された割当要求メモリ量を満たすことができる。【００１１】
その一方で、１−ｄにおける稼働中の仮想マシンからのメモリの回収は、システム全体のＩＯ性能の劣化を防ぎつつ行なう必要がある。
一部のＯＳでは、ディスクと比較してアクセス速度の早いメモリを有効に活用するため、未使用のメモリ領域をキャッシュとして使用している。広範な領域にランダムにＩＯを実施する場合はキャッシュの効果は小さいが、局所的な領域にＩＯを発行する場合はキャッシュの効果は大きくなる。【００１２】
仮想マシン上では種々の作業が実施され、ある作業は広範な領域にランダムにＩＯを発行し、別の作業は局所的な領域にＩＯを発行する。つまり、仮想マシンで実施している作業によってキャッシュの使用状況が異なる。
そこで、広範な領域にランダムにＩＯを発行するような、キャッシュを有効活用していない仮想マシンからメモリを多めに回収して、仮想マシンが使用するキャッシュ容量を小さくする。一方で、局所的な領域にＩＯを発行するような、キャッシュを有効活用している仮想マシンからのメモリの回収量を少なめにする。このようにして、仮想マシンが使用するキャッシュ容量を減らさないことで、無作為にメモリを回収する場合と比較して、システム全体のキャッシュミスを軽減し、ＩＯ性能の劣化を防ぐことができる。【００１３】
本実施例により、仮想化制御部は、仮想マシンにおけるキャッシュの使用状況に基づいてメモリを回収することができる。その結果、ＩＯ性能の劣化を防ぎつつ、仮想マシンにメモリを割り当てることができる。
例えば、マルチテナント環境を構築する場合、各テナントにおけるＩＯ性能の劣化を防ぎつつ、オーバコミットしたメモリを割り当てることが可能となり、テナントプロバイダにとってのコストパフォーマンスを向上させることができる。【００１４】
図２に、本実施例に係る計算機システムの全体構成を示す。計算機システムは、物理リソース２０１、仮想化制御部２０２および１台以上の仮想マシン２０３で構成される。
物理リソース２０１は、ＣＰＵ２１１、メモリ２１２およびデバイス２１３を有する。この物理リソース２０１は、一つの筐体に格納されていても、複数の筐体に格納されていても構わない。【００１５】
仮想化制御部２０２は、管理している仮想マシン２０３に物理リソースの割り当てを行なう機構で、ハイパーバイザに対応するものである。例えば、仮想化制御部２０２は、仮想マシン２０３にメモリの割当を行なう機構であるメモリマネージャ２２１を有する。【００１６】
仮想マシン２０３は、仮想化制御部２０２から提供されるリソースである仮想ＣＰＵ２３１、仮想メモリ２３２および仮想デバイス２３３を有する。これらは、仮想化制御部２０２でエミュレートされたリソースでもよいし、仮想化制御部２０２の仲介により物理リソース２０１が直接割り当てられてもよい。仮想マシン２０３ではＯＳ２４１が稼働する。ＯＳ２４１は、メモリ管理機構２５２を有し、ＯＳ２４１に割り当てられた仮想メモリ２３２を管理する。【００１７】
ＯＳ２４１上で実行されたＩＯは、ファイル管理機構２５４を介して仮想デバイス２３３に発行される。ＯＳは、一度デバイスに対して発行したＩＯの結果を、ＯＳが認識する仮想メモリ２３２の内、使用していない領域に保存する。このようにデータの一時格納に用いられる仮想メモリの領域をキャッシュと呼ぶ。仮想メモリはこのキャッシュ用途以外に、例えばＯＳやＯＳ上で稼働するアプリケーションが使用する情報の格納先として利用される。【００１８】
データをキャッシュすることで、次回以降の当該デバイス領域へのＩＯは、デバイスにアクセスすることなく、キャッシュにアクセスすることで実施可能となる。メモリのアクセス応答速度はデバイスの応答速度よりも早いため、ＩＯがキャッシュにヒットする程ＯＳのＩＯ性能は向上する。ＯＳは、ＩＯがキャッシュにヒットする確率を上げるために、メモリ空き領域の殆どの領域をキャッシュとして使用する。【００１９】
ＯＳ上で稼働するワークロードによってＩＯがキャッシュにヒットする確率は異なる。広範な領域にランダムにアクセスするワークロードの場合、ＩＯはキャッシュにヒットし難く、局所的な領域にアクセスするワークロードの場合、ＩＯはキャッシュにヒットしやすい。一方で、上記のようにキャッシュ用途以外に利用される仮想メモリの領域はほぼ変動しにくい性質であることも考え合わせると割り当てられるメモリ領域は大きい程、ＯＳがキャッシュとして使用できる領域は拡大することになる。【００２０】
以上より、前者のワークロードが稼働しているＯＳよりも後者のワークロードが稼働しているＯＳにメモリを多量に割当てることで、前者のＯＳよりも後者のＯＳに多量のキャッシュが割当たることとなり、システム全体のＩＯ性能は向上する。
ＯＳ２４１には、仮想メモリ２３２の一部領域であるキャッシュの使用状況やファイルアクセス状況を監視する機構である利用状況監視機構２５１が格納される。【００２１】
また、仮想マシン２０３は、仮想化制御部２０２からキャッシュの利用状況監視要求を受けると、利用状況監視機構２５１によりファイル管理機構２５４からキャッシュの利用状況を取得し、仮想化制御部２０２のメモリマネージャ２２１に通知する。なお、この利用状況監視処理は、監視要求によらず定期的に実施されてもよい。【００２２】
メモリマネージャ２２１は、仮想化制御部２０２が管理する複数の仮想マシン２０３から通知されるキャッシュの利用状況を集約し、仮想マシン設定情報２２３に格納されている最低キャッシュ量の情報と照らし合わせの上、キャッシュを有効に利用していない仮想マシンから優先的にメモリを回収する。【００２３】
例えば、仮想化制御部２０２は、新規の仮想マシンの起動等でメモリが必要となると、メモリプールの未割当領域から必要量のメモリを確保する。未割当領域の容量が必要量を満たさない場合、仮想マシン２０３のＯＳ２４１が有するバルーンドライバ２５３を介して、稼働中の仮想マシン２０３からメモリを回収する。仮想化制御部２０２は、メモリを回収する際に、仮想マシン２０３のキャッシュの利用状況を確認し、メモリの回収対象となる仮想マシンおよび各仮想マシンに対するメモリの回収量を決定する。【００２４】
なお、仮想マシン設定情報２２３にファイルタイプが設定されている場合、アクセス傾向判断機構２２２が仮想マシン２０３にファイルアクセス傾向監視要求を発行する。仮想マシン２０３は、利用状況監視機構２５１により、仮想マシン２０３におけるファイルアクセスを監視する。条件を満たすアクセスが発生した場合、その結果を仮想化制御部２０２に通知する。仮想化制御部２０２は、その結果に基づきメモリの回収処理を制御する。【００２５】
図３に、仮想化制御部２０２の構成を示す。
仮想化制御部２０２は、メモリマネージャ２２１、アクセス傾向判断機構２２２および仮想マシン設定情報２２３を有する。【００２６】
メモリマネージャ２２１は、仮想マシン通信部Ａ３０１、割当調整部３０２、回収部３０３、割当部３０４、テーブル操作部３０５、メモリプール３０６、メモリ管理テーブル３０７、全体キャッシュ管理テーブル３０８および調整履歴３０９を有する。
アクセス傾向判断機構２２２は、仮想マシン通信部Ｂ３１１、特性判断部３１２およびポリシ３１３を有する。【００２７】
図４に、仮想マシン２０３の構成を示す。
仮想マシン２０３は、仮想ＣＰＵ２３１、仮想メモリ２３２、仮想デバイス２３３およびＯＳ２４１を有する。【００２８】
ＯＳ２４１は、利用状況監視機構２５１、メモリ管理機構２５２、バルーンドライバ２５３およびファイル管理機構２５４を有する。利用状況監視機構２５１には、ヒット率算出部４０１、キャッシュ監視部４０２、ファイル監視部４０３、キャッシュ管理テーブル４０４、ＩＯ監視部４０５および仮想化制御部通信部４０６が格納される。【００２９】
図５に、仮想化制御部２０２において、メモリマネージャ２２１が有する、調整履歴３０９、メモリ管理テーブル３０７および全体キャッシュ管理テーブル３０８、仮想マシン設定情報２２３、アクセス傾向判断機構２２２が有するポリシ３１３、それぞれの具体例を示す。【００３０】
調整履歴３０９には、仮想化制御部２０２が管理している仮想マシンに対して、メモリ割当量の調整を行った履歴情報が格納されている。メモリ割当量の調整を行った時刻を５１１に、メモリ割当量の調整を行った仮想マシンの識別子であるマシンＩＤを５１２に、メモリ割当量の調整量を５１３に、それぞれ格納する。ここで、その調整量の符号について、正の値の場合はメモリの割当を行ったことを、負の値の場合はメモリの回収を行ったことを示す。例えば、図中の５１０は、時刻１３７３５２９５２２に、マシンＡで識別される仮想マシンからサイズ３０７２（ただし負）のメモリを回収したことを示す。【００３１】
メモリ管理テーブル３０７には、仮想化制御部２０２が管理しているメモリプール３０６において、その領域の仮想マシンへの割り当て状況を示す情報が格納されている。メモリを割り当てた仮想マシンの識別子であるマシンＩＤを５２１に、５２１で識別される仮想マシンに割り当てたメモリ領域の開始位置を５２２に、その終了位置を５２３に、それぞれ格納する。例えば、図中の５２０は、マシンＡで識別される仮想マシンに、０ｘ００００００から０ｘ０９ｄ７ｆｆまでのメモリ領域を割り当てていることを示す。メモリプール３０６内で仮想マシンに割り当てていない領域は、マシンＩＤ５２１を未使用としてメモリ管理テーブル３０７に格納する。【００３２】
全体キャッシュ管理テーブル３０８には、仮想化制御部２０２が管理している仮想マシンのキャッシュ使用状況を示す情報が格納されている。キャッシュ情報を取得した時刻を５３１に、仮想マシンの識別子であるマシンＩＤを５３２に、アクティブなキャッシュの容量を示すアクティブキャッシュを５３３に、非アクティブなキャッシュの容量を示す非アクティブキャッシュを５３４に、キャッシュヒット率を５３５に、それぞれ格納する。例えば、図中の５３０では、時刻１３７３５２９７８０の時点で、マシンＡで識別される仮想マシンにおけるアクティブなキャッシュ容量が９であり、非アクティブなキャッシュ容量が４であり、キャッシュヒット率が５２であることを示す。【００３３】
仮想マシン設定情報２２３には、仮想化制御部２０２が管理している仮想マシンへのＳＬＡ（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ）要求が格納されている。ＳＬＡの保証対象である仮想マシンを識別するマシンＩＤを５４１に、当該仮想マシンに割り当てる最低キャッシュ容量を５４２に、当該仮想マシンに格納されるファイルのタイプを５４３に、それぞれ格納する。例えば、図中の５４０は、マシンＡで識別される仮想マシンに割り当てるキャッシュ量の最低量は４０９６であり、当該仮想マシンに格納されるファイルのタイプはＶＭであることを示す。【００３４】
ポリシ３１３には、ファイルタイプの判断に用いるパラメータと判断時のアクションが格納されている。ポリシの識別に使用するファイルタイプを５５１に、ファイルの特性を判断するパラメータの一つであるファイルサイズを５５２に、ファイルの特性を判断するパラメータの一つであるアクセスパタンを５５３に、条件を満たした場合に実行するアクションの内容を５５４に、それぞれ格納する。例えば、図中の５５０は、ファイルタイプＶＭで特定されるポリシは、ある仮想マシンでサイズ８１９２以上のファイルをオープンした場合、当該仮想マシンを３００秒間メモリ調整対象から外すことを示す。本実施例では、ファイルサイズとアクセスパタンを、ファイル特性を判断するパラメータとしてポリシ３１３に格納しているが、アクセス頻度やアクセスサイズ等の別の値をパラメータとして使用することもできる。【００３５】
図６に、仮想マシン２０３のＯＳ２４１が有する利用状況監視機構２５１に格納される、キャッシュ管理テーブル４０４の具体例を示す。キャッシュ管理テーブル４０４には、仮想マシンのキャッシュ使用状況を示す情報が格納されている。アクティブなキャッシュの容量を示すアクティブキャッシュを６１１に、非アクティブなキャッシュの容量を示す非アクティブキャッシュを６１２に、キャッシュヒット率を６１３に、それぞれ格納する。例えば、図中の６１０には、キャッシュ管理テーブル４０４を有する仮想マシンにおいて、アクティブなキャッシュ容量が９であり、非アクティブなキャッシュ容量が４であり、キャッシュヒット率が５２であることを示す。【００３６】
図７に、仮想化制御部２０２のメモリマネージャ２２１による、メモリ割当処理フローを示す。
仮想化制御部２０２は、新規仮想マシンの作成等のイベント発生を契機に、メモリの確保を必要とする。ここで、その確保が必要となるメモリの容量を、確保要求容量とする。確保要求容量は、例えば作成する新規仮想マシンの設定ファイルから取得することができる。【００３７】
ステップ７０１において、割当部３０４は、メモリ管理テーブル３０７を走査し、マシンＩＤが未使用である領域のサイズを合計して、未割当メモリ容量を取得する。
ステップ７０２において、割当部３０４は、未割当メモリ容量と確保要求容量を比較する。【００３８】
ステップ７０３において、未割当メモリ容量よりも確保要求容量の方が大きい場合、メモリの回収処理が実施される。メモリの回収処理の詳細については、後述する。
先のステップ７０２で確保要求容量が未割当メモリ容量以下の場合、またはステップ７０３の回収処理の実施後に、ステップ７０４において、割当部３０４は、新規に作成する仮想マシンに要求容量のメモリを割り当てる。【００３９】
ステップ７０５において、テーブル操作部３０５は、メモリ管理テーブル３０７の当該割当領域に対応するマシンＩＤ５２１を、メモリを割り当てた新規作成の仮想マシンを識別するＩＤに変更し、また、調整履歴３０９には、現在時刻、メモリを割り当てた仮想マシンのＩＤを格納し、メモリ割当量を調整量として格納する。【００４０】
図８に、仮想化制御部２０２のメモリマネージャ２２１による、全体キャッシュ管理テーブル３０８の作成処理フローを示す。本処理フローは、メモリ割当処理フロー（図７）のステップ７０３でメモリの回収要求が発生した場合に実施される。また、定期的に実施してもよい。【００４１】
ステップ８０１において、テーブル操作部３０５は、現在時刻を取得し、全体キャッシュ管理テーブル３０８の時刻５３１に格納する。
ステップ８０２において、仮想マシン通信部Ａ３０１は、キャッシュ監視要求をメモリ割当調整対象である全仮想マシンに対して発行する。なお、基本的に、仮想化制御部２０２が管理する仮想マシンは、全てメモリ割当調整対象である。ただし、後述するＳＬＡ対応やその他の理由で該当する仮想マシンを調整対象から除外してもよい。【００４２】
ステップ８０３の監視処理は、ステップ８０２で監視要求を受けた仮想マシン２０３が実施する。その処理フローについては後述する。
ステップ８０４において、仮想マシン通信部Ａ３０１は、仮想マシン２０３から監視結果を受信し、テーブル操作部３０５は、受信した監視結果であるアクティブキャッシュ、非アクティブキャッシュ、キャッシュヒット率（すなわち、キャッシュ管理テーブル４０４（図６）の情報）およびこれらの結果を送信した仮想マシンのマシンＩＤを、全体キャッシュ管理テーブル３０８に格納する。【００４３】
ステップ８０５において、仮想マシン通信部Ａ３０１は、メモリ割当調整対象である全仮想マシンから監視結果を受信したか確認し、未受信の仮想マシンがある場合には（受信未完）、ステップ８０４に戻り監視結果の受信を待ち、全ての仮想マシンから結果を受信した場合には（受信完了）、処理を終了する。【００４４】
図９に、仮想マシン２０３の利用状況監視機構２５１による、監視処理フロー（全体キャッシュ管理テーブル３０８の作成処理フロー（図８）のステップ８０３）を示す。
ステップ９０１において、仮想化制御部通信部４０６は、全体キャッシュ管理テーブル３０８の作成処理フロー（図８）のステップ８０２によって、仮想化制御部２０２から発行された監視要求を受信する。【００４５】
ステップ９０２において、ＩＯ監視部４０５は、一定期間、ファイル管理機構２５４へのＩＯ要求および仮想デバイス２３３へのＩＯ要求を監視する。ファイル管理機構２５４が受信したＩＯ要求の内、一部のＩＯはキャッシュにヒットするため仮想デバイス２３３にＩＯ要求を発行することなく、ＩＯ要求結果を取得することができる。このことから、ファイル管理機構２５４と仮想デバイス２３３へのＩＯ要求量の差が、キャッシュヒットしたＩＯ要求量と判断できる。一定期間内にファイル管理機構２５４に対して発行されるＩＯサイズの総量（「ＩＯ１」とする）、および一定期間内に仮想デバイス２３３に対して発行されるＩＯサイズの総量（「ＩＯ２」とする）を取得する。【００４６】
ステップ９０３において、ヒット率算出部４０１は、ステップ９０２で取得した、ファイル管理機構２５４に対して発行されるＩＯサイズの総量ＩＯ１および仮想デバイス２３３に対して発行されるＩＯサイズの総量ＩＯ２を基にキャッシュヒット率を算出する。具体的には、｛（ＩＯ１−ＩＯ２）／ＩＯ１｝によりキャッシュヒット率を算出する。この算出値をキャッシュ管理テーブル４０４（図６）のキャッシュヒット率６１３に格納する。
なお、ステップ９０２、９０３は、ステップ９０１とは非同期にして定期的に実行してもよい。【００４７】
ステップ９０４において、キャッシュ監視部４０２は、ファイル管理機構２５４を監視し、使用されているキャッシュのリスト長を取得し、キャッシュ管理テーブル４０４（図６）にアクティブキャッシュ６１１として格納する。【００４８】
ステップ９０５において、キャッシュ監視部４０２は、ファイル管理機構２５４を監視し、使用されていないキャッシュのリスト長を取得し、キャッシュ管理テーブル４０４（図６）に非アクティブキャッシュ６１２として格納する。
なお、ステップ９０４、９０５で取得する情報は、アクティブキャッシュ、非アクティブキャッシュの使用状況を示す情報であれば、リスト長情報でなくてもよい。【００４９】
ステップ９０６において、仮想化制御部通信部４０６は、作成したキャッシュ管理テーブル４０４の情報を監視結果として仮想化制御部２０２に送信する。【００５０】
図１０に、仮想化制御部２０２のメモリマネージャ２２１による、メモリの回収先および回収量の決定処理フローを示す。
本処理フローは、メモリ割当処理フロー（図７）のステップ７０３で実施される。また、全体キャッシュ管理テーブル３０８の作成処理（図８）が、このステップ７０３のメモリの回収要求を契機に実施される場合には、本処理は全体キャッシュ管理テーブル３０８の作成処理の実施後に実施される。【００５１】
ステップ１００１において、回収部３０３は、仮想マシン設定情報２２３の最低キャッシュ量５４２および全体キャッシュ管理テーブル３０８のアクティブキャッシュ５３３と非アクティブキャッシュ５３４を確認し、メモリ割当調整対象である各仮想マシンのメモリの回収可能量を算出する。具体的には、｛（メモリの回収可能量）＝（アクティブキャッシュと非アクティブキャッシュから算出される総キャッシュ量）−（最低キャッシュ量）｝により、回収可能なメモリ量を算出する。【００５２】
ステップ１００２において、回収部３０３は、全体キャッシュ管理テーブル３０８に格納されている時刻５３１を確認し、直近の時刻に登録された全仮想マシンの非アクティブキャッシュを取得して、メモリの回収率を算出する。具体例として、仮想マシンＡの非アクティブリスト長が６、仮想マシンＢの非アクティブリスト長が１２である場合には、仮想マシンＡと仮想マシンＢから、メモリの回収率として、６：１２＝１：２の割合でメモリを回収することになる。【００５３】
ステップ１００３において、回収部３０３は、ステップ１００２で算出したメモリ割当調整対象である各仮想マシンのメモリの回収率に従って、メモリの回収要求量を算出する。上記の具体例では、３ＧＢのメモリの回収が必要な場合、仮想マシンＡと仮想マシンＢの回収率１：２から、仮想マシンＡへの回収要求量は１ＧＢ、仮想マシンＢへの回収要求量は２ＧＢとなる。【００５４】
ステップ１００４において、回収部３０３は、メモリ割当調整対象である各仮想マシンについて、ステップ１００１で求めたメモリの回収可能量とステップ１００３で求めたメモリの回収要求量を比較する。【００５５】
この比較の結果、回収要求量の方が回収可能量よりも大きい仮想マシンがある場合には、ステップ１００５において、回収部３０３は、当該仮想マシンへの回収量を回収可能量に設定する。上記の具体例では、仮想マシンＢへの回収要求量は２ＧＢであったところ、仮想マシンＢの回収可能量が１．８ＧＢである場合、仮想マシンＢのメモリの回収量を１．８ＧＢに設定する。【００５６】
ステップ１００６において、回収部３０３は、回収要求量算出条件を変更する。メモリ割当調整対象の仮想マシンから、ステップ１００５で回収量の設定を行った仮想マシンを除外し、必要なメモリの回収量からステップ１００５で設定を行ったメモリの回収量を差し引く。上記の具体例では、メモリ割当調整対象から仮想マシンＢを除外し、メモリの回収量を３ＧＢから、仮想マシンＢの回収量１．８ＧＢ分を差し引いて１．２ＧＢに変更する。【００５７】
ステップ１００７において、回収部３０３は、メモリ割当調整対象の仮想マシンが残存しているかを確認する。メモリ割当調整対象の仮想マシンが残存しない場合、その時点において回収量の設定をした仮想マシンに対して回収を要求するために、ステップ１００９へ移行する。他方、メモリ割当調整対象の仮想マシンが残存する場合、ステップ１００６で変更した条件を用いてステップ１００３へ戻り、処理を続行する。【００５８】
ステップ１００４での比較の結果、全ての仮想マシンにおいて回収可能量の方が回収要求量よりも大きい場合には、ステップ１００８において、回収部３０３は、各仮想マシンの回収量を回収要求量に設定する。【００５９】
ステップ１００９において、仮想マシン通信部Ａ３０１は、ステップ１００５またはステップ１００８で設定した回収量によるメモリの回収要求を各仮想マシンに発行する。仮想マシン２０３は、バルーンドライバ２５３を用いて要求された容量のメモリを回収し、仮想化制御部２０２に通知する。メモリ回収処理は、例えば特許文献１に記載された方法を用いることで実施することができる。具体的には、バルーンドライバ２５３は要求された容量のメモリを確保する。これにより確保された領域は、当該仮想マシン上で稼働する他のアプリケーションやキャッシュとして使用されない領域となる。本領域を回収可能領域として、仮想化制御部２０２に通知する。【００６０】
ステップ１０１０において、仮想マシン通信部Ａ３０１は、各仮想マシンから通知される回収済みのメモリ領域情報を受信する。テーブル操作部３０５は、各仮想マシンから回収したメモリ領域について、メモリ管理テーブル３０７の当該回収領域に対応するマシンＩＤを未使用に変更し、また、調整履歴３０９には、現在時刻、仮想マシンのＩＤを格納し、回収量を調整量として格納する。【００６１】
以上により、新規仮想マシンの作成等に必要なメモリの確保要求容量が不足していた場合に、稼働中の仮想マシンからメモリを回収することで必要な確保要求容量を満たすことが可能となる。なお本手法では、各仮想マシンのキャッシュ使用状況に応じてメモリ回収を行なう。よって、稼働中の仮想マシンの性能を確保しつつ、必要性の低いところからのメモリ回収を実現することによってシステム全体の性能への影響を減らすことができる。  【００６２】
図１１に、仮想化制御部２０２のメモリマネージャ２２１による、メモリ平衡割当処理フローを示す。本処理フローは、システム全体のキャッシュヒット率を向上させるため、定期的に実施する。また、ユーザの指定等により実施することもできる。【００６３】
ステップ１１０１において、割当調整部３０２は、全体キャッシュ管理テーブル３０８に格納されている各仮想マシンのキャッシュヒット率の変化量を取得する。この変化量は、過去のキャッシュヒット率から直近のキャッシュヒット率を差し引いて算出する。例えば、全体キャッシュ管理テーブル３０８（図５）の、時刻１３７３５２９４００から１３７３５２９７８０において、仮想マシンＡのキャッシュヒット率の変化量は１５（＝６７−５２）であり、仮想マシンＢのキャッシュヒット率の変化量は１（＝６−５）である。【００６４】
ステップ１１０２において、割当調整部３０２は、ステップ１１０１で取得した各仮想マシンのキャッシュヒット率の変化量の中でその変化量が最大である値と閾値を比較する。変化量が大きい仮想マシンにおいては、以前のメモリ回収により性能が大きく劣化、またはメモリ割当により性能が大きく向上している。つまり、変化量の大きい仮想マシンは、メモリ回収／割当の影響が性能に及びやすい環境といえる。変化量の方が閾値よりも大きい場合は、ステップ１１０３に進み、閾値の方が変化量よりも大きい場合は、本処理フローを終了する。例えば、閾値が１２と設定されていた場合、仮想マシンＡのキャッシュヒット率の変化量（＝１５）は閾値以上のため、ステップ１１０３に進むことになる。閾値は、予め設定されているものとし、ユーザがそれを与えるようにしてもよい。 【００６５】
ステップ１１０３において、割当調整部３０２は、キャッシュヒット率の変化量が閾値以上の仮想マシンについて、ステップ１１０１でキャッシュヒット率の変化量を取得した期間に実施した、メモリの調整量の総量を調整履歴３０９から取得し、前回の回収量とする。例えば、ステップ１１０１でキャッシュヒット率の変化量を取得した期間である時刻１３７３５２９４００から１３７３５２９７８０の間には、調整履歴３０９（図５）から、時刻１３７３５２９５２２において仮想マシンＡから３０７２のメモリを回収していることがわかる。この値３０７２を前回の回収量とする。【００６６】
ステップ１１０４において、回収部３０３は、メモリ回収先および回収量の決定処理フロー（図１０）におけるステップ１００１および１００２を実施し、メモリ割当調整対象である各仮想マシンのメモリの回収可能量および回収率を算出する。【００６７】
ステップ１１０５において、回収部３０３は、ステップ１１０３で取得した前回の回収量とステップ１１０４で算出したメモリの回収可能量の総量を比較する。前回の回収量の方が回収可能量よりも大きい場合には、ステップ１１０６において回収量を回収可能量に設定し、回収可能量の方が前回の回収量よりも大きい場合には、ステップ１１０７において回収量を前回の回収量に設定する。【００６８】
ステップ１１０８において、回収部３０３は、ステップ１１０４で算出したメモリの回収率と、ステップ１１０６または１１０７で設定した回収量を元に、各仮想マシンに対するメモリの回収要求量を決定する。【００６９】
ステップ１１０９において、仮想マシン通信部Ａ３０１は、メモリ回収先および回収量の決定処理フロー（図１０）のステップ１００９と同じように、メモリの回収要求を各仮想マシンに発行する。
ステップ１１１０において、仮想マシン通信部Ａ３０１は、各仮想マシンから通知される回収済みのメモリ領域情報を受信する。【００７０】
ステップ１１１１において、割当部３０４は、ステップ１１０２でキャッシュヒット率の変化量が閾値以上であった仮想マシンに対して、ステップ１１１０で回収したメモリを割り当てる要求を発行する。
ステップ１１１２において、テーブル操作部３０５は、メモリ管理テーブル３０７において、ステップ１１０９で回収したメモリ領域のマシンＩＤを、ステップ１１１１でメモリを割り当てた仮想マシンＩＤに変更する。調整履歴３０９には、現在時刻、メモリの回収および割当を行った仮想マシンのＩＤを格納し、回収した割当量を調整量として格納する。【００７１】
以上により、キャッシュヒット率の低い仮想マシンから回収したメモリを、キャッシュヒット率の高い仮想マシンに割り当てることが可能となり、システム全体のキャッシュヒット率を向上させることができる。【００７２】
図１２に、仮想化制御部２０２のアクセス傾向判断機構２２２による、ＳＬＡ対応処理フローを示す。
ステップ１２０１において、特性判断部３１２は、仮想マシンの起動時に仮想マシン設定情報２２３に当該仮想マシンのファイルタイプ５４３が設定されている場合、または稼働中の仮想マシンに対するファイルタイプ情報が設定された場合に、当該ファイルタイプにしたがって、ポリシ３１３から対応するファイルサイズ５５２およびアクセスパタン５５３を取得する。仮想マシン通信部Ｂ３１１は、仮想マシン設定情報２２３に格納された仮想マシンＩＤ５４１により特定される仮想マシン２０３に対して、特性判断を要求し、その判断用のパラメータとしてファイルサイズおよびアクセスパタンを送信する。【００７３】
ステップ１２０２において、特性判断要求を受けた仮想マシン２０３は、特性判断処理を実施する。処理フローについては後述する。
ステップ１２０３において、仮想マシン通信部Ｂ３１１は、特性判断処理を行った仮想マシン２０３からの特性判断結果を受信する。【００７４】
ステップ１２０４において、特性判断部３１２は、特性判断結果に基づき、ポリシ３１３を参照しポリシ３１３に記載されたアクション５５４を実施する。例えば、仮想マシンＡがファイルタイプＶＭの特性を満たした場合、仮想マシンＡを３００秒間メモリ割当調整対象から外す。【００７５】
図１３に、仮想マシン２０３の利用状況監視機構２５１（主にファイル監視部４０３）による特性判断処理フロー（ＳＬＡ対応処理フロー（図１２）のステップ１２０２）を示す。
ステップ１３０１において、仮想化制御部通信部４０６は、ＳＬＡ対応処理フロー（図１２）のステップ１２０１にて、仮想化制御部２０２から送信された特性判断要求および特性判断用のパラメータであるファイルサイズおよびアクセスパタンを受信する。
ステップ１３０２において、ファイル監視部４０３は、ファイルアクセスを監視する。【００７６】
ステップ１３０３において、ファイル監視部４０３は、ファイルアクセスが発生すると、当該アクセスが、仮想化制御部２０２から送信されたファイルサイズおよびアクセスパタンの条件を満たすか確認する。条件を満たさない場合は、ステップ１３０２に戻る。条件を満たす場合は、ステップ１３０４において、仮想化制御部通信部４０６は、特性判断結果としてファイル特性を満たしたことを仮想化制御部２０２に通知する。【００７７】
以上により、仮想マシンの特性に応じたメモリ割当量の調整が可能になる。例えば新規ＶＭが稼働したことで、キャッシュアクセス傾向が変わった仮想マシンを想定する。本処理がない場合、新規ＶＭの稼働によるキャッシュヒット率の低下を検知してメモリ回収が行われる。本処理がある場合、キャッシュヒット率の低下は一時的なものと判断し、一定時間キャッシュヒット状況を確認した後にメモリ割当量の調整を行なうことができる。
【符号の説明】
【００７８】
２０１  物理リソース
２０２  仮想化制御部
２０３  仮想マシン
２１１  ＣＰＵ
２１２  メモリ
２１３  デバイス
２２１  メモリマネージャ
２２２  アクセス傾向判断機構
２２３  仮想マシン設定情報
２３１  仮想ＣＰＵ
２３２  仮想メモリ
２３３  仮想デバイス
２４１  ＯＳ
２５１  利用状況監視機構
２５２  メモリ管理機構
２５３  バルーンドライバ
２５４  ファイル管理機能
３０１  仮想マシン通信部Ａ
３０２  割当調整部
３０３  回収部
３０４  割当部
３０５  テーブル操作部
３０６  メモリプール
３０７  メモリ管理テーブル
３０８  全体キャッシュ管理テーブル
３０９  調整履歴
３１１  仮想マシン通信部Ｂ
３１２  特性判断部
３１３  ポリシ
４０１  ヒット率算出部
４０２  キャッシュ監視部
４０３  ファイル監視部
４０４  キャッシュ管理テーブル
４０５  ＩＯ監視部
４０６  仮想化制御部通信部
【図１】
2015045046.tif 000003
【図２】
2015045046.tif 000004
【図３】
2015045046.tif 000005
【図４】
2015045046.tif 000006
【図５】
2015045046.tif 000007
【図６】
2015045046.tif 000008
【図７】
2015045046.tif 000009
【図８】
2015045046.tif 000010
【図９】
2015045046.tif 000011
【図１０】
2015045046.tif 000012
【図１１】
2015045046.tif 000013
【図１２】
2015045046.tif 000014
【図１３】
2015045046.tif 000015
【手続補正書】
【提出日】平成28年11月11日(2016.11.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
それぞれにＯＳを有する複数の仮想マシンと、
前記複数の仮想マシンを管理する仮想化制御部と、
前記ＯＳそれぞれが少なくとも一部をキャッシュ領域として利用するメモリと、
前記ＯＳそれぞれによる前記キャッシュ領域の使用状況を監視する監視部と、
を有し、
前記仮想化制御部は、
前記ＯＳそれぞれに対する前記メモリの割当領域を管理し、
前記監視部に対して前記キャッシュ領域で使用されているキャッシュ容量および使用されていないキャッシュ容量を前記キャッシュ領域の使用状況として通知させる要求を行い、
前記監視部から通知される前記キャッシュ領域の使用状況に基づいて、前記ＯＳそれぞれに割り当て済みである前記メモリの割当領域の中から回収対象となるメモリの割当領域を決定し、
前記決定した回収対象となるメモリの割当領域を現在の割当先であるＯＳから回収する
ことを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記仮想化制御部は、
前記メモリの割り当てを必要とするＯＳがあるか否かを判定し、該割り当てを必要とするＯＳがある場合には、前記回収したメモリの割当領域を当該ＯＳに割り当てる
ことを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記メモリの割り当てを必要とするＯＳは、新規仮想マシンの生成時に必要とするメモリ容量を確保できない場合の該新規仮想マシンのＯＳである
ことを特徴とする計算機システム。
【請求項４】
請求項２に記載の計算機システムであって、
前記メモリの割り当てを必要とするＯＳは、前記キャッシュ領域のキャッシュヒット率の変化量が所定の閾値以上に低下した場合の既存仮想マシンのＯＳである
ことを特徴とする計算機システム。
【請求項５】
請求項４に記載の計算機システムであって、
前記監視部は、前記キャッシュヒット率を、前記ＯＳが有するファイル管理部に対して発行されるＩＯサイズの総量と前記ＯＳを有する仮想マシンが有する仮想デバイスに対して発行されるＩＯサイズの総量に基づいて算出する
ことを特徴とする計算機システム。
【請求項６】
請求項４に記載の計算機システムであって、
前記仮想化制御部は、
前記監視部から通知される前記ＯＳそれぞれが利用する前記キャッシュ領域のキャッシュヒット率から、前記変化量を算出する
ことを特徴とする計算機システム。
【請求項７】
請求項１に記載の計算機システムであって、
前記複数の仮想マシンの少なくとも１つに対してＳＬＡ（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ）が設定されている場合には、
前記仮想化制御部は、前記ＳＬＡが設定されている仮想マシンが該ＳＬＡの条件を満足するか否かの判断を前記監視部に要求し、該判断の結果に応じて該仮想マシンが有するＯＳが利用するメモリを前記回収対象となるメモリから外す
ことを特徴とする計算機システム。
【請求項８】
それぞれにＯＳを有する複数の仮想マシンと、
前記複数の仮想マシンを管理する仮想化制御部と、
前記ＯＳそれぞれが少なくとも一部をキャッシュ領域として利用するメモリと、
を有する計算機システムであって、
前記仮想制御部は、
前記仮想マシンそれぞれのＯＳが利用する前記キャッシュ領域として割り当てた領域から前記仮想マシンそれぞれにおける前記メモリの回収可能量を算出する第１のステップと、
前記キャッシュ領域の中で使用されていない容量に基づいて前記仮想マシンそれぞれの回収率を算出する第２のステップと、
必要とされる回収量と前記回収率にしたがって前記仮想マシンそれぞれに対する回収要求量を算出する第３のステップと、
前記仮想マシンそれぞれについて前記回収可能量と前記回収要求量を比較する第４のステップと、
前記回収要求量の方が前記回収可能量より大きい仮想マシンについては該回収可能量を前記メモリの割当領域からの回収量として設定し、前記回収可能量の方が前記回収要求量より大きい仮想マシンについては該回収要求量を前記回収量として設定する第５のステップと、
前記仮想マシンそれぞれに対して前記設定した回収量の回収を要求する第６のステップと、を有し、
前記仮想マシンそれぞれのＯＳは、
前記要求された回収量を前記メモリの割当領域から回収する第７のステップを有する
ことを特徴とする計算機システムのメモリ割当調整方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
前述のメモリバルーニング方式では、仮想マシン内でのスワップの発生や仮想マシンの監視結果をもとづいてメモリを回収が行なわれる。しかし、仮想マシンにおけるキャッシュの使用状況を考慮せずにメモリを回収することで、キャッシュミスが増加してＩＯ性能が劣化する場合が想定される。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
複数の仮想マシンが有する各ＯＳが使用するメモリ内のキャッシュ領域の使用状況を監視し、その監視結果に基づいて、仮想化制御部は、各ＯＳに割り当て済みであるメモリの割当領域の中から回収対象となるメモリの割当領域を決定し、その回収対象となるメモリの割当領域を現在の割当先であるＯＳから回収する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
【図１】仮想化制御部が有するメモリプールにおけるメモリの割当例を示す図である。
【図２】本発明に係る計算機システムの全体構成を示す図である。
【図３】図２に示した全体構成の内、仮想化制御部の構成図を示す図である。
【図４】図２に示した全体構成の内、仮想マシンの構成図を示す図である。
【図５】図３に示した、仮想化制御部内のメモリマネージャが有する、調整履歴、メモリ管理テーブル、全体キャッシュ管理テーブル、仮想マシン設定情報、ポリシの具体例を示す図である。
【図６】図４に示した、仮想マシン内の使用状況監視機構が有するキャッシュ管理テーブルの例を示す図である。
【図７】仮想化制御部のメモリマネージャにより実行されるメモリ割当処理のフローチャートを示す図である。
【図８】仮想化制御部のメモリマネージャにより実行される全体キャッシュ管理テーブル作成の処理フローチャートを示す図である。
【図９】仮想マシンの使用状況監視機構により実行される監視処理のフローチャートを示す図である。
【図１０】仮想化制御部のメモリマネージャにより実行されるメモリ回収先および回収量の決定処理のフローチャートを示す図である。
【図１１】仮想化制御部のメモリマネージャにより実行されるメモリ平衡割当処理のフローチャートを示す図である。
【図１２】仮想化制御部のアクセス傾向判断機構により実行されるＳＬＡ対応処理のフローチャートを示す図である。
【図１３】仮想マシンの使用状況監視機構（主にファイル監視部）により実行されるＳＬＡ対応処理内の特性判断処理のフローチャートを示す図である。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
ＯＳ２４１上で実行されたＩＯは、ファイル管理機構２５４を介して仮想デバイス２３３に発行される。ＯＳは、一度デバイスに対して発行したＩＯの結果を、ＯＳが認識する仮想メモリ２３２の内、使用していない領域に保存する。このようにデータの一時格納に用いられる仮想メモリの領域をキャッシュと呼ぶ。仮想メモリはこのキャッシュ用途以外に、例えばＯＳやＯＳ上で稼働するアプリケーションが使用する情報の格納先として使用される。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
ＯＳ上で稼働するワークロードによってＩＯがキャッシュにヒットする確率は異なる。広範な領域にランダムにアクセスするワークロードの場合、ＩＯはキャッシュにヒットし難く、局所的な領域にアクセスするワークロードの場合、ＩＯはキャッシュにヒットしやすい。一方で、上記のようにキャッシュ用途以外に使用される仮想メモリの領域はほぼ変動しにくい性質であることも考え合わせると割り当てられるメモリ領域は大きい程、ＯＳがキャッシュとして使用できる領域は拡大することになる。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
以上より、前者のワークロードが稼働しているＯＳよりも後者のワークロードが稼働しているＯＳにメモリを多量に割当てることで、前者のＯＳよりも後者のＯＳに多量のキャッシュが割当たることとなり、システム全体のＩＯ性能は向上する。
ＯＳ２４１には、仮想メモリ２３２の一部領域であるキャッシュの使用状況やファイルアクセス状況を監視する機構である使用状況監視機構２５１が格納される。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
また、仮想マシン２０３は、仮想化制御部２０２からキャッシュの使用状況監視要求を受けると、使用状況監視機構２５１によりファイル管理機構２５４からキャッシュの使用状況を取得し、仮想化制御部２０２のメモリマネージャ２２１に通知する。なお、この使用状況監視処理は、監視要求によらず定期的に実施されてもよい。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００２２
【補正方法】変更
【補正の内容】
【００２２】
メモリマネージャ２２１は、仮想化制御部２０２が管理する複数の仮想マシン２０３から通知されるキャッシュの使用状況を集約し、仮想マシン設定情報２２３に格納されている最低キャッシュ量の情報と照らし合わせの上、キャッシュを有効に使用していない仮想マシンから優先的にメモリを回収する。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
例えば、仮想化制御部２０２は、新規の仮想マシンの起動等でメモリが必要となると、メモリプールの未割当領域から必要量のメモリを確保する。未割当領域の容量が必要量を満たさない場合、仮想マシン２０３のＯＳ２４１が有するバルーンドライバ２５３を介して、稼働中の仮想マシン２０３からメモリを回収する。仮想化制御部２０２は、メモリを回収する際に、仮想マシン２０３のキャッシュの使用状況を確認し、メモリの回収対象となる仮想マシンおよび各仮想マシンに対するメモリの回収量を決定する。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】変更
【補正の内容】
【００２４】
なお、仮想マシン設定情報２２３にファイルタイプが設定されている場合、アクセス傾向判断機構２２２が仮想マシン２０３にファイルアクセス傾向監視要求を発行する。仮想マシン２０３は、使用状況監視機構２５１により、仮想マシン２０３におけるファイルアクセスを監視する。条件を満たすアクセスが発生した場合、その結果を仮想化制御部２０２に通知する。仮想化制御部２０２は、その結果に基づきメモリの回収処理を制御する。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
ＯＳ２４１は、使用状況監視機構２５１、メモリ管理機構２５２、バルーンドライバ２５３およびファイル管理機構２５４を有する。使用状況監視機構２５１には、ヒット率算出部４０１、キャッシュ監視部４０２、ファイル監視部４０３、キャッシュ管理テーブル４０４、ＩＯ監視部４０５および仮想化制御部通信部４０６が格納される。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
図６に、仮想マシン２０３のＯＳ２４１が有する使用状況監視機構２５１に格納される、キャッシュ管理テーブル４０４の具体例を示す。キャッシュ管理テーブル４０４には、仮想マシンのキャッシュ使用状況を示す情報が格納されている。アクティブなキャッシュの容量を示すアクティブキャッシュを６１１に、非アクティブなキャッシュの容量を示す非アクティブキャッシュを６１２に、キャッシュヒット率を６１３に、それぞれ格納する。例えば、図中の６１０には、キャッシュ管理テーブル４０４を有する仮想マシンにおいて、アクティブなキャッシュ容量が９であり、非アクティブなキャッシュ容量が４であり、キャッシュヒット率が５２であることを示す。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】００４４
【補正方法】変更
【補正の内容】
【００４４】
図９に、仮想マシン２０３の使用状況監視機構２５１による、監視処理フロー（全体キャッシュ管理テーブル３０８の作成処理フロー（図８）のステップ８０３）を示す。
ステップ９０１において、仮想化制御部通信部４０６は、全体キャッシュ管理テーブル３０８の作成処理フロー（図８）のステップ８０２によって、仮想化制御部２０２から発行された監視要求を受信する。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】００７５
【補正方法】変更
【補正の内容】
【００７５】
図１３に、仮想マシン２０３の使用状況監視機構２５１（主にファイル監視部４０３）による特性判断処理フロー（ＳＬＡ対応処理フロー（図１２）のステップ１２０２）を示す。
ステップ１３０１において、仮想化制御部通信部４０６は、ＳＬＡ対応処理フロー（図１２）のステップ１２０１にて、仮想化制御部２０２から送信された特性判断要求および特性判断用のパラメータであるファイルサイズおよびアクセスパタンを受信する。
ステップ１３０２において、ファイル監視部４０３は、ファイルアクセスを監視する。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】００７８
【補正方法】変更
【補正の内容】
【００７８】
２０１  物理リソース
２０２  仮想化制御部
２０３  仮想マシン
２１１  ＣＰＵ
２１２  メモリ
２１３  デバイス
２２１  メモリマネージャ
２２２  アクセス傾向判断機構
２２３  仮想マシン設定情報
２３１  仮想ＣＰＵ
２３２  仮想メモリ
２３３  仮想デバイス
２４１  ＯＳ
２５１  使用状況監視機構
２５２  メモリ管理機構
２５３  バルーンドライバ
２５４  ファイル管理機能
３０１  仮想マシン通信部Ａ
３０２  割当調整部
３０３  回収部
３０４  割当部
３０５  テーブル操作部
３０６  メモリプール
３０７  メモリ管理テーブル
３０８  全体キャッシュ管理テーブル
３０９  調整履歴
３１１  仮想マシン通信部Ｂ
３１２  特性判断部
３１３  ポリシ
４０１  ヒット率算出部
４０２  キャッシュ監視部
４０３  ファイル監視部
４０４  キャッシュ管理テーブル
４０５  ＩＯ監視部
４０６  仮想化制御部通信部
【手続補正１７】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2015045046.tif 000016
【手続補正１８】
【補正対象書類名】図面
【補正対象項目名】図４
【補正方法】変更
【補正の内容】
【図４】
2015045046.tif 000017
【国際調査報告】
2015045046.tif 000018
2015045046.tif 000019
2015045046.tif 000020
2015045046.tif 000021