JP6645275B2 - 情報処理装置、仮想マシン移動方法、および仮想マシン制御プログラム - Google Patents

情報処理装置、仮想マシン移動方法、および仮想マシン制御プログラム Download PDF

Info

Publication number
JP6645275B2
JP6645275B2 JP2016042495A JP2016042495A JP6645275B2 JP 6645275 B2 JP6645275 B2 JP 6645275B2 JP 2016042495 A JP2016042495 A JP 2016042495A JP 2016042495 A JP2016042495 A JP 2016042495A JP 6645275 B2 JP6645275 B2 JP 6645275B2
Authority
JP
Japan
Prior art keywords
node
moved
information processing
virtual machine
physical server
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
JP2016042495A
Other languages
English (en)
Other versions
JP2017157153A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016042495A priority Critical patent/JP6645275B2/ja
Priority to US15/442,849 priority patent/US10241822B2/en
Publication of JP2017157153A publication Critical patent/JP2017157153A/ja
Application granted granted Critical
Publication of JP6645275B2 publication Critical patent/JP6645275B2/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • 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
    • 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/45595Network integration; Enabling network access in virtual machine instances

Landscapes

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

Description

本発明は、情報処理装置、仮想マシン移動方法、および仮想マシン制御プログラムに関する。
ユーザが利用するサービスやアプリケーションをネットワーク上で提供するクラウドシステムにおいて、物理サーバが、さまざまな仮想マシン(Virtual Machine、VM)を稼働させる場合がある。仮想マシンを稼働させる場合に、各仮想マシンの動作は、利用されるサービスやアプリケーションによって異なるため予測が困難である。したがって、仮想マシンのCentral Processing Unit(CPU)、メモリ等の資源の見積もりは難しい。
物理サーバは、メモリ資源が枯渇すると、スラッシングの発生により性能が低下する。スラッシングは、仮想記憶環境において、物理メモリの不足により、物理メモリと仮想メモリ(二次記憶装置、外部記憶装置、補助記憶装置等)間の入出力が頻発し、CPUが外部の処理を受け付けない状態に陥ることをいう。
物理サーバは、メモリ資源が枯渇すると、所定の仮想マシンを他の物理サーバに移動する。他の物理サーバへの仮想マシンの移動が完了すると、移動された仮想マシンが移動元の物理サーバで利用していたメモリは解放される。移動元の物理サーバは、解放されたメモリを再利用することができる。また、移動先の他の物理サーバは、仮想マシンの移動が完了すると、動作を開始することができる。以下、物理サーバは、情報処理装置とも呼ばれる。
特表2012−521610号公報 特開2009−59121号公報
従来の方法では、他の物理サーバへの仮想マシンの移動が完了するまでの間、移動元の物理サーバ上のメモリは解放されないため、メモリ不足は解消しない。メモリ資源の枯渇は物理サーバの性能低下を招くため、仮想マシンが利用しているメモリの一部が移動すれば、移動した部分のメモリは、解放されることが望ましい。また、移動先の他の物理サーバは、仮想マシンの移動が完了するのを待たずに、移動された部分から動作を開始させることが望ましい。
しかしながら、仮想マシンが利用しているメモリの一部が移動された後、移動元の物理サーバ上の仮想マシンが移動されたメモリにアクセスすると、当該仮想マシンの処理の続行が困難となる。また、仮想マシンが利用しているメモリの一部が移動された後、移動先の物理サーバ上で仮想マシンの動作を開始させると、移動先の物理サーバ上の仮想マシンが、移動されていないメモリにアクセスした場合に、当該仮想マシンの処理の続行が困難となる。
そこで、開示の実施形態の1つの側面は、仮想マシンの他の物理サーバへの移動に際して、移動先の物理サーバ上で移動された仮想マシンの動作を早期に開始させ、仮想マシン
の処理をなるべく続行させることにある。
1つの態様では、それぞれ記憶領域と対応づけられ相互の記憶領域にアクセス可能な複数のノードを含む仮想マシンを稼働させる情報処理装置は、他の情報処理装置から、他の情報処理装置で稼働する仮想マシンの移動を受け付ける場合に、複数のノードはノード単位で移動され、一のノードが移動された後、移動されたノードの動作を開始し、移動されたノードが他の情報処理装置から移動されていないノードに対応づけられた記憶領域にアクセスした場合に、移動されていないノードの移動が完了するまで、移動されたノードの動作を停止する制御部と、を備える。
1つの側面では、本情報処理装置は、仮想マシンの他の物理サーバへの移動に際して、移動先の物理サーバ上で移動された仮想マシンの動作を早期に開始させ、仮想マシンの処理をなるべく続行させることができる。
仮想マシンの移動完了後にメモリを解放する処理を例示する図である。 Non−Uniform Memory Access(NUMA)環境が構築された情報処理装置を例示する図である。 NUMAノードの構成を定義する距離テーブルの一例を示す図である。 情報処理装置の装置構成の一例を示す図である。 仮想マシン上のNUMAノードと物理サーバ上のNUMAノードとの対応関係を例示する図である。 仮想マシン上のNUMAノードの構成を定義する仮想距離テーブルの一例を示す図である。 物理サーバ上の資源と仮想マシン上の資源との対応関係を定義する資源対応テーブルの一例を示す図である。 移動先物理サーバで空の仮想マシンを生成する処理を例示する図である。 仮想マシンをNUMAノード単位で移動する処理を例示する図である。 NUMAノードの停止および開始処理を例示する図である。 他のNUMAノードを移動する処理を例示する図である。 他のNUMAノードの停止および開始処理を例示する図である。 移動元の物理サーバで仮想CPUを停止する処理を例示する図である。 仮想マシンの移動処理の例を示すフローチャートである。 仮想マシンの移動処理の詳細を例示するフローチャートである。 仮想CPUの動作制御処理の例を示すフローチャートである。
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
〔比較例〕
図1は、仮想マシンの移動完了後にメモリを解放する処理を例示する図である。物理サーバ1Aは、仮想マシン2Aおよび2Bを稼働させる。仮想マシン2Aでメモリ不足が生じると、物理サーバ1Aは、仮想マシン2Bを物理サーバ1Bに移動する(P1)。なお、仮想マシン2Bを物理サーバ1Bに移動するとは、仮想マシン2Bを稼働させるコンピュータを物理サーバ1Bに変更することである。以下の説明では、仮想マシンは動作中であることが想定されるが、移動対象の仮想マシンは動作中のものに限られない。
物理サーバ1Aは、仮想マシン2Bの物理サーバ1Bへの移動が完了すると、移動前に仮想マシン2Bが利用していたメモリを解放する(P2)。仮想マシン2Aは、仮想マシン2Bが利用していたページを再利用する(P3)。ページは、一定サイズのメモリブロックである。
図1の例では、物理サーバ1Aで仮想マシン2Bが利用していたメモリは、仮想マシン2Bの物理サーバ1Bへの移動が完了するまで解放されない。このため、仮想マシン2Aのメモリ不足は、仮想マシン2Bの物理サーバ1Bへの移動が完了するまで解消されない。なお、物理サーバ1Aおよび物理サーバ1Bは、総称して物理サーバ1とも呼ばれる。また、仮想マシン2Aおよび仮想マシン2Bは、総称して仮想マシン2とも呼ばれる。
<仮想マシンの移動方法>
図1の例を用いて、仮想マシンの移動方法の1つであるライブマイグレーション(Live Migration)が説明される。ライブマイグレーションでは、移動元の物理サーバ1Aは、仮想マシン2Bを、動作状態のまま移動先の物理サーバ1Bに移動する。
具体的には、物理サーバ1Aは、まず、仮想マシン2Bが利用しているメモリ上の複数のページを、移動先の物理サーバ1Bに転送する。各ページの転送が完了すると、物理サーバ1Aは、転送中に更新されたページを、物理サーバ1Bに再送信する。物理サーバ1Aは、再送中に更新されたページを、物理サーバ1Bに再送信する。物理サーバ1Aは、再送信を繰り返し、更新されたページのサイズが所定の閾値以下となったら、仮想マシン2Bを停止する。最後に、物理サーバ1Aは、更新されたページを物理サーバ1Bに再送信しメモリの転送を終了する。移動先の物理サーバ1Bは、仮想マシン2Bを稼働させる。移動元の物理サーバ1Aは、移動が完了した仮想マシン2Bを消去し、仮想マシン2Bが利用していたメモリを解放する。
仮想マシン2Bの移動完了後にメモリを解放するのではなく、一部のページが物理サーバ1Bに転送された時点でメモリを解放すると、仮想マシン2Bは、転送されたページへのアクセスにより停止される場合が生じる。ページの転送順によっては、仮想マシン2Bが停止する場合が増えるため、一部のページの転送によりメモリを解放することは、パフォーマンスの低下につながる。
〔実施形態〕
実施形態において、物理サーバ1は、仮想マシン2を動作状態のまま、移動先の物理サーバ1に移動する。移動元の物理サーバ1は、仮想マシン2のメモリの一部が移動先の物理サーバ1に転送されると、転送が完了したメモリを解放する。具体的には、物理サーバ1は、仮想マシン2を、CPUとメモリの組からなる複数のNUMAノードで構成する。物理サーバ1は、仮想マシン2を、NUMAノード単位で移動先の物理サーバ1に移動する。物理サーバ1は、NUMAノードの移動が完了するごとに、当該NUMAノードのメモリを解放する。物理サーバ1は、「情報処理装置」の一例である。
<NUMAノード>
図2は、NUMA環境が構築された情報処理装置1(物理サーバ1)を例示する図である。NUMA環境が構築された情報処理装置1は、NUMA型計算機とも呼ばれる。NUMA環境は、CPUとメモリの組からなる複数のNUMAノードを含む。
図2の例において、情報処理装置1は、NUMAノード3AおよびNUMAノード3Bを含む。NUMAノード3Aは、CPU4Aおよびメモリ5Aを含む。CPU4Aはマルチコアプロセッサであり、4つのコアa、コアb、コアcおよびコアdを備える。メモリ5Aは、一定サイズのメモリブロックであるページ1およびページ2を含む。同様に、N
UMAノード3Bは、CPU4Bおよびメモリ5Bを含む。CPU4Bはマルチコアプロセッサであり、4つのコアe、コアf、コアgおよびコアhを備える。メモリ5Bは、一定サイズのメモリブロックであるページ3およびページ4を含む。
NUMAノード3AおよびNUMAノード3Bは、総称してNUMAノード3とも呼ばれる。CPU4AおよびCPU4Bは、総称してCPU4とも呼ばれる。メモリ5Aおよびメモリ5Bは、総称してメモリ5とも呼ばれる。
情報処理装置1は、複数のプロセス6を実行する。Linux(登録商標)等の近代的オペレーティングシステム(Operating System、OS)は、NUMA環境において、情報処理装置1上で実行されるプロセス6が使用するメモリを、NUMAノード3内に閉じるように確保する。例えば、図2において、NUMAノード3A内のメモリ5Aを使用するプロセス6がNUMAノード3B内のメモリ5Bにアクセスする頻度は、メモリ5Aにアクセスする頻度よりも低くなる。
図3は、NUMAノード3の構成を定義する距離テーブル10の一例を示す図である。距離テーブル10は、OSの起動時に設定ファイル等から読み込まれる。OSは、距離テーブル10に基づいて、各プロセス6にCPU4およびメモリ5を割り当てる。図3は、図2に示すNUMAノード3の構成を定義する例を示している。距離テーブル10は、NUMA ID、ページ、CPUコアの項目を含む。
NUMA IDの項目は、NUMAノード3の識別子を示す。図3の距離テーブル10は、NUMA IDが“X”および“Y”の2つのNUMAノード3を定義する。図2のNUMAノード3AのNUMA IDは“X”、NUMAノード3BのNUMA IDは“Y”として定義される。
ページの項目は、NUMAノード3のメモリ5に含まれるページを示す。NUMA IDが“X”であるNUMAノード3Aに含まれるページとして、ページ“1”およびページ“2”が定義される。また、NUMA IDが“Y”であるNUMAノード3Bに含まれるページとして、ページ“3”およびページ“4”が定義される。各ページは、メモリ上のアドレスの範囲により指定される。例えば、ページ“1”〜“4”は、それぞれ0x0000−0x1000、0x1000−0x2000、0x2000−0x3000、0x3000−0x4000のアドレスの範囲のメモリブロックである。
CPUコアの項目は、NUMAノード3に含まれるCPU4が備えるコアを示す。NUMAノード3AのCPU4Aが備えるコアとして、4つのCPUコアa、コアb、コアcおよびコアdが定義される。また、NUMAノード3BのCPU4Bが備えるコアとして、4つのコアe、コアf、コアgおよびコアhが定義される。
<装置構成>
図4は、情報処理装置1の装置構成の一例を示す図である。情報処理装置1(物理サーバ1)は、複数のNUMAノード3およびハイパーバイザ7を含み、複数の仮想マシン2を稼働させる。図4の例では、情報処理装置1は、2つのNUMAノード3およびハイパーバイザ7を含み、4つの仮想マシン2を稼働させる。
各NUMAノード3は、それぞれCPU4およびメモリ5を備える。CPU4は、様々なコンピュータプログラムをメモリ5にロードして実行することによって、様々な処理を実行する。また、CPU4は、複数のコアを含むマルチコアのプロセッサ、複数のCPUを組み合わせたマルチプロセッサであってもよい。CPU4は、距離テーブル10により、各NUMAノード3と対応づけられる。
メモリ5は、CPU4に、様々なコンピュータプログラムをロードするための記憶領域、及びプログラムを実行するための作業領域を提供する。また、メモリ5は、データを保持するためのバッファとして用いられる。メモリ5は、例えば、Read Only Memory(ROM)、Random Access Memory(RAM)等の半導体メモリである。メモリ5は、一定サイズのメモリブロックであるページ単位で管理される。メモリ5は、距離テーブル10により、各NUMAノード3と対応づけられる。
ハイパーバイザ7は、情報処理装置1を仮想化し、複数の仮想マシン2を並列に実行できるようにするソフトウェアである。ハイパーバイザ7は、情報処理装置1のOSから、仮想的なNUMAノードの構成を定義する距離テーブル10を受け取り、各仮想マシン2において仮想的なNUMA環境を構築することができる。情報処理装置1のCPU4は、コンピュータプログラムにより、ハイパーバイザ7の処理を実行する。ハイパーバイザ7は、「制御部」の一例である。
各仮想マシン2は、複数の仮想NUMAノード30(以下、単にNUMAノード30とも呼ばれる)を含む。各NUMAノード30は、それぞれ仮想CPU40およびメモリ50を備える。NUMAノード30は、「ノード」の一例である。
仮想CPU40は、CPU4が備える1以上のCPUコアが割り当てられて、プログラ
ムを実行する。また、仮想CPU40には、所定の時間間隔によるタイムスライスにより、CPUコアが割り当てられてもよい。
メモリ50は、メモリ5のページが割り当てられ、自身のNUMAノード30に含まれる仮想CPU40に、プログラムをロードするための記憶領域、及びプログラムを実行するための作業領域を提供する。メモリ50は、「記憶領域」の一例である。
<仮想NUMA環境>
図5から7は、情報処理装置1において、仮想マシン2におけるNUMA環境(以下、仮想NUMA環境とも呼ばれる)の構築について説明する。
図5は、仮想マシン2上のNUMAノード30と物理サーバ1上のNUMAノード3との対応関係を例示する図である。図5の例では、情報処理装置1は、2つのNUMAノード3A、3Bおよびハイパーバイザ7を含み、複数の仮想マシン2A、2B等を稼働させる。ハイパーバイザ7は、図4のハイパーバイザ7と同一であるため、その説明は省略される。
NUMAノード3Aは、CPU4Aおよびメモリ5Aを含む。CPU4Aはマルチコアプロセッサであり、4つのコアa、コアb、コアcおよびコアdを備える。メモリ5Aは、一定サイズのメモリブロックであるページ1およびページ2を含む。同様に、NUMAノード3Bは、CPU4Bおよびメモリ5Bを含む。CPU4Bはマルチコアプロセッサであり、4つのコアe、コアf、コアgおよびコアhを備える。メモリ5Bは、一定サイズのメモリブロックであるページ3およびページ4を含む。
仮想マシン2Aは、2つのNUMAノード30A、30Bを含む。NUMAノード30Aは、仮想CPU40Aおよびメモリ50Aを含む。仮想CPU40Aは、2つのコアa0およびコアb0を備える。メモリ50Aは、ページ10を含む。同様に、NUMAノード30Bは、仮想CPU40Bおよびメモリ50Bを含む。仮想CPU40Bは、2つのコアc0およびコアd0を備える。メモリ50Bは、ページ20を含む。
図6は、仮想マシン2A上のNUMAノード30の構成を定義する仮想距離テーブル11の一例を示す図である。仮想距離テーブル11は、ハイパーバイザ7の起動時に設定ファイル等から読み込まれる。ハイパーバイザ7は、起動時にOSから仮想距離テーブル11の情報を受け取ってもよい。仮想距離テーブル11で定義される仮想マシン2A上のNUMAノード30の構成は、ユーザにより設定されてもよい。
ハイパーバイザ7は、仮想マシン2ごとに仮想距離テーブル11を保持する。仮想マシン2のOSは、仮想距離テーブル11に基づいて、プロセス6に仮想CPU40A、40Bおよびメモリ50A、50Bを割り当てる。図6は、図5に示す仮想マシン2Aに含まれるNUMAノード30A、30Bの構成を定義する例を示している。仮想距離テーブル11は、NUMA ID、ページ、仮想CPUコアの項目を含む。
NUMA IDの項目は、NUMAノード30の識別子を示す。図6の仮想距離テーブル11は、NUMA IDが“X0”および“X1”の2つのNUMAノード30を定義する。すなわち、図5のNUMAノード30AのNUMA IDは“X0”、NUMAノード30BのNUMA IDは“X1”として定義される。
ページの項目は、NUMAノード30のメモリ50に含まれるページを示す。NUMA
IDが“X0”であるNUMAノード30Aに含まれるページとして、ページ“10”が定義される。また、NUMA IDが“X1”であるNUMAノード30Bに含まれるページとして、ページ“20”が定義される。各ページは、メモリ上のアドレスの範囲により指定されてもよい。例えば、ページ“10”および“20”は、それぞれ0x0000−0x1000、0x1000−0x2000のアドレスの範囲のメモリブロックである。
仮想CPUコアの項目は、NUMAノード30に含まれる仮想CPU40が備えるコアを示す。NUMAノード30Aの仮想CPU40Aが備えるコアとして、2つのCPUコアa0およびコアb0が定義される。また、NUMAノード30Bの仮想CPU40Bが備えるコアとして、2つのコアc0およびコアd0が定義される。
図7は、物理サーバ1上の資源と仮想マシン2上の資源との対応関係を定義する資源対応テーブル12の一例を示す図である。資源対応テーブル12は、ハイパーバイザ7の起動時に設定ファイル等から読み込まれる。ハイパーバイザ7は、起動時にOSから資源対応テーブル12の情報を受け取ってもよい。資源対応テーブル12で定義される物理サーバ1上の資源と仮想マシン2上の資源との対応関係は、ユーザにより設定されてもよい。
ハイパーバイザ7は、仮想マシン2ごとに資源対応テーブル12を保持する。ハイパーバイザ7は、資源対応テーブル12に基づいて、物理サーバ1上の資源を仮想マシン2に割り当てる。図7は、図5に示す物理サーバ1上の資源と仮想マシン2A上の資源との対応関係を定義する例を示している。資源対応テーブル12は、資源、物理サーバ、仮想マシンの項目を含む。
資源の項目は、物理サーバ1と仮想マシン2との対応関係が定義される資源を示す。図7の例では、ページおよびCPUコアの資源について、物理サーバ1と仮想マシン2との対応関係が定義される。
物理サーバの項目は、物理サーバ1上における資源(ページまたはCPUコア)の識別子を示す。また、仮想マシンの項目は、仮想マシン2上における資源(ページまたはCPUコア)の識別子を示す。
図5および図7の例では、物理サーバ1のページ“1”、“2”は、それぞれ仮想マシン2Aのページ“10”、“20”に割り当てられる。なお、物理サーバ1のページ“1”、“2”は、NUMAノード3Aに含まれるメモリ5A内のページである。また、仮想マシン2Aのページ“10”は、NUMAノード30Aに含まれるメモリ50A内のページである。仮想マシン2Aのページ“20”は、NUMAノード30Bに含まれるメモリ50B内のページである。
物理サーバ1のCPUコアa、b、c、dは、それぞれ仮想マシン2AのCPUコアa0、b0、c0、d0に割り当てられる。なお、物理サーバ1のCPUコアa、b、c、dは、NUMAノード3Aに含まれるCPU4Aが備えるCPUコアである。また、仮想マシン2AのCPUコアa0、b0は、NUMAノード30Aに含まれる仮想CPU40Aが備えるCPUコアである。仮想マシン2AのCPUコアc0、d0は、NUMAノード30Bに含まれる仮想CPU40Bが備えるCPUコアである。
<NUMAノードの移動>
図8から図12は、仮想マシン2を、移動元物理サーバ1A(以下、物理サーバ1Aとも呼ばれる)から移動先物理サーバ1B(以下、物理サーバ1Bとも呼ばれる)に移動する処理を説明する。仮想マシン2は、NUMAノード単位で、物理サーバ1Aから物理サーバ1Bに移動される。
図8から図12において、物理サーバ1A上で稼働する移動対象の仮想マシン2は、2つのNUMAノード30AおよびNUMAノード30Bを含む。NUMAノード30Aは、仮想CPU40Aおよびメモリ50Aを含む。仮想CPU40Aは、2つのCPUコアを備える。メモリ50Aは、NUMAノード30Aに対応づけられたページを含む。同様に、NUMAノード30Bは、仮想CPU40Bおよびメモリ50Bを含む。仮想CPU40Bは、2つのCPUコアを備える。メモリ50Bは、NUMAノード30Bに対応づけられたページを含む。
なお、仮想CPU40Aおよび仮想CPU40Bが動作中である場合には、それぞれに含まれるCPUコアは黒丸で示される。また、仮想CPU40Aおよび仮想CPU40Bが停止中である場合には、それぞれに含まれるCPUコアは白丸で示される。
NUMAノード30AおよびNUMAノード30Bは、総称してNUMAノード30とも呼ばれる。仮想CPU40Aおよび仮想CPU40Bは、総称して仮想CPU40とも呼ばれる。メモリ50Aおよびメモリ50Bは、総称してメモリ50とも呼ばれる。
図8から図12において、物理サーバ1Aおよび物理サーバ1Bは、それぞれハイパーバイザ7A(図示せず)およびハイパーバイザ7B(図示せず)を含む。ハイパーバイザ7Aおよびハイパーバイザ7Bは、仮想マシン2の移動を制御する。
ハイパーバイザ7Aおよびハイパーバイザ7Bは、それぞれページ状態テーブル13Aおよびページ状態テーブル13Bを備える。ページ状態テーブル13Aは、物理サーバ1Aのハイパーバイザ7Aによって更新される。ページ状態テーブル13Bは、物理サーバ1Bのハイパーバイザ7Bによって更新される。
ページ状態テーブル13Aおよびページ状態テーブル13Bは、同一のデータ構造を有し、総称してページ状態テーブル13と呼ばれる。ページ状態テーブル13は、移動対象の仮想マシン2のNUMAノード30A及び30B内に含まれるページの転送状態を管理するテーブルである。
ページ状態テーブル13は、NUMA ID、ページ、転送状態の項目を含む。NUMA IDの項目は、NUMAノード30の識別子を示す。図8から図12において、物理サーバ1AのNUMA IDは“X0”、物理サーバ1BのNUMA IDは“X1”である。
ページの項目は、NUMAノード30のメモリ50に含まれるページのページ番号を示す。転送状態の項目は、ページを含むNUMAノード30が物理サーバ1Bに移動されたか否かを示す。NUMAノード30の物理サーバ1Bへの移動が完了していない状態(移動中の状態も含む)は“未”、移動済の状態は“済”で示される。すなわち、転送状態の項目は、NUMAノード30内の各ページが転送された時点で更新されるのではなく、NUMAノード単位で物理サーバ1Bへの移動が完了した時点で、“済”に更新される。
図8は、移動先物理サーバ1Bで空の仮想マシン2を生成する処理を例示する図である。物理サーバ1Bのハイパーバイザ7Bは、物理サーバ1Aから移動される仮想マシン2を稼働させるための空の仮想マシン2を生成する。物理サーバ1Bで生成される空の仮想マシン2は、物理サーバ1A上で稼働する仮想マシン2と同じNUMAノード30の構成により構築される。
物理サーバ1Aにおける仮想CPU40Aおよび仮想CPU40Bは、動作中である。一方、物理サーバ1Bにおける仮想CPU40Aおよび仮想CPU40Bは、停止状態である。
物理サーバ1Aにおけるメモリ50Aは、ページ[123]および[256]を含む。また、物理サーバ1Aにおけるメモリ50Bは、ページ[532]および[721]を含む。一方、物理サーバ1Bにおけるメモリ50Aおよび50Bは、ページが割り当てられておらず、空の状態である。
ページ状態テーブル13Aは、ページ[123]および[256]を含むNUMAノード30Aの物理サーバ1Bへの移動が完了していない状態であり、当該ページの転送状態が“未”であることを示す。また、ページ状態テーブル13Aは、ページ[532]および[7
21]を含むNUMAノード30Bの物理サーバ1Bへの移動も完了していない状態であ
り、当該ページの転送状態が“未”であることを示す。ページ状態テーブル13Bは、ページ状態テーブル13Aと同一であるため、その説明は省略される。
図9は、仮想マシン2をNUMAノード単位で移動する処理を例示する図である。図9の例は、ページ[123]および[256]を含むメモリ50Aを備えるNUMAノード30Aが、物理サーバ1Bに移動中である状態を示す。
図8と同様に、物理サーバ1Aにおける仮想CPU40Aおよび仮想CPU40Bは、動作中である。一方、物理サーバ1Bにおける仮想CPU40Aおよび仮想CPU40Bは、停止状態である。
物理サーバ1Aにおけるメモリ50Aは、ページ[123]および[256]を含む。また、物理サーバ1Aにおけるメモリ50Bは、ページ[532]および[721]を含む。また、物理サーバ1Bにおけるメモリ50Aは、転送中のページ[123]および[256]を含む。物理サーバ1Bにおけるメモリ50Bは、ページが割り当てられておらず、空の状態である。
ページ状態テーブル13Aは、ページ[123]および[256]が物理サーバ1Bに転送中(NUMAノード30Aが物理サーバ1Bに移動中)であり、当該ページの転送状態が
“未”であることを示す。また、ページ状態テーブル13Aは、ページ[532]および[
721]を含むNUMAノード30Bの物理サーバ1Bへの移動が完了していない状態で
あり、当該ページの転送状態が“未”であることを示す。ページ状態テーブル13Bは、ページ状態テーブル13Aと同一であるため、その説明は省略される。
図10は、NUMAノード30Aの停止および開始処理を例示する図である。図10の例は、NUMAノード30Aの物理サーバ1Bへの移動が完了した状態を示す。物理サーバ1Aのハイパーバイザ7Aは、NUMAノード30Aの物理サーバ1Bへの移動が完了すると、物理サーバ1A上のNUMAノード30Aの動作を停止する。また、ハイパーバイザ7Aは、NUMAノード30Aのメモリ50Aを解放する。さらに、物理サーバ1Bのハイパーバイザ7Bは、物理サーバ1B上のNUMAノード30Aの動作を開始する。
物理サーバ1Aにおける仮想CPU40Aは停止状態となり、物理サーバ1Bにおける仮想CPU40Aは動作中となる。一方、物理サーバ1Aにおける仮想CPU40Bは動作中で、物理サーバ1Bにおける仮想CPU40Bは停止状態のままである。
物理サーバ1Aにおけるメモリ50Aは解放されている。物理サーバ1Aにおけるメモリ50Bは、ページ[532]および[721]を含む。また、物理サーバ1Bにおけるメモリ50Aは、物理サーバ1Aから転送されたページ[123]および[256]を含む。物理サーバ1Bにおけるメモリ50Bは、ページが割り当てられておらず、空の状態である。
ページ状態テーブル13Aは、ページ[123]および[256]が物理サーバ1Bに転送済(NUMAノード30Aは物理サーバ1Bに移動完了)であり、当該ページの転送状態が“済”であることを示す。また、ページ状態テーブル13Aは、ページ[532]および[721]を含むNUMAノード30Bの物理サーバ1Bへの移動が完了していない状態であり、当該ページの転送状態が“未”であることを示す。ページ状態テーブル13Bは、ページ状態テーブル13Aと同一であるため、その説明は省略される。
図11は、他のNUMAノードを移動する処理を例示する図である。図11の例は、ページ[532]および[721]を含むメモリ50Bを備えるNUMAノード30Bが、物理サーバ1Bに転送中である状態を示す。
物理サーバ1Aにおける仮想CPU40Aは停止状態、仮想CPU40Bは動作中である。また、物理サーバ1Bにおける仮想CPU40Aは動作中、仮想CPU40Bは停止状態である。
物理サーバ1Aにおけるメモリ50Aは解放されている。物理サーバ1Aにおけるメモリ50Bは、ページ[532]および[721]を含む。また、物理サーバ1Bにおけるメモリ50Aは、物理サーバ1Aから転送されたページ[123]および[256]を含む。物理サーバ1Bにおけるメモリ50Bは、転送中のページ[532]および[721]を含む。
ページ状態テーブル13Aは、ページ[123]および[256]が物理サーバ1Bに転送済(NUMAノード30Aは物理サーバ1Bに移動完了)であり、当該ページの転送状態が“済”であることを示す。ページ状態テーブル13Aは、ページ[532]および[72
1]が物理サーバ1Bに転送中(NUMAノード30Bは物理サーバ1Bに移動中)であ
り、当該ページの転送状態が“未”であることを示す。ページ状態テーブル13Bは、ページ状態テーブル13Aと同一であるため、その説明は省略される。
図12は、他のNUMAノード30Bの停止および開始処理を例示する図である。図12の例は、NUMAノード30Bの物理サーバ1Bへの移動が完了した状態を示す。物理
サーバ1Aのハイパーバイザ7Aは、NUMAノード30Bの物理サーバ1Bへの移動が完了すると、物理サーバ1A上のNUMAノード30Bの動作を停止する。また、ハイパーバイザ7Aは、NUMAノード30Bのメモリ50Bを解放する。さらに、物理サーバ1Bのハイパーバイザ7Bは、物理サーバ1B上のNUMAノード30Bの動作を開始する。
物理サーバ1Aにおける仮想CPU40Bは停止状態となり、物理サーバ1Bにおける仮想CPU40Bは動作中となる。一方、物理サーバ1Aにおける仮想CPU40Aは停止状態で、物理サーバ1Bにおける仮想CPU40Aは動作中のままである。
物理サーバ1Aにおけるメモリ50Aおよびメモリ50Bは解放されている。一方、物理サーバ1Bにおけるメモリ50Aは、ページ[123]および[256]を含む。また、物理サーバ1Bにおけるメモリ50Bは、ページ[532]および[721]を含む。
ページ状態テーブル13Aは、ページ[123]および[256]が物理サーバ1Bに転送済(NUMAノード30Aは物理サーバ1Bに移動完了)であり、当該ページの転送状態が“済”であることを示す。また、ページ状態テーブル13Aは、ページ[532]および[721]も物理サーバ1Bに転送済(NUMAノード30Bは物理サーバ1Bに移動完了)であり、当該ページの転送状態が“済”であることを示す。ページ状態テーブル13Bは、ページ状態テーブル13Aと同一であるため、その説明は省略される。
<仮想CPUの動作制御>
図13は、移動元の物理サーバ1Aで仮想CPU40Bを停止する処理を例示する図である。図13の例は、図10における物理サーバ1A上の仮想マシン2と同じ状態を示している。すなわち、図13の例は、物理サーバ1Bに対し、NUMAノード30Aの移動が完了した状態を示す。NUMAノード30Aのメモリ50Aは、解放されている。
動作中のプロセス6は、既に解放されたメモリ50Aに含まれるページにアクセスする場合がある。ハイパーバイザ7Aは、ページ状態テーブル13Aを参照し、アクセスしたページの転送状態が“済”、すなわち、アクセスしたページを含むNUMAノード30Aが移動先物理サーバ1Bに移動済である場合、当該プロセス6を実行する仮想CPU40Bを停止する。
一方、移動先の物理サーバ1Bにおいても、ハイパーバイザ7Bは、仮想CPU40の動作を制御する。図10において、NUMAノード30Aは物理サーバ1Bに移動されているが、NUMAノード30Bは物理サーバ1Bに移動されていない。物理サーバ1B上で実行されるプロセス6は、NUMAノード30Bのメモリ50Bに含まれるページにアクセスする場合がある。ハイパーバイザ7Bは、ページ状態テーブル13Bを参照し、アクセスしたページの転送状態が“未”、すなわち、アクセスしたページを含むNUMAノード30Bが移動元物理サーバ1Aから移動されていない場合、当該プロセス6を実行する仮想CPU40Aを停止する。
<処理の流れ>
図14から図16は、仮想マシン2の移動処理を説明する。仮想マシン2の移動処理は、図8から図12において、仮想マシン2を、物理サーバ1Aから物理サーバ1Bに移動する例を用いて説明される。
図14は、仮想マシン2の移動処理の例を示すフローチャートである。図14に示される処理は、例えば、物理サーバ1AがCPU4またはメモリ5の使用状況を監視し、負荷
が検出されることにより開始される。また、図14に示される処理は、ユーザの指示により開始されてもよい。
OP1では、物理サーバ1AのCPU4は、メモリ不足により仮想マシン2を他の物理サーバ1に移動するか否かを判定する。仮想マシン2を他の物理サーバ1に移動する場合には(OP1:Yes)、処理がOP2に進む。仮想マシン2を他の物理サーバ1に移動しない場合には(OP1:No)、処理が終了する。
OP2では、物理サーバ1AのCPU4は、物理サーバ1上で稼働している複数の仮想マシン2から、移動対象の仮想マシン2を選択する。CPU4は、移動対象の仮想マシン2として、例えば、システムコールの発行数が他の仮想マシン2よりも少ない仮想マシン2を選択することができる。当該仮想マシン2に含まれるNUMAノード30は、自身のNUMAノード30に対応づけられたメモリ50以外のグローバルなメモリ領域へのアクセス回数が、他の仮想マシン2に含まれるNUMAノード30よりも少ないためである。OP2の処理は、「他の仮想マシンよりもオペレーティングシステムに対する処理の呼出しが少ない仮想マシンを、前記他の情報処理装置に移動する仮想マシンとして選択する」処理の一例である。
OP3では、物理サーバ1Aおよび物理サーバ1BのCPU4は、OP2で選択された仮想マシン2を物理サーバ1Aから物理サーバ1Bに移動する処理を実行し、処理が終了する。
図15は、仮想マシン2の移動処理の詳細を例示するフローチャートである。図15に示される処理は、図14のOP3の処理の詳細を例示する。仮想マシン2は、NUMAノード単位で物理サーバ1Aから物理サーバ1Bに移動される。図15に示される処理は、物理サーバ1AのCPU4が移動対象の仮想マシン2を選択することにより開始される。
なお、図15に示される処理は、物理サーバ1Aまたは物理サーバ1BのCPU4が実行主体であるが、物理サーバ1Aのハイパーバイザ7Aまたは物理サーバ1Bのハイパーバイザ7Bを動作主体として説明される。
OP10では、ハイパーバイザ7Aは、物理サーバ1Bに移動されたNUMAノード30の数を計数する変数Kを、K=0に初期化する。OP11では、ハイパーバイザ7Aは、仮想マシン2に含まれるNUMAノード30の物理サーバ1Bへの移動が完了したか否かを判定する。仮想マシン2に含まれるNUMAノード30の物理サーバ1Bへの移動が完了した場合には(OP11:Yes)、処理が終了する。仮想マシン2に含まれるNUMAノード30の物理サーバ1Bへの移動が完了していない場合には(OP11:No)、処理がOP12に進む。
OP12では、ハイパーバイザ7Aは、仮想マシン2に含まれるNUMAノード30の中から、移動対象のNUMAノード30を選択する。なお、ハイパーバイザ7Aは、NUMAノード30を跨ぐページアクセス回数が、他のNUMAノード30より少ないNUMAノード30から順に、移動対象のNUMAノード30として選択し、物理サーバ1Bに移動する。NUMAノード30を跨ぐページアクセスは、自身のNUMAノード30以外のNUMAノード30のメモリ50またはグローバルなメモリ領域に含まれるページへのアクセスである。
NUMAノード30を跨ぐページアクセス回数が、他のNUMAノード30より少ないNUMAノード30は、物理メモリの使用量またはシステムコールの発行数に基づいて選択することができる。すなわち、物理メモリの使用量が少ないほど、他のNUMAノード
のメモリの使用は少なく、NUMAノード30を跨ぐページアクセス回数は少なくなる。また、システムコールの発行数が少ないほど、グローバルなメモリ領域へのアクセスは少なく、NUMAノード30を跨ぐページアクセス回数は少なくなる。
OP13では、ハイパーバイザ7Aは、OP12で選択したNUMAノード30を、物理サーバ1Bに移動する。ハイパーバイザ7Aは、例えば、ライブマイグレーションにより、NUMAノード30を物理サーバ1Bに移動してもよい。
OP12およびOP13の処理は、「前記仮想マシンの前記複数のノードを、他のノードに対応づけられた記憶領域へのアクセス回数が少ない順に、前記他の情報処理装置に移動する」処理の一例である。
OP14では、ハイパーバイザ7Aは、ページ状態テーブル13Aにおいて、移動したNUMAノード30のメモリ50に含まれるページの転送状態を“済”に更新する。また、ハイパーバイザ7Bは、ページ状態テーブル13Bにおいて、移動したNUMAノード30のメモリ50に含まれるページの転送状態を“済”に更新する。
OP15では、ハイパーバイザ7Aは、移動元の物理サーバ1Aにおいて、移動されたNUMAノード30のメモリ50を解放する。OP15の処理は、「一のノードが前記第2の情報処理装置に移動された後、前記移動されたノードに対応づけられた記憶領域を解放」する処理の一例である。
OP16では、ハイパーバイザ7Aは、移動元の物理サーバ1Aにおいて、移動されたNUMAノード30の動作を停止する。OP16の処理は、「前記他の情報処理装置に移動されていないノードが、前記移動されたノードの記憶領域にアクセスした場合に、前記移動されていないノードの動作を停止する」処理の一例である。
OP17では、ハイパーバイザ7Bは、移動先の物理サーバ1Bにおいて、移動されたNUMAノード30の動作を開始する。OP17の処理は、は、「一のノードが移動された後、前記移動されたノード(30)の動作を開始」する処理の一例である。また、OP17の処理は、「前記移動されたノードの移動を受け付けた後、前記移動されたノードの動作を開始」する処理の一例である。
OP18では、ハイパーバイザ7Bは、移動先の物理サーバ1Bにおいて、停止させたNUMAノード30の動作を再開する。なお、ハイパーバイザ7Bが停止させたNUMAノード30は、物理サーバ1Bに移動済のNUMAノード30で、移動されていないNUMAノード30に含まれるメモリ50にアクセスすることにより、ハイパーバイザ7Bが動作を停止させたNUMAノード30である。NUMAノード30の移行が完了するごとに、移動先の物理サーバ1Bにおいて停止させたNUMAノード30の動作が再開され、移動先の物理サーバ1Bは、仮想マシン2の処理の続行が可能となる。
OP19では、ハイパーバイザ7Aは、物理サーバ1Bに移動されたNUMAノード30の数を計数する変数Kを1増やし、処理がOP11に戻る。OP17およびOP18の処理は、物理サーバ1Bのハイパーバイザ7Bであるため、ハイパーバイザ7Aは、OP16の処理の後、OP17と並行してOP19の処理を実行してもよい。
図16は、仮想CPU40の動作制御処理の例を示すフローチャートである。図16に示される処理は、物理サーバ1Aまたは物理サーバ1Bにおいてページフォルトが発生することにより開始される。
ページフォルトは、移動元の物理サーバ1Aで実行されるプロセス6が、物理サーバ1Bに移動済のNUMAノード30に含まれていたメモリ50で、既に解放されたメモリ領域にアクセスした場合に発生する。また、ページフォルトは、移動先の物理サーバ1Bで実行されるプロセス6が、物理サーバ1Aからの移動が完了していないNUMAノード30に含まれるメモリ50にアクセスした場合に発生する。その他、通常のページフォルトが発生する。
図16に示される処理は、物理サーバ1Aまたは物理サーバ1BのCPU4が実行主体であるが、物理サーバ1Aのハイパーバイザ7Aまたは物理サーバ1Bのハイパーバイザ7Bを動作主体として説明される。
OP20では、ハイパーバイザ7Aは、自身のNUMAノード30が移動元の物理サーバ1Aにあり、自身のNUMAノード30がアクセスしたページを含むNUMAノード30が物理サーバ1Bに移動済であるか否かを判定する。自身のNUMAノード30がアクセスしたページを含むNUMAノード30が物理サーバ1Bに移動済である場合には(OP20:Yes)、処理がOP23に進む。自身のNUMAノード30がアクセスしたページを含むNUMAノード30が物理サーバ1Bに移動されていない場合には(OP20:No)、処理がOP21に進む。
OP21では、ハイパーバイザ7Bは、自身のNUMAノード30が移動先の物理サーバ1Bにあり、自身のNUMAノード30がアクセスしたページを含むNUMAノード30が物理サーバ1Aから移動済であるか否かを判定する。自身のNUMAノード30がアクセスしたページを含むNUMAノード30が物理サーバ1Aから移動済である場合には(OP21:Yes)、処理がOP22に進む。自身のNUMAノード30がアクセスしたページを含むNUMAノード30が物理サーバ1Aから移動されていない場合には(OP21:No)、処理がOP23に進む。
OP22では、自身のNUMAノード30が存在する物理サーバ1のCPU4は、OSに実装されているページフォルトハンドラの処理を実行し処理が終了する。OP23では、自身のNUMAノード30が存在する物理サーバ1のハイパーバイザ7は、自身のNUMAノード30の仮想CPU40を停止し、処理が終了する。OP23の処理は、「前記移動されたノードが前記第1の情報処理装置から移動されていないノードに対応づけられた記憶領域にアクセスした場合に、前記移動されていないノードの移動が完了するまで、前記移動されたノードの動作を停止する」処理の一例である。
<実施形態の作用効果>
物理サーバ1は、仮想マシン2をNUMAノード単位で、移動先の物理サーバ1に移動する。物理サーバ1は、NUMAノード30の移動が完了した時点で、移動したNUMAノード30に対応づけられたメモリ50を解放する。これにより、物理サーバ1は、移動したNUMAノード30で利用していたメモリ50を、迅速に解放することができる。したがって、物理サーバ1は、迅速にメモリ不足を解消することができる。また、移動先の物理サーバ1は、移動された仮想マシン2の動作を早期に開始させ、仮想マシン2の処理をなるべく続行させることができる。
物理サーバ1は、移動先の物理サーバ1に移動されていないNUMAノード30が、移動先の物理サーバ1に移動済のNUMAノード30のメモリ50にアクセスした場合、当該移動されていないNUMAノード30の動作を停止する。これにより、物理サーバ1は、仮想マシン2を動作状態のまま移動先の物理サーバに移動しても、移動元および移動先の物理サーバ間のデータの不整合を回避することができる。
物理サーバ1は、仮想マシン2に含まれる複数のNUMAノード30を、他のNUMAノード30に含まれるメモリ50へのアクセス回数が少ない順に、移動先の物理サーバ1に移動する。NUMAノード30を跨ぐページアクセスが、他のNUMAノード30より少ないNUMAノード30から順に移動されるため、ハイパーバイザ7が仮想CPU40の動作を停止する場合が減少する。これにより、物理サーバ1は、仮想マシン2を迅速に移動先の物理サーバ1に移動することができる。
物理サーバ1は、複数の仮想マシン2を稼働させる場合、他の仮想マシン2よりもシステムコールの発行数が少ない仮想マシン2を移動先の物理サーバ1に移動する。NUMAノード30を跨ぐページアクセスが減ることで、ハイパーバイザ7が仮想CPU40の動作を停止する場合が減少する。これにより、物理サーバ1は、仮想マシン2を迅速に移動先の物理サーバ1に移動することができる。
移動先の物理サーバ1は、移動元の物理サーバ1から仮想マシン2の移動を受け付ける場合、NUMAノード単位で移動を受け付ける。移動先の物理サーバ1は、移動されたNUMAノード30が、移動元の物理サーバ1から移動されていないNUMAノード30に含まれるメモリ50にアクセスした場合、当該移動されたNUMAノード30の動作を停止する。移動先の物理サーバ1は、移動されていないNUMAノード30の移動が完了すると、当該停止したNUMAノード30の動作を再開する。これにより、移動先の物理サーバ1は、移動された仮想マシンの動作を早期に開始させ、仮想マシンの処理をなるべく続行することができる。
<記録媒体>
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやROM等がある。さらに、Solid State Drive(SSD)はコンピュータ等から取り外し可能な記録媒体としても、コンピュータ等に固定された記録媒体としても利用可能である。
1、1A、1B 情報処理装置、物理サーバ
2、2A、2B 仮想マシン
3、3A、3B NUMAノード
30、30A、30B 仮想NUMAノード
4、4A、4B CPU
40、40A、40B 仮想CPU
5、5A、5B、50、50A、50B メモリ
6 プロセス
7 ハイパーバイザ
10 距離テーブル
11 仮想距離テーブル
12 資源対応テーブル
13、13A、13B ページ状態テーブル

Claims (6)

  1. それぞれ記憶領域と対応づけられ相互の記憶領域にアクセス可能な複数のノードを含む仮想マシンを稼働させる情報処理装置であって、
    前記仮想マシンを他の情報処理装置に移動する場合に、前記複数のノードをノード単位で他のノードに対応づけられた記憶領域へのアクセス回数が少ない順に前記他の情報処理装置に移動し、一のノードが前記他の情報処理装置に移動された後、前記移動されたノードに対応づけられた記憶領域を解放する制御部を備え、
    前記制御部は、前記仮想マシンの前記複数のノードのうち、前記他の情報処理装置に移動されていないノードが、前記移動されたノードの記憶領域にアクセスした場合に、前記移動されていないノードの動作を停止する、
    情報処理装置。
  2. それぞれ記憶領域と対応づけられ相互の記憶領域にアクセス可能な複数のノードを含む仮想マシンを稼働させる情報処理装置であって、
    前記仮想マシンを他の情報処理装置に移動する場合に、前記複数のノードをノード単位で前記他の情報処理装置に移動し、一のノードが前記他の情報処理装置に移動された後、前記移動されたノードに対応づけられた記憶領域を解放する制御部を備え、
    前記制御部は、
    記仮想マシンの前記複数のノードのうち、前記他の情報処理装置に移動されていないノードが、前記移動されたノードの記憶領域にアクセスした場合に、前記移動されていないノードの動作を停止
    前記情報処理装置が複数の仮想マシンを稼働させる場合に、前記複数の仮想マシンのうち、他の仮想マシンよりもオペレーティングシステムに対する処理の呼出しが少ない仮想マシンを、前記他の情報処理装置に移動する仮想マシンとして選択する、
    情報処理装置。
  3. それぞれ記憶領域と対応づけられ相互の記憶領域にアクセス可能な複数のノードを含む仮想マシンを稼働させる第1の情報処理装置は、
    前記仮想マシンを第2の情報処理装置に移動する場合に、前記複数のノードをノード単位で他のノードに対応づけられた記憶領域へのアクセス回数が少ない順に、前記第2の情
    報処理装置に移動し、一のノードが前記第2の情報処理装置に移動された後、前記移動されたノードに対応づけられた記憶領域を解放し、
    前記第2の情報処理装置は、
    前記移動されたノードの移動を受け付けた後、前記移動されたノードの動作を開始し、
    前記移動されたノードが前記第1の情報処理装置から移動されていないノードに対応づけられた記憶領域にアクセスした場合に、前記移動されていないノードの移動が完了するまで、前記移動されたノードの動作を停止する、
    仮想マシン移動方法。
  4. それぞれ記憶領域と対応づけられ相互の記憶領域にアクセス可能な複数のノードを含む仮想マシンを稼働させる第1の情報処理装置は、
    前記仮想マシンを第2の情報処理装置に移動する場合に、前記複数のノードをノード単位で前記第2の情報処理装置に移動し、一のノードが前記第2の情報処理装置に移動された後、前記移動されたノードに対応づけられた記憶領域を解放し、
    前記第1の情報処理装置が複数の仮想マシンを稼働させる場合に、前記複数の仮想マシンのうち、他の仮想マシンよりもオペレーティングシステムに対する処理の呼出しが少ない仮想マシンを、前記第2の情報処理装置に移動する仮想マシンとして選択し、
    前記第2の情報処理装置は、
    前記移動されたノードの移動を受け付けた後、前記移動されたノードの動作を開始し、
    前記移動されたノードが前記第1の情報処理装置から移動されていないノードに対応づけられた記憶領域にアクセスした場合に、前記移動されていないノードの移動が完了するまで、前記移動されたノードの動作を停止する、
    仮想マシン移動方法。
  5. 情報処理装置に、
    それぞれ記憶領域と対応づけられ相互の記憶領域にアクセス可能な複数のノードを含む仮想マシンを、他の情報処理装置に移動させる場合に、前記複数のノードをノード単位で他のノードに対応づけられた記憶領域へのアクセス回数が少ない順に前記他の情報処理装置に移動し、一のノードが前記他の情報処理装置に移動された後、前記移動されたノードに対応づけられた記憶領域を解放させ、
    前記仮想マシンの前記複数のノードのうち、前記他の情報処理装置に移動されていないノードが、前記移動されたノードの記憶領域にアクセスした場合に、前記移動されていないノードの動作を停止させる、
    仮想マシン制御プログラム。
  6. 情報処理装置に、
    それぞれ記憶領域と対応づけられ相互の記憶領域にアクセス可能な複数のノードを含む仮想マシンを、他の情報処理装置に移動させる場合に、前記複数のノードをノード単位で前記他の情報処理装置に移動し、一のノードが前記他の情報処理装置に移動された後、前記移動されたノードに対応づけられた記憶領域を解放させ、
    前記仮想マシンの前記複数のノードのうち、前記他の情報処理装置に移動されていないノードが、前記移動されたノードの記憶領域にアクセスした場合に、前記移動されていないノードの動作を停止させ、
    前記情報処理装置が複数の仮想マシンを稼働させる場合に、前記複数の仮想マシンのうち、他の仮想マシンよりもオペレーティングシステムに対する処理の呼出しが少ない仮想マシンを、前記他の情報処理装置に移動する仮想マシンとして選択させる、
    仮想マシン制御プログラム。
JP2016042495A 2016-03-04 2016-03-04 情報処理装置、仮想マシン移動方法、および仮想マシン制御プログラム Active JP6645275B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016042495A JP6645275B2 (ja) 2016-03-04 2016-03-04 情報処理装置、仮想マシン移動方法、および仮想マシン制御プログラム
US15/442,849 US10241822B2 (en) 2016-03-04 2017-02-27 Information processing apparatus for moving virtual machine and method of moving virtual machine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016042495A JP6645275B2 (ja) 2016-03-04 2016-03-04 情報処理装置、仮想マシン移動方法、および仮想マシン制御プログラム

Publications (2)

Publication Number Publication Date
JP2017157153A JP2017157153A (ja) 2017-09-07
JP6645275B2 true JP6645275B2 (ja) 2020-02-14

Family

ID=59722730

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016042495A Active JP6645275B2 (ja) 2016-03-04 2016-03-04 情報処理装置、仮想マシン移動方法、および仮想マシン制御プログラム

Country Status (2)

Country Link
US (1) US10241822B2 (ja)
JP (1) JP6645275B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11195100B2 (en) 2016-08-17 2021-12-07 International Business Machines Corporation Determining applications based on interactions of different electronic devices
US10691365B1 (en) 2019-01-30 2020-06-23 Red Hat, Inc. Dynamic memory locality for guest memory
US10503543B1 (en) 2019-02-04 2019-12-10 Cohesity, Inc. Hosting virtual machines on a secondary storage system
JP2021157339A (ja) * 2020-03-25 2021-10-07 富士通株式会社 情報処理方法、及び情報処理プログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7313793B2 (en) * 2002-07-11 2007-12-25 Microsoft Corporation Method for forking or migrating a virtual machine
JP4792434B2 (ja) 2007-08-31 2011-10-12 株式会社日立製作所 仮想計算機の制御方法
US9529636B2 (en) 2009-03-26 2016-12-27 Microsoft Technology Licensing, Llc System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine
US9535767B2 (en) * 2009-03-26 2017-01-03 Microsoft Technology Licensing, Llc Instantiating a virtual machine with a virtual non-uniform memory architecture
US9110702B2 (en) * 2010-06-02 2015-08-18 Microsoft Technology Licensing, Llc Virtual machine migration techniques
JP6028415B2 (ja) * 2012-06-28 2016-11-16 日本電気株式会社 仮想サーバ環境のデータ移行制御装置、方法、システム
JP5952214B2 (ja) * 2013-04-04 2016-07-13 日本電信電話株式会社 仮想マシンの動的配置方法及び仮想マシンシステム
JP2015022380A (ja) * 2013-07-16 2015-02-02 日本電信電話株式会社 情報処理装置、仮想マシンの移行方法及び仮想マシンの移行プログラム

Also Published As

Publication number Publication date
JP2017157153A (ja) 2017-09-07
US10241822B2 (en) 2019-03-26
US20170255484A1 (en) 2017-09-07

Similar Documents

Publication Publication Date Title
US8875133B2 (en) Migration of virtual machines
JP6645275B2 (ja) 情報処理装置、仮想マシン移動方法、および仮想マシン制御プログラム
US10025503B2 (en) Autonomous dynamic optimization of platform resources
KR101936453B1 (ko) 새로운 애플리케이션을 위한 메모리 관리 모델 및 인터페이스
US8365169B1 (en) Migrating a virtual machine across processing cells connected to an interconnect that provides data communication without cache coherency support
EP3230873B1 (en) Computing method and apparatus with persistent memory
US9009703B2 (en) Sharing reconfigurable computing devices between workloads
TWI539280B (zh) 用於分析未經特定設計以提供記憶體分配資訊之應用程式及擷取記憶體分配資訊的方法、及其電腦系統和電腦可讀儲存媒體
US20120066688A1 (en) Processor thread load balancing manager
TW201301029A (zh) 具有增強型應用程式元資料之記憶體管理器
JP6123626B2 (ja) 処理再開方法、処理再開プログラムおよび情報処理システム
US20130047159A1 (en) Preserving, From Resource Management Adjustment, Portions Of An Overcommitted Resource Managed By A Hypervisor
JP2019079334A (ja) 情報処理装置、情報処理システムおよび情報処理方法
CN112384898A (zh) 使用初始分布的快速、低存储器、一致哈希
JP5030647B2 (ja) 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム
JP5867238B2 (ja) オートスケーリング方法,オートスケーリングプログラムおよびコンピュータノード
JP2011192049A (ja) 仮想マシンシステム、自動マイグレーション方法および自動マイグレーションプログラム
US10976934B2 (en) Prioritizing pages to transfer for memory sharing
JP2019003493A (ja) 情報処理装置、情報処理方法およびプログラム
JP2011108014A (ja) 仮想マシン管理装置、仮想マシン管理方法、及び仮想マシン管理プログラム
JP2016038888A (ja) 情報処理システム、情報処理方法及び情報処理プログラム
JP5504651B2 (ja) 仮想マシンシステム、情報処理装置、リソース管理方法、プログラム及び記録媒体
JP6364827B2 (ja) 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム
JP6445876B2 (ja) リソース割当装置、リソース割当システム、および、リソース割当方法
US20170131937A1 (en) Prioritizing memory pages to copy for memory migration

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191001

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191129

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191223

R150 Certificate of patent or registration of utility model

Ref document number: 6645275

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150