JP5235989B2 - 仮想マシンのメモリを管理するためのシステム、方法、及びコンピュータ・プログラム - Google Patents

仮想マシンのメモリを管理するためのシステム、方法、及びコンピュータ・プログラム Download PDF

Info

Publication number
JP5235989B2
JP5235989B2 JP2010513902A JP2010513902A JP5235989B2 JP 5235989 B2 JP5235989 B2 JP 5235989B2 JP 2010513902 A JP2010513902 A JP 2010513902A JP 2010513902 A JP2010513902 A JP 2010513902A JP 5235989 B2 JP5235989 B2 JP 5235989B2
Authority
JP
Japan
Prior art keywords
memory
virtual
swap
virtual machine
working
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
JP2010513902A
Other languages
English (en)
Other versions
JP2010532034A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010532034A publication Critical patent/JP2010532034A/ja
Application granted granted Critical
Publication of JP5235989B2 publication Critical patent/JP5235989B2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、一般的にはコンピュータ・システムに関し、特に、仮想マシンのメモリの管理に関する。
現在、仮想マシンとして構成されたコンピュータがよく知られている。この構成では、ハイパーバイザ・プログラムが、実コンピュータの物理資源(CPU、メモリ、記憶装置、及びI/O装置を含む)を個々の仮想マシンに論理的に分割する。例えば、ハイパーバイザは、1つ又はそれ以上の実プロセッサのタイムシェアを、及び実RAMにマップされた一連の仮想プライベート・メモリを、各仮想マシンに割り振る。仮想マシンがそれ自身の仮想プライベート・メモリをアドレスするとき、ハイパーバイザは仮想プライベート・メモリ・アドレスを実メモリの実アドレスに変換する。ハイパーバイザは、それの制御構造を含むハイパーバイザ・プログラム及びそのハイパーバイザ・プログラムによって使用されるデータを格納するために、仮想プライベート・メモリを自身にも割り振る。既知のIBM z/VMオペレーティング・システムでは、ハイパーバイザ・プログラムは制御プログラム(CP)と呼ばれ、各仮想マシンは「ユーザ部分」又は「ゲスト」と呼ばれることもある。
更に、論理区分化プログラムが実コンピュータの物理資源(CPU、メモリ、記憶装置、及びI/O装置を含む)を論理区分(LPAR)に論理的に分割し、しかる後、ハイパーバイザ・プログラムが各LPARにおいて実行されて各LPARの資源を仮想マシンに分割するということも知られている。既知のIBM zSeriesコンピュータでは、既知の「IBMProcessor Resource/Resource Manager - PR/SM(商標)」プログラムが、実コンピュータをLPARに分割又は区分化する。典型的には、アドミニストレータが、各LPARに対するCPU、メモリ、及び記憶装置の量を論理区分化プログラムに対して指定することによって各LPARを定義するのを支援する。論理区分化プログラムは、特定の実コンピュータ資源を、又は全コンピュータ資源の論理シェアを、各LPARに割り振ることができる。各LPARにおける仮想マシンは、それらが、如何なる論理分化も行うことなく実コンピュータから直接に形成された場合と同じように動作する。
従来のIBM z/VMバージョン5.1仮想マシンのオペレーティング・システムは、LPARから、又は未分割の実コンピュータから仮想マシンを形成する既知のハイパーバイザ・プログラムを含む。既存のz/VM5.1オペレーティング・システムの詳細は、IBM社の出版物「z/VMVersion 5 Release 1.0 General Information」(文書番号: GC24−6095−00)において「z/VM Version5 Release 1 Updated Edition」(文書番号:GC24−6095−01)と共に開示され、それらは、米国27626−0570 ノース・カロライナ州ローリー 私書箱29570 IBM出版部門 において、インターナショナル・ビジネス・マシーンズ社から入手可能であり、WWW上のサフィックス「/shop/publications/order」を持つホームページにおいても入手可能である。
ゲスト・オペレーティング・システムが各仮想マシンにおいて(CPU、メモリ等の仮想マシンのシェアを使用して)実行される。1つ又はそれ以上のアプリケーション及びミドルウェア・プログラム(ファイル・マネージャーのような)が、各ゲスト・オペレーティング・システムにおいて実行される。たとえ各アプリケーション、ミドルウェア・プログラム、及びゲスト・オペレーティング・システムが仮想マシンにおいて実行されていても、それらは、それらがそれら自身のプライベート実コンピュータにおいて実行されるように動作する。各仮想マシンにおけるゲスト・オペレーティング・システムは、Linux(LinusTorvaldsの商標)オペレーティング・システム、IBM CMSオペレーティング・システム、又は他のオペレーティング・システムであってもよい。各仮想マシン上の各ゲスト・オペレーティング・システムにおいて実行されるアプリケーション及びミドルウェアは、IBM DB2データ・ベース管理アプリケーション、IBM Websphereアプリケーション、又は種々の他のプログラムであってもよい。
各仮想マシンのためのゲスト・オペレーティング・システム、ミドルウェア、アプリケーション、及びデータは、仮想マシンに割り振られた仮想プライベート・メモリの作業メモリ部分に格納される。各仮想マシンは、その仮想マシンに割り振られた仮想プライベート・メモリのキャッシュ・メモリ部分も含む。そのキャッシュ・メモリは、(ディスク)記憶装置からアクセスされたデータ及び関連するメタデータを含む。メタデータは、データ・ファイルへのディレクトリ及びサブ・ディレクトリ・パス、現在書き込まれている又は読み取られているファイルにおけるレコードの識別子、そのファイルのサイズ、そのファイル内のレコードのサイズ、そのファイル内のデータのタイプ(ASCII、EBCDIC、又はBINARY)を含む。なお、ファイルは、ディスク等に格納されている。ほとんどのゲスト・オペレーティング・システムは、キャッシュ・メモリが満杯であるときにどのデータ・ページがキャッシュ・メモリに残るべきか、及び作業メモリが満杯であるときにどのデータ・ページが作業メモリに残るべきかを決定のためのアルゴリズムを含む。例えば、ほとんどのゲスト・オペレーティング・システムは、仮想マシンが必要とする新しいデータにとって十分な空きがキャッシュ・メモリに存在しないとき、最低使用頻度のデータをキャッシュ・メモリから外部記憶装置にアウトページするために最低使用頻度アルゴリズムを使用し、仮想マシンが必要とする新しいデータにとって十分な空きが作業メモリに存在しないとき、最低使用頻度のデータを作業メモリから外部記憶装置にアウトページするために同様のアルゴリズムを使用する。
仮想マシンは、RAMから仮想マシンに割り振られた仮想プライベート・メモリのスワップ・メモリ部分も含み得る。仮想マシンのスワップ・メモリは、キャッシュ・メモリ及び作業メモリからページ・アウトされたデータをディスク記憶装置にページ・アウトする代わりに、そのデータを受け取り及び格納するためのメモリ・ロケーションとして使用される。典型的な例では、仮想マシンが必要とするデータ(情報又はプログラム)を格納するに十分なキャッシュ・メモリ又は作業メモリが存在しないとき、仮想マシンにおけるゲスト・オペレーティング・システムは、仮想マシンのキャッシュ・メモリ又は作業メモリにおける最低使用頻度のメモリ・データ(4キロバイトのページのような)を識別する。次に、ゲスト・オペレーティング・システムは、最低使用頻度のメモリ・データを仮想マシンにおけるスワップ・メモリ又はディスク記憶装置にコピーし得る。ゲスト・オペレーティング・システムは、仮想マシンのアドミニストレータ定義の構成をベースに、スワップ・メモリ又は(ディスク)記憶装置のどちらにページ・アウトするべきかを決定する。アドミニストレータは、スワップ・メモリ又はディスクのどちらかにページ・アウトするように、又は満杯になるまではスワップ・メモリにページ・アウトし、しかる後、ディスクにページ・アウトするように、仮想マシンを構成し得る。ページ・アウトすることは、ゲスト・オペレーティング・システムが他の必要性の高いデータ・ページをスワップ・メモリ又は記憶装置からキャッシュ・メモリ又は作業メモリにインページすることを可能にするために、キャッシュ・メモリ及び作業メモリを解放する。
ゲスト・オペレーティング・システムのようなLinuxオペレーティング・システム(及び他のオペレーティング・システム)は、ハイパーバイザがそれに割り振る仮想プライベート・メモリを仮想化する。Linuxオペレーティング・システムは、それ自身の仮想化プロセスにおいて、ハイパーバイザがそれに割り振った仮想プライベート・メモリをオーバコミットする。例えば、Linux(又は他の)ゲスト・オペレーティング・システムを有する仮想マシンにハイパーバイザが3ギガバイトの仮想プライベート・メモリを割り振った、と仮定する。これに応答して、Linuxゲスト・オペレーティング・システムは、そのLinuxオペレーティング・システム上で実行されるプロセスに6ギガバイトを自身で仮想的に割り振り得る。これは、一般に、プロセスが平均的にはそれらに割り振られたメモリよりもずっと少ないメモリしか使用しないので、現実的である。それにもかかわらず、Linuxオペレーティング・システム(及びMicrosoftWindowsオペレーティング・システム)は陳腐化したデータを作業メモリ及びキャッシュ・メモリに保存する傾向がある。これは、それが今後必要とされる可能性があるためであり、これがアウトページング及びインページングを減らすためである。このために、Linuxオペレーティング・システムはスワップ・メモリを利用しないし、或いは、そのLinuxオペレーティング・システムがページ・アウトのためにスワップ・メモリを使用するように構成されているときでも、通常の動作中にそれのスワップ・メモリを実質的に十分に活用しない。
ハイパーバイザは、各仮想マシンが前の期間中に使用したメモリの量(作業セットと呼ばれる)を追跡する。ハイパーバイザは、全仮想マシンの「作業セット」の結合したサイズを使用して、それ自身にとって及びそれが実質的に創出し得る他の仮想マシンにとって使用可能なメモリの量を決定する。ハイパーバイザは、一般にはハイパーバイザ及びすべての仮想マシンがそれぞれのメモリ割り振り分すべてを使用するとは限らないので、それ自身に対して、及びそれが実質的に創出し得る他の仮想マシンに対して、使用可能な仮想プライベート・メモリをオーバコミットする。
時には、ハイパーバイザは、別の仮想マシンを形成するために、又はメモリが不足している既存のクリティカルな仮想マシンに割り振るために、それ自身のオペレーションのための追加のメモリを必要とすることがある。いずれのそのような場合でも、(IBM z/VM 5.1オペレーティング・システムにおいて見られるような)ハイパーバイザは、仮想プライベート・メモリの既存の割り振り分の一部を自主的に放棄するように、過剰の仮想プライベート・メモリを有する仮想マシンに要求を行い得る。一般的には、その要求に応答して、仮想マシンが、それらの全仮想プライベート・メモリの割り振り分のうちの一部を放棄し、しかる後、仮想プライベート・メモリの残りの割り振り分に基づいて作業メモリ及びキャッシュ・メモリの量を再平衡化するであろう。或るゲスト・オペレーティング・システムは、それらのキャッシュ・メモリから仮想プライベート・メモリだけを、それが存在する場合、放棄するであろう。スワップ・メモリ割り振り分は、それが存在しても、影響を受けない。しかし、これは、それらの作業アイテムを効果的に遂行するには十分な量の仮想プライベート・メモリを持たない一部の又はすべての仮想マシンを見捨てることになり得る。
IBM社の出版物「z/VM Version 5 Release 1.0 General Information」(文書番号: GC24−6095−00) IBM社の出版物「z/VM Version 5 Release 1 Updated Edition」(文書番号:GC24−6095−01)
本発明の目的は、メモリの割り振りをより良く管理する方法、仮想マシン制御プログラム、及びコンピュータ・システムを提供することにある。
本発明の別の目的は、仮想マシンへのメモリの割り振りをより良く管理する方法、仮想マシン制御プログラム、及びコンピュータ・システムを提供することことにある。
本発明は、仮想マシン制御プログラムによって複数の仮想マシンに割り振られた仮想メモリを管理するためのシステム、コンピュータ・プログラム、及び方法に関する。仮想マシンの各々は、仮想プライベート・メモリの割り振り分を作業メモリ、キャッシュ・メモリ、及びスワップ・メモリに分割させる。仮想マシン制御プログラムは、それが追加の仮想メモリ割り振り分を必要とするということを決定し、それに応答して、仮想マシン制御プログラムは、それら仮想マシンのそれぞれの作業メモリ及び/又はキャッシュ・メモリの一部をスワップ・メモリに変換するためのそれぞれの要求を仮想マシンに対して行う。
本発明の特徴によれば、各要求は、スワップ・メモリに変換するべき作業メモリ及び/又はキャッシュ・メモリの量を指定する。複数の仮想マシンは、それらのそれぞれの仮想マシンに割り振られた作業メモリ及び/又はキャッシュ・メモリを、それらのそれぞれの仮想マシンに割り振られたスワップ・メモリよりも十分に利用するようにプログラムされたそれぞれの複数のゲスト・オペレーティング・システムを含む。
更に、本発明は、仮想マシン制御プログラムによって複数の仮想マシンに割り振られた仮想メモリを管理するためのシステム、コンピュータ・プログラム、及び方法に関する。各仮想マシンは、作業メモリ、キャッシュ・メモリ、及びスワップ・メモリに分割された仮想プライベート・メモリの割り振り分を有する。仮想マシン制御プログラムは、それが、その仮想マシン制御プログラムに現在割り振られている割り振り分よりも少ない仮想メモリ割り振り分を必要とするということを決定し、それを応答して、仮想マシン制御プログラムは、仮想マシンのそれぞれのスワップ・メモリの一部を作業メモリ及び/又はキャッシュ・メモリに変換するための要求を仮想マシンに対して行う。
本発明の特徴によれば、各要求は、作業メモリ及び/又はキャッシュ・メモリに変換するべきスワップ・メモリの量を指定する。複数の仮想マシンが、それらのそれぞれの仮想マシンに割り振られた作業メモリ及び/又はキャッシュ・メモリを、それらのそれぞれの仮想マシンに割り振られたスワップ・メモリよりも十分に利用するようにプログラムされたそれぞれの複数のゲスト・オペレーティング・システムを含む。
本発明に従ってゲスト・オペレーティング・システム及びハイパーバイザ・プログラムを含む実コンピュータのブロック図である。 図1のハイパーバイザ・プログラムの機能及び動作を表すフローチャートである。 図1のゲスト・オペレーティング・システムの機能及び動作を表すフローチャートである。
図面を参照して本発明を詳細に説明する。図1は、本発明の一実施例に従って、概略的に表されたコンピュータ・システム10を示す。コンピュータ・システム10は、実CPU23、実メモリ(RAM)24、実I/O装置25、実外部記憶装置26、及び実外部オペレータ・コンソール27を備えた実/物理コンピュータ20を含む。本発明の1つの実施例では、コンピュータ20は論理区分(LPAR)に分割されていない。しかし、本発明の別の実施例では、既知の論理区分化プログラム(図示されない)が、コンピュータ20をLPARに分割し、1つのそのようなLPARが図1に示される。LPARは、コンピュータ20の実コンピュータ資源の実又は論理区分化である。例えば、コンピュータ20が8個のプロセッサを含む場合、論理区分化プログラムは、2個の実プロセッサを4個のLPARの各々に割り振ることができるし、又は、論理区分化プログラムは、8個のプロセッサすべてを4個のLPARの間でタイムシェアすることができる。論理区分化プログラムは、コンピュータ20の全メモリを異なるLPARの間で分割し、各LPARによって使用される論理アドレスを、実データが格納される実メモリのアドレスに変換する。例えば、実コンピュータ20はIBM zSeriesサーバであってもよいが、本発明は、他のサーバ・コンピュータ、又はパーソナル・コンピュータにおいても具現化されてもよい。コンピュータ20がLPARに分割される実施例では、論理区分化プログラムは、既知の「IBM Processor Resource/Resource Manager - PR/SM(商標)」プログラムであってもよい。
ハイパーバイザ・プログラム40がコンピュータ20において実行され、コンピュータ20の実資源を仮想マシン33、34、及び35(並びに図示されない他の仮想マシン)に分割する。言い換えれば、ハイパーバイザ・プログラム40が、仮想マシン33、34、及び35の各々に対する資源プラットフォームを形成するようにコンピュータ20のCPU23、メモリ24、I/O装置25、及びディスク記憶装置26を含むコンピュータ資源を論理的に分割し、仮想化する。(コンピュータ20が異なるLPARに分割される場合、ハイパーバイザ・プログラム40と同様の個別のハイパーバイザ・プログラムが各LPARにおいて実行され、各LPARを仮想マシンに論理的に分割する)。例えば、ハイパーバイザ40は、実プロセッサ23のタイムシェアと実RAM 24にマップされた一連の仮想プライベート・メモリとを各仮想マシン33、34、及び35に割り振る。例えば、ハイパーバイザ40は、仮想プライベート・メモリ133を仮想マシン33に、仮想プライベート・メモリ134を仮想マシン34に、及び仮想プライベート・メモリ135を仮想マシン35に割り振る。仮想マシン33、34、又は35がそれの仮想プライベート・メモリをアドレスするとき、ハイパーバイザ40は仮想メモリ・アドレスを実メモリ24の実アドレスに変換する。ハイパーバイザ40は、それ自身又は他の仮想マシンに関して、多くの又は少ない仮想プライベート・メモリを求めるそのハイパーバイザ40による要求を満たすために、それぞれのスワップ・メモリを増加又は減少させるようそれぞれの仮想マシンにおけるゲスト・オペレーティング・システムに要求し得る。
ゲスト・オペレーティング・システム43、44、及び45はそれぞれの仮想マシン33、34、及び35において実行され、アプリケーション53、54、及び55、並びにミドルウェア63、64、及び65がそれぞれのゲスト・オペレーティング・システム43、44、及び45において実行される。しかし、各ゲスト・オペレーティング・システムにおいて実行される複数のアプリケーションが存在してもよい。例えば、ゲスト・オペレーティング・システムは、各仮想マシンにおける仮想プライベート・メモリ割り振り分の総量がほぼ同じままとなるように作業メモリ及びキャッシュ・メモリの同時増加又は減少を償うべく、スワップ・メモリを同時に増加又は減少させるためのハイパーバイザからの要求に応じるよう本発明に従って修正されたLinuxオペレーティング・システム又はIBM CMSオペレーティング・システムであってもよい。更に、本発明によって修正されたMicrosoft Windowsオペレーティング・システム、Unixオペレーティング・システム、SunMicrosystems Solaris(商標)オペレーティング・システム、又はHewlett Packard HP UXオペレーティング・システムのような他のゲスト・オペレーティング・システムも使用可能である。例えば、アプリケーション53、54、及び55はIBM DB2データ・ベース管理アプリケーションであってもよく、ミドルウェア63、64、及び65はIBM Websphereプログラムであってもよい。アプリケーション53、54、及び55、並びにミドルウェア63、64、及び65の性質は、それらが仮想プライベート・メモリを利用するという点を除けば、本発明の一部を形成しない。それぞれの仮想マシン33、34、及び35内のゲスト・オペレーティング・システム43、44、及び45は、仮想プライベート・メモリ133、134、及び135のそれぞれの割り振り分を、それぞれの(仮想・仮想)作業メモリ233、234、及び235、キャッシュ・メモリ333、334、及び335、並びにスワップ・メモリ433、434、及び445に分割する。ゲスト・オペレーティング・システム、ミドルウェア、及びアプリケーション、並びにコンピュータ10における各仮想マシンに対するそれらのデータは、仮想マシンに割り振られたそれぞれの作業メモリに格納される。キャッシュ・メモリは、(ディスク)記憶装置又はスワップ・メモリからアクセスされたデータ、及び関連するメタデータを含む。メタデータは、データ・ファイルに対するディレクトリ及びサブ・ディレクトリ・パス、ファイル内のレコードのアイデンティティ、現在書き込まれている又は読み取られているファイル内のレコードの識別子、ファイルのサイズ、ファイルにおけるレコードのサイズ、ファイルにおけるデータのタイプ(ASCII、EBCDIC、又はBINARY)を含み、この場合のファイルはディスク等に格納されている。ほとんどのゲスト・オペレーティング・システムは、キャッシュが満杯であるときにどのデータ・ページがキャッシュ・メモリに残るべきか、及び作業メモリが満杯であるときにどのデータ・ページが作業メモリに残るべきかを決定するための或るアルゴリズムを含む。例えば、ほとんどのゲスト・オペレーティング・システムは、仮想マシンが必要とする新しいデータのための十分な空きがキャッシュ・メモリにないとき、キャッシュ・メモリから外部記憶装置又はスワップ・メモリに最小使用頻度のデータをアウトページするために最小使用頻度アルゴリズムを使用し、仮想マシンが必要とする新しいデータのための十分な空きが作業メモリにないとき、作業メモリから外部記憶装置又はスワップ・メモリに最小使用頻度のデータをアウトページするために同様のアルゴリズムを使用する。各スワップ・メモリは、ディスク記憶装置にデータをページ・アウトする代わりに、キャッシュ・メモリ及び作業メモリからページ・アウトされたデータを受け取って格納するために使用される。スワップ・メモリに存在するデータは必要に応じてページ・インされる。各ゲスト・オペレーティング・システムは、仮想マシンのユーザ構成に基づいてスワップ・メモリ又はディスク記憶装置のどちらにデータをページ・アウトするべきかを決定する。本発明では、ゲスト・オペレーティング・システムは、スワップ・メモリにデータをページ・アウトするように、及びスワップ・メモリからデータをページ・インするように構成される。典型的な例では、仮想マシンが必要とするデータ(情報又はプログラム)を格納するに十分なキャッシュ・メモリ又は作業メモリがないとき、仮想マシンにおけるゲスト・オペレーティング・システムは、その仮想マシンのキャッシュ・メモリ又は作業メモリにおける最小使用頻度のメモリ・データ(4キロバイト・ページのような)を識別する。しかる後、ゲスト・オペレーティング・システムは、仮想マシンのスワップ・メモリにその最小使用頻度のメモリ・ページをコピーする。これは、それぞれのゲスト・オペレーティング・システムがスワップ・メモリからキャッシュ・メモリ又は作業メモリに他の更なる必要なデータ・ページをインページすることを可能にするために、仮想マシンのキャッシュ・メモリ及び作業メモリを解放する。
ハイパーバイザ40は、それ自体にも仮想プライベート・メモリ140を割り振り、それが所有する仮想プライベート・メモリ140を作業メモリ240、キャッシュ・メモリ340、及びスワップ・メモリ440に分割する。ハイパーバイザ40は、共用メモリ(アクセス可能であり、仮想マシン33、34、及び35のすべてによって共用される)も割り振る。
Linuxオペレーティング・システム(及びMicrosoftWindowsオペレーティング・システム及び他のオペレーティング・システム)は、ゲスト・オペレーティング・システムのように、ハイパーバイザ40がそれに割り振る仮想プライベート・メモリを仮想化し得る。それ自身の仮想化プロセスにおいて、Linuxオペレーティング・システムは、ハイパーバイザ40がそれに割り振られた仮想プライベート・メモリをオーバコミットする。例えば、3ギガバイトの仮想プライベート・メモリを仮想マシンに割り振られたハイパーバイザがLinux(又は他の)ゲスト・オペレーティング・システムを有するものと仮定する。これに応答して、Linuxゲスト・オペレーティング・システム自体が、事実上Linuxオペレーティング・システム上で実行されるプロセスに6ギガバイトを仮想的に割り振り得る。一般に、プロセスは、それらに割り振られたメモリよりも遥かに少量のメモリしか使用しないので、これは現実的である。
Linuxオペレーティング・システム(及びMicrosoftWindowsオペレーティング・システム)は、最近使用されてないデータをその作業メモリ及びキャッシュ・メモリに保持する傾向がある。これは、そのデータが今後必要とされる機会があり、これがその後のアウトページング及びインページングを減らすと思われるからである。このため、ページ・アウト(及びページ・イン)のためにスワップ・メモリを使用するように構成されるときでも、一般には、Linuxオペレーティング・システム(及びMicrosoftWindowsオペレーティング・システム)はスワップ・メモリを使用せず、又は、正規の動作中、実質的にスワップ・メモリを十分に活用しない。
下記の表1は、スワップ・メモリを使用するように構成されたとき、通常の動作中における或る瞬間のハイパーバイザ40及びゲスト・オペレーティング・システム43、44、及び45によるメモリ割り振りの一例である。
Figure 0005235989
この例では、コンピュータ10における全実メモリ10(15ギガバイト)がハイパーバイザ40による結合されたすべての仮想メモリ割り振り分(41.5ギガバイト)よりもかなり少ないということに留意されたい。この例では、それらのプロセスに対するすべてのゲスト・オペレーティング・システムによる全仮想・仮想メモリ割り振り分が遥かに大きい(83ギガバイト)。これは、ハイパーバイザ40及び仮想マシン33〜35が一般にはそれぞれの仮想メモリ割り振り分より遥かに少ない仮想メモリを使用するので、現実的である。この例では、コンピュータ10におけるすべてのプロセスによる実メモリの消費量が、通常は、8ギガバイト及び13ギガバイトの間で変わるということを仮定している。
この例では、その後の或る時点で、ハイパーバイザ40は、自身のために追加の仮想プライベート・メモリ(例えば、更に約5ギガバイト)を必要とするものと仮定する。従って、ハイパーバイザ40は、作業メモリ及び/又はキャッシュ・メモリを追加のスワップ・メモリに変換することによってそれぞれのスワップ・メモリを特定の量だけ増加させるように、それぞれの仮想マシン33、34、及び35におけるゲスト・オペレーティング・システム43、44、及び45に要求を行う。例えば、自身のための実メモリの約5ギガバイトを解放するために、ハイパーバイザ40は、ゲスト・オペレーティング・システム43が仮想プライベート・メモリ(即ち、作業メモリ及び/又はキャッシュ・メモリ)のうちの追加の2ギガバイトをスワップ・メモリに変換することを要求するであろうし、ハイパーバイザ40は、ゲスト・オペレーティング・システム44が仮想プライベート・メモリ(即ち、作業メモリ及び/又はキャッシュ・メモリ)のうちの追加の2ギガバイトをスワップ・メモリに変換することを要求するであろうし、ハイパーバイザ40は、ゲスト・オペレーティング・システム45が仮想プライベート・メモリ(即ち、作業メモリ及び/又はキャッシュ・メモリ)のうちの追加の1ギガバイトをスワップ・メモリに変換することを要求するであろう。これは合計5ギガバイトのスワップ・メモリの増加である。要求に応答して、各ゲスト・オペレーティング・システムは、その作業メモリ及び/又はキャッシュ・メモリの指定された量をスワップ・メモリに変換する。(いずれかのゲスト・オペレーティング・システムが要求に応えるに十分な使用可能な作業メモリ又はキャッシュ・メモリを持っていない場合、ゲスト・オペレーティング・システムは可能な程度にしか応えることができないであろう)。各ゲスト・オペレーティング・システムは、スワップ・メモリに変換するべき現在の作業メモリの量、及びハイパーバイザの要求に適合するようにスワップ・メモリを変換するべき現在のキャッシュ・メモリの量を決定するためにそれ自身のアルゴリズムを使用する。例えば、各ゲスト・オペレーティング・システムは、ハイパーバイザの要求に適合するように、それらの現在の割り振り分に基づいて、既存の作業メモリ及び既存のキャッシュ・メモリをスワップ・メモリに比例的に変換することができる。下記の表2は、先の例において、ハイパーバイザがその仮想プライベート・メモリ(即ち、作業メモリ及び/又はキャッシュ・メモリ)の指定された量をスワップ・メモリに変換するように各仮想メモリに要求し、各仮想マシンがその作業メモリ及びキャッシュ・メモリの比例的な減少に応じた後のメモリ割り振り分である。
Figure 0005235989
この例では、ハイパーバイザ40がその全仮想プライベート・メモリ割り振り分を5ギガバイトだけ増加させ、仮想マシン33が結合した作業メモリ及びキャッシュ・メモリの2ギガバイトをスワップ・メモリに比例的に変換し、仮想マシン34が、結合した作業メモリ及びキャッシュ・メモリの2ギガバイトをスワップ・メモリに比例的に変換し、仮想マシン35が、結合した作業メモリ及びキャッシュ・メモリの1ギガバイトをスワップ・メモリに比例的に変換した。この例では、たとえハイパーバイザ40への全メモリ割り振り分が5ギガバイトだけ増加しても、各仮想マシン33、34、及び35への全仮想プライベート・メモリ割り振り分は変わらない。これは、各仮想マシンが平均的にはそれぞれのスワップ・メモリを実質的に十分に活用しないであろうが、アウトページングを容易にする必要があるとき、スワップ・メモリがそれぞれの仮想マシンにとって使用可能になるであろう、ということで実現可能である。(本発明の別の実施例では、各仮想マシンは、そのスワップ・メモリの量を増加させるであろうが、その作業メモリ及び/又はキャッシュ・メモリの量をもっと大きな量だけ減少させるであろう。)
各仮想マシンにおいて作業メモリ及びキャッシュ・メモリをスワップ・メモリに変換することによって、仮想マシンによる仮想プライベート・メモリの実際の全利用率はより小さくなるであろう。それは、一般にキャッシュ・メモリ及び作業メモリが実質的には必要性に関係なく利用されるが、スワップ・メモリは必要なときしか使用されないためである。これは、ハイパーバイザに余分な利用可能なメモリを提供する。各仮想マシンにおける余分なスワップ・メモリは、減少した作業メモリ及びキャッシュ・メモリを用いた多くのページ・アウト及びページ・インがあるので、各仮想マシンにおいてその減少した作業メモリ及びキャッシュ・メモリを補う傾向があり、追加のスワップ・メモリは、必要なときにページ・アウト及びページ・インを容易にする。
この例では、或るその後の時点で、ハイパーバイザ40が自身のための更に少ない仮想プライベート・メモリ(例えば、約5ギガバイト以下)を必要とするものと仮定する。従って、ハイパーバイザ40は、それぞれのスワップ・メモリの特定の量を作業メモリ及び/又はキャッシュ・メモリに変換するように、それぞれの仮想マシン33、34、及び35におけるゲスト・オペレーティング・システム43、44、及び45に要求し、それによって、各仮想マシンにおけるスワップ・メモリの量を減少させる。これに応答して、各ゲスト・オペレーティング・システムは、スワップ・メモリの特定の量を作業メモリ及び/又はキャッシュ・メモリに変換する。各ゲスト・オペレーティング・システムは、作業メモリに変換するべきスワップ・メモリの指定された量の大きさ、及びをキャッシュ・メモリに変換するべきスワップ・メモリの指定された量の大きさを決定するために、それ自身のアルゴリズムを使用する。前述の例では、各ゲスト・オペレーティング・システムは、それらの現在の割り振り分に基づいて、スワップ・メモリの指定された量を作業メモリ及びキャッシュ・メモリに比例的に変換し得る。例えば、ハイパーバイザ40は、それ自身の使用のための約5ギガバイトの実メモリを放棄するために、ゲスト・オペレーティング・システム43がスワップ・メモリの2ギガバイトを作業メモリ及び/又はキャッシュ・メモリに変換することを要求するであろうし、ハイパーバイザ40は、ゲスト・オペレーティング・システム44がスワップ・メモリの2ギガバイトを作業メモリ及び/又はキャッシュ・メモリに変換することを要求するであろうし、ハイパーバイザ40は、ゲスト・オペレーティング・システム45がスワップ・メモリの1ギガバイトを作業メモリ及び/又はキャッシュ・メモリに変換することを要求するであろう。これは、5ギガバイトのスワップ・メモリの全減少量である。それらの要求に応答して、各ゲスト・オペレーティング・システムは、その減少したスワップ・メモリの指定された量を作業メモリ及び/又はキャッシュ・メモリに変換する。各ゲスト・オペレーティング・システムは、ハイパーバイザの要求に適合するようにそれの現在の作業メモリ及び現在のキャッシュ・メモリを増加させるべき量を決定するためにそれ自身のアルゴリズムを使用する。例えば、各ゲスト・オペレーティング・システムは、作業メモリ及びキャッシュ・メモリの現在の割り振り分に基づいて、ハイパーバイザの要求に適合するように過剰のスワップ・メモリを作業メモリ及びキャッシュ・メモリに比例的に変換し得る。代替方法として、各ゲスト・オペレーティング・システムは、作業メモリ及びキャッシュ・メモリの現在の使用率に基づいて、過剰のスワップ・メモリを作業メモリ及びキャッシュ・メモリに変換し得る。更なる代替方法として、各ゲスト・オペレーティング・システムは、過剰のスワップ・メモリすべてをキャッシュ・メモリに変換し得る。前述の例の場合、下記の表3は、ハイパーバイザがそのスワップ・メモリの指定された量を作業メモリ及び/又はキャッシュ・メモリに変換することを各仮想メモリに要求した後のメモリ割り振り分であり、各仮想マシンは作業メモリ及びキャッシュ・メモリにおける比例的な増加に適合する。
Figure 0005235989
この例では、ハイパーバイザ40がその全仮想プライベート・メモリ割り振り分を5ギガバイトだけ減少させ、仮想マシン33がスワップ・メモリの2ギガバイトを作業メモリ及びキャッシュ・メモリに変換し、仮想マシン34がスワップ・メモリの2ギガバイトを作業メモリ及びキャッシュ・メモリに変換し、仮想マシン35がスワップ・メモリの1ギガバイトを作業メモリ及びキャッシュ・メモリに変換した。この例では、たとえハイパーバイザ40への全メモリ割り振り分が5ギガバイトだけ減少したとしても、各仮想マシンへの全仮想プライベート・メモリ割り振り分は変わらない。これは、平均して、各仮想マシンがその作業メモリ及びキャッシュ・メモリをスワップ・メモリよりも十分に利用するので、現実的である。
図2は、ハイパーバイザ40のオペレーション及び機能を更に詳細に示す。ステップ600において、ハイパーバイザ40は、それ自身の仮想プライベート・メモリ150の現在の全使用率をモニタする。ハイパーバイザ40は、それ自身の仮想プライベート・メモリからのアウトページング及びインページングの量をモニタすることによって仮想プライベート・メモリの現在の使用率をモニタする。ハイパーバイザの仮想プライベート・メモリが完全に又はほぼ完全に利用される場合、十分な使用可能の作業メモリ及びキャッシュ・メモリが存在しないので、大量のアウトページング及びインページングが存在するであろうし、その逆もあるであろう。例えば、不十分な作業メモリ及びキャッシュ・メモリの場合、所定期間中のページ・アウト及びページ・インの数は所定の上部閾値より大きいであろう。次に、ハイパーバイザ40は、それ自身の仮想プライベート・メモリ150のそれの現在の総使用率が閾値よりも大きいかどうか、例えば、所定の上部閾値よりも大きい量のアウトページング及びインページングが存在するかどうかを決定する(判断ステップ604)。ハイパーバイザ40の仮想プライベート・メモリ150の現在の総使用率が所定の閾値を越える場合(判断ステップ604の「イエス」分岐)、ハイパーバイザ40は、そのハイパーバイザ40が必要とする追加の仮想プライベート・メモリの総量を決定する(ステップ608)。ステップ608において、ハイパーバイザ40は、ページ・アウト及びページ・インの数に基づいて、それが必要とする仮想プライベート・メモリの総量を決定する。ハイパーバイザ40が経験したページ・アウト及びページ・インが多いほど、ハイパーバイザ40が必要とする仮想プライベート・メモリが多くなる。次に、ハイパーバイザ40は、そのハイパーバイザ40が必要とする仮想プライベート・メモリの追加量を合算するために、各仮想マシンが追加するべきスワップ・メモリの量を決定する。例えば、ハイパーバイザ40は、そのハイパーバイザ40が必要とする量を合算するために、等量の仮想プライベート・メモリをスワップ・メモリに変換するように各仮想マシンに要請し得る。従って、ハイパーバイザが仮想プライベート・メモリの5ギガバイトを必要とし且つ5個の仮想マシンが存在する場合、ハイパーバイザ40は、それ自身の作業メモリ及び/又はキャッシュ・メモリの1ギガバイトをスワップ・メモリに変換するように各仮想マシンに要求し得る。別の例として、仮想マシンが優先順位付けられ、ハイパーバイザ40は、そのハイパーバイザ40がスワップ・メモリに変換するよう高い優先順位の仮想マシンに要求する量よりも大きい量の作業メモリ及び/又はキャッシュ・メモリをスワップ・メモリに変換するように低い優先順位の仮想マシンに要求する。次に、ハイパーバイザ40は、作業メモリ及び/又はキャッシュ・メモリのそれぞれの指定された量をスワップ・メモリに変換するための要求を仮想マシン33、34、及び35の各々に送る(ステップ630)。上記の例では、ハイパーバイザ40は、作業メモリ及び/又はキャッシュ・メモリの2ギガバイトをスワップ・メモリに変換するように仮想マシン33に要求し、ハイパーバイザ40は、作業メモリ及び/又はキャッシュ・メモリの2ギガバイトをスワップ・メモリに変換するように仮想マシン34に要求し、そして、ハイパーバイザ40は、作業メモリ及び/又はキャッシュ・メモリの1ギガバイトをスワップ・メモリに変換するように仮想マシン35に要求する。
判断ステップ604を再び参照すると、ハイパーバイザ40が追加の仮想プライベート・メモリを必要としない場合にはノー(NO)にブランチする。そのような場合、ハイパーバイザ40は、それの現在のページ・アウト及びページ・インに基づいて、それが仮想プライベート・メモリのそれの現在の割り振りの一部を放棄し得るかどうかを決定する。ページ・アウト及びページ・インの数が非常に少ない場合、ハイパーバイザ40は、ページ・アウト及びページ・インの現在の数がより高い(決定620)場合よりも多くの、仮想プライベート・メモリのそれの現在の割り振り分を放棄し得る。ハイパーバイザ40が仮想プライベート・メモリのそれの現在の割り振り分の一部を放棄しないことを決定する場合、ハイパーバイザ40は所定期間の後にステップ600に戻り、再び仮想プライベート・メモリのそれの現在の使用率を再びモニタする。しかし、ハイパーバイザ40が仮想プライベート・メモリのその現在の割り振りの一部を放棄することを決定する場合(決定ステップ620の「イエス」ブランチ)、ハイパーバイザ40は、そのハイパーバイザ40が放棄しようとする追加の仮想プライベート・メモリの全量を決定する(ステップ622)。ステップ622では、ハイパーバイザ40は、上述のように、ページ・アウト及びページ・インの現在の数に基づいて、それが必要としない仮想プライベート・メモリの全量を決定する。次に、ハイパーバイザ40は、そのハイパーバイザ40によって放棄されるべき仮想プライベート・メモリの量を合算するために、各仮想マシンが作業メモリ及び/又はキャッシュ・メモリに変換するべきスワップ・メモリの量を決定する。例えば、ハイパーバイザ40は、ハイパーバイザが必要としない等量の仮想プライベート・メモリを各仮想マシンに対して放棄し得る。代替方法として、ハイパーバイザ40は、低い優先順位の仮想マシンに放棄されるシェアよりも大きいシェアの不必要な仮想プライベート・メモリを、高い優先順位の仮想マシンに放棄し得る。次に、ハイパーバイザ40は、スワップ・メモリのそれぞれの指定された量を作業メモリ及び/又はキャッシュ・メモリに変換するための要求を仮想マシン33、34、及び35の各々に送る(ステップ610)。上記の例では、ハイパーバイザ40は、スワップ・メモリの2ギガバイトを作業メモリ及び/又はキャッシュ・メモリに変換するように仮想マシン33に要求し、ハイパーバイザ40は、スワップ・メモリの2ギガバイトを作業メモリ及び/又はキャッシュ・メモリに変換するように仮想マシン34に要求し、ハイパーバイザ40は、スワップ・メモリの1ギガバイトを作業メモリ及び/又はキャッシュ・メモリに変換するように仮想マシン35に要求する。
図3は、仮想マシンの1つにおけるゲスト・オペレーティング・システムの機能及びオペレーションを示す。(他の仮想マシンにおける他のゲスト・オペレーティング・システムも同様に機能し、動作する)。ステップ700において、ゲスト・オペレーティング・システムが開始する。次に、ゲスト・オペレーティング・システムは、ハイパーバイザ40から、仮想プライベート・メモリの初期割り振り分を表す構成ファイルを読み取り、そしてその内部アルゴリズムを使用して仮想プライベート・メモリの初期割り振り分を作業メモリ、キャッシュ・メモリ、及びスワップ・メモリに分割して仮想プライベート・メモリの初期割り振り分を仮想化する(ステップ702)。例えば、内部アルゴリズムは、システム・アドミニストレータによって定義された初期設定に基づいて、仮想プライベート・メモリの初期割り振り分を作業メモリ、キャッシュ・メモリ、及びスワップ・メモリに分割し得る。次に、ゲスト・オペレーティング・システムは、例えば、それのアプリケーション及びミドルウェアを実行するために既知のオペレーティング・システム機能を遂行する(ステップ704)。次に、ゲスト・システム・オペレーティング・システムは、それのスワップ・メモリの量を変更するための要求をハイパーバイザ40から受け取り(決定706)、その要求がスワップ・メモリの量を増加させるためのものか又は減少させるためのものかを、及びスワップ・メモリの要求された増加量又は減少量を決定する(判断ステップ710)。ハイパーバイザからの要求がスワップ・メモリを増加させるものである場合(判断ステップの「イエス」ブランチ)、ゲスト・オペレーティング・システムは、作業メモリ及び/又はキャッシュ・メモリの全仮想プライベート・メモリの割り振り分をその指定された量だけ減少させ、スワップ・メモリのその仮想プライベート・メモリ割り振り分をその指定された量だけ増加させる(ステップ720)。ステップ720では、ゲスト・オペレーティング・システムが、それ自身のアルゴリズム又はユーザ定義の構成に基づいて、それの作業メモリを減少させるべき量を決定する。更に、ステップ720では、ゲスト・オペレーティング・システムが、それ自身のアルゴリズムあるいはユーザ定義の構成に基づいて、それのキャッシュ・メモリを減少させるべき量も決定する。例えば、ゲスト・オペレーティング・システムは、それがそれ自身のスワップ・メモリを増加させる十分な量だけそれ自身のキャッシュ・メモリを減少させ得る。別の例では、ゲスト・オペレーティング・システムは、それの作業メモリ及びキャッシュ・メモリにおけるそれぞれの十分に活用しない量に対応するそれぞれの量だけその作業メモリ及びキャッシュ・メモリを減少させ得る。従って、大量の作業メモリが十分に活用されず、一方、少量のキャッシュ・メモリも十分に活用されない場合、ゲスト・オペレーティング・システムは、多量の作業メモリ及び少量のキャッシュ・メモリ(しかし、それぞれの一部)をスワップ・メモリに変換するであろう。再び判断ステップ710を再び参照すると、ハイパーバイザからの要求がスワップ・メモリを減少させるためのものである場合(判断ステップ710の「ノー」ブランチ)、ゲスト・オペレーティング・システムは、それの作業メモリ及び/又はキャッシュ・メモリをその指定された量だけ増加させ、それのスワップ・メモリをその指定された量だけ減少させる(ステップ730)。ステップ730では、ゲスト・オペレーティング・システムは、それ自身のアルゴリズム又はユーザ定義の構成に基づいてそれの作業メモリを増加させるべき量を決定する。更に、ステップ730では、ゲスト・オペレーティング・システムが、それ自身のアルゴリズム又はユーザ定義の構成に基づいて、それのキャッシュ・メモリを増加させるべき量も決定する。例えば、ゲスト・オペレーティング・システムは、それがそれ自身のスワップ・メモリを減少させる十分な量だけそれ自身のキャッシュ・メモリを増加させ得る。別の例として、ゲスト・オペレーティング・システムは、それの作業メモリ及び作業メモリのそれぞれの利用量に対応するそれぞれの量だけその作業メモリ及びキャッシュ・メモリを増加させ得る。従って、大量の作業メモリが利用され、一方、少量のキャッシュ・メモリが利用される場合、ゲスト・オペレーティング・システムは多量のスワップ・メモリを作業メモリに変換し、少量のスワップ・メモリをキャッシュ・メモリに(しかし、一部を各々に)変換するであろう。
ゲスト・オペレーティング・システム43、44及び45は、磁気テープ又はディスク、光学的媒体、DVD、半導体メモリ、メモリ・スティック等のようなコンピュータ読取り可能媒体80からコンピュータ20にロードされるか、又はインターネット82からTCP/IPアダプタ・カード84を介してダウンロードされ得る。
ハイパーバイザ・プログラム40は、磁気テープ又はディスク、光学的媒体、DVD、半導体メモリ、メモリ・スティック等のようなコンピュータ読取り可能媒体90からコンピュータ20にロードされるか、又はインターネット82からTCP/IPアダプタ・カード84を介してダウンロードされ得る。
上記説明に基づいて、仮想マシンのメモリを管理するためのコンピュータ・システム、方法、及びコンピュータ・プログラムが開示された。しかし、本発明の範囲から逸脱することなく多くの修正及び代用することが可能である。例えば、ハイパーバイザ40は、自己のための追加の又は少量の仮想プライベート・メモリの必要性に直面するとき、それらのスワップ・メモリの量を変更することに加えて、1個又はそれ以上の仮想マシンに対する仮想プライベート・メモリの割り振り分の総量を変更し得る。従って、本発明は、限定を意味しない実例によって開示されたが、本発明の範囲を決定するためには「特許請求の範囲」の参照が行われるべきである。

Claims (14)

  1. 仮想マシン制御プログラムによって複数の仮想マシンに割り振られた仮想メモリを管理するための方法であって、前記仮想マシンの各々は、作業メモリ、キャッシュ・メモリ、並びに、作業メモリ及びキャッシュ・メモリからページ・アウトされたデータをディスク記憶装置の代わりに格納するためのスワップ・メモリに分割された仮想プライベート・メモリの割り振り分を有し、
    前記仮想マシン制御プログラムが、それが追加の仮想メモリ割り振り分を自身のために必要とするということを決定し、それに応答して、前記仮想マシン制御プログラムが、前記仮想マシンのそれぞれにおいて作業メモリ及び/又はキャッシュ・メモリの一部をスワップ・メモリに変換するためのそれぞれの要求を前記仮想マシンに対して行うステップと、
    前記仮想マシンが、それらのそれぞれにおいて作業メモリ及び/又はキャッシュ・メモリの一部をスワップ・メモリに変換するための前記それぞれの要求に応じるステップと
    を含む方法。
  2. 前記要求の各々は、スワップ・メモリに変換するべき作業メモリ及び/又はキャッシュ・メモリの量を指定する、請求項1に記載の方法。
  3. 前記複数の仮想マシンは、それらのそれぞれの仮想マシンに割り振られた作業メモリ及び/又はキャッシュ・メモリを、それらのそれぞれの仮想マシンに割り振られたスワップ・メモリよりも十分に利用するようにプログラムされたそれぞれの複数のゲスト・オペレーティング・システムを含む、請求項1又は請求項2に記載の方法。
  4. 前記仮想マシンの各々は、キャッシュ・メモリをスワップ・メモリに変換することによって、それらのそれぞれの作業メモリ及び/又はキャッシュ・メモリの一部をスワップ・メモリに変換するための前記要求に応じる、請求項1、請求項2、又は請求項3に記載の方法。
  5. 仮想メモリを仮想マシン制御プログラム及び複数の仮想マシンに割り振るための仮想マシン制御プログラムであって、前記仮想マシンの各々は、作業メモリ、キャッシュ・メモリ、並びに、作業メモリ及びキャッシュ・メモリからページ・アウトされたデータをディスク記憶装置の代わりに格納するためのスワップ・メモリに分割された仮想プライベート・メモリの割り振り分を有し、
    前記仮想マシン制御プログラムが追加の仮想メモリ割り振り分を自身のために必要とするということを決定し、それに応答して、前記仮想マシンのそれぞれにおいて作業メモリ及び/又はキャッシュ・メモリの一部をスワップ・メモリに変換するための要求を前記仮想マシンの各々に対して行う第1のプログラム命令を含み、
    前記第1のプログラム命令はコンピュータ可読媒体に機能的形式で格納される、仮想マシン制御プログラム。
  6. 前記要求の各々は、スワップ・メモリに変換するべき作業メモリ及び/又はキャッシュ・メモリの量を指定する、請求項5に記載の仮想マシン制御プログラム。
  7. 前記複数の仮想マシンは、それらのそれぞれの仮想マシンに割り振られた作業メモリ及び/又はキャッシュ・メモリを、それらのそれぞれの仮想マシンに割り振られたスワップ・メモリよりも十分に利用するようにプログラムされたそれぞれの複数のゲスト・オペレーティング・システムを含む、請求項5に記載の仮想マシン制御プログラム。
  8. 仮想メモリを仮想マシン制御プログラム及び複数の仮想マシンに割り振るためのコンピュータ・システムであって、前記仮想マシンの各々は、作業メモリ、キャッシュ・メモリ、並びに、作業メモリ及びキャッシュ・メモリからページ・アウトされたデータをディスク記憶装置の代わりに格納するためのスワップ・メモリに分割された仮想プライベート・メモリの割り振り分を有し、
    前記仮想マシン制御プログラムが追加の仮想メモリ割り振り分を自身のために必要とするということを決定し、それに応答して、前記仮想マシンのそれぞれにおいて作業メモリ及び/又はキャッシュ・メモリの一部をスワップ・メモリに変換するための要求を前記仮想マシンに対して行うための手段を含み、
    前記仮想マシンは、それらのそれぞれにおいて作業メモリ及び/又はキャッシュ・メモリの一部をスワップ・メモリに変換するための前記それぞれの要求に応じるための手段を含む、コンピュータ・システム。
  9. 前記要求の各々は、スワップ・メモリに変換するべき作業メモリ及び/又はキャッシュ・メモリの量を指定する、請求項8に記載のコンピュータ・システム。
  10. 前記複数の仮想マシンは、それらのそれぞれの仮想マシンに割り振られた作業メモリ及び/又はキャッシュ・メモリを、それらのそれぞれの仮想マシンに割り振られたスワップ・メモリよりも十分に利用するようにプログラムされたそれぞれの複数のゲスト・オペレーティング・システムを含む、請求項8又は請求項9に記載のコンピュータ・システム。
  11. 仮想マシン制御プログラムによって複数の仮想マシンに割り振られた仮想メモリを管理するための方法であって、前記仮想マシンの各々は、作業メモリ、キャッシュ・メモリ、並びに、作業メモリ及びキャッシュ・メモリからページ・アウトされたデータをディスク記憶装置の代わりに格納するためのスワップ・メモリに分割された仮想プライベート・メモリの割り振り分を有し、
    前記仮想マシン制御プログラムが、それが前記仮想マシン制御プログラムに現在割り振られている割り振り分よりも少ない仮想メモリ割り振り分を自身のために必要とするということを決定し、それに応答して、前記仮想マシン制御プログラムが、前記仮想マシンのそれぞれにおいてスワップ・メモリの一部を作業メモリ及び/又はキャッシュ・メモリに変換するためのそれぞれの要求を前記仮想マシンに対して行うステップ、を含む方法。
  12. 前記要求の各々は、作業メモリ及び/又はキャッシュ・メモリに変換するべきスワップ・メモリの量を指定する、請求項11に記載の方法。
  13. 前記複数の仮想マシンは、それらのそれぞれの仮想マシンに割り振られた作業メモリ及び/又はキャッシュ・メモリを、それらのそれぞれの仮想マシンに割り振られたスワップ・メモリよりも十分に利用するようにプログラムされたそれぞれの複数のゲスト・オペレーティング・システムを含む、請求項11又は請求項12に記載の方法。
  14. 前記仮想マシンが、それらのそれぞれのスワップ・メモリの一部を作業メモリ及び/又はキャッシュ・メモリに変換するための前記それぞれ要求に応じるステップを更に含む、請求項11、請求項12、又は請求項13に記載の方法。
JP2010513902A 2007-06-27 2008-06-25 仮想マシンのメモリを管理するためのシステム、方法、及びコンピュータ・プログラム Active JP5235989B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/769,161 2007-06-27
US11/769,161 US8015383B2 (en) 2007-06-27 2007-06-27 System, method and program to manage virtual memory allocated by a virtual machine control program
PCT/EP2008/058081 WO2009000856A1 (en) 2007-06-27 2008-06-25 System, method and program to manage memory of a virtual machine

Publications (2)

Publication Number Publication Date
JP2010532034A JP2010532034A (ja) 2010-09-30
JP5235989B2 true JP5235989B2 (ja) 2013-07-10

Family

ID=39737116

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010513902A Active JP5235989B2 (ja) 2007-06-27 2008-06-25 仮想マシンのメモリを管理するためのシステム、方法、及びコンピュータ・プログラム

Country Status (5)

Country Link
US (1) US8015383B2 (ja)
JP (1) JP5235989B2 (ja)
KR (1) KR101137172B1 (ja)
CN (1) CN101681268B (ja)
WO (1) WO2009000856A1 (ja)

Families Citing this family (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8811431B2 (en) 2008-11-20 2014-08-19 Silver Peak Systems, Inc. Systems and methods for compressing packet data
US8489562B1 (en) 2007-11-30 2013-07-16 Silver Peak Systems, Inc. Deferred data storage
US8885632B2 (en) 2006-08-02 2014-11-11 Silver Peak Systems, Inc. Communications scheduler
US8307115B1 (en) 2007-11-30 2012-11-06 Silver Peak Systems, Inc. Network memory mirroring
US8145871B2 (en) * 2008-06-09 2012-03-27 International Business Machines Corporation Dynamic allocation of virtual real memory for applications based on monitored usage
US9717021B2 (en) 2008-07-03 2017-07-25 Silver Peak Systems, Inc. Virtual network overlay
US10805840B2 (en) 2008-07-03 2020-10-13 Silver Peak Systems, Inc. Data transmission via a virtual wide area network overlay
US10164861B2 (en) 2015-12-28 2018-12-25 Silver Peak Systems, Inc. Dynamic monitoring and visualization for network health characteristics
US8819707B2 (en) * 2009-06-18 2014-08-26 Citrix Systems, Inc. Methods and systems for importing a device driver into a guest computing environment
US8788739B2 (en) * 2009-06-29 2014-07-22 Hewlett-Packard Development Company, L.P. Hypervisor-based management of local and remote virtual memory pages
KR101077782B1 (ko) * 2009-12-18 2011-10-28 한국과학기술원 가상머신의 메모리 관리 시스템 및 관리 방법
US8862922B2 (en) * 2010-01-14 2014-10-14 International Business Machines Corporation Data center power adjustment
US9110806B2 (en) * 2010-03-10 2015-08-18 Microsoft Technology Licensing, Llc Opportunistic page caching for virtualized servers
US8863117B2 (en) * 2010-07-19 2014-10-14 International Business Machines Corporation Optimizing a file system interface in a virtualized computing environment
US8707300B2 (en) * 2010-07-26 2014-04-22 Microsoft Corporation Workload interference estimation and performance optimization
US9086921B2 (en) 2010-11-16 2015-07-21 Vmware, Inc. Dynamic database memory management according to swap rates
CN102467449A (zh) * 2010-11-16 2012-05-23 英业达股份有限公司 支持文件存取测试的大容量扇区磁盘的模拟方法
US8935456B2 (en) * 2010-11-16 2015-01-13 Vmware, Inc. Method and system for integrating database memory management in virtual machines
US8943259B2 (en) * 2010-11-16 2015-01-27 Vmware, Inc. Relieving memory pressure in a host using database memory management
CN102541619B (zh) * 2010-12-23 2015-09-16 国际商业机器公司 虚拟机管理装置和方法
JP5673210B2 (ja) * 2011-02-28 2015-02-18 日本電気株式会社 仮想計算機システム、仮想計算機システムのメモリ管理方法およびメモリ管理プログラム
US9552215B2 (en) 2011-03-08 2017-01-24 Rackspace Us, Inc. Method and system for transferring a virtual machine
US8943260B2 (en) * 2011-03-13 2015-01-27 International Business Machines Corporation Dynamic memory management in a virtualized computing environment
US8725963B1 (en) * 2011-04-15 2014-05-13 Parallels IP Holdings GmbH System and method for managing a virtual swap file for virtual environments
US9237127B2 (en) * 2011-05-12 2016-01-12 Airmagnet, Inc. Method and apparatus for dynamic host operating system firewall configuration
US9130991B2 (en) 2011-10-14 2015-09-08 Silver Peak Systems, Inc. Processing data packets in performance enhancing proxy (PEP) environment
US9626224B2 (en) * 2011-11-03 2017-04-18 Silver Peak Systems, Inc. Optimizing available computing resources within a virtual environment
US8990263B2 (en) * 2012-03-15 2015-03-24 International Business Machines Corporation Policy-based management of storage functions in data replication environments
JP2013196421A (ja) * 2012-03-21 2013-09-30 Nec Corp 仮想化システム、仮想サーバ、メモリ管理方法及びメモリ管理プログラム
US20130262811A1 (en) * 2012-03-27 2013-10-03 Hitachi, Ltd. Method and apparatus of memory management by storage system
US9996370B1 (en) * 2012-04-18 2018-06-12 Open Invention Network Llc Page swapping in virtual machine environment
US9027024B2 (en) 2012-05-09 2015-05-05 Rackspace Us, Inc. Market-based virtual machine allocation
US9336147B2 (en) * 2012-06-12 2016-05-10 Microsoft Technology Licensing, Llc Cache and memory allocation for virtual machines
KR101694297B1 (ko) 2012-08-30 2017-01-23 한국전자통신연구원 가상화 시스템을 위한 데스크탑 가상화 매니저 장치 및 클라이언트 장치
US9116744B2 (en) * 2012-09-07 2015-08-25 International Business Machines Corporation Resource management within a process via iterative negotiation
CN102880557B (zh) * 2012-09-13 2015-06-10 浙江金大科技有限公司 一种异构数据源的多级分布式高速缓存的查找方法
CN103729249B (zh) * 2012-10-11 2017-04-12 财团法人工业技术研究院 虚拟机的存储器管理的方法和计算机系统
CN103729230B (zh) * 2012-10-11 2017-04-12 财团法人工业技术研究院 虚拟机系统的内存管理方法和计算机系统
US9256532B2 (en) * 2012-10-11 2016-02-09 Industrial Technology Research Institute Method and computer system for memory management on virtual machine
KR101999132B1 (ko) * 2012-12-17 2019-10-01 삼성전자주식회사 가상 머신 환경에서 메모리 관리 방법 및 장치
KR101442091B1 (ko) * 2012-12-31 2014-09-25 고려대학교 산학협력단 가상화 시스템에서의 메모리 관리 방법
US11669441B1 (en) * 2013-03-14 2023-06-06 Amazon Technologies, Inc. Secure virtual machine reboot via memory allocation recycling
US9507540B1 (en) 2013-03-14 2016-11-29 Amazon Technologies, Inc. Secure virtual machine memory allocation management via memory usage trust groups
US9323552B1 (en) 2013-03-14 2016-04-26 Amazon Technologies, Inc. Secure virtual machine memory allocation management via dedicated memory pools
US9817756B1 (en) * 2013-05-23 2017-11-14 Amazon Technologies, Inc. Managing memory in virtualized environments
CN103608792B (zh) * 2013-05-28 2016-03-09 华为技术有限公司 支持多核架构下资源隔离的方法及系统
JP6069515B2 (ja) * 2013-09-26 2017-02-01 株式会社日立製作所 計算機システムおよび計算機システムのメモリ割当調整方法
DE102013222167B4 (de) 2013-10-31 2024-07-11 Pfeiffer Vacuum Gmbh Vakuumpumpe
US9396014B2 (en) 2014-02-27 2016-07-19 International Business Machines Corporation Data swap in virtual machine environment
KR101709121B1 (ko) * 2014-04-09 2017-02-22 한국전자통신연구원 가상 머신 구동 방법 및 가상 머신 구동 시스템
US9052938B1 (en) 2014-04-15 2015-06-09 Splunk Inc. Correlation and associated display of virtual machine data and storage performance data
EP3140734B1 (en) 2014-05-09 2020-04-08 Nutanix, Inc. Mechanism for providing external access to a secured networked virtualization environment
US9948496B1 (en) 2014-07-30 2018-04-17 Silver Peak Systems, Inc. Determining a transit appliance for data traffic to a software service
US9875344B1 (en) 2014-09-05 2018-01-23 Silver Peak Systems, Inc. Dynamic monitoring and authorization of an optimization device
US10055146B1 (en) * 2014-12-30 2018-08-21 EMC IP Holding Company LLC Virtual machine rollback
JP6589417B2 (ja) * 2015-07-03 2019-10-16 富士通株式会社 起動制御プログラム、起動制御方法及び起動制御装置
KR102513961B1 (ko) 2015-11-11 2023-03-27 삼성전자주식회사 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법
US10831465B2 (en) 2016-02-12 2020-11-10 Nutanix, Inc. Virtualized file server distribution across clusters
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
US10432484B2 (en) 2016-06-13 2019-10-01 Silver Peak Systems, Inc. Aggregating select network traffic statistics
US9967056B1 (en) 2016-08-19 2018-05-08 Silver Peak Systems, Inc. Forward packet recovery with constrained overhead
US10481951B2 (en) * 2016-11-15 2019-11-19 Red Hat Israel, Ltd. Multi-queue device assignment for application groups
US10824455B2 (en) 2016-12-02 2020-11-03 Nutanix, Inc. Virtualized server systems and methods including load balancing for virtualized file servers
US11568073B2 (en) * 2016-12-02 2023-01-31 Nutanix, Inc. Handling permissions for virtualized file servers
US11562034B2 (en) 2016-12-02 2023-01-24 Nutanix, Inc. Transparent referrals for distributed file servers
US11294777B2 (en) 2016-12-05 2022-04-05 Nutanix, Inc. Disaster recovery for distributed file servers, including metadata fixers
US11281484B2 (en) 2016-12-06 2022-03-22 Nutanix, Inc. Virtualized server systems and methods including scaling of file system virtual machines
US11288239B2 (en) 2016-12-06 2022-03-29 Nutanix, Inc. Cloning virtualized file servers
US10257082B2 (en) 2017-02-06 2019-04-09 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows
US11044202B2 (en) 2017-02-06 2021-06-22 Silver Peak Systems, Inc. Multi-level learning for predicting and classifying traffic flows from first packet data
US10892978B2 (en) 2017-02-06 2021-01-12 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows from first packet data
US10771394B2 (en) 2017-02-06 2020-09-08 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows on a first packet from DNS data
US10481954B2 (en) * 2017-06-09 2019-11-19 Bank Of America Corporation System and method of managing computing resources
US11212210B2 (en) 2017-09-21 2021-12-28 Silver Peak Systems, Inc. Selective route exporting using source type
US10637721B2 (en) 2018-03-12 2020-04-28 Silver Peak Systems, Inc. Detecting path break conditions while minimizing network overhead
US11086826B2 (en) 2018-04-30 2021-08-10 Nutanix, Inc. Virtualized server systems and methods including domain joining techniques
US11194680B2 (en) 2018-07-20 2021-12-07 Nutanix, Inc. Two node clusters recovery on a failure
US10901781B2 (en) 2018-09-13 2021-01-26 Cisco Technology, Inc. System and method for migrating a live stateful container
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
CN110209354B (zh) * 2019-05-24 2022-04-19 北京百度网讯科技有限公司 用于处理数据的方法、装置、设备和介质
US11200091B2 (en) * 2020-02-03 2021-12-14 Dell Products L.P. Adaptive memory optimization for thin clients
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up
US12131192B2 (en) 2021-03-18 2024-10-29 Nutanix, Inc. Scope-based distributed lock infrastructure for virtualized file server
US20230066137A1 (en) 2021-08-19 2023-03-02 Nutanix, Inc. User interfaces for disaster recovery of distributed file servers
US12117972B2 (en) 2021-08-19 2024-10-15 Nutanix, Inc. File server managers and systems for managing virtualized file servers

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07262093A (ja) * 1994-03-17 1995-10-13 Hitachi Ltd 記憶装置の領域再構成制御方式
US20020016891A1 (en) * 1998-06-10 2002-02-07 Karen L. Noel Method and apparatus for reconfiguring memory in a multiprcessor system with shared memory
US6542926B2 (en) * 1998-06-10 2003-04-01 Compaq Information Technologies Group, L.P. Software partitioned multi-processor system with flexible resource sharing levels
JP2002041304A (ja) * 2000-07-28 2002-02-08 Hitachi Ltd 論理区画の予備リソース自動付与方法及び論理区画式計算機システム
GB2381886B (en) * 2001-11-07 2004-06-23 Sun Microsystems Inc Computer system with virtual memory and paging mechanism
US7788461B2 (en) * 2004-04-15 2010-08-31 International Business Machines Corporation System and method for reclaiming allocated memory to reduce power in a data processing system
US7421533B2 (en) * 2004-04-19 2008-09-02 Intel Corporation Method to manage memory in a platform with virtual machines
US7257811B2 (en) * 2004-05-11 2007-08-14 International Business Machines Corporation System, method and program to migrate a virtual machine
DE602004027516D1 (de) * 2004-12-03 2010-07-15 St Microelectronics Srl Ein Verfahren zum Verwalten von virtuellen Maschinen in einer körperlichen Verarbeitungsmaschine, ein entsprechendes Prozessorsystem und Computerprogrammprodukt dafür
US7500048B1 (en) * 2005-12-15 2009-03-03 Vmware, Inc. Transparent page sharing on commodity operating systems
US7487307B2 (en) * 2006-01-05 2009-02-03 International Business Machines Corporation Method, apparatus and program product for managing memory in a virtual computing system

Also Published As

Publication number Publication date
JP2010532034A (ja) 2010-09-30
CN101681268A (zh) 2010-03-24
US20090006801A1 (en) 2009-01-01
CN101681268B (zh) 2012-09-26
US8015383B2 (en) 2011-09-06
WO2009000856A1 (en) 2008-12-31
KR101137172B1 (ko) 2012-04-19
KR20090122936A (ko) 2009-12-01

Similar Documents

Publication Publication Date Title
JP5235989B2 (ja) 仮想マシンのメモリを管理するためのシステム、方法、及びコンピュータ・プログラム
US11704166B2 (en) Load balancing of resources
US9390028B2 (en) Coordination between memory-saving mechanisms in computers that run virtual machines
US8151032B2 (en) Direct memory access filter for virtualized operating systems
JP3882930B2 (ja) 共用リソースを使用するための仮想計算機の管理
US7831977B2 (en) Shared file system cache in a virtual machine or LPAR environment
US9026630B2 (en) Managing resources in a distributed system using dynamic clusters
US10534720B2 (en) Application aware memory resource management
KR101936453B1 (ko) 새로운 애플리케이션을 위한 메모리 관리 모델 및 인터페이스
US10216536B2 (en) Swap file defragmentation in a hypervisor
US8868622B2 (en) Method and apparatus for allocating resources in a computer system
EP3230873B1 (en) Computing method and apparatus with persistent memory
US11093403B2 (en) System and methods of a self-tuning cache sizing system in a cache partitioning system
Min et al. Vmmb: Virtual machine memory balancing for unmodified operating systems
US11513832B2 (en) Low-latency shared memory channel across address spaces in a computing system
US9128746B2 (en) Asynchronous unmap of thinly provisioned storage for virtual machines
US7797508B2 (en) Fair memory resource control for mapped memory
JP2022034455A (ja) 計算機システムおよび管理方法
Fujishima et al. Hadoop I/O Performance Improvement by File Layout Optimization
CN116324706A (zh) 分离式存储器池分配
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
KR102413924B1 (ko) 복수의 컴퓨팅 노드를 이용한 고성능 클라우드 서비스 시스템에서의 프로세스 그룹 관리 방법 및 그 시스템
Liu et al. CPS: A Cooperative Para-virtualized Scheduling Framework for Manycore Machines
US20230027307A1 (en) Hypervisor-assisted transient cache for virtual machines
US20240362050A1 (en) Method to handle heterogeneous input/output (i/o) load for containers running in a virtualized environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110516

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121030

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20121203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130129

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: 20130305

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20130305

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130326

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5235989

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160405

Year of fee payment: 3