JP5466568B2 - 資源管理方法、資源管理プログラム、および、資源管理装置 - Google Patents

資源管理方法、資源管理プログラム、および、資源管理装置 Download PDF

Info

Publication number
JP5466568B2
JP5466568B2 JP2010100477A JP2010100477A JP5466568B2 JP 5466568 B2 JP5466568 B2 JP 5466568B2 JP 2010100477 A JP2010100477 A JP 2010100477A JP 2010100477 A JP2010100477 A JP 2010100477A JP 5466568 B2 JP5466568 B2 JP 5466568B2
Authority
JP
Japan
Prior art keywords
unit
physical
memory
application
application unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010100477A
Other languages
English (en)
Other versions
JP2010277581A (ja
Inventor
智也 太田
諒蔵 山下
博泰 西山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2010100477A priority Critical patent/JP5466568B2/ja
Publication of JP2010277581A publication Critical patent/JP2010277581A/ja
Application granted granted Critical
Publication of JP5466568B2 publication Critical patent/JP5466568B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Stored Programmes (AREA)

Description

本発明は、資源管理方法、資源管理プログラム、および、資源管理装置の技術に関する。
非特許文献1には、1つの物理計算機を仮想的に分割して、複数の仮想計算機を構築する仮想計算機環境の技術が開示されている。
このような仮想計算機環境が構成される仮想計算機システムでは、メモリやディスク領域、あるいは、CPUやネットワーク装置などの物理資源が、それぞれの仮想計算機に割り当てられ、分割して管理されるため、物理計算機の物理資源の割り当てがアンバランスになってしまうことがある。
例えば、メモリ資源の場合を考えると、各仮想計算機上に空きメモリが分散され、メモリが余っている仮想計算機が存在する一方で、メモリが不足し、オペレーティングシステム(OS)のメモリ管理機構による、メモリページのハードディスクなどの補助記憶装置へのスワップアウトが頻発するという事態が生じる。
また、新たな仮想計算機の立ち上げなどに利用できる、仮想計算機に割り当てられていないメモリが不足するという状況が発生する可能性がある。
非特許文献1には、メモリのアンバランス問題を解決する手段の1つとしてバルーニング技術が開示されている。バルーニング技術では、仮想計算機上で動作するOSにデバイスドライバを配置し、仮想計算機環境からの指示によりデバイスドライバが、OSに対してメモリ割当を要求し、デバイスドライバに割り当てられたメモリ領域を仮想計算機環境へ返却する。これにより返却された領域は、他の仮想計算機への割当が可能となる。
メモリを有効活用する技術は、仮想化環境に限らず重要であり、これまで数多く開示されている。
特許文献1には、OS上の複数のタスク間でメモリを有効活用する技術が開示されている。本技術は、2つのタスクで使用するメモリ領域を同一のメモリ領域にマッピングし、あるタスクではアドレスの上位から、別のタスクではアドレスの下位からメモリを割り当て、空きメモリが不足すると、一方のタスクへメモリ解放要求を出す。この技術では、一方のタスクのメモリ使用量が増えた場合に、他方のメモリ使用量が減少するという関係にある場合は有効である。
特許文献2には、ある処理プログラムAにおいてメモリが不足した場合に、ある別の処理プログラムBに対して空きメモリの解放を要求し、その空きメモリをシステムへ返却し、再度処理プログラムAに対するメモリ割当要求を行うメモリ管理方法が開示されている。
一方、ディスク資源の場合でも、各仮想化計算機上が使用する仮想ディスクに空き領域が分散され、ディスク容量に余裕のある仮想計算機が存在する一方で、ディスク領域が不足し、データの格納が行えなくなる仮想計算機が存在するという事態が生じる。
このような事態を解決するために、これまでに、例えば、VMware社の仮想化ソフトウェア「ESXi」においては、仮想計算機が使用する仮想ディスクの領域を拡張、あるいは、割り当てる物理ディスク容量を削減させる機能が提供されている。
また、ストレージ装置においても、必要に応じて仮想ディスクに物理ディスク領域を追加で割り当てる技術が広く使われている。また、一度割り当てた物理領域を開放し、仮想ディスクを縮小させるための技術が、特許文献3に開示されている。
また、同様の問題は、仮想計算機へのCPU資源の割当、および、ネットワーク資源の割当においても同様に発生する。
特開2005−208785号公報 特開2005−322007号公報 米国特許第20070143563号明細書
Carl A. Waldspurger, Memory Resource Management in VMware ESX Server, OSDI 2002.
前記したように、複数の仮想計算機でそれぞれの物理資源の割り当てがアンバランスになってしまうと、物理資源の利用効率が悪化してしまい、仮想計算機システム全体の処理効率も悪化、あるいは、資源が不足した仮想計算機上のアプリケーションの実行が停止してしまう。
非特許文献1の技術は、メモリが不足した場合、各仮想計算機からメモリを解放する。そのため、メモリ不足の発生を待たねばならず、プログラムのメモリ不足に伴う処理効率の低下が発生してしまう。
また、非特許文献1の技術は、仮想計算機のOS上で動作するアプリケーションが確保しているが、使用していないメモリを解放することができない。
特許文献1の技術は、一方のタスクのメモリ使用量が増えた場合に、他方のタスクのメモリ使用量が減少するという関係にない場合、同時に必要となるメモリが増加する可能性があり、その場合、メモリ不足を引き起こし易くなる。また、複数のタスクに対応できていない。
特許文献2の技術では、メモリ不足が生じた場合のみ、別プログラムのメモリの解放を行う。そのため、別プログラムの負荷が高い場合にメモリ解放を行い、別プログラムの性能を低下させる可能性がある。
仮想計算機に割り当てる仮想ディスクの領域を拡張する場合においても、メモリ資源が不足した場合と同様の問題が起こる。すなわち、物理ディスク資源が不足した場合に、仮想計算機のOS上で動作するアプリケーションが確保しているが、削除あるいは解放可能なディスク領域が存在している場合において、その領域は、管理しているアプリケーション以外からは存在を認識できないため、他の仮想計算機が使用する他の仮想ディスクの拡張に利用することができない。
そこで、本発明は、前記した問題を解決し、複数の仮想計算機を構築する仮想計算機システムにおいて、利用する物理資源の利用効率を高めることを、主な目的とする。
前記課題を解決するために、本発明は、1つ以上の仮想計算機と、その仮想計算機を動作させるためのハイパーバイザ部とを有して構成される仮想計算機環境を物理計算機上に構築するとともに、前記仮想計算機上のOS上で動作するアプリケーション部が使用する計算機資源に対して、前記物理計算機の計算機資源を割り当てる資源管理方法であって、
前記仮想計算機が、割当処理部および前記アプリケーション部を動作させ、
前記アプリケーション部が、前記物理計算機の計算機資源を、前記アプリケーション部が使用する計算機資源として割り当てさせ、
前記割当処理部が、前記アプリケーション部が使用する計算機資源に対して、そのアプリケーション部に割り当て済みの計算機資源が少ないときに、1つ以上の前記仮想計算機でそれぞれ動作している前記各アプリケーション部に対して、前記各アプリケーション部が動作する前記仮想計算機に割り当て済みの計算機資源から、使用されていない計算機資源の解放指示を送信し、
前記アプリケーション部は、前記使用されていない計算機資源の解放指示を受信すると、前記アプリケーション部に割り当てられている計算機資源のうちの前記使用されていない計算機資源を解放するように、前記ハイパーバイザ部に指示することを特徴とする。
その他の手段は、後記する。
本発明によれば、複数の仮想計算機を構築する仮想計算機システムにおいて、利用する物理資源の割当を仮想計算機システム上で実行するアプリケーションから制御することにより、物理資源の利用効率を高めることができる。
本発明の第1実施形態に関する仮想計算機環境が構築される物理計算機を示す構成図である。 本発明の第1実施形態に関する図1とは別の仮想計算機環境が構築される物理計算機を示す構成図である。 本発明の第1実施形態に関する図1および図2で示した各処理部(割当処理部、アプリケーション部、物理メモリ処理部)の詳細を示す構成図である。 本発明の第1実施形態に関するメモリ領域内の物理メモリの状況を示す説明図である。 本発明の第1実施形態に関する処理状況管理テーブルおよびメモリ割当管理テーブルを示す構成図である。 本発明の第1実施形態に関する図1の物理計算機の動作を示すフローチャートである。 本発明の第1実施形態に関する起動初期化部が実行する、メモリ領域の初期化処理を示すフローチャートである。 本発明の第1実施形態に関するアプリケーション部のメモリ領域へのアクセス処理の詳細を示すフローチャートである。 本発明の第1実施形態に関する割当制御部が実行する、能動的なデータ領域の解放要求処理の詳細を示すフローチャートである。 本発明の第2実施形態に関する仮想計算機環境が構築される物理計算機を示す構成図である。 本発明の第2実施形態に関する図10で示した各処理部(割当処理部、アプリケーション部、物理ディスク処理部)の詳細を示す構成図である。 本発明の第2実施形態に関する処理状況管理テーブルおよびディスク領域管理テーブルを示す構成図である。 本発明の第2実施形態に関する図10の物理計算機の動作を示すフローチャートである。 本発明の第2実施形態に関する起動初期化部が実行する、初期化処理を示すフローチャートである。 本発明の第2実施形態に関するアプリケーション部のデータ領域上へのデータの配置処理の詳細を示すフローチャートである。 本発明の第2実施形態に関する割当制御部が実行する、能動的なディスク領域の削除要求処理の詳細を示すフローチャートである。 本発明の第3実施形態に関する各処理部(割当処理部、アプリケーション部、物理CPU処理部、および、物理ネットワーク処理部)の詳細を示す構成図である。 本発明の第3実施形態に関するCPU管理テーブルを示す構成図である。 本発明の第3実施形態に関するネットワーク管理テーブルを示す構成図である。
(第1実施形態、リソースとして、物理メモリを割り当てる)
以下、本発明の第1実施形態を、図面を参照して詳細に説明する。
図1は、仮想計算機環境8が構築される物理計算機9を示す構成図である。図1では、下位層から上位層にむかって接続する矢印を示すことにより、仮想計算機環境8のレイヤモデルを示している。例えば、物理計算機9からハイパーバイザ部81に向かって矢印が記載されているが、この矢印は、下位層(物理計算機9)を利用して、上位層(ハイパーバイザ部81)を構築する旨を示しており、ハイパーバイザ部81は、実際には、物理計算機9の内部(主記憶装置92)に存在する。
以下、物理計算機9上の仮想計算機環境8を示す階層モデルを説明する。最下位層(1)〜最上位層(5)の順に説明する。この階層モデルでは、(n+1)層は、(n)層を利用して、その上に構築される。
階層(1)の物理層(物理計算機9の階層)は、最下位層である。この階層の物理計算機9は、CPU91と、主記憶装置92と、入出力装置93と、通信装置94と、補助記憶装置95と、がバス96で接続されて構成されるコンピュータである。
階層(2)の仮想計算機環境8は、物理計算機9のCPU91が、仮想計算機環境8を構成するためのプログラムを補助記憶装置95から主記憶装置92へと読み込んで、実行することにより構築される。仮想計算機環境8は、1台以上の仮想計算機82を制御するハイパーバイザ部81と、そのハイパーバイザ部81から物理計算機9のリソース(主記憶装置92の物理メモリなど)の割り当てを受けて、おのおの独立に仮想的な計算機として構築される仮想計算機82と、により構成される。ハイパーバイザ部81内の物理メモリ処理部30は、物理計算機9のリソースにアクセスし、その割り当ておよび解放を実行する。
階層(3)のOS83は、仮想計算機82上に構築される。つまり、仮想計算機82ごとに同じまたは異なる種類のOS83を独立に起動することができる。OS83上で起動する割当処理部10は、自ら属する仮想計算機82とは別の仮想計算機82(同じ物理計算機9内の仮想計算機82でもよいし、別の物理計算機9内の仮想計算機82でもよい、また、仮想計算機でなくてもよい)上に構築されているJava(登録商標)VM(Virtual Machine)84(アプリケーション部20)のリソース割り当てを制御する。
階層(4)のJava VM84は、OS83上に構築されるJava プログラムの実行環境である。なお、Java VM84の代わりに、メモリ管理機構を有する他の実行環境を採用してもよい。アプリケーション部20は、自ら属するJava VM84が使用するリソースの割り当ておよび解放を制御する。なお、アプリケーション部20が動作する仮想計算機82の台数は、図1に示す1台に限定されず、同じ物理計算機9内に複数台存在していてもよい。
階層(5)のプログラム実行部85は、Java VM84の実行環境(クラスライブラリなど)を用いて、Java プログラムを実行する。
図2は、図1とは別の仮想計算機環境8が構築される物理計算機9を示す構成図である。図1では、割当処理部10とアプリケーション部20とが、別々の仮想計算機82上に存在していたが、図2では、割当処理部10とアプリケーション部20とが、同じ仮想計算機82上に存在している。つまり、割当処理部10は、自ら属する仮想計算機82上に構築されているJava VM84(アプリケーション部20)のリソース割り当てを制御する。この図2の割当処理部10は、Java VM84中の1つのスレッドとして動作し、所定間隔で実行される。
図3は、図1および図2で示した各処理部(割当処理部10、アプリケーション部20、物理メモリ処理部30)の詳細を示す構成図である。
割当処理部10は、割当制御部11と、状況通知受信部12と、処理状況管理テーブル13と、メモリ割当管理テーブル14と、を含めて構成される。
割当制御部11は、処理状況管理テーブル13およびメモリ割当管理テーブル14にそれぞれ格納されているリソースの使用状況に応じて、リソースの割り当てをJava VM84に指示することで、リソースの使用を効率化する。
状況通知受信部12は、Java VM84におけるリソース(CPU91、主記憶装置92の物理メモリなど)の使用状況(使用量、使用率など)の通知を受ける。
処理状況管理テーブル13には、状況通知受信部12が動作状況通知部21から受信した情報のうちの処理に関する情報(GC(Garbage Collection)処理中か否かなど)が格納される。
メモリ割当管理テーブル14には、状況通知受信部12が動作状況通知部21および物理メモリ状況通知部32から受信した情報(主記憶装置92の物理メモリの使用状況)が格納される。
アプリケーション部20は、動作状況通知部21と、起動初期化部22と、GC制御部23と、メモリ領域25と、を有する。
動作状況通知部21は、状況通知受信部12からの要求に応じて、または、要求が無くても能動的に、自らが所属するJava VM84の状態(メモリ領域25の物理メモリの使用状況や、GC制御部23によるGC処理が実行中か否かという情報など)を、状況通知受信部12に通知する。
起動初期化部22は、Java VM84の起動時に、そのJava VM84(メモリ領域25の割当も含む)の初期化処理を、OSメモリ管理部24に対して実行する。
GC制御部23は、メモリ領域25内の未使用オブジェクトを解放するGC処理の起動を制御する。GC処理は、例えば、mark and sweep方式のガベージコレクションアルゴリズムにより未使用メモリ領域を解放する。もちろん、mark and sweep方式に限定されず、プログラムの実行中に未使用領域を特定可能な任意のガベージコレクション方式をGC処理として適用してもよい。GC処理の起動契機は、例えば、CPU使用率が閾値以下、かつ、メモリの使用位置があらかじめ設定されている判定位置を超えたときである。
OSメモリ管理部24は、OS83内に存在し、ハイパーバイザ部81により割り当てられた主記憶装置92の物理メモリを、OS83上で動作するJava VM84などのプロセスへ割り当てる。しかし、OSメモリ管理部24は、起動初期化部22の初期化処理において、起動初期化部22からの指示により、Java VM84への物理メモリの管理処理(割り当て処理および解放処理、ハードディスク装置などへのスワップアウトなど)が停止される。その代わりに、Java VM84への物理メモリの管理処理は、割当処理部10の割当制御部11からの制御、および、Java VM84からの制御に従って、実行される。
メモリ領域25は、プログラム実行部85のプログラムにより使用されるメモリの領域であり、主記憶装置92から物理メモリが割り当てられる。
物理メモリ処理部30は、物理メモリ管理部31と、物理メモリ状況通知部32と、を備える。
物理メモリ管理部31は、主記憶装置92の物理メモリを所定サイズの領域(メモリページ)に分割して管理する。そして、物理メモリ管理部31は、Java VM84からのメモリ割当要求に応じて割り当てるメモリページを提供するとともに、Java VM84からのメモリ解放要求に応じて指定されたメモリページを解放して、未割当状態に戻す。
物理メモリ状況通知部32は、状況通知受信部12からの要求に応じて、または、要求が無くても能動的に、物理計算機9の状態(主記憶装置92の物理メモリの空き容量など)を、状況通知受信部12に通知する。
図4は、メモリ領域25内の物理メモリの状況を示す説明図である。各メモリ領域25には、その領域の1つめの端点を示す最小位置(最下位アドレスの位置)と、その領域の2つめの端点を示す最大位置(最上位アドレスの位置)と、メモリ領域25内の使用されている位置の内の最上位の位置を示す使用位置と、使用位置が判定位置を超過することによりGC処理を起動させるための判定位置とが、それぞれメモリ領域内の位置を指し示すポインタとして設定されている。
つまり、メモリ領域25は、最小位置から最大位置までの連続した領域として定義されている。そして、メモリ領域25の使用位置は、最小位置(左端)から始まって、オブジェクトが割り当てられるたびに、そのオブジェクト分だけ最大位置(右端)に向かって、移動する。つまり、次に割り当てられるオブジェクトは、使用位置を始点とするメモリ領域に配置される。
図4(a)は、3つのアプリケーション(アプリID=A1,A2,A3)それぞれが使用する3つのメモリ領域25を例示している。
アプリID=A1のメモリ領域25には、6つのメモリページ(P11〜P16)のうち、2つのメモリページ(P11,P12)に対して物理メモリが割り当てられている(図中、「○」で表記)。
アプリID=A2のメモリ領域25には、4つのメモリページ(P21〜P24)のうち、4つのメモリページ(P21〜P24)全てに対して物理メモリが割り当てられている。
アプリID=A3のメモリ領域25には、4つのメモリページ(P31〜P34)のうち、2つのメモリページ(P31,P32)に対して物理メモリが割り当てられている。
そして、アプリID=A1のメモリ領域25の使用位置が、物理メモリが割り当てられている最上位のページ(P12)を超えるとすると、これ以上(P13以降)は、物理メモリが割り当てられていない(「○」印が無い)ため、メモリが不足する。また、物理メモリ処理部30が管理する物理メモリには、余裕のあるメモリページが存在しないとする。このとき、メモリページP13に対して、新たに物理メモリを割り当てるためには、アプリID=A1以外のメモリ領域25から、未使用の物理メモリを再割当する必要がある。
図4(b)は、図4(a)の状態に対して、物理メモリの再割当を実行した後の物理メモリの状況を示す。
まず、アプリID=A2のメモリ領域25において、使用位置がP24まで来ているため、物理メモリが割り当てられている4つのメモリページ(P21〜P24)が、全て使用されている。よって、使用中の物理メモリを再割当の対象にはできないため、アプリID=A2のメモリ領域25は、再割当の対象からは除外する。
一方、アプリID=A3のメモリ領域25において、物理メモリが割り当てられている2つのメモリページ(P31,P32)のうち、使用位置がP31にとどまっているため、片方のメモリページ(P31)だけが使用されている。つまり、もう片方のP32は、物理メモリが割り当てられているものの、未使用のメモリページである。
そこで、メモリページP32に割り当てられている物理メモリを、一旦返却し、そのメモリページを、アプリID=A1のメモリ領域25内のメモリページP13に再割当することで、メモリ不足を解消することができる。この再割当処理は、割当処理部10の制御に従って、実行される。
以上、図4で説明したように、割当処理部10が、割当済みであるが未使用の物理メモリを、物理メモリが不足しているアプリケーションへと融通することにより、メモリの使用効率を高めることができる。
ここで、アプリID=A1,A2のアプリケーションが第1の仮想計算機82上で動作し、アプリID=A3のアプリケーションが第2の仮想計算機82上で動作しているとすると、仮想計算機82をまたがったメモリの融通処理を実現することができる。このような、仮想計算機82をまたがったリソース管理は、仮想計算機82ごとに独立して起動しているOS83のOSメモリ管理部24では、実現が困難である。
図5は、処理状況管理テーブル13およびメモリ割当管理テーブル14を示す構成図である。なお、図5において、メモリ割当管理テーブル14(再割当前)が図4(a)に対応し、メモリ割当管理テーブル14(再割当後)が図4(b)に対応する。
処理状況管理テーブル13は、仮想計算機82のIDであるアプリID131と、アプリID141が示すアプリケーションの名称であるアプリ名称132と、CPU91のCPU使用率133と、GC制御部23がGC処理を起動している(True)か否か(False)を示すGC中フラグ134と、を対応づけて構成する。
メモリ割当管理テーブル14は、アプリID141と、最小位置142と、判定位置143と、最大位置144と、使用位置145と、メモリ割当ページ146と、を対応づけて構成する。このメモリ割当管理テーブル14に登録されている各レコードのアプリケーションが、状況通知受信部12による状況通知の対象である。
アプリID141は、Java VM84などのアプリケーションのIDである。
アプリ名称132は、アプリID141が示すアプリケーションの名称である。
最小位置142、判定位置143、最大位置144、および、使用位置145は、図4で説明したように、アプリケーションが使用するメモリ領域25内の各位置を示すポインタである。
メモリ割当ページ146は、図4の「○」印で説明したように、メモリ領域25内で物理メモリが割り当てられているメモリページを示す。
図6は、図1の物理計算機9の動作を示すフローチャートである。
このフローチャートの開始状態として、1つのハイパーバイザ部81と、1つ以上の仮想計算機82とからなる仮想計算機環境8が、物理計算機9に構築され、そのハイパーバイザ部81内で物理メモリ処理部30が動作し、その仮想計算機82上で割当処理部10が動作しているものとする。さらに、各仮想計算機82上には、OS83(OSメモリ管理部24を含む)が起動している。
S101として、起動初期化部22は、割当制御部11からの起動要求により、仮想計算機82上でJava VM84およびアプリケーション部20の起動および初期化処理を実行する(後記する図7のサブルーチンを呼び出す)。なお、起動要求において指定されるオプションは、起動されるアプリケーション部20内のメモリ領域25の各位置(最小位置142、判定位置143、最大位置144)である。
S102として、起動初期化部22は、割当処理部10の割当制御部11に対して初期化処理の結果を通知する。割当制御部11は、通知された結果を、メモリ割当管理テーブル14に登録する。
S103〜S105は、メモリ割当処理である。
S103として、Java VM84は、プログラム実行部85が実行するプログラムのオブジェクト配置処理に応じて、物理メモリが割り当てられていないメモリページが必要になると、メモリ領域25へのメモリ割当要求を生成し、物理メモリ処理部30に対してそのメモリ割当要求を送信する(後記する図8(a)のサブルーチンを呼び出す)。
S104として、物理メモリ管理部31は、要求を受け、未使用の物理メモリを検索して割り当てる(例えば、図4(b)のP13)。割当可能な領域がない場合には、割り当てられない旨のメッセージをアプリケーション部20に返答する。
S105として、Java VM84は、S104の返答により、物理メモリの割り当て処理が成功したときには、S103の配置対象のオブジェクトを使用位置145に配置するとともに、使用位置145を配置された領域の次の位置に更新する。
S111〜S113は、メモリ解放処理である。
S111として、割当処理部10の状況通知受信部12は、所定間隔で、動作状況通知部21からの通知内容(状況通知)を処理状況管理テーブル13およびメモリ割当管理テーブル14に登録し、物理メモリ状況通知部32からの通知内容(状況通知)をメモリ割当管理テーブル14に登録する。
S112として、割当制御部11は、処理状況管理テーブル13およびメモリ割当管理テーブル14の登録内容をもとに、メモリ割当管理テーブル14に登録されている各アプリケーションのアプリケーション部20に対して、メモリ解放要求を送信する。
このように、割当処理部10の側から能動的にメモリの解放要求を送信することによって、アプリケーションのメモリが不足する前に、予防的にメモリをアプリケーション間で融通することができるので、アプリケーションのメモリ不足に伴う性能低下を事前に回避することができる。
S113として、各アプリケーション部20は、メモリ解放要求を受け、収容するメモリ領域25に割り当てられている物理メモリを解放することで、利用可能な物理メモリの容量を増やす(後記する図9のサブルーチンを呼び出す)。
以上説明したメモリ割当処理(S103〜S105)と、割当済のメモリを解放する処理(S111〜S113)とは、互いに並行処理することとしてもよい。この2つの処理を繰り返すことにより、限られた計算機リソースである物理メモリが、必要なときに必要なアプリケーションへと配分されることで、物理メモリのリソースが複数の仮想計算機82にまたがって循環し、メモリの利用効率を向上させ続けることが可能となる。さらに、割当済のメモリの解放処理が、アプリケーションのメモリ不足時より前に随時実施されることにより、アプリケーションのメモリ不足の発生を事前に抑制でき、アプリケーションの性能劣化を防止することができる。
図7は、起動初期化部22が実行する、メモリ領域25の初期化処理(S101)を示すフローチャートである。
S201として、最小位置142から最大位置144までの領域について、物理メモリの割り当てをOSメモリ管理部24に要求する。OSメモリ管理部24は、要求を受け、最小位置142から最大位置144までの領域について、物理メモリを割り当てる。
S202として、最小位置142から最大位置144までの領域の各メモリページについて、そのメモリページに対してS201で割り当てた物理メモリの各メモリページに対するOS83やそのOS83上の各プロセスからのアクセスを禁止する旨のアクセス権設定処理をOSメモリ管理部24に、また、割り当てられた物理メモリの解放を物理メモリ管理部31に対して要求する。OSメモリ管理部24は、要求を受け、指定されたメモリページに対して、OS83のシステムコールを呼び出すことで、物理メモリに対するアクセス権を禁止に設定する。
このS202の処理により、メモリ領域25の各メモリページは、領域が割当されているが物理メモリが割りあたっていない状態となり、OSメモリ管理部24の管理対象外となる。
S203として、使用位置145の初期値に、最小位置142を設定する。
図8は、アプリケーション部20のメモリ領域25へのアクセス処理の詳細を説明するフローチャートである。
図8(a)は、アプリケーション部20が実行する、メモリ領域25上のオブジェクト配置処理を示すフローチャートである。このフローチャートは、配置対象のオブジェクトを指定して実行される。
S301として、配置対象のオブジェクトをメモリ領域25の使用位置145に配置できるか否かを判定する。具体的には、使用位置145から配置対象のオブジェクト分の領域に、未使用の物理メモリが割り当てられているときには、配置可能と判定する。例えば、図4(a)の使用位置145がP13に達していると、未使用の物理メモリが割り当てられていない(「○」印がない)ため、配置できないと判定する。S301でYesなら本フローチャートから呼び出し元へと戻り、NoならS302へ進む。
S302として、使用位置145が最大位置144に到達しているか否かを判定する。S302でYesならS304へ進み、NoならS303へ進む。
S303として、物理メモリ管理部31に対して、空き物理メモリが存在しているか否かを問い合わせ、その結果、GC処理により、空き物理メモリを増やすか否かを判定する。S303でYesならS305へ進み、NoならS304へ進む。
S304として、GC制御部23が実行するメモリ領域25のGC処理(図8(b))を呼び出す。
S305として、使用位置145の次のメモリページ(例えば、図4(a)のP13)に、物理メモリの割り当てをする旨の割り当て要求を、物理メモリ管理部31に送信する。
図8(b)は、GC制御部23が実行する、メモリ領域25に対するGC処理を示すフローチャートである。このフローチャートは、GC制御部23が起動しているJava VM84のアプリID141を指定して、実行される。
S311として、GC処理を実行するか否かを判定する。例えば、指定されたアプリID141に対応する使用位置145が、判定位置143を超過していないときには(例えば、図4(a)のP12)、メモリ領域25がまだあまり使用されていないため、GC処理により新たなメモリ領域を確保することがあまり期待できず、GC処理を実行しないと判定する。S311でYesならS312へ進み、Noなら本フローチャートの呼び出し元へと戻る。
S312において、指定されたアプリID141一致する処理状況管理テーブル13のアプリID131を含むレコードについて、そのレコードのGC中フラグ134を「True」に設定する。
S313において、メモリ領域25内の最小位置142から使用位置145までの領域を対象として、GC処理を実行して、GC境界位置を求める。このGC処理により、最小位置142から使用位置145までの領域のうちの未使用な領域(不要なオブジェクトの配置領域など)が細切れになっているときには、使用領域(必要なオブジェクトの配置領域など)を最小位置142から詰めて移動することにより、一続きの未使用領域を確保することができる。
GC処理によって、最小位置142から使用位置145までの領域が、使用領域と、未使用領域とに分けられる。そして、この両領域の境界位置を、GC境界位置とする。
S314において、メモリ領域25内のGC境界位置から使用位置145までに割り当てられている物理メモリの解放処理を実行する。そのため、GC制御部23は、物理メモリ管理部31に対して、物理メモリの解放要求を送信すると、物理メモリ管理部31は、その要求で指定された領域のメモリページに割り当てられている物理メモリを解放する。
なお、S314の処理で、GC境界位置から使用位置145までの領域のすべての物理メモリを解放する代わりに、所定量の物理メモリを解放せずに確保しておき、その残りの物理メモリを解放することとしてもよい。これにより、Java VM84間で共有できるメモリ量を制限することができる。
さらに、S314の処理を省略することとしてもよい。これにより、Java VM84内には、物理メモリが割り当てられているメモリページが残ったままの状態となる。
このように、Java VM84内に未使用のメモリページを残しておくことで、メモリ不足によるメモリの割当回数を少なくすることができるので、メモリの割当処理にかかるオーバーヘッドを抑制することができる。この未使用のメモリページは、後記する図9のS405の処理で適宜解放されるため、メモリの利用効率を低下させる要因とはならない。
S315において、指定されたアプリID141に対応する使用位置145に、GC境界位置を代入することで、使用位置145を更新する。
S316において、S312でGC中フラグ134を「True」に設定したレコードについて、GC中フラグ134を「False」に戻す。
図9は、割当制御部11が実行する、能動的なメモリの解放要求処理の詳細を示すフローチャートである。
S401において、選択中VMとして、メモリ割当管理テーブル14に登録されているJava VM84を1つずつ選択するループを開始する。
S402において、物理メモリ管理部31が管理する未割当の物理メモリが充分に存在するか否かを判定する。S402でYesなら終了し、NoならS403へ進む。
S403において、選択中VMの負荷が大きいか否かを判定する。具体的には、処理状況管理テーブル13の選択中VMに対応するCPU使用率133が所定閾値(例えば、70%)以上であるときに、負荷が大きいと判定する。選択中VMの負荷が大きいときには、優先度の低いメモリの解放処理の実行を行わないことで、選択中VMの処理を妨げないようにする。S403でYesならS408へ進み、NoならS404へ進む。
なお、選択中VMの負荷評価値について、CPU使用率133の代わりに、Java VM84上で動作しているアプリケーションがアプリケーションサーバの場合は、処理中のリクエスト数など、負荷を評価するための任意の指標を用いてもよい。
S404において、選択中VM内のメモリ領域25において、未使用領域が充分存在するか否かを判定する。ここで、未使用領域とは、使用位置145の次の位置から最大位置144までの領域の内の物理メモリが割当済みの領域を指す(例えば、図4(a)のP32)。S404でYesならS405へ進み、NoならS406へ進む。
S405において、選択中VM内の未使用領域を戻す。そして、S408に進む。
S406において、選択中VMで、既にGCが実行中か否かを判定する。具体的には、処理状況管理テーブル13の選択中VMに対応するGC中フラグ134が「True」であるときに、GCが実行中であると判定する。そして、GCが実行中であるときには、重複してGC処理を実行しないように、GC処理を実行しないと判定する。S406でYesならS408へ進み、NoならS407へ進む。
S407において、図8(b)のサブルーチンを呼び出すことで、選択中VM内でGCを実行し、未使用領域を解放する。
S408において、S401からの選択中VMのループを終了する。
以上説明した第1実施形態によれば、割当処理部10は、メモリ領域25のうち、主記憶装置92の物理メモリが割り当てられているにもかかわらず、未使用の領域(または、GC処理を起動することで新たに割当できた領域)を物理メモリ管理部31に返却するように能動的に制御することで、物理メモリ管理部31が割り当て可能な物理メモリの容量を増やすことができる。
そして、物理メモリ管理部31は、空き物理メモリを他のJava VM84に再割当することで、メモリの有効利用が可能となる。つまり、ある分割されたメモリ領域に含まれる空きメモリを別のメモリ領域を管理するシステムへ融通することで、メモリを有効活用できる。
さらに、GC処理を起動する契機を、そのJava VM84の負荷が低いときとする(S403)ことにより、GCによる停止時間の影響を少なく抑えることが可能となる。つまり、空きメモリの解放をプログラムの負荷状況に応じて制御することが可能となる。
(第2実施形態、リソースとして、物理ディスクを割り当てる)
以下、本発明の第2実施形態を、図面を参照して詳細に説明する。
図10は、仮想計算機環境8が構築される物理計算機9を示す構成図である。図10では、図1および図2と同様に、下位層から上位層にむかって接続する矢印を示すことにより、仮想計算機環境8のレイヤモデルを示している。
以下、第2実施形態の構成(図10)と、第1実施形態の構成(図1、図2)との違いについて説明する。
階層(1)の物理層(物理計算機9の階層)は、補助記憶装置95のひとつとしてディスク装置97を含めて構成される。
階層(2)の仮想計算機環境8を構成するハイパーバイザ部81は、物理ディスク処理部40を含めて構成される。物理ディスク処理部40は、物理計算機9のディスク装置97を制御することにより、ディスク資源を管理し、仮想計算機82が使用する仮想ディスク16(図11で後記)に対するディスク容量の割り当ておよび解放を実行する。
階層(4)のDBMS86(Data Base Managment System)は、アプリケーション部20、および、割当処理部10を含めて構成される。アプリケーション部20は、DBMS86が使用するリソースの割り当ておよび解放を制御する。なお、DBMS86が動作する仮想計算機82の台数は、同じ物理計算機9内に複数台存在するものとする。
図11は、図10で示した各処理部(割当処理部10、アプリケーション部20、物理ディスク処理部40)の詳細を示す構成図である。
割当処理部10は、割当制御部11と、状況通知受信部12と、処理状況管理テーブル13と、ディスク領域管理テーブル15と、を含めて構成される。
割当制御部11は、処理状況管理テーブル13およびディスク領域管理テーブル15にそれぞれ格納されているリソースの使用状況に応じて、リソースの割り当てをDBMS86に指示することで、リソースの使用を効率化する。
状況通知受信部12は、DBMS86におけるリソース(CPU91、データ領域29、データ領域29を格納する仮想ディスク16など)の使用状況(使用量、使用率など)の通知を受ける。
処理状況管理テーブル13には、状況通知受信部12が動作状況通知部21から受信した情報のうちの処理に関する情報(再編処理中か否かなど)が格納される。
ディスク領域管理テーブル15には、状況通知受信部12が動作状況通知部21および物理ディスク状況通知部42から受信した情報(補助記憶装置95の物理ディスクの使用状況)が格納される。
アプリケーション部20は、問合せ部26と、アクセス処理部27と、動作状況通知部21と、起動初期化部22と、再編成制御部28と、仮想ディスク16(データ領域29)と、を有する。
動作状況通知部21は、状況通知受信部12からの要求に応じて、または、要求が無くても能動的に、DBMS86の状態(仮想ディスク16内のデータ領域29の使用状況や、再編成制御部28による再編成処理が実行中か否かという情報など)を、状況通知受信部12に通知する。
問合せ部26は、DBMS86へのリクエスト(検索要求などの問い合わせ)を処理する。
アクセス処理部27は、問合せ部26の要請を受けて、データ領域29へのデータの格納、もしくは、データ領域29中のデータを読み出す。
起動初期化部22は、DBMS86の起動時に、そのDBMS86が使用するデータ領域29の使用状況などを他のDBMS86へ通知し、また、他のDBMS86から通知を受ける。
データ領域29は、DBMS86により管理されるデータベースのデータを格納する領域であり、物理ディスク処理部40により、ディスク装置97から領域が割り当てられた仮想ディスク16上に格納される。また、このデータ領域29は、ある決まった大きさの領域(ページ)の集まりとして管理される。
アクセス処理部27は、ページにデータが格納できなくなった場合に、新たなページを確保する(つまり、データ領域29の容量を拡大する)。また、アクセス処理部27は、データ領域に格納されているデータが消去される場合に、他の格納されているデータの移動は行わない。そのため、データ領域29中には、ディスク領域が確保されているが、使用されていない領域(未回収領域)が散在するようになる。
再編成制御部28は、DBMS86で管理するデータ領域29の未回収領域などを回収する再編成処理を実施する。
物理ディスク処理部40は、物理ディスク管理部41と、物理ディスク状況通知部42と、を備える。
物理ディスク管理部41は、ディスク装置97のディスク領域から所定サイズの領域を仮想計算機82が認識するディスク領域として割り当てる。また、物理ディスク管理部41は、DBMS86などからの要求に応じて、要求に応じて割り当てるディスク領域の容量を拡張、あるいは、削減する。
物理ディスク状況通知部42は、状況通知受信部12からの要求に応じて、または、要求が無くても能動的に、物理計算機9の状態(ディスク装置97の物理ディスクの空き容量など)を、状況通知受信部12に通知する。
図12は、図11で示した処理状況管理テーブル13およびディスク領域管理テーブル15を示す構成図である。
処理状況管理テーブル13は、仮想計算機82のIDであるDBMSID147と、CPU91のCPU使用率133と、再編成制御部28が再編成処理を起動している(True)か否か(False)を示す再編成中フラグ148と、を対応づけて構成する。
ディスク領域管理テーブル15は、DBMSID147と、データ領域29の現在容量149と、データ領域29を格納する仮想ディスク16空き容量150と、を対応づけて構成する。このディスク領域管理テーブル15に登録されているDBMSID147のDBMS86が、状況通知受信部12による状況通知の対象である。
再割当前のディスク領域管理テーブル15では、3つのDBMS86(DBMSID=A1,A2,A3)のそれぞれが使用する3つのデータ領域29と仮想ディスク16に対する割当状況が保持されている。今、DBMID=A1のDBMS86に対して、データの格納処理が発生した場合、A1のディスク容量不足が発生する。また、物理ディスク処理部40が管理するディスク装置97にも空き容量がないとする。このため、DBMSID=A1のDBMS86に対してディスク容量を割り当てるには、他のDBMS86(A2,A3)の容量を再割当する必要がある。
再割当後のディスク領域管理テーブル15では、再割当前のディスク領域管理テーブル15の状況に対して、再割当処理を実行した後のデータ領域29の容量を示している。まず、DBMSID147=A2のDBMS86は、充分の空き容量がない、つまり、最大容量に対する一定の割合を超えている(ここでは、90%を想定)ため、再割当の対象から除外する。
次に、DBMSID147=A3のDBMS86は、空き容量が充分に存在する。そのため、このデータ領域29の容量を一定の量(ここでは5GB)削減することで、一旦ディスク装置97へ返却し、その容量分だけ、DBMSID=A1のデータ領域29を拡張することにより、ディスク容量不足を解消することができる。この再割当処理は、割当処理部10の制御にしたがって、実行される。
図13は、図10の物理計算機9の動作を示すフローチャートである。
このフローチャートの開始状態として、1つのハイパーバイザ部81と、1つ以上の仮想計算機82とからなる仮想計算機環境8が、物理計算機9に構築され、そのハイパーバイザ部81内で物理ディスク処理部40が動作し、その仮想計算機82上でDBMS86(DB1)が起動しているとする。また、DBMS86が使用するデータ領域29はあらかじめ構築されているものとする。さらに、各仮想計算機82上には、OS83が起動している。
新たにDBMS86(DB2)が起動されると、S501として、起動初期化部22が初期化処理を実行する(後記する図14のサブルーチンを呼び出す)。
S502およびS503として、各DBMS86の割当処理部10の状況通知受信部12は、所定間隔で、同一の物理計算機9上の仮想計算機82上で動作する各DBMS86の動作状況通知部21からの通知内容(状況通知)を処理状況管理テーブル13およびディスク領域管理テーブル15に登録し、物理ディスク状況通知部42からの通知内容(状況通知)をディスク領域管理テーブル15に登録する。
S511〜S513は、ディスク領域の削減処理である。
S511として、割当制御部11は、自ら属するDBMS86が管理するデータ領域29を格納する仮想ディスク16の空き容量がない、あるいは、不足していると判定される場合や、ディスク装置97の空き容量が少ないと判定される場合は、処理状況管理テーブル13およびディスク領域管理テーブル15の登録内容をもとに、ディスク領域管理テーブル15に登録されている各DBMS86のアプリケーション部20に対して、ディスク領域削減要求を送信する。
このように、割当処理部10の側から能動的にディスク領域の削減要求を送信することによって、DBMS86のディスク容量が不足する前に、予防的にディスクをDBMS86間で融通することができるので、DBMS86のディスク容量不足に伴う性能低下、あるいは、DBMS86の停止を事前に回避することができる。
S512として、各アプリケーション部20は、ディスク領域解放要求を受け、可能なら、データ領域29の容量を削減したのち(S513)、仮想ディスク16の容量を削減することにより、利用可能な物理ディスクの容量を増やす(後記する図16のサブルーチンを呼び出す)。
S521〜S523は、ディスク領域の割当処理である。
S521として、DBMS86は、問合せ部26が受けた要求によって、アクセス処理部27がデータを格納するためのデータ領域29の容量が不足すると(つまり、仮想ディスク16の空き容量が不足すると)、仮想ディスク16へのディスク領域割当要求を生成し、物理ディスク処理部40に対して、仮想ディスク16に対する領域拡張要求を送信する。(後記する図15のサブルーチンを呼び出す)。
S522として、物理ディスク管理部41は、要求を受け、ディスク装置97の未使用領域を用いて、指定された仮想ディスク16を指定された容量だけ拡張する。ディスク装置97に、拡張に利用できる領域がない場合には、拡張できない旨のメッセージをアプリケーション部20に返答する。
S523として、DBMS86は、S522の返答により、仮想ディスク16の拡張処理が成功したときには、データ領域29に対して、データの格納を実施する。
以上説明したディスク領域の割当処理(S521〜S523)と、ディスク領域の削減処理(S511〜S513)とは、互いに並行処理することとしてもよい。この2つの処理を繰り返すことにより、物理ディスクが、必要なときに必要なDBMS86へと配分されることで、物理ディスクのリソースが複数の仮想計算機82にまたがって循環し、物理ディスクの利用効率を向上させ続けることが可能となる。さらに、ディスク領域の削減処理が、DBMS86のデータ領域29の容量の不足時より前に随時実施されることにより、DBMS86のディスク不足の発生を事前に抑制でき、DBMS86の性能劣化を防止することができる。
図14は、図11で示した起動初期化部22が実行する、初期化処理(S501)を示すフローチャートである。
S601として、本初期化処理を実行中のDBMS86と同一の物理計算機9上に構築される仮想計算機82を、ハイパーバイザ部81から取得し、取得した各仮想計算機上で稼動しているDBMS86に対して、本初期化処理を実行中のDBMS86のDBMSID147、データ領域29の現在の容量、データ領域29を格納する仮想ディスク16の空き容量を通知し、通知された各DBMS86は、各DBMS86が保持する処理状況管理テーブル13、ディスク領域管理テーブル15に通知された値を登録する。
S602として、S601において、初期化処理実行中のDBMS86から状況通知を受け取ったDBMS86は、自身のDBMSID147、現在容量149、空き容量150を、初期化処理起動中のDBMS86に対して送信し、初期化処理を実行中のDBMS86では、受け取った値を、自身の処理状況管理テーブル13、ディスク領域管理テーブル15へ格納する。
図15は、図11で示したアプリケーション部20が実行する、データ領域29上へのデータの配置処理を示すフローチャートである。このフローチャートは、格納対象のデータを指定して実行される。
S701として、格納対象のデータをデータ領域29へ格納できるか否かを判定する。具体的には、データ領域29中にデータを格納する空き領域があるか、もしない場合は、データ領域29を格納する仮想ディスク16の空き容量が、データ領域29の管理単位であるページを新たに確保するために十分かを判定する。S701でYesなら本フローチャートから呼び出し元へと戻り、NoならS702へ進む。
S702として、物理ディスク管理部41に対して、ディスク装置97に空き領域が存在しているか否かを問い合わせ、その結果、再編成処理により、空き容量を増やすか否かを判定する。S702でYesならS703へ進み、NoならS704へ進む。
S703として、物理ディスク管理部41に対して、データ領域29を格納する仮想ディスク16の拡張を要求したのち、OS83に対して拡張された領域をファイルシステムが管理する領域として認識するように要求する。
S704として、再編成制御部28が実行する再編成処理(図15(b))を実行する。
なお、図15(a)のフローチャートでは、データ領域29へデータを格納する時点において、データ領域29を格納する仮想ディスク16の拡張を判定し、必要なら、仮想ディスク16の拡張を実施しているが、データの格納とは異なる時点において、仮想ディスク16の拡張を実施してもよい。これにより、データ領域29へデータを格納する時点でのオーバーヘッドを削減することができる。
図15(b)は、再編成制御部28が実行する、データ領域29に対する再編成処理を示すフローチャートである。このフローチャートはDBMS86のDBMSID147を指定して呼び出される。
S711として、再編成処理を実行するか否かを判定する。例えば、データ領域29の現在容量149が一定サイズより小さい場合は、再編成処理により新たな領域の確保があまり期待できないため、処理を実行しないと判断する。S711でYesならS712へ進み、Noなら本フローチャートの呼び出し元へと戻る。
S712において、指定されたDBMSID147に一致する処理状況管理テーブル13のDBMSID147を含むレコードについて、そのレコードの再編成中フラグ148を「True」に設定する。
S713において、データ領域29に対して再編成処理を適用する。この再編成処理により、データ領域29内でのデータの配置が細切れになっているときには、データの格納領域を移動させることにより、未使用領域を確保することができる。
S714において、与えられたDBMSID147に対応するディスク領域管理テーブル15のレコードに格納される現在容量149を更新する。
S715において、S712で再編集中フラグ148を「True」に設定したレコードについて、再編成中フラグ148を「False」に戻す。
なお、図15に示したフローチャットにおけるS713の処理で、データ領域29の再編成処理の代わりに、もしくは、再編処理と同時に、DBMS86が管理しているファイルのうち、DBMS86が削除可能と判定できるものは削除することもできる。例えば、ログファイルはファイルサイズもしくは、日付などのデータを元に、新しい物を一定サイズだけ残して残りを削除することができる。
図16は、図11で示した割当制御部11が実行する、能動的なディスク領域の削除要求処理の詳細を示すフローチャートである。
S801において、選択中DBMSとして、ディスク領域管理テーブル15に登録されているDBMS86を1つずつ選択するループを開始する。
S802において、物理ディスク管理部41が管理するディスク装置97に未割当の領域が充分に存在するか否かを判定する。S802でYesなら終了し、NoならS803へ進む。
S803において、選択中DBMSの負荷が大きいか否かを判定する。具体的には、処理状況管理テーブル13の選択中DBMSに対応するCPU使用率133が所定閾値(例えば、70%)以上であるときに、負荷が大きいと判定する。選択中DBMSの負荷が大きいときには、対象外とすることにより、選択中DBMSの処理を妨げないようにする。S803でYesならS808へ進み、NoならS804へ進む。
なお、選択中VMの負荷評価値について、CPU使用率133の代わりに、DBMS86に対するリクエスト数(検索要求数)など、負荷を評価するための任意の指標を用いてもよい。
S804において、選択中DBMS内のデータ領域29を格納する仮想ディスク16において、領域の空きが充分存在するか否かを判定する。S804でYesならS807へ進み、NoならS805へ進む。
S805において、選択中DBMSで、既に再編成処理が実行中か否かを判定する。具体的には、処理状況管理テーブル13の選択中DBMSに対応する再編成中フラグ148が「True」であるときに、再編成処理が実行中であると判定する。そして、再編成処理が実行中であるときには、重複して再編成処理を実行しないように、再編成処理を実行しないと判定する。S805でYesならS808へ進み、NoならS806へ進む。
S806において、図15(b)の処理を呼び出すことにより、選択中DBMSで再編成処理を実行する。
S807において、選択DBMSのデータ領域29を格納する仮想ディスク16の容量を削減する要求を物理ディスク管理部41へ送信する。より、具体的には、ディスク装置97へ返却可能な仮想ディスク16のセクタに対して印を付け、物理ディスク管理部41では、印のあるセクタに対する物理ディスク領域の割当を解除する。
S808において、S801からの選択中DBMSのループを終了する。
以上説明した第2実施形態によれば、割当処理部10は、ディスク装置97のうち、DBMS86のデータ領域29を格納する仮想ディスク16へ割当てているが使用されていない領域、または、再編成処理などを起動することで新たに確保できた領域を物理ディスク管理部41に返却するように能動的に制御することで、物理ディスク管理部41が割り当て可能なディスク装置の容量を増やすことができる。
そして、物理ディスク管理部41は、空き領域を他のDBMS86がデータ領域29を格納している仮想ディスクへ再割当することで、ディスクの有効利用が可能となる。つまり、ある分割されたディスク領域に含まれる空き領域を、仮想計算機82上で動作するアプリケーションであるDBMS86からディスク資源の割当を制御することにより、別のディスク資源を管理するシステムへ融通することで、ディスク資源を有効活用できる。
(第3実施形態、リソースとして、CPU資源、ネットワーク資源を割り当てる)
以下、本発明の第3実施形態として、CPU資源、ネットワーク資源を管理する場合を説明する。これらの資源の管理の場合も、第1実施形態に示したメモリ資源の管理、および、第2実施形態に示したディスク資源の管理と同様に行うことができる。
第3実施形態においては、第1実施形態および第2実施形態で示した図1、図10などのレイヤモデルで示される構成上で実施される。ハイパーバイザ部81では、物理CPU処理部43、および、物理ネットワーク処理部46を含む。
物理CPU処理部43は、物理計算機9のCPU91を制御することにより、CPU資源を管理し、仮想計算機82が使用する仮想CPUに対する資源の割当、および、解放を実行する。
物理ネットワーク処理部46は、物理計算機9の通信装置94を制御することにより、ネットワーク資源を管理し、仮想計算機82が使用する仮想ネットワークに対する資源の割当、および、解放を実行する。
図17は、第3実施形態における各処理部(アプリケーション部20と、割当処理部10、物理CPU処理部43、および、物理ネットワーク処理部46)の詳細を示す構成図である。
割当処理部10は、資源管理用のテーブルとして、CPU資源の割当量を管理するCPU管理テーブル17、および、ネットワーク資源の割当量を管理するネットワーク管理テーブル18を含む。なお、資源管理用のテーブルとして、第1実施形態ではメモリ割当管理テーブル14を有し、あるいは、第2実施形態ではディスク領域管理テーブル15を有することは、既に説明した。
物理CPU処理部43は、物理CPU管理部44、物理CPU状況通知部45と、を備える。
物理CPU管理部44は、CPU91から所定のプロセッサ資源を仮想計算機82が認識する仮想CPUとして割り当てる。また、物理CPU管理部44は、アプリケーションからの要求に応じて、割り当てるプロセッサ資源の追加、あるいは、削減する。なお、ここでは、CPU資源の割当管理の単位をプロセッサのコア数として管理するが、使用率の割合など別の指標を用いてもよい。
物理CPU状況通知部45は、状況通知受信部12からの要求に応じて、または、要求が無くても能動的に、物理計算機9の状態(CPU91の使用状況など)を、状況通知受信部12に通知する。
物理ネットワーク処理部46は、物理ネットワーク管理部47と、物理ネットワーク状況通知部48を備える。
物理ネットワーク管理部47は、通信装置94から所定のネットワーク資源を仮想計算機82が認識する仮想ネットワークとして割り当てる。また、物理ネットワーク管理部47は、アプリケーションからの要求に応じて、割り当てるネットワーク資源を追加、あるいは、削減する。なお、ここでは、ネットワーク資源の割当管理の単位をネットワークカードの数として管理するが、ネットワークの使用帯域など別の指標を用いてもよい。
物理ネットワーク状況通知部48は、物理ネットワーク管理部47、状況通知受信部12からの要求に応じて、または、要求が無くても能動的に、物理計算機9の状態(通信装置94の使用状況など)を、状況通知受信部12に通知する。
図18は、図17で示したCPU管理テーブル17の詳細を示す構成図である。
CPU管理テーブル17は、実行中のアプリケーションを識別するためのアプリID151と、そのアプリIDで示されるアプリケーションが使用中のプロセッサ数である使用数152、アプリIDで示されるアプリケーションに割当済みのプロセッサ数である割当済数153を含む。
図19は、図17で示したネットワーク管理テーブル18の詳細を示す構成図である。
ネットワーク管理テーブル18は、実行中のアプリケーションを識別するためのアプリID154と、そのアプリIDで示されるアプリケーションが使用中のネットワーク装置数である使用数155、アプリIDで示されるアプリケーションに割当済みのネットワーク装置数である割当済数156を含む。
また、アプリケーションは、使用する資源量に応じて、CPU管理テーブル17の使用数152、および、ネットワーク管理テーブル18の使用数155を更新する。例えば、マルチスレッドのアプリケーションにおいて、実行するスレッドに対して1つのプロセッサ、および、1つのネットワーク装置を割り当てる場合、アプリケーションが実行するスレッドの数が使用量となる。
以上の構成による物理計算機9上のアプリケーション部20と割当処理部10を含むアプリケーションにおける資源の割当処理、および、資源の解放処理について説明する。
資源の解放処理おいては、あるアプリケーションが使用する資源が不足する場合、もしくは、物理計算機9上の空き資源が不足する場合において、同一の物理計算機9上で動作する別のアプリケーションに対して空き資源の解放要求を通知する。
アプリケーションが使用する資源の不足は、CPU管理テーブル17の使用数152が割当済数153に対する所定の割合を上回る場合に不足すると判定できる。同様に、ネットワーク資源においては、ネットワーク管理テーブル18の使用数155が割当済数156に対する所定の割合を上回る場合に不足すると判定できる。
資源の解放共有を受けたアプリケーションでは、通知を受けた資源の種別に応じて、CPU管理テーブル17、もしくは、ネットワーク管理テーブル18を参照し、割当済みであるが、未使用である資源(例えば、CPU資源の場合、割当済数153から使用数152を引いた数)のうち、所定の個数のプロセッサ、もしくは、ネットワーク装置の割当の解除要求を、物理CPU管理部44、もしくは、物理ネットワーク管理部47に対して、送信することにより、アプリケーションが動作している仮想計算機82から解除し、ハイパーバイザ部81が管理する未使用の資源とする。
次に、資源の割当処理では、アプリケーションで新たな資源の確保が必要になった場合に、資源種別に応じて、物理CPU管理部44、もしくは、物理ネットワーク管理部47に対して必要な資源の割当を要求し、アプリケーションが稼動する仮想計算機82に対して必要となる資源の追加を行う。なお、資源の割当処理においては、物理CPU管理部44もしくは、物理ネットワーク管理部47からの資源の割当に失敗した場合、つまり、物理計算機9に空き資源がない場合は、その場で、他のアプリケーションに対して、資源の解放要求を送信してもよい。
以上説明した第3実施形態によれば、割当処理部10は、仮想計算機82に割り当てられているが使用されていないCPU資源の仮想計算機82への割当を解除するように能動的に制御することで、物理CPU処理部43が割り当て可能なCPU資源の容量を増やすことができる。
そして、物理CPU管理部44は、空き領域を他のアプリケーションが実行されている仮想計算機82へ再割当することで、CPU資源の有効利用が可能となる。つまり、ある分割されているCPU資源の空き容量を、仮想計算機82上で動作するアプリケーションからCPU資源の割当を制御することにより、別のCPU資源を管理するシステムへ融通することで、CPU資源を有効活用できる。また、ネットワーク資源に対しても同様の方式により、有効活用することができる。
以上説明した第1実施形態〜第3実施形態では、それぞれ割当制御部11が計算機資源(リソース)の使用状況に応じて、リソースの割り当てを制御することで、リソースの使用を効率化することを特徴とする。
例えば、割当制御部11は、未割当のリソース(プールされているリソース)が少ないときに、使用されていないリソースの解放指示を各アプリケーション部20に送信する。
または、割当制御部11は、アプリケーション部20が使用するリソースに対して、そのアプリケーション部20に割り当て済みのリソースが少ないときに(換言すると、リソース不足のアプリケーション部20が存在するときに)、使用されていないリソースの解放指示を各アプリケーション部20に送信する。
8 仮想計算機環境
9 物理計算機(資源管理装置)
10 割当処理部
11 割当制御部
12 状況通知受信部
13 処理状況管理テーブル
14 メモリ割当管理テーブル
15 ディスク領域管理テーブル
16 仮想ディスク
17 CPU管理テーブル
18 ネットワーク管理テーブル
20 アプリケーション部
21 動作状況通知部
22 起動初期化部
23 GC制御部
24 OSメモリ管理部
25 メモリ領域
26 問合せ部
27 アクセス処理部
28 再編成制御部
29 データ領域
30 物理メモリ処理部
31 物理メモリ管理部
32 物理メモリ状況通知部
40 物理ディスク処理部
41 物理ディスク管理部
42 物理ディスク状況通知部
43 物理CPU処理部
44 物理CPU管理部
45 物理CPU状況通知部
46 物理ネットワーク処理部
47 物理ネットワーク管理部
48 物理ネットワーク状況通知部
81 ハイパーバイザ部
82 仮想計算機
83 OS
84 Java VM
85 プログラム実行部
86 DBMS
91 CPU
92 主記憶装置
93 入出力装置
94 通信装置
95 補助記憶装置
96 バス
97 ディスク装置
131 アプリID
132 アプリ名称
133 CPU使用率
134 GC中フラグ
141 アプリID
142 最小位置
143 判定位置
144 最大位置
145 使用位置
146 メモリ割当ページ
147 DBMSID
148 再編成中フラグ
149 現在容量
150 空き容量
151,154 アプリID
152,155 使用数
153,156 割当済数

Claims (17)

  1. 1つ以上の仮想計算機と、その仮想計算機を動作させるためのハイパーバイザ部とを有して構成される仮想計算機環境を物理計算機上に構築するとともに、前記仮想計算機上のOS上で動作するアプリケーション部が使用する計算機資源に対して、前記物理計算機の計算機資源を割り当てる資源管理方法であって、
    前記仮想計算機は、割当処理部および前記アプリケーション部を動作させ、
    前記アプリケーション部は、前記物理計算機の計算機資源を、前記アプリケーション部が使用する計算機資源として割り当てさせ、
    前記割当処理部は、前記アプリケーション部が使用する計算機資源に対して、そのアプリケーション部に割り当て済みの計算機資源が少ないときに、1つ以上の前記仮想計算機でそれぞれ動作している前記各アプリケーション部に対して、前記各アプリケーション部が動作する前記仮想計算機に割り当て済みの計算機資源から、使用されていない計算機資源の解放指示を送信し、
    前記アプリケーション部は、前記使用されていない計算機資源の解放指示を受信すると、前記アプリケーション部に割り当てられている計算機資源のうちの前記使用されていない計算機資源を解放するように、前記ハイパーバイザ部に指示することを特徴とする
    資源管理方法。
  2. 前記割当処理部は、前記物理計算機の未割当の計算機資源が少ないときに、前記使用されていない計算機資源の解放指示を送信することを特徴とする
    請求項1に記載の資源管理方法。
  3. 前記割当処理部は、
    前記各アプリケーション部から、前記各アプリケーション部の負荷値の通知を受けて、その結果を記憶手段に記憶し、
    前記使用されていない計算機資源の解放指示を送信する前記アプリケーション部から、前記記憶手段に記憶されている負荷値が所定値以上の前記アプリケーション部を除外することを特徴とする
    請求項1に記載の資源管理方法。
  4. 前記割当処理部は、前記各アプリケーション部の負荷値として、前記各アプリケーション部のCPU使用率を前記記憶手段に記憶することを特徴とする
    請求項3に記載の資源管理方法。
  5. 前記割当処理部は、前記各アプリケーション部の負荷値として、前記各アプリケーション部で処理中のリクエスト数を前記記憶手段に記憶することを特徴とする
    請求項3に記載の資源管理方法。
  6. 前記アプリケーション部は、前記アプリケーション部が使用する前記物理計算機の計算機資源としてのメモリ領域について、前記仮想計算機からの物理メモリの割当処理および開放処理を禁止し、前記物理メモリを割り当てる旨の要求を、前記ハイパーバイザ部内の物理メモリ処理部に送信することで、前記物理メモリ処理部に未割当の前記物理メモリを前記メモリ領域に対して割り当てさせ、
    前記割当処理部は、前記計算機資源の解放指示処理として、1つ以上の前記仮想計算機でそれぞれ動作している前記各アプリケーション部に対して、前記各アプリケーション部が動作する前記仮想計算機に割り当て済みの前記メモリ領域から、前記物理メモリが割り当てられているが、使用されていない前記メモリ領域内のメモリページの解放指示を送信することを特徴とする
    請求項1に記載の資源管理方法。
  7. 前記アプリケーション部は、前記メモリページの解放指示を受信すると、前記アプリケーション部に割り当てられている前記メモリ領域内の前記メモリページのうち、前記アプリケーション部の使用中のオブジェクトが未配置の前記メモリページに割り当てられている前記物理メモリを解放するように、前記物理メモリ処理部に指示することを特徴とする
    請求項6に記載の資源管理方法。
  8. 前記アプリケーション部は、
    前記メモリページの解放指示を受信すると、前記アプリケーション部に割り当てられている前記メモリ領域内の前記メモリページのうち、前記アプリケーション部のオブジェクトが配置済の前記メモリページを対象としてガベージコレクション処理を実行することで、前記アプリケーション部の使用中のオブジェクトが未配置の前記メモリページを確保し、
    その確保した前記メモリページに割り当てられている前記物理メモリを解放するように、前記物理メモリ処理部に指示することを特徴とする
    請求項6または請求項7に記載の資源管理方法。
  9. 前記アプリケーション部は、前記アプリケーション部がデータを保持する前記物理計算機の計算機資源としての仮想ディスクへ追加の領域を割り当てる旨の要求を、前記ハイパーバイザ部内の物理ディスク処理部に送信することで、前記物理ディスク処理部に未割当の物理ディスクのデータ領域を前記仮想ディスクに対して割り当てさせ、
    前記割当処理部は、計算機資源の解放指示処理として、1つ以上の前記仮想計算機でそれぞれ動作している前記各アプリケーション部に対して、前記各アプリケーション部が動作する前記仮想計算機に割り当て済みの前記仮想ディスクのデータ領域から、使用されていないデータ領域の解放指示を送信することを特徴とする
    請求項1に記載の資源管理方法。
  10. 前記アプリケーション部は、前記仮想ディスクのデータ領域の解放指示を受信すると、前記アプリケーション部に割り当てられている前記仮想ディスク内のデータ領域のうち、前記アプリケーション部の使用中のデータが未配置のデータ領域に割り当てられている前記物理ディスクのデータ領域を削減するように、前記物理ディスク処理部に指示することを特徴とする
    請求項9に記載の資源管理方法。
  11. 前記アプリケーション部は、前記仮想ディスクのデータ領域の解放指示を受信すると、前記仮想ディスクのデータ領域に格納されている前記アプリケーション部のデータに対して不要なデータ領域の削減処理を実行することで、前記アプリケーション部の使用中のデータが記録されていない空きデータ領域を確保し、前記空きデータ領域を解放するように、前記物理ディスク処理部に指示することを特徴とする
    請求項9または請求項10に記載の資源管理方法。
  12. 前記アプリケーション部は、前記アプリケーション部が使用する前記物理計算機の計算機資源としてのCPU資源を割り当てる旨の要求を、前記ハイパーバイザ部内の物理CPU処理部に送信することで、前記物理CPU処理部に未割当の前記CPU資源を前記アプリケーション部に対して割り当てさせ、
    前記割当処理部は、計算機資源の解放指示処理として、1つ以上の前記仮想計算機でそれぞれ動作している前記各アプリケーション部に対して、前記各アプリケーション部が動作する前記仮想計算機に割り当て済みの前記CPU資源から、使用されていない前記CPU資源の解放指示を送信することを特徴とする
    請求項1に記載の資源管理方法。
  13. 前記アプリケーション部は、前記CPU資源の解放指示を受信すると、前記アプリケーション部に割り当てられている前記CPU資源のうち、前記アプリケーション部から使用されていない前記CPU資源を削減するように、前記物理CPU処理部に指示することを特徴とする
    請求項12に記載の資源管理方法。
  14. 前記アプリケーション部は、前記アプリケーション部が使用する前記物理計算機の計算機資源としてのネットワーク資源を割り当てる旨の要求を、前記ハイパーバイザ部内の物理ネットワーク処理部に送信することで、前記物理ネットワーク処理部に未割当の前記ネットワーク資源を前記アプリケーション部に対して割り当てさせ、
    前記割当処理部は、計算機資源の解放指示処理として、1つ以上の前記仮想計算機でそれぞれ動作している前記各アプリケーション部に対して、前記各アプリケーション部が動作する前記仮想計算機に割り当て済みの前記ネットワーク資源から、使用されていない前記ネットワーク資源の解放指示を送信することを特徴とする
    請求項1に記載の資源管理方法。
  15. 前記アプリケーション部は、前記ネットワーク資源の解放指示を受信すると、前記アプリケーション部に割り当てられている前記ネットワーク資源のうち、前記アプリケーション部から使用されていない前記ネットワーク資源を削減するように、前記物理ネットワーク処理部に指示することを特徴とする
    請求項14に記載の資源管理方法。
  16. 1つ以上の仮想計算機と、その仮想計算機を動作させるためのハイパーバイザ部とを有して構成される仮想計算機環境を物理計算機である資源管理装置上に構築するとともに、前記仮想計算機上のOS上で動作するアプリケーション部が使用する計算機資源に対して、前記物理計算機の計算機資源を割り当てる前記資源管理装置に、
    前記仮想計算機が、割当処理部および前記アプリケーション部を動作させる機能と、
    前記アプリケーション部が、前記物理計算機の計算機資源を、前記アプリケーション部が使用する計算機資源として割り当てさせる機能と、
    前記割当処理部が、前記アプリケーション部が使用する計算機資源に対して、そのアプリケーション部に割り当て済みの計算機資源が少ないときに、1つ以上の前記仮想計算機でそれぞれ動作している前記各アプリケーション部に対して、前記各アプリケーション部が動作する前記仮想計算機に割り当て済みの計算機資源から、使用されていない計算機資源の解放指示を送信する機能と、を実現させ、
    前記アプリケーション部に対して、前記使用されていない計算機資源の解放指示を受信すると、前記アプリケーション部に割り当てられている計算機資源のうちの前記使用されていない計算機資源を解放するように、前記ハイパーバイザ部に指示させることを特徴とする
    資源管理プログラム。
  17. 1つ以上の仮想計算機と、その仮想計算機を動作させるためのハイパーバイザ部とを有して構成される仮想計算機環境を物理計算機である資源管理装置上に構築するとともに、前記仮想計算機上のOS上で動作するアプリケーション部が使用する計算機資源に対して、前記物理計算機の計算機資源を割り当てる前記資源管理装置であって、
    前記仮想計算機が、割当処理部および前記アプリケーション部を動作し、
    前記アプリケーション部が、前記物理計算機の計算機資源を、前記アプリケーション部が使用する計算機資源として割り当て、
    前記割当処理部が、前記アプリケーション部が使用する計算機資源に対して、そのアプリケーション部に割り当て済みの計算機資源が少ないときに、1つ以上の前記仮想計算機でそれぞれ動作している前記各アプリケーション部に対して、前記各アプリケーション部が動作する前記仮想計算機に割り当て済みの計算機資源から、使用されていない計算機資源の解放指示を送信し、
    前記アプリケーション部が、前記使用されていない計算機資源の解放指示を受信すると、前記アプリケーション部に割り当てられている計算機資源のうちの前記使用されていない計算機資源を解放するように、前記ハイパーバイザ部に指示することを特徴とする
    資源管理装置。
JP2010100477A 2009-04-27 2010-04-26 資源管理方法、資源管理プログラム、および、資源管理装置 Active JP5466568B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010100477A JP5466568B2 (ja) 2009-04-27 2010-04-26 資源管理方法、資源管理プログラム、および、資源管理装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2009107783 2009-04-27
JP2009107783 2009-04-27
JP2010100477A JP5466568B2 (ja) 2009-04-27 2010-04-26 資源管理方法、資源管理プログラム、および、資源管理装置

Publications (2)

Publication Number Publication Date
JP2010277581A JP2010277581A (ja) 2010-12-09
JP5466568B2 true JP5466568B2 (ja) 2014-04-09

Family

ID=42993120

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010100477A Active JP5466568B2 (ja) 2009-04-27 2010-04-26 資源管理方法、資源管理プログラム、および、資源管理装置

Country Status (2)

Country Link
US (1) US20100274947A1 (ja)
JP (1) JP5466568B2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112011103979T5 (de) * 2010-11-30 2013-08-29 International Business Machines Corporation Computerprogramm und System für ein Verfahren zur Optimierung der Speicherverwaltung einer auf einer virtuellen Maschine ausgeführten Anwendung
US10346276B2 (en) 2010-12-16 2019-07-09 Microsoft Technology Licensing, Llc Kernel awareness of physical environment
US8943260B2 (en) * 2011-03-13 2015-01-27 International Business Machines Corporation Dynamic memory management in a virtualized computing environment
CN102306126B (zh) * 2011-08-24 2014-06-04 华为技术有限公司 内存管理方法、装置和系统
US9152548B2 (en) * 2012-01-17 2015-10-06 Vmware, Inc. Controlling access to a privileged resource in user-mode system level mobile virtualization using a ptrace () system call
TW201339838A (zh) * 2012-03-16 2013-10-01 Hon Hai Prec Ind Co Ltd 虛擬機記憶體管理系統及方法
US8924640B2 (en) * 2012-05-14 2014-12-30 Alcatel Lucent Dynamic allocation of records to clusters in a ternary content addressable memory
US9703582B1 (en) * 2012-09-07 2017-07-11 Tellabs Operations, Inc. Share access of allocated storage space via in-memory file system between virtual machines
JP2014081709A (ja) * 2012-10-15 2014-05-08 Fujitsu Ltd リソース管理プログラム、リソース管理方法、及び情報処理装置
US9256469B2 (en) 2013-01-10 2016-02-09 International Business Machines Corporation System and method for improving memory usage in virtual machines
US9639399B2 (en) * 2013-02-01 2017-05-02 Tencent Technology (Shenzhen) Company Limited Method, apparatus and terminal for releasing memory
JP6089783B2 (ja) * 2013-02-27 2017-03-08 富士通株式会社 制御装置、リソース制御プログラムおよびリソース制御方法
WO2014171002A1 (ja) * 2013-04-19 2014-10-23 株式会社日立製作所 メモリ管理方法、計算機及び記録媒体
WO2015045046A1 (ja) * 2013-09-26 2015-04-02 株式会社日立製作所 計算機システムおよび計算機システムのメモリ割当調整方法
US9798567B2 (en) 2014-11-25 2017-10-24 The Research Foundation For The State University Of New York Multi-hypervisor virtual machines
CN104915151B (zh) * 2015-06-02 2018-12-07 杭州电子科技大学 多虚拟机系统中一种主动共享的内存超量分配方法
JP6374845B2 (ja) * 2015-08-07 2018-08-15 株式会社日立製作所 計算機システム及びコンテナ管理方法
US10346050B2 (en) 2016-10-26 2019-07-09 International Business Machines Corporation Virtualization of memory compute functionality
US10445009B2 (en) * 2017-06-30 2019-10-15 Intel Corporation Systems and methods of controlling memory footprint
US11016798B2 (en) 2018-06-01 2021-05-25 The Research Foundation for the State University Multi-hypervisor virtual machines that run on multiple co-located hypervisors
US11934857B2 (en) * 2021-03-16 2024-03-19 Vmware, Inc. Supporting execution of a computer program by using a memory page of another computer program

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6898564B1 (en) * 2000-05-23 2005-05-24 Microsoft Corporation Load simulation tool for server resource capacity planning
JP2002202959A (ja) * 2000-12-28 2002-07-19 Hitachi Ltd 動的な資源分配をする仮想計算機システム
US7047358B2 (en) * 2001-12-26 2006-05-16 Boon Storage Technologies, Inc. High-performance log-structured RAID
JP2008225520A (ja) * 2007-03-08 2008-09-25 Nec Corp 仮想マシン環境においてメモリ資源を配置するメモリ資源配置制御方法、仮想マシンシステム及びプログラム
US8312201B2 (en) * 2008-06-09 2012-11-13 International Business Machines Corporation Managing memory allocations loans

Also Published As

Publication number Publication date
US20100274947A1 (en) 2010-10-28
JP2010277581A (ja) 2010-12-09

Similar Documents

Publication Publication Date Title
JP5466568B2 (ja) 資源管理方法、資源管理プログラム、および、資源管理装置
JP5235989B2 (ja) 仮想マシンのメモリを管理するためのシステム、方法、及びコンピュータ・プログラム
JP4769484B2 (ja) 仮想計算機をマイグレーションするための方法およびシステム
EP2791806B1 (en) Working set swapping using a sequentially ordered swap file
TWI539280B (zh) 用於分析未經特定設計以提供記憶體分配資訊之應用程式及擷取記憶體分配資訊的方法、及其電腦系統和電腦可讀儲存媒體
JP4748950B2 (ja) 記憶領域管理方法及びシステム
KR20150139408A (ko) 이종의 저장 매체들을 이용하는 분산 파일 시스템을 구동하는 전자 시스템, 및 그것의 데이터 저장 방법 및 관리 방법
JP6165964B2 (ja) 計算機
KR20180045347A (ko) 가상화 환경에서의 자원 관리 방법 및 이를 지원하는 장치
KR20070090649A (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
Chen et al. Pufferfish: Container-driven elastic memory management for data-intensive applications
Min et al. Vmmb: Virtual machine memory balancing for unmodified operating systems
JP5820525B2 (ja) 仮想計算機のスケジュールシステム及びその方法
CN115617542A (zh) 内存交换方法、装置、计算机设备及存储介质
JP2022034455A (ja) 計算機システムおよび管理方法
JP5178778B2 (ja) 仮想計算機およびcpu割り当て方法
JP6543219B2 (ja) 仮想マシン配置装置およびリソース管理方法
CN107832097B (zh) 数据加载方法及装置
JP6135392B2 (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
WO2010070529A2 (en) A method, apparatus and computer program for moving data in memory
EP3293625B1 (en) Method and device for accessing file, and storage system
JP4862770B2 (ja) 仮想計算機システムにおけるメモリ管理方式及びその方法、およびプログラム
JP5334048B2 (ja) メモリ装置および計算機
JP2008139907A (ja) ジョブ割当プログラム及びジョブ割当方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130903

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130904

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131011

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140114

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140124

R150 Certificate of patent or registration of utility model

Ref document number: 5466568

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150