JPWO2015122007A1 - 計算機、及び、ハイパバイザによる資源スケジューリング方法 - Google Patents

計算機、及び、ハイパバイザによる資源スケジューリング方法 Download PDF

Info

Publication number
JPWO2015122007A1
JPWO2015122007A1 JP2015562672A JP2015562672A JPWO2015122007A1 JP WO2015122007 A1 JPWO2015122007 A1 JP WO2015122007A1 JP 2015562672 A JP2015562672 A JP 2015562672A JP 2015562672 A JP2015562672 A JP 2015562672A JP WO2015122007 A1 JPWO2015122007 A1 JP WO2015122007A1
Authority
JP
Japan
Prior art keywords
hypervisor
guest
request
cpu
physical
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.)
Granted
Application number
JP2015562672A
Other languages
English (en)
Other versions
JP6198858B2 (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
Publication of JPWO2015122007A1 publication Critical patent/JPWO2015122007A1/ja
Application granted granted Critical
Publication of JP6198858B2 publication Critical patent/JP6198858B2/ja
Expired - Fee Related 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • 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
    • 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
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Abstract

ハイパバイザの他に、簡易ハイパバイザを計算機上で稼動させる。簡易ハイパバイザ上で、ハイパバイザ障害時にも動作継続を保証したいゲストOSが動作し、ハイパバイザ上では、それ以外のゲストOSが動作する。資源スケジューリング(各ゲストOSについて割り当てる又は回収する資源の決定)はハイパバイザが行い、動作継続を保証したいゲストOSについて資源の割当て又は回収は、簡易ハイパバイザがハイパバイザに代わって実行する。

Description

本発明は、概して、ハイパバイザによる資源スケジューリングに関する。
ハイパバイザを用いて複数のゲストOSを動作させる計算機が知られている。このような計算機では、ハイパバイザにおける動的な資源スケジューリング機能を使用し、負荷に応じて各ゲストOSに割り当てる資源量が調節される。資源としては、物理メモリ及び物理CPU(Central Processing Unit)が一般的である。また、同一筐体上に複数のゲストOSが共存する計算機もある。
このような計算機が適用される用途によっては、高可用性の保証が必須になる。そのような用途の一例は、ミッションクリティカルな用途である。ハイパバイザは、多くの機能を有する機構(典型的にはコンピュータプログラムでよいが、コンピュータプログラムが実装されたハードウェア回路)であり、故に、ハイパバイザの可用性をミッションクリティカルな用途に適用可能なレベルまで高めることは難しい。そのため、ミッションクリティカル向け計算機には、一般にハイパバイザを搭載できない。
ハイパバイザによる資源スケジューリング方法として、非特許文献1に記載の方法が知られている。その方法によれば、ハイパバイザが有するCPUスケジューラ(資源スケジューラの一例)は、OS(Operating System)のCPUスケジューラと同様の動作を行う。
ハイパバイザは、仮想的な実行環境(仮想計算機)を提供し、各仮想計算機の仮想CPU上で動作するゲストOSの処理をプロセスとして扱う。そして、CPUスケジューラが物理CPU上でどのゲストOS(プロセス)をスケジューリングするか決定する。さらに、ハイパバイザは、物理CPU上の実行コンテキストの切り替え処理(資源のディスパッチ/プリエンプト処理)も実行する。
VMware Inc., "The CPU scheduler in VMware vSphere 5.1", VMware technical white paper, 2013.
上記方法では、ハイパバイザに障害が発生した場合、すべてのゲストOSの動作継続が不可能になる。なぜなら、ハイパバイザ障害により、ゲストOSへの資源のディスパッチ/プリエンプト処理(割り当て/回収処理)が実行されなくなるためである。あらゆるゲストOSは、動作するために必要な資源(CPUやメモリなど)を利用不可能になり、動作継続は不可能になる。
ハイパバイザの他に、簡易ハイパバイザを計算機上で稼動させる。ハイパバイザは、1以上の物理メモリ及び複数の物理CPUを含んだ複数の資源のエミュレートの機能と、資源スケジューリング(各ゲストOSについて割り当てる又は回収する資源の決定)の機能を有するが、簡易ハイパバイザは、ゲストOSに対する資源割当て又は資源回収をハイパバイザに代わって行うエージェント機能を有している。簡易ハイパバイザ上で、第1のゲストOS(例えば、ハイパバイザ障害時にも動作継続を保証したいゲストOS)が動作し、ハイパバイザ上では、第2のゲストOS(第1のゲストOS以外のゲストOS)が動作する。資源スケジューリングはハイパバイザが行い、第1のゲストOSについて資源の割当て又は回収は、簡易ハイパバイザがハイパバイザに代わって実行する。
ハイパバイザに障害が発生しても第1のゲストOSの動作継続を保証することができる。
本発明の実施形態で想定するシステム構成 本発明の実施例で想定するハードウェア構成 ディスパッチ/プリエンプト要求ログのデータ構造 CPU割り当て状態のデータ構造 メモリ割り当て状態のデータ構造 ハイパバイザコンテキスト保存領域のデータ構造 ハイパバイザエージェントコンテキスト保存領域のデータ構造 ディスパッチ/プリエンプト処理時に使用するコード領域及びスタック領域の配置を示す図 アドレス変換テーブルのデータ構造 CPU利用履歴管理テーブルのデータ構造 メモリ利用履歴管理テーブル(1001)のデータ構造 CPUスケジューラの動作フロー(定期起動時) CPUスケジューラの動作フロー(CPUディスパッチエージェントからのトラップリターン時) CPUディスパッチエージェント及び第1のゲストOS CPUスケジュラの動作フロー(ディスパッチ要求時) CPUディスパッチエージェント及び第1のゲストOS CPUスケジュラの動作フロー(プリエンプト要求時) メモリスケジューラの動作フロー メモリディスパッチエージェント及び第1のゲストOS メモリスケジューラの動作フロー 特権命令実行部及びステートレスCPUエミュレータの動作フロー 再起動制御の動作フロー(定期起動時) 再起動制御の動作フロー(再起動時)
以下、一実施形態を説明する。
なお、以下の説明では、「kkkテーブル」の表現にて情報を説明することがあるが、情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「kkkテーブル」を「kkk情報」と呼ぶことができる。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、物理CPUによって実行されることで、定められた処理を、適宜に記憶資源(例えば、メモリ)及び/又は通信インターフェイスデバイス(例えば、通信ポート)を用いながら行うため、処理の主語が物理CPUとされてもよい。逆に、物理CPUが主語となっている処理は、1以上のプログラムを実行することにより行われると解釈することができる。また、物理CPUは、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでもよいし、マルチコアプロセッサの各コアの意味であってもよい。コンピュータプログラムは、プログラムソースから各計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであってもよい。
図1は、実施形態の概要を示す。
計算機201が、複数の物理CPU(111)と、物理メモリ(112)及び(113)とを含んだ複数の資源(物理資源)を有する。物理メモリ(112)は、第1物理メモリ領域の一例であり、物理メモリ(113)は、第2物理メモリ領域の一例である。物理メモリ(112)及び(113)は、一体の物理メモリのメモリ領域から確保された複数のメモリ領域でもよい。
計算機201において、ハイパバイザ(101)の他にハイパバイザエージェント(102)が存在し、仮想計算機環境が提供される。ハイパバイザエージェント(102)は、簡易ハイパバイザの一例である。ハイパバイザエージェント(102)が提供する仮想計算機上で第1のゲストOS(103)が稼働し、ハイパバイザ(101)が提供する仮想計算機上で第2のゲストOS(104)が稼動する。第1のゲストOS(103)と第2のゲストOS(104)の各々に対して、動的に資源を割り当てる又は回収する資源スケジューリングが行われる。本実施形態では、動的に割り当てられる又は回収される資源として、物理CPUと、メモリ領域(本実施形態では「ページ」と言うこともある)がある。
ハイパバイザエージェント(102)の動作に利用される資源は、複数の資源のうち、第1のゲストOS(103)が利用可能な(ハイパバイザ(101)が利用しない)資源のみでよい。ハイパバイザエージェント(102)は、ゲストOSから指定される論理アドレス(本実施形態ではゲスト物理ページ番号)とその論理アドレスに対応した物理アドレス(本実施形態ではホスト物理ページ番号)との対応付けを表すアドレス変換テーブル(134)を更新することにより、メモリ仮想化を行うことができる。これにより、第1のゲストOS(103)がアクセス可能なメモリ領域(ページ)を制御することができる。なお、アドレス変換テーブル(134)は、例えば、EPT(拡張ページテーブル)、又は、DWAR(DMA(Direct Memory Access) Remapping)テーブルでよい。
資源スケジューリングを決定するのはハイパバイザ(101)であるが、第1のゲストOS(103)に対する資源割当て又は資源回収は、ハイパバイザエージェント(102)がハイパバイザに代わって実行する。
ハイパバイザ(101)は、資源のディスパッチ/プリエンプト(割当て/回収)要求発行を不揮発領域(不揮発性の記憶領域)(114)への書き込みにより行う。ハイパバイザエージェント(102)は、その要求を不揮発領域(114)から読み出し、その要求に従う処理を実行する。不揮発領域(114)に代えて揮発性の記憶領域が採用されてもよい。また、不揮発領域(114)は、計算機(201)の外に存在してもよい(図2参照)。
要求が、CPUのディスパッチ要求であれば、ディスパッチ対象の物理CPUのコンテキストが、ハイパバイザ(101)からハイパバイザエージェント(102)に切り替えられ、当該物理CPU上でハイパバイザエージェント(102)が動作する。さらに、ハイパバイザエージェント(102)は、第1のゲストOS(103)に当該物理CPUが利用可能になったことを通知する。この結果、第1のゲストOS(103)が当該物理CPU上で動作し始めることができる。
要求が、物理CPUのプリエンプト要求であれば、ハイパバイザエージェント(102)が、第1のゲストOS(103)に当該物理CPUが利用不可能になったことを通知する。この結果、第1のゲストOS(103)が当該物理CPU上で動作することはなくなる。さらに、プリエンプト対象の物理CPUのコンテキストが、ハイパバイザエージェント(102)からハイパバイザ(101)に切り替わる。
要求が、メモリディスパッチ要求又はメモリプリエンプト要求であれば、第1のゲストOS(103)による指定されたメモリ領域へのアクセスを可能、もしくは不可能とするように、アドレス変換テーブル(134)の更新処理が実行される。この際に、ハイパバイザエージェント(102)は、第1のゲストOS(103)に通知を行い、第1のゲストOS(103)も当該メモリ領域へのアクセスが可能、もしくは不可能になったことを認識する。
ハイパバイザエージェント(102)が提供する仮想計算機環境では、物理CPUは仮想化されないが物理メモリ(112及び113)は仮想化される。すなわち、第1のゲストOS(103)は、物理CPU(111)上のレジスタ(115)を直接更新しながら占有実行する。しかし、第1のゲストOS(103)は、物理メモリ(112及び113)にアドレス変換テーブル(134)を介してアクセスする。この際、物理メモリのアドレス空間は変換され、一部の物理メモリ(領域)の存在は第1のゲストOS(103)からは認識できない。
動的資源スケジューリングを実現するため、ハイパバイザ(101)は、CPUスケジューラ(121)及びメモリスケジューラ(122)を有する。これらのスケジューラが、物理CPU(111)や物理メモリ(112及び113)の第1のゲストOS(103)や第2のゲストOS(104)への割り当てを決定する。
ハイパバイザエージェント(102)は、CPUディスパッチエージェント(126)、メモリディスパッチエージェント(125)及びステートレスCPUエミュレータ124を有する。
物理CPU(111)や物理メモリ(112及び113)の第1のゲストOSへのディスパッチ処理を上記スケジューラは直接行わず、不揮発領域(114)を介して資源のディスパッチ/プリエンプト要求を発行する。この要求を参照して、ハイパバイザエージェント(102)のCPUディスパッチエージェント(126)やメモリディスパッチエージェント(125)がCPU/メモリのディスパッチ処理を行う。
CPUのディスパッチ処理では、物理CPU(111)の実行コンテキストの切り替え処理が行われる。これにより、物理CPU(111)上で動作するゲストOSが切り替わる。また、メモリのディスパッチ処理では、アドレス変換テーブル(134)の設定処理(更新処理)が行われる。これにより、物理メモリ(112)の一部を新たに第1のゲストOS(103)からアクセス可能にしたり不可能にしたりすることができる。第1のゲストOS(103)は、ゲストCPUスケジューラ(129)、ゲストメモリスケジューラ(128)及び特権命令実行部(127)を有するが、ディスパッチ処理の実現のため、ハイパバイザエージェント(102)は、ゲストCPUスケジューラ(129)及びメモリスケジューラ(128)との連携を行う。
以上のような構成を取ることにより、第1のゲストOS(103)と第2のゲストOS(104)が使用するCPU/メモリ資源の動的スケジューリングが実現できる。
本実施形態で想定するシステム構成では、第1のゲストOS(103)は物理CPU(111)上で直接実行する。しかし、物理CPU(111)によっては、アドレス変換テーブル(134)によるメモリ仮想化機能を有効にした場合、第1のゲストOS(103)の特権命令実行時にトラップが発生してしまう場合がある。この場合においても直接実行を保証するため、ハイパバイザエージェント(102)は、前述のステートレスCPUエミュレータ(124)を有する。ステートレスCPUエミュレータ(124)は、トラップした特権命令に応じて、物理CPU(111)上のレジスタ(115)の更新処理を実行する。
また、ハイパバイザ(101)に障害が発生しても、第1のゲストOS(103)及びハイパバイザエージェント(102)の動作を継続しつつ、ハイパバイザ(101)及び第2のゲストOS(104)の再起動及び処理継続を可能にするため、ハイパバイザエージェント(102)及び第1のゲストOS(103)は、物理メモリの保護領域(112)、すなわち、ハイパバイザ(101)及び第2のゲストOS(104)からは書き込み不可能な領域に配置される。ハイパバイザ(101)及び第2のゲストOS(104)が、この領域のデータやコードを破壊できない。また、ハイパバイザ(101)は、再起動制御(123)を有する。不揮発領域(114)は、要求ログテーブル(131)、CPU割当て状態テーブル(132)及びメモリ割り当て状態テーブル(133)を記憶するが、再起動制御(131)は、不揮発領域(114)に格納されているそれらの情報(131)〜(133)を参照する。そして、再起動制御(123)は、要求ログテーブル(131)に登録してある発行中の要求の処理が完全に完了するまで待つ。さらに、再起動制御(123)は、CPU/メモリの割り当て状態に応じ、ハイパバイザ(101)及び第2のゲストOS(104)が利用可能なCPU/メモリのみを利用して、これらの起動処理を行う。
第1のゲストOS(103)が利用する資源のディスパッチは、ハイパバイザエージェント(102)がハイパバイザ(101)に代わって行う。また、第1のゲストOS(103)の実行中に介在してCPUエミュレーションを行うのも、ハイパバイザエージェント(102)でありハイパバイザ(101)ではない。すなわち、ハイパバイザ(101)に障害が発生しても、第1のゲストOS(103)及びハイパバイザエージェント(102)は動作を継続できる。ハイパバイザエージェント(102)の提供機能はハイパバイザ(101)に比べると少なく(例えば、はるかに少なく)、故に、ハイパバイザ(101)に障害が発生しても第1のゲストOS(103)の動作を継続することは難しくないと考えられる。
また、要求ログテーブル(131)、CPU割当て状態テーブル(132)及びメモリ割り当て状態テーブル(133)が不揮発領域(114)に保存され、ハイパバイザ(101)再起動後にも参照可能な構成にすることにより、ハイパバイザ障害発生後にも、第2のゲストOS(104)及びハイパバイザ(101)のみの再起動及び処理継続も可能になる。
以下、本実施形態を詳細に説明する。
図2は、計算機201のハードウェア構成を示す。
第1のゲストOS(103)、ハイパバイザエージェント(102)、第2のゲストOS(104)及びハイパバイザ(101)のようなプログラムは、計算機(201)の物理メモリ(112及び113)上に配置される。物理メモリ(112及び113)は、CPUバス(202)を介して複数の物理CPU(111)に通信可能に接続される。複数の物理CPU(111)のうちの少なくとも1つが、上述のプログラムを読み込んで実行する。アドレス変換テーブル(134)は、物理メモリ(112及び113)上に配置され、第1のゲストOS(103)や第2のゲストOS(104)実行時のメモリアクセスにおけるアドレス変換の制御に使用される。要求ログテーブル(131)、CPU割当て状態テーブル(132)、メモリ割り当て状態テーブル(133)は、不揮発領域(114)に配置される。計算機(102)は、I/O(Input/Output)コントローラ(203)を有し、不揮発領域(114)には、I/Oコントローラ(203)及びI/Oケーブル(204)を介して、物理CPU(111)上で実行するプログラムからアクセスできる。例えば、読み込み処理を行う場合には、プログラムが、I/Oコントローラ(203)に対してI/O要求を発行する。I/Oコントローラ(203)は、I/Oケーブル(204)を介して不揮発領域(114)上のデータを読み込み、読み込んだデータを、CPUバス(202)を介して物理メモリ(112及び113)に書き込む。物理CPU(111)上で動作するプログラムは、CPUバス(202)を介して、その書き込まれたデータを取得する。I/Oケーブル(204)は、通信ネットワークにおけるケーブルでもよい。
図3は、要求ログテーブル(131)の構成を示す。
要求ログテーブル(131)は、CPUスケジューラ(121)やメモリスケジューラ(122)が発行する資源ディスパッチ/プリエンプト要求と、その要求のCPUディスパッチエージェント(126)及びメモリエージェント(125)により処理状況とを含んだログを管理するためのテーブルである。本テーブルは、要求毎に、資源種別(301)、番号(302)、旧状態(303)、新状態(304)、ゲスト物理番号(305)及び処理状態(306)のフィールドを有する。1つのカラムが、1つの要求のログに対応する。
資源種別(301)は、ディスパッチ/プリエンプト対象がCPUであるかメモリであるかを表す。
番号(302)は、ディスパッチ/プリエンプトの対象となる資源の番号(識別番号)を表す。CPUがディスパッチ対象の場合、番号(302)は、ディスパッチ対象の物理CPUの番号を表し、メモリがディスパッチ対象の場合、ディスパッチ対象のメモリ領域(ページ)のホスト物理ページ番号、ページを識別する番号を表す。
旧状態(303)及び新状態(304)はディスパッチ/プリエンプト処理の前及び後において対象資源を利用可能なゲストOSの番号を表す。対象資源がどのゲストOSにも割り当てられず空き状態になる場合には、旧状態(303)及び新状態(304)の少なくとも一方の値は、空き状態を意味する値「F」でよい。
ゲスト物理番号(305)はハイパバイザ(101)による資源ディスパッチ/プリエンプト要求ではなく、ハイパバイザ(101)がアドレス変換テーブル(134)の設定をハイパバイザエージェント(102)に依頼する特殊ケースでのみ使用される。本実施形態では、アドレス変換テーブル(134)は、ハイパバイザ(101)とハイパバイザエージェント(102)で共有される。この際、ハイパバイザ(101)によるアドレス変換テーブル(134)破壊を防止するため、アドレス変換テーブル(134)が、物理メモリ(保護領域)(112)に配置される。ハイパバイザ(101)が、アドレス変換テーブル(134)を更新する際には、設定に必要な情報(例えば、番号(302)及び新状態(304))が指定されたアドレス変更要求をメモリディスパッチエージェント(125)に発行する。
処理状態(306)は、要求に従うディスパッチ/プリエンプト処理の処理状況を表す。CPUスケジューラ(121)やメモリスケジューラ(122)は、要求を発行すると、その要求に対応した処理状態(306)を「処理中」に更新する。また、CPUディスパッチエージェント(126)やメモリディスパッチエージェント(125)は、要求に従う処理を完了すると、その要求に対応した処理状態(306)を「完了」に更新する。
要求の種類によっては、上記フィールドのうち一部のフィールドのみが使用される。例えば、要求が、CPUのディスパッチ/プリエンプト要求の場合、ゲスト物理番号(205)のフィールドは使用されない。
また、メモリのディスパッチ/プリエンプト要求としては、第1のゲストOS(103)にメモリ領域(ページ)を割り当てるディスパッチ要求、第1のゲストOS(103)からメモリ領域を回収するプリエンプト要求、及び、ハイパバイザ(101)によるアドレス変換テーブル(134)のアドレス更新要求、の3種類がある。ディスパッチ要求の場合には、ゲスト物理番号(305)のフィールドが使用されない。プリエンプト要求の場合には、番号(302)及びゲスト物理番号(305)のフィールドが使用されない(第1のゲストOS(103)が現在利用している任意の1ページの回収が要求されてよい)。また、アドレス変換要求の場合には、旧状態(303)のフィールドが使用されない(要求の前後で資源の所有者は変更されないためである)。
図4は、CPU割当て状態テーブル(132)の構成を示す。
CPU割当て状態テーブル(132)は、物理CPU毎に、CPU番号(401)のフィールドと割り当て先(402)のフィールドとを有する。CPU番号(401)は、物理CPU(111)の番号(識別番号)を表し、割り当て先(402)は、対応する物理CPU(111)が割り当てられているゲストOSの番号(識別番号)を表す。割り当て先のゲストOSがなく空き状態である物理CPU(111)について、割り当て先(402)の値は、空き状態を意味する値「F」でよい。また、ディスパッチ/プリエンプト処理中である物理CPU(111)について、割り当て先(402)の値は、処理中を意味する値「#」でよい。
図5は、メモリ割り当て状態テーブル(133)の構成を示す。
メモリ割り当て状態テーブル(133)、ページ毎に、ホスト物理ページ番号(501)のフィールドと、ゲスト物理ページ番号(502)のフィールドと、割り当て先(503)のフィールドとを有する。ホスト物理ページ番号(501)は、ページの番号(識別番号)を表し、物理アドレスに相当する。ゲスト物理ページ番号(502)は、ゲストOSが認識しているページ番号を表し、論理アドレスに相当する。割り当て先(503)は、ページの割り当て先のゲストOSの番号を表す。割り当て先のゲストOSがなく空き状態のページについて、ゲスト物理ページ番号(502)及び割り当て先(503)は、それぞれ、空き状態を意味する値「F」でよい。また、ディスパッチ/プリエンプト処理中のページについて、ゲスト物理ページ番号(502)及び割り当て先(503)は、それぞれ、処理中を意味する値「#」でよい。
図6は、第1のコンテキスト保存領域(601)を示す。
第1のコンテキスト保存領域(601)は、物理メモリ(113)の一部領域でよい。CPUスケジューラ(121)が、CPUディスパッチ/プリエンプト処理を行う際に、第1のコンテキスト保存領域(601)が使用される。CPUスケジューラ(121)は、第1のコンテキスト保存領域(601)を使用して、ハイパバイザエージェント(102)の実行コンテキストの退避及び回復を行う。
図7は、第2のコンテキスト保存領域(701)を示す。
第2のコンテキスト保存領域(701)は、物理メモリ(112)の一部領域でよい。CPUディスパッチエージェント(126)が、CPUディスパッチ要求を発行する前に、本データ構造にハイパバイザ(101)の実行コンテキストを退避する。また、プリエンプト要求処理が完了した後に、第2のコンテキスト保存領域(701)からハイパバイザ(101)の実行コンテキストが回復する。
図8は、コード領域及びスタック領域の配置を示す。
コード領域及びスタック領域は、物理CPU(111)のディスパッチ/プリエンプト処理時に使用される。CPUのディスパッチ/プリエンプト要求は、CPUスケジューラ(121)により発行される。その処理を行うためのコードが、CPUスケジューラコード領域(1)(813)に配置される。また、その処理を行う際に使用するスタックは、CPUスケジューラスタック領域(815)に配置される。これらの領域は物理メモリ(113)上にある。
物理CPU(111)のディスパッチ要求発行は、トラップ命令発行により行う。この際のジャンプ先は、ハイパバイザ(101)が管理する割り込みハンドラテーブル(801)に登録されており、そのテーブル(801)により、CPUディスパッチエージェント(126)へのジャンプが実現する。CPUディスパッチエージェント(126)により行われる処理のコードは、CPUディスパッチエージェントコード領域(812)に配置される。また、この時にスタックの切り替えも同時に起こり、新たなスタックは、CPUディスパッチエージェントスタック領域(811)に配置される。これらの領域は、物理メモリ(保護領域)(112)に配置される。
CPUプリエンプト要求発行は、プリエンプト対象の物理CPU(111)への割り込み通知により行われる。プリエンプト対象の物理CPU(111)に対する割り込みの発生後は、上記と同様に、割り込みハンドラテーブル(801)の参照、ジャンプ、スタック切り替えが起こり、CPUディスパッチエージェント(126)が起動される。
CPUディスパッチエージェント(126)がプリエンプト処理を完了すると、CPUスケジューラ(121)にトラップリターンにより制御が戻る。この後に実行される処理のコードは、CPUスケジューラコード領域(2)(814)に配置される。また、この際、使用スタックも、CPUスケジューラスタック領域(815)にあるスタックに変更される。これらの領域は、物理メモリ(113)上にある。
CPUディスパッチエージェント(126)が、ディスパッチ処理を完了すると、以降、ディスパッチされた物理CPU(111)はハイパバイザエージェント(102)及び第1のゲストOS(103)が占有実行するため、CPUスケジューラ(121)には制御は戻らない。上記プリエンプト処理完了により、CPUスケジューラ(121)に制御が戻る。
図9は、アドレス変換テーブル(134)の構成を示す。
アドレス変換テーブル(134)は、エントリ(レコード)毎に、エントリが有効か無効かを示す値(V)(901)を格納するフィールドと、ページの割当先のゲストOSの番号を表すゲストOS番号(902)のフィールドと、ゲストOSから指定されるページ番号を表すゲスト物理ページ番号(903)のフィールドと、ゲスト物理ページ番号に対応付けられたホスト物理ページ番号(904)のフィールドとを有する。
図10は、CPU利用履歴管理テーブル(1001)の構成を示す。
CPU利用履歴管理テーブル(1001)は、CPUスケジューラ(121)により管理されるテーブルであり、例えば、物理メモリ113に配置される。CPU履歴管理テーブル(1001)は、ゲストOS毎に、ゲストOS番号(1011)、最小CPU量(1012)、最大CPU量(1013)及び割り当てCPU累計(1014)のそれぞれのフィールドを有する。ゲストOS番号(1011)は、ゲストOSの番号を表し、最小CPU量(1012)は、そのゲストOSに割り当てられるCPU量の下限値を表し、最大CPU量(1013)は、そのゲストOSに割り当てられるCPU量の上限値を表し、割り当てCPU累計(1014)は、割り当てられているCPU量の累積値を表す。CPU量は、例えば、物理CPUの数でよい。最小CPU量(1012)及び最大CPU量(1013)の組合せは、ゲストOSに割り当てられるCPUの量の範囲を表す。
図11は、メモリ利用履歴管理テーブル(1101)の構成を示す。
メモリ利用履歴管理テーブル(1101)は、メモリスケジューラ(122)により管理されるテーブルであり、例えば、物理メモリ113に配置される。メモリ利用履歴管理テーブル(1101)は、ゲストOS毎に、ゲストOS番号(1111)、最小メモリ量(1112)、最大メモリ量(1113)及び割り当てメモリ累計(1114)のそれぞれのフィールドを有する。ゲストOS番号(1111)は、ゲストOSの番号を表し、最小メモリ量(1112)は、そのゲストOSに割り当てられるメモリ量の下限値を表し、最大メモリ量(1113)は、そのゲストOSに割り当てられるメモリ量の上限値を表し、割り当てメモリ累計(1114)は、割り当てられているメモリ量の累積値を表す。メモリ量は、例えば、ページの数、又は、ページの総容量でよい。最小メモリ量(1112)及び最大メモリ量(1113)の組合せは、ゲストOSに割り当てられるメモリの量の範囲を表す。
CPU履歴管理テーブル(1001)及びメモリ履歴管理テーブル(1101)は、それぞれ、不揮発領域(114)に格納される。テーブル(1001)/(1101)は、CPU/メモリの各ゲストOSに割り当て可能な最大/最小の資源量、及び、割り当てられている資源の総量(累計)を表す。CPUスケジューラ(121)/メモリスケジューラ(122)は、資源スケジューリングを行う際に、テーブル(1001)/(1101)に登録されている最大/最小の資源量を参照し、それを超える/下回るスケジューリングを実行しようとしている場合、当該割り当てを中止する。また、ゲストOS毎に割り当て資源量(累計)が管理されているため、資源利用実績に応じた課金が可能である。
図12は、CPUスケジューラ(121)の定期起動による動作フローを示す。
ステップ1201にて、CPUスケジューラ(121)は、CPU利用履歴管理テーブル(1001)の更新処理を行う。具体的には、例えば、CPUスケジューラ(121)は、CPU割当て状態テーブル(132)を参照し、各ゲストOSについて、割り当てCPU数を算出する。そして、CPUスケジューラ(121)は、各ゲストOSについて、CPU利用履歴管理テーブル(1001)の割り当てCPU累計(1014)に、算出した割り当てCPU数を加える。この処理により、CPU利用実績の累計値を管理でき、この累計値に応じた課金等が可能になる。
以下、説明を分かり易くするために、資源がディスパッチ又はプリエンプトされるゲストOSである対象ゲストOSを、「第1のゲストOS」とする。
ステップ1202にて、CPUスケジューラ(121)は、第1のゲストOSに対するスケジューリング対象CPU(ディスパッチ又はプリエンプトされる物理CPU)を決定する。この決定の際に、CPUスケジューラ(121)は、CPU利用履歴管理テーブル(1001)から、第1のゲストOS(103)について、CPU量範囲(最小CPU量(1012)及び最大CPU量(1013)の組合せ)を特定する。そして、第1のゲストOS(103)に対応した割り当てCPU累計(1014)に、スケジューリング対象CPUの量を加える又は減らすと、特定したCPU量範囲の上限を超える、又は、特定したCPU量範囲の下限を下回る場合、CPUスケジューラ(121)は、当該割り当てを中止する。
ステップ1203にて、CPUスケジューラ(121)は、ステップ1202にて決定したスケジューリング状態(第1のゲストOS(103)とスケジューリング後の物理CPUとの組合せ)と、CPU割当て状態テーブル(132)とを比較することにより、割当てに変化があるか否か(第1のゲストOSと物理CPUの組合せに変更があるか否か)を判定する。
変化がなければ、CPUスケジューラ(121)は、ステップ1204にて処理を終了する。
変化があれば、CPUスケジューラ(121)は、ステップ1205にて、CPU割当て状態テーブル(132)を更新、具体的には、例えば、第1のゲストOS(103)に対応した割り当て先(402)を「#」に更新する。
さらにステップ1206にて、CPUスケジューラ(121)は、要求ログテーブル(131)の更新を行う。具体的には、例えば、CPUスケジューラ(121)は、資源種別(301)として「CPU」を設定し、番号(302)として第1のゲストOS(103)についてのスケジューリング対象CPU(111)の番号を設定し、旧状態(303)及び新状態(304)として、スケジューリング実行前後で当該物理CPU(111)を占有すべきゲストOSの番号を設定し、処理状態(306)として「処理中」を設定する。
ステップ1207にて、CPUスケジューラ(121)は、CPUディスパッチエージェント(126)に発行する必要のある要求がディスパッチかプリエンプトかの判別を行う。要求がディスパッチ要求であれば、ステップ1209に進み、要求がプリエンプト要求であれば、ステップ1208に進む。
ステップ1208にて、CPUスケジューラ(121)は、スケジューリング対象CPU(111)に対する割り込み通知を行う。スケジューリング対象CPU(111)上で動作している第1のゲストOS(103)及びハイパバイザエージェント(102)は、動作を中断し、以降、CPUディスパッチエージェント(130)に制御が渡る。またスタック変更も行われ、CPUディスパッチエージェントスタック領域(811)をスタックとして利用した動作が行われる。そして、ステップ1212に進む。
ステップ1209にて、CPUスケジューラ(121)は、キャッシュ/TLB(Translation Lookaside Buffer)のフラッシュ処理、具体的には、キャッシュ/TLBのフラッシュ(キャッシュ及びTLB内のデータを所定の格納先(例えば不揮発領域114)へ吐き出す処理)を指示する特権命令の発行を行う。この特権命令は、現在の物理CPU(111)(ハイパバイザ101を実行する物理CPU(111))が受けて、その物理CPU(111)が、キャッシュ/TLBのフラッシュを行う。ここでのキャッシュ及びTLBは、物理メモリ113内の領域でよい。
ステップ1210にて、CPUスケジューラ(121)は、第1のコンテキスト保存領域(601)への実行コンテキストの退避を行う。実行コンテキストは、例えば、現在の物理CPU(111)(ハイパバイザ101を実行する物理CPU(111))のレジスタ(115)の値を格納する。
ステップ1211にて、CPUスケジューラ(121)は、トラップ命令を発行する。これにより、実行している物理CPU(111)上でCPUディスパッチエージェント(130)が動作しはじめる。この際、使用スタック領域も変更され、以降のCPUディスパッチエージェント(130)の処理は、CPUディスパッチャエージェントスタック領域(811)のスタックを使用しながら動作する。
ステップ1212にて、CPUスケジューラ(121)は、処理を完了する。
図13は、CPUディスパッチエージェント(126)からのトラップリターンを契機に起動したCPUスケジューラ(121)の動作フローを示す。
ステップ1301にて、CPUスケジューラ(1301)は、hlt命令を発行する。本hlt命令発行により、後述する再起動制御(123)による割り込み通知が発行されるまで、CPUスケジューラ(1301)は、待つ。CPUディスパッチャエージェント(126)が物理CPU(111)のディスパッチ/プリエンプト処理代行を行っている最中にハイパバイザ(101)の障害によりハイパバイザ(101)が再起動する可能性がある。この場合、ステップ1210で退避されたコンテキストも無効になる。このコンテキスト回復前にこの待ち合わせを行うことで、この無効コンテキストの使用を回避し、ハイパバイザ(101)の再起動後の動作継続が可能である。
ステップ1302にて、CPUスケジューラ(121)は、ハイパバイザコンテキスト保存領域(301)からコンテキストを回復する。これにより、当該領域(301)内のコンテキストが有する各値が、物理CPU(111)(ハイパバイザ101を実行する物理CPU(111))のレジスタ(115)にロードされる。これ以降、当該物理CPUをハイパバイザ(101)及び第2のゲストOS(104)が専有し、動作を行う。
ステップ1303にて、CPUスケジューラ(121)は、処理を完了する。
さて、CPUディスパッチエージェント(126)は、定期的に要求ログテーブル(131)を参照することによりディスパッチ要求を検知した場合(ディスパッチの場合)、もしくは、CPUスケジューラ(129)からの割り込み通知を受信した場合(プリエンプトの場合)、動作を開始する。CPUのディスパッチ要求が検知された場合、図14が示す動作フローが行われ、CPUのプリエンプト要求が検知された場合、図15が示す動作フローが行われる。
図14は、CPUのディスパッチ要求を検知したCPUディスパッチエージェント(126)とゲストCPUスケジューラ(129)の動作フローを示す。
図14では、ステップ1401にて、CPUディスパッチエージェント(126)は、第2のコンテキスト保存領域(701)からコンテキストを回復する。具体的には、例えば、CPUディスパッチエージェント(126)は、第2のコンテキスト保存領域(701)内のコンテキストが有する各値を、物理CPU(111)のレジスタ(115)にロードする。その物理CPU(111)は、ハイパバイザエージェント(102)を実行する物理CPU(111)、言い換えれば、第1のゲストOS103を実行する物理CPU(111)である。
ステップ1402にて、CPUディスパッチエージェント(126)は、第1のゲストOS(103)のゲストCPUスケジューラ(129)に対して、CPUの構成情報を更新する要求であるCPU更新要求を送信する。
ステップ1403にて、ゲストOSスケジューラ(129)が、そのCPU更新要求を受信する。この際に、ディスパッチ対象となる物理CPU(111)の番号が、ゲストOSスケジューラ(129)に通知される。具体的には、例えば、CPU更新要求が、ディスパッチ対象となる物理CPU(111)の番号を含んでいてもよいし、ディスパッチ対象となる物理CPU(111)の番号が、その要求と共にゲストOSスケジューラ(129)に通知されてもよい。
ステップ1404にて、ゲストCPUスケジューラ(129)は、第1のゲストOS(103)のスケジューリング対象のCPUリストに、通知された物理CPU番号を加える。以降、当該物理CPU(111)を、第1のゲストOS(103)が利用することが可能になる。
ステップ1405にて、ゲストCPUスケジューラ(129)は、CPU更新の完了をCPUディスパッチエージェント(126)に対して送信する。
ステップ1406にて、CPUディスパッチエージェント(126)が、上記完了を受信する。
ステップ1407にて、CPUディスパッチエージェント(126)が、要求ログテーブル(131)の更新、具体的には、例えば、検知されたCPUディスパッチ要求に対応した処理状態(306)の値を「完了」に更新する。
そして、ステップ1408にて、CPUディスパッチエージェント(126)が、処理を完了する。
図15は、CPUのプリエンプト要求を検知したCPUディスパッチエージェント(126)とゲストCPUスケジューラ(129)の動作フローを示す。
ステップ1501にて、CPUディスパッチエージェント(126)は、第1のゲストOS(103)のゲストCPUスケジューラ(129)に対し、CPU更新要求を送信する。
ステップ1502にて、ゲストCPUスケジューラ(129)が、CPU更新要求を受信する。この際、図14と同様の方法で、プリエンプト対象となる物理CPU(111)の番号がゲストCPUスケジューラ(129)に通知される。
ステップ1503にて、ゲストCPUスケジューラ(129)は、第1のゲストOS(103)のスケジューリング対象のCPUリストから、通知された物理CPU番号を削除する。以降、当該物理CPU(111)を、第1のゲストOS(103)を利用できない。
ステップ1504にて、ゲストCPUスケジューラ(129)が、CPU更新の完了をCPUディスパッチエージェント(126)に対して送信する。
ステップ1505にて、CPUディスパッチエージェント(126)が、上記完了を受信する。
ステップ1506にて、CPUディスパッチエージェント(126)が、要求ログテーブル(131)の更新、具体的には、例えば、検知されたCPUプリエンプト要求に対応した処理状態(206)の値を「完了」に更新する。
ステップ1507にて、CPUディスパッチエージェント(126)が、第2のコンテキスト保存領域(701)へのコンテキストの退避を行う。具体的には、例えば、CPUディスパッチエージェント(126)が、物理CPU(111)のレジスタ(115)に記録されている値を含んだコンテキストを、第2のコンテキスト保存領域(701)に格納する。その物理CPU(111)は、ハイパバイザエージェント(102)を実行する物理CPU(111)、言い換えれば、第1のゲストOS103を実行する物理CPU(111)である。
ステップ1508にて、CPUディスパッチエージェント(126)が、トラップリターン命令(図8参照)を発行する。本トラップリターン命令発行により、スタックが切り替わり、以降動作するCPUスケジューラ(121)はCPUスケジューラスタック領域(815)を利用して動作するようになる。
ステップ1509にて、動作が完了する。
図16は、メモリスケジューラ(122)の動作フローを示す。メモリスケジューラは定期動作する。
ステップ1601にて、メモリスケジューラ(122)は、メモリ利用履歴管理テーブル(1101)の更新処理を行う。具体的には、例えば、メモリスケジューラ(122)は、メモリ割り当て状態テーブル(133)を参照し、各ゲストOSについて、割り当てメモリ量を算出する。そして、メモリスケジューラ(122)は、各ゲストOSについて、メモリ用履歴管理テーブル(1101)の割り当てメモリ累計(1114)に、算出された割り当てメモリ量を加える。この処理により、メモリ利用実績の累計値を管理でき、この累計値に応じた課金等が可能になる。
ステップ1602にて、メモリスケジューラ(122)が、第1のゲストOS対するスケジューリング対象メモリ領域(ディスパッチ又はプリエンプトされるメモリ領域(ページ))を決定する。この決定の際に、メモリスケジューラ(122)は、メモリ利用履歴管理テーブル(1101)から、第1のゲストOS(103)について、メモリ量範囲(最小メモリ量(1111)及び最大メモリ量(1112)の組合せ)を特定する。そして、第1のゲストOS(103)に対応した割り当てメモリ累計(1114)に、スケジューリング対象メモリ領域の量を加える又は減らすと、特定したメモリ量範囲の上限を超える、又は、特定したメモリ量範囲の下限を下回る場合、メモリスケジューラ(122)は、当該割り当てを中止する。
ステップ1603にて、メモリスケジューラ(122)が、第1のゲストOSへのメモリ割り当て量の変更があるか否かをチェックする。
変更がなければ、ステップ1604にて、メモリスケジューラ(122)が、処理を完了する。
変更があれば、ステップ1605にて、メモリスケジューラ(122)が、メモリ割り当て状態テーブル(133)の更新を行う。メモリスケジューラ(122)は、発行する要求が、第1のゲストOS(103)へのメモリディスパッチ(割り当てメモリ量の増大)が必要であれば、割り当て対象となるメモリ領域(物理ページ)を決定する。当該物理ページは、割り当て先がなく空き状態になっている物理ページ、又は、第2のゲストOS(104)に割り当てられている物理ページのうちプリエンプト可能なページである。そして、当該物理ページについて、メモリ割り当て状態テーブル(133)に、ゲスト物理ページ番号(502)及び割り当て先(503)がそれぞれ「#」に更新される。一方、発行する要求が、第1のゲストOSへのプリエンプト要求やアドレス変更要求である場合には、本ステップでの更新処理は行わない。
ステップ1606にて、メモリスケジューラ(122)が、要求ログテーブル(131)への登録処理を行う。具体的には、例えば、メモリスケジューラ(122)が、要求に対応した資源種別(301)及び処理状態(306)を、それぞれ、「メモリ」及び「処理中」に更新する。要求が、第1のゲストOS(103)へのメモリディスパッチ要求であれば、番号(302)は、対象となる物理ページ番号であり、旧状態(303)及び新状態(304)は、それぞれ、ディスパッチ処理前後で当該物理ページが割り当てられるゲストOSの番号である。要求が、第1のゲストOS(103)へのメモリプリエンプト要求であれば、旧状態(303)及び新状態(304)は、それぞれ、ディスパッチ処理前後で当該物理ページが割り当てられるゲストOSの番号である。
ステップ1607にて、処理が完了する。
図17は、メモリディスパッチエージェント(125)及びゲストメモリスケジューラ(128)の動作フローを示す。
ステップ1701にて、メモリディスパッチエージェント(125)が、要求ログテーブル(131)から、資源種別(301)が「メモリ」であり処理状態(306)が「処理中」である要求を抽出する。
そして、ステップ1702にて、メモリディスパッチエージェント(125)が、抽出した要求(カラム)の判別を行う。番号(302)、旧状態(303)及び新状態(304)がすべて設定されていれば、要求はメモリディスパッチ要求であり、旧状態(303)及び新状態(304)が設定されているが番号(302)が設定されていなければ、要求はメモリプリエンプト要求であり、番号(302)及び新状態(304)が設定されているが旧状態(303)が設定されていなければ、要求はアドレス変更要求だと判別される。要求がメモリディスパッチ/プリエンプト要求であればステップ1703に進み、要求がアドレス変更要求であればステップ1708に進む。
ステップ1703にて、メモリディスパッチエージェント(125)が、第1のゲストOSのゲストメモリスケジューラ(128)に対して、メモリの構成情報を更新する要求であるメモリ更新要求を送信する。
ステップ1704にて、ゲストメモリスケジューラ(128)が、上記要求を受信する。
ステップ1705にて、ゲストメモリスケジューラ(128)が、上記要求に応答して、第1のゲストOSが使用可能なゲスト物理ページ番号の一覧である物理ページリストに対しページ番号の追加/削除を行う。この際、ゲストメモリスケジューラ(128)が、追加/削除したいゲスト物理ページ番号を決定する。要求がメモリディスパッチ要求であれば、ゲストメモリスケジューラ(128)が、リストに追加するゲスト物理ページ番号を決める。要求がメモリプリエンプト要求であれば、ゲストメモリスケジューラ(128)が、リストから削除するゲスト物理ページ番号を決める。
ステップ1706にて、ゲストメモリスケジューラ(128)が、メモリディスパッチエージェント(125)に対して、メモリ更新の完了を送信する。この際、ステップ1705で決定したゲスト物理ページ番号がメモリディスパッチエージェント(125)に通知される。ゲスト物理ページ番号は、完了(応答)に含まれていてもよいし、完了(応答)とは別に通知されてもよい。
ステップ1707にて、メモリディスパッチエージェント(125)が、上記完了とゲスト物理ページ番号を受信する。
ステップ1708にて、メモリディスパッチエージェント(125)が、アドレス変換テーブル(134)の更新を行う。要求がメモリディスパッチ要求の場合、メモリディスパッチエージェント(125)が、その要求に対応する新状態(304)が表すゲストOS番号と、ステップ1707で受信したゲスト物理ページ番号と、要求に対応した番号(302)が表すホスト物理ページ番号(603)を、アドレス変換テーブル(134)のゲストOS番号(902)、ゲスト物理ページ番号(903)及びホスト物理ページ番号(904)として登録し、それらが登録されたエントリ中のV(901)の値を「1」(有効)に更新する。要求がメモリプリエンプト要求の場合、メモリディスパッチエージェント(125)が、要求に対応した新状態(304)が表すゲストOS番号と、ステップ1707で受信したゲスト物理ページ番号とをゲストOS番号(902)及びゲスト物理ページ番号(903)に持つエントリをアドレス変換テーブル(134)から探し、見つかったエントリのV(901)の値を「0」(無効)に更新する。さらに、メモリディスパッチエージェント(125)が、見つかったエントリ中のホスト物理ページ番号(904)に対応するゲスト物理ページ番号(502)及び割り当て先(503)(図5参照)を、それぞれ「#」に更新する。要求がアドレス変更要求の場合は、メモリディスパッチエージェント(125)が、要求に対応した新状態(304)が表すゲストOS番号、要求に対応したゲスト物理ページ番号(305)が表すゲスト物理ページ番号、要求に対応した番号(302)が表すホスト物理ページ番号(603)を、アドレス変換テーブル(134)のゲストOS番号(902)、ゲスト物理ページ番号(903)及びホスト物理ページ番号(904)として登録し、それらの値が登録されたエントリ中のV(901)の値を「1」(有効)に更新する。
ステップ1709にて、メモリディスパッチエージェント(125)が、キャッシュ/TLBのパージ処理、具体的には、キャッシュ/TLBのパージ(キャッシュ及びTLB内のデータの消去)を指示する特権命令の発行を行う。この特権命令は、物理CPU(111)(バイザエージェント10を実行する物理CPU(111))が受けて、その物理CPU(111)が、キャッシュ/TLBのパージを行う。ここでのキャッシュ及びTLBは、物理メモリ112(保護領域)内の領域でよい。
ステップ1710にて、メモリディスパッチエージェント(125)が、要求ログテーブル(131)の更新を行う。具体的には、例えば、メモリディスパッチエージェント(125)が、要求に対応した処理状態(306)の値を「完了」に更新する。また、メモリディスパッチエージェント(125)が、ゲスト物理ページ番号(305)の値を、ステップ1706で受信した値に更新する。さらに、要求がメモリプリエンプト要求の場合は、ステップ1708で読み出したホスト物理ページ番号(904)の値が、対応する番号(302)として登録される。
ステップ1711にて、処理が完了する。
図18は、特権命令実行部(127)及びステートレスCPUエミュレータ(124)の動作フローを示す。
ステップ1801にて、特権命令実行部(127)は、特権命令の実行を行う。この結果、物理CPU(111)上でトラップが発生し、ステートレスCPUエミュレータ(124)に制御が移る。例えば、或るベンダの物理CPUは、メモリエミュレーション機能とCPUエミュレーション機能の両方を有しているが、これらの機能は両方とも有効になるか両方とも無効になるかであり、片方の機能だけを有効にすることができないものがある。本実施形態では、メモリの仮想化の実現手段として、物理CPUが有するメモリエミュレーション機能を呼び出すこと(有効にすること)があるが、メモリエミュレーション機能だけを有効にすることができないので、CPUエミュレーション機能も有効になる。これが、特権命令(実行に伴うトラップ)が生じる一例である。
ステップ1802にて、ステートレスCPUエミュレータ(124)は、実行中の命令を読み出す。
ステップ1803にて、ステートレスCPUエミュレータ(124)は、上記で読み出した命令に応じて、物理メモリ(112)や、物理CPU(111)(第1のゲストOS103を実行する物理CPU(111))のレジスタ(115)の更新処理を行う。
ステップ1804にて、ステートレスCPUエミュレータ(124)は、トラップリターン命令を発行し、特権命令実行部(127)に制御を戻す。
ステップ1805にて、特権命令実行部(127)は、処理を継続し、ステップ1806にて処理を完了する。
図19は、再起動制御(123)の定期動作のフローを示す。
ステップ1901にて、再起動制御(123)は、要求ログテーブル(131)から、処理状態(306)が「完了」になっているエントリを探す。
ステップ1902にて、再起動制御(123)は、上記のエントリが見つかったか否かを判別する。当該エントリがあれば、ステップ1903に進み、なければ、ステップ1906に進む。
ステップ1903にて、再起動制御(123)は、CPU割当て状態テーブル(132)及びメモリ割り当て状態テーブル(133)を更新する。具体的には、例えば、再起動制御(123)は、ステップ1901により見つかったエントリがCPUディスパッチ/プリエンプト要求に対応したエントリの場合、当該エントリの番号(302)に対応する割り当て先(402)の値を、当該エントリの新状態(304)が表す値に更新する。また、例えば、再起動制御(123)は、ステップ1901により見つかったエントリがメモリディスパッチ要求に対応したエントリの場合、当該エントリの番号(302)に対応するエントリ中の割り当て先(502)の値を、当該エントリの新状態(304)が表す値に更新する。さらに、再起動制御(123)は、当該エントリの番号(302)に対応するエントリ中のゲスト物理ページ番号(502)の値を、当該エントリのゲスト物理番号(305)が表す値に更新する。また、例えば、再起動制御(123)は、ステップ1901により見つかったエントリがメモリプリエンプト要求に対応したエントリの場合、当該エントリの番号(302)に対応するエントリ中のゲスト物理ページ番号(502)及び割り当て先(503)の値をそれぞれ「F」に更新する。また、例えば、再起動制御(123)は、ステップ1901により見つかったエントリがアドレス更新要求に対応したエントリ場合、何もしないでよい。上記更新処理の後、再起動制御(123)は、要求ログテーブル(131)の当該エントリ(見つかったエントリ)を削除する。
ステップ1904にて、再起動制御(123)は、ステップ1901で見つかったエントリに、CPUプリエンプト完了要求が含まれているか否かを判別する。含まれていれば、ステップ1905に進み、含まれていなければ、ステップ1906に進む。
ステップ1905にて、再起動制御(123)は、対象となる物理CPU(111)に割り込みを送信する。この割り込み送信により、ステップ1301にて停止しているCPUスケジューラ(121)の動作を安全に再開させることができる。
ステップ1906にて処理が完了する。
図20は、障害に伴うハイパバイザ再起動後の再起動制御(123)の動作フローを示す。
ステップ2001にて、再起動制御(123)は、要求ログテーブル(131)において、処理状態(306)が「処理中」のエントリがあれば、当該処理状態が「完了」になるまで待つ。
ステップ2002にて、再起動制御(123)は、待ちの時間長がタイムアウトになるか否かを判別する。タイムアウトになれば、ステップ2003に進み、ならなければ、ステップ2004に進む。
ステップ2003にて、再起動制御(123)は、タイムアウトが発生した要求のキャンセル処理を行う。具体的には、例えば、タイムアウトした要求がCPUディスパッチ/プリエンプト要求の場合、再起動制御(123)は、タイムアウトした要求に対応する対象エントリ中の番号(302)を特定し、特定した番号(302)に対応する割り当て先(402)の値を、上記対象エントリ中の旧状態(303)の値に更新する。また、タイムアウトした要求がメモリディスパッチ要求の場合、再起動制御(123)は、タイムアウトした要求に対応する対象エントリ中の番号(302)を特定し、特定した番号(302)に対応するゲスト物理ページ番号(502)及び割り当て先(503)の値を、それぞれ「F」に更新する。タイムアウトした要求がメモリプリエンプト要求やアドレス変更要求の場合、再起動制御(123)は、何もしないでよい。上記キャンセル処理が完了した場合、再起動制御(123)は、要求ログテーブル(131)から、タイムアウトした要求に対応したエントリを削除する。
ステップ2004にて、再起動制御(123)は、CPU/メモリ割り当て状態の更新処理を行う。本更新処理では、ステップ1903と同様に、要求ログテーブル(131)の処理状態(306)が「完了」になっているエントリの登録内容に従って、CPU割当て状態テーブル(132)及びメモリ割り当て状態テーブル(133)が更新される。
ステップ2005にて、上記処理の結果を基に、再起動制御(123)は、ハイパバイザ(101)や第2のゲストOS(104)が利用可能なCPU/メモリを確定し、この利用可能なCPU/メモリのみを使用して(言い換えれば、ハイパバイザエージェント(102)や第1のゲストOS(103)が使用する資源を使用することなく)、ハイパバイザ(101)及び第2のゲストOS(104)の初期化処理(ブート処理)を実行する。これにより、ハイパバイザエージェント(102)や第1のゲストOS(103)に影響を与えずに、ハイパバイザ101)及び第2のゲストOS(104)の再起動が可能になる。
ステップ2006にて、再起動制御(123)は、第1のコンテキスト保存領域(601)の初期化処理を行う。本初期化により、ステップ1302のコンテキスト回復処理を安全に行うことが保証される。
以上、一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
101…ハイパバイザ、102…ハイパバイザエージェント(102)3…第1のゲストOS、104…第2のゲストOS、111…物理CPU、112…物理メモリ(保護領域)、113…物理メモリ

Claims (15)

  1. 1以上の物理メモリと複数の物理CPU(Central Processing Unit)とを含んだ複数の資源を有し、
    前記複数の物理CPUが、ハイパバイザ、簡易ハイパバイザ、第1のゲストOS(Operating System)、及び第2のゲストOSを実行し、
    前記複数の資源において、前記ハイパバイザに使用される資源と、前記簡易ハイパバイザに使用される資源は、異なっており、
    前記1以上の物理メモリが、前記ハイパバイザに使用されない第1の物理メモリ領域と前記ハイパバイザに使用される第2の物理メモリ領域とを有し、
    前記第1のゲストOSは、前記第1の物理メモリ領域を基に、前記簡易ハイパバイザ上で実行され、
    前記第2のゲストOSは、前記第2の物理メモリ領域を基に、前記ハイパバイザ上で実行され、
    前記ハイパバイザは、前記複数の資源を複数の仮想資源に仮想化する機能であるエミュレート機能と、前記第1及び第2のゲストOSの各々について動的に割り当てる又は回収する資源を決定する機能である資源スケジューリング機能とを有し、
    前記簡易ハイパバイザは、前記ハイパバイザの前記資源スケジューリング機能に従い前記第1のゲストOSに対する資源割当て又は資源回収を前記ハイパバイザに代わって行う機能であるスケジューリングエージェント機能を有し、
    前記ハイパバイザは、資源の割当て又は回収に関する要求を発行し、前記簡易ハイパバイザが、前記要求を取得し、前記要求に従い処理を実行する、
    計算機。
  2. 前記要求は、記憶領域に書き込まれ、
    前記簡易ハイパバイザが、前記要求を前記記憶領域から取得する、
    請求項1記載の計算機。
  3. 前記ハイパバイザを実行する第1の物理CPUとは別の第2の物理CPUが前記簡易ハイパバイザを実行し、
    前記要求の発行は、トラップ命令の発行、又は、前記第2の物理CPUに対する割込みの通知である、
    請求項2記載の計算機。
  4. 前記記憶領域は、要求ログ情報を記憶する不揮発領域であり、
    前記要求は、ログとして前記要求ログ情報に追加され、
    前記簡易ハイパバイザが、前記要求ログ情報内の前記ログを、前記要求に従う処理の実行に基づき更新する、
    請求項2記載の計算機。
  5. 前記要求が、CPU割当て要求の場合、前記簡易ハイパバイザが、割当て対象の物理CPU上で動作を開始し、前記第1のゲストOSに、前記割当て対象の移りCPUが利用可能になったことを通知し、
    前記要求が、CPU回収要求の場合、前記簡易ハイパバイザが、前記第1のゲストOSに割り当てられている物理CPUのうち回収対象の物理CPUを前記第1のゲストOSに通知し、前記回収対象の物理CPU上での動作を停止する、
    請求項1記載の計算機。
  6. 前記CPU割当て要求の発行は、トラップ命令の発行であり、
    前記CPU回収要求の発行は、前記利用不可能にある物理CPUに対する割込み通知である、
    請求項5記載の計算機。
  7. 前記要求が、メモリ割当て要求の場合、前記簡易ハイパバイザが、前記1以上の物理メモリのうちの割当て対象のメモリ領域を、前記第1のゲストOSからアクセス可能となるよう、前記第1のゲストOSから指定される論理アドレスであるゲストアドレスと、前記1以上の物理メモリにおけるメモリ領域の物理アドレスであるホストアドレスとの対応付けを表すアドレス変換情報を更新し、前記割当て対象のメモリ領域が利用可能になったことを前記第1のゲストOSに通知し、
    前記要求が、メモリ回収要求の場合、前記簡易ハイパバイザが、前記第1のゲストOSに割り当てられているメモリ領域のうち利用不可能なメモリ領域を前記第1のゲストOSに通知し、前記利用不可能なメモリ領域を前記第1のゲストOSからアクセス不可能となるよう前記アドレス変換テーブルを更新する、
    請求項1記載の計算機。
  8. 前記要求ログ情報内の各ログは、そのログに対応した要求に従う処理の進捗状況を含み、
    前記不揮発領域は、更に、前記複数の資源の割当て状態を表す割当て状態情報を記憶し、
    前記ハイパバイザは、再起動した場合、前記不揮発領域内の前記要求ログ情報及び前記割当て状態情報を参照し、処理中の要求については処理が完了するまで待ち、前記要求ログ情報を基に前記割当て状態情報を更新し、更新後の割当て状態情報を基に、前記複数の資源のうち前記第1のゲストOSに割り当てられていない資源を用いて、前記ハイパバイザ及び前記第2のゲストOSの初期化を実行する、
    請求項4記載の計算機。
  9. 前記第1のゲストOS、前記簡易ハイパバイザ、及び、前記第1のゲストOSから指定される論理アドレスであるゲストアドレスと前記1以上の物理メモリにおけるメモリ領域の物理アドレスであるホストアドレスとの対応付けを表すアドレス変換情報は、前記第1のメモリ領域に配置され、
    前記第1のメモリ領域は、前記ハイパバイザ及び前記第2のゲストOSから書き込み不可能な領域である、
    請求項1記載の計算機。
  10. 前記簡易ハイパバイザが、前記第1のゲストOSから特権命令が発行された場合、前記特権命令に基づきレジスタの値を更新することを前記ハイパバイザに代わって実行する、
    請求項1記載の計算機。
  11. 前記ハイパバイザが、各ゲストOSについて、
    使用可能な資源量の範囲を特定し、
    発行対象の要求に従う資源割当て又は資源回収が実行されると、割り当てられている資源量が前記特定した範囲外の資源量となる場合、前記要求の発行を中止する、
    請求項1記載の計算機。
  12. 前記ハイパバイザが、各ゲストOSについて、割り当てられている資源の量である割当て資源量を管理し、
    前記ハイパバイザが、各ゲストOSついて、資源割当て又は資源回収に伴い、前記割当て資源量を更新する、
    請求項1記載の計算機。
  13. 前記ハイパバイザが、前記第2のゲストOSからアクセス可能なメモリ領域を制御するためのアドレス設定要求を発行し、
    前記簡易ハイパバイザが、前記アドレス変更要求に従い前記アドレス変換情報を更新する、
    請求項9記載の計算機。
  14. 前記要求ログ情報内の各ログは、そのログに対応した要求に従う処理の進捗状況を含み、
    前記要求が、CPU回収要求の場合、前記簡易ハイパバイザが、前記第1のゲストOSに割り当てられている物理CPUのうち回収対象の物理CPUを前記第1のゲストOSに通知し、前記回収対象の物理CPU上での動作を停止し、
    前記ハイパバイザが、
    前記CPU回収要求に従い前記簡易ハイパバイザが動作を停止した後、割込み通知を待ち、
    前記CPU回収要求に対応した処理の進捗情報を前記要求ログ情報から特定し、
    前記特定した進捗状況が完了を表している場合、前記回収対象の物理CPUに対して割込み通知を行う、
    請求項4記載の計算機。
  15. 1以上の物理メモリと複数の物理CPU(Central Processing Unit)とを含んだ複数の資源を有する計算機においてハイパバイザにより資源スケジューリングを行う資源スケジューリング方法であって、
    前記1以上の物理メモリに、前記ハイパバイザに使用されない第1の物理メモリ領域と、前記ハイパバイザに使用される第2の物理メモリ領域とを設け、前記複数の資源のうちの、前記ハイパバイザに使用される資源とは異なる資源を用いて、簡易ハイパバイザを実行し、
    前記簡易ハイパバイザ上で、前記第1の物理メモリ領域を基に、第1のゲストOS(Operating System)を実行し、前記ハイパバイザ上で、前記第2の物理メモリ領域を基に、第2のゲストOSを実行し、前記ハイパバイザは、前記複数の資源を複数の仮想資源に仮想化する機能であるエミュレート機能と、前記第1及び第2のゲストOSの各々について動的に割り当てる又は回収する資源を決定する機能である資源スケジューリング機能とを有し、前記簡易ハイパバイザは、前記ハイパバイザの前記資源スケジューリング機能に従い前記第1のゲストOSに対する資源割当て又は資源回収を前記ハイパバイザに代わって行う機能であるスケジューリングエージェント機能を有し、
    前記ハイパバイザにより、資源の割当て又は回収に関する要求を発行し、
    前記簡易ハイパバイザにより、前記要求を取得し、前記要求に従い処理を実行する、
    資源スケジューリング方法。
JP2015562672A 2014-02-17 2014-02-17 計算機、及び、ハイパバイザによる資源スケジューリング方法 Expired - Fee Related JP6198858B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/053613 WO2015122007A1 (ja) 2014-02-17 2014-02-17 計算機、及び、ハイパバイザによる資源スケジューリング方法

Publications (2)

Publication Number Publication Date
JPWO2015122007A1 true JPWO2015122007A1 (ja) 2017-03-30
JP6198858B2 JP6198858B2 (ja) 2017-09-20

Family

ID=53799770

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015562672A Expired - Fee Related JP6198858B2 (ja) 2014-02-17 2014-02-17 計算機、及び、ハイパバイザによる資源スケジューリング方法

Country Status (6)

Country Link
US (1) US10162663B2 (ja)
JP (1) JP6198858B2 (ja)
CN (1) CN105900066B (ja)
DE (1) DE112014005348T5 (ja)
GB (1) GB2537760A (ja)
WO (1) WO2015122007A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6515771B2 (ja) * 2015-10-07 2019-05-22 富士通コネクテッドテクノロジーズ株式会社 並列処理装置及び並列処理方法
CN110838938B (zh) * 2019-10-11 2021-09-07 成都飞机工业(集团)有限责任公司 一种基于工控网的dnc数据存储服务器调度方法
US11593170B2 (en) 2020-03-25 2023-02-28 Red Hat, Inc. Flexible reverse ballooning for nested virtual machines
US20220321567A1 (en) * 2021-03-31 2022-10-06 Netapp, Inc. Context Tracking Across a Data Management Platform

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008293117A (ja) * 2007-05-22 2008-12-04 Hitachi Ltd 仮想計算機の性能監視方法及びその方法を用いた装置
JP2010033404A (ja) * 2008-07-30 2010-02-12 Hitachi Ltd 仮想計算機システムおよび仮想計算機システムの制御方法
JP2013041445A (ja) * 2011-08-17 2013-02-28 Fujitsu Ltd 情報処理装置、情報処理方法及び情報処理プログラム
JP2013509626A (ja) * 2009-10-30 2013-03-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 仮想コンピューティング環境における障害管理のための方法、システム、およびコンピュータ・プログラム
WO2013121531A1 (ja) * 2012-02-15 2013-08-22 株式会社日立製作所 仮想計算機システム及び仮想計算機の障害予兆回復方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10187638A (ja) * 1996-10-28 1998-07-21 Mitsubishi Electric Corp クラスタ制御システム
US7886293B2 (en) * 2004-07-07 2011-02-08 Intel Corporation Optimizing system behavior in a virtual machine environment
US7814495B1 (en) * 2006-03-31 2010-10-12 V Mware, Inc. On-line replacement and changing of virtualization software
US7673113B2 (en) * 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
US7970903B2 (en) * 2007-08-20 2011-06-28 Hitachi, Ltd. Storage and server provisioning for virtualized and geographically dispersed data centers
US7979869B2 (en) * 2007-09-28 2011-07-12 Oracle America, Inc. Method and system for performing I/O operations using a hypervisor
US7743375B2 (en) * 2008-06-27 2010-06-22 International Business Machines Corporation Information handling system including dynamically merged physical partitions
JP5232602B2 (ja) * 2008-10-30 2013-07-10 株式会社日立製作所 ストレージ装置、及びストレージコントローラ内部ネットワークのデータ経路フェイルオーバー方法
US8635057B2 (en) * 2009-03-30 2014-01-21 Microsoft Corporation Enlightenment for low overhead hardware access
US20110113426A1 (en) * 2009-11-09 2011-05-12 Hsiang-Tsung Kung Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods
JP5493125B2 (ja) * 2010-02-05 2014-05-14 株式会社日立製作所 仮想化方法及び計算機
JP5463267B2 (ja) * 2010-11-19 2014-04-09 株式会社日立製作所 仮想計算機システムおよび仮想計算機の移行方法
CN102770846B (zh) * 2010-12-21 2016-08-31 松下电器(美国)知识产权公司 虚拟计算机系统控制装置及虚拟计算机系统控制方法
WO2013024510A2 (en) * 2011-08-16 2013-02-21 Hitachi, Ltd. Storage control apparatus
US9075642B1 (en) * 2011-09-30 2015-07-07 Emc Corporation Controlling access to resources using independent and nested hypervisors in a storage system environment
KR101471879B1 (ko) * 2012-10-31 2014-12-11 삼성에스디에스 주식회사 하이퍼바이저 기반 서버 이중화 시스템, 그 방법 및 서버 이중화 컴퓨터 프로그램이 기록된 기록매체
US9229752B2 (en) * 2013-03-12 2016-01-05 International Business Machines Corporation Systems and methods to offload hardware support using a hypervisor subpartition
US9606818B2 (en) * 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors
JP5941868B2 (ja) * 2013-04-18 2016-06-29 株式会社日立製作所 仮想計算機システムおよび仮想計算機におけるi/o実施方法
GB2518894A (en) * 2013-10-07 2015-04-08 Ibm A method and a system for operating programs on a computer cluster

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008293117A (ja) * 2007-05-22 2008-12-04 Hitachi Ltd 仮想計算機の性能監視方法及びその方法を用いた装置
JP2010033404A (ja) * 2008-07-30 2010-02-12 Hitachi Ltd 仮想計算機システムおよび仮想計算機システムの制御方法
JP2013509626A (ja) * 2009-10-30 2013-03-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 仮想コンピューティング環境における障害管理のための方法、システム、およびコンピュータ・プログラム
JP2013041445A (ja) * 2011-08-17 2013-02-28 Fujitsu Ltd 情報処理装置、情報処理方法及び情報処理プログラム
WO2013121531A1 (ja) * 2012-02-15 2013-08-22 株式会社日立製作所 仮想計算機システム及び仮想計算機の障害予兆回復方法

Also Published As

Publication number Publication date
JP6198858B2 (ja) 2017-09-20
US20160378533A1 (en) 2016-12-29
CN105900066A (zh) 2016-08-24
WO2015122007A1 (ja) 2015-08-20
US10162663B2 (en) 2018-12-25
CN105900066B (zh) 2018-05-11
DE112014005348T5 (de) 2016-08-11
GB2537760A (en) 2016-10-26
GB201608554D0 (en) 2016-06-29

Similar Documents

Publication Publication Date Title
US9250943B2 (en) Providing memory condition information to guest applications
JP3546678B2 (ja) マルチos構成方法
US9304794B2 (en) Virtual machine control method and virtual machine system using prefetch information
EP2588957B1 (en) Cooperative memory resource management via application-level balloon
JP5459006B2 (ja) メモリ管理装置、メモリ管理方法及びメモリ管理プログラム
JP4668166B2 (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
US10162657B2 (en) Device and method for address translation setting in nested virtualization environment
US20040205755A1 (en) Operating systems
US10289564B2 (en) Computer and memory region management method
US11593170B2 (en) Flexible reverse ballooning for nested virtual machines
JP6198858B2 (ja) 計算機、及び、ハイパバイザによる資源スケジューリング方法
JP6458650B2 (ja) 情報処理システム、情報処理プログラムおよび情報処理装置
JP2007035066A (ja) マルチos構成方法
JP5819350B2 (ja) 計算機システム及び起動方法
US20150302222A1 (en) Computing machine, access management method, and access management program
US20200218459A1 (en) Memory-mapped storage i/o
Dibble et al. Programming embedded systems: interacting with the embedded platform
JP2004038995A (ja) マルチos構成方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170606

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170718

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170822

R150 Certificate of patent or registration of utility model

Ref document number: 6198858

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees