JP5434616B2 - 仮想計算機、仮想計算機モニタ、および計算機の制御方法 - Google Patents

仮想計算機、仮想計算機モニタ、および計算機の制御方法 Download PDF

Info

Publication number
JP5434616B2
JP5434616B2 JP2010007426A JP2010007426A JP5434616B2 JP 5434616 B2 JP5434616 B2 JP 5434616B2 JP 2010007426 A JP2010007426 A JP 2010007426A JP 2010007426 A JP2010007426 A JP 2010007426A JP 5434616 B2 JP5434616 B2 JP 5434616B2
Authority
JP
Japan
Prior art keywords
guest
timer
input
virtual machine
virtual
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
JP2010007426A
Other languages
English (en)
Other versions
JP2011145956A (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 JP2010007426A priority Critical patent/JP5434616B2/ja
Priority to US12/983,972 priority patent/US8539010B2/en
Priority to EP11150743.0A priority patent/EP2372542B1/en
Publication of JP2011145956A publication Critical patent/JP2011145956A/ja
Application granted granted Critical
Publication of JP5434616B2 publication Critical patent/JP5434616B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06JHYBRID COMPUTING ARRANGEMENTS
    • G06J1/00Hybrid computing arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Automation & Control Theory (AREA)
  • Evolutionary Computation (AREA)
  • Fuzzy Systems (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、仮想計算機上での処理の実行時間の管理技術に関する。
図1に、仮想計算機と呼ばれるコンピュータシステムの構成例を示す。仮想計算機の一例としては、CPU(Central Processing Unit)、メモリ等のハードウェア上に、仮想
計算機モニタと呼ばれるコンピュータプログラムを搭載したシステムが知られている。仮想計算機では、仮想計算機モニタ上で、1または複数のゲストOSが稼働する。さらに、ゲストOS上で、アプリケーションプログラムが稼働する。仮想計算機は、仮想マシン、仮想コンピュータ、VM(Virtual Machine)等とも呼ばれる。
仮想計算機モニタは、VMM(Virtual Machine Monitor)、ハイパーバイザ(Hyperviser)とも呼ばれるコンピュータプログラムである。仮想計算機モニタは、仮想計算機全
体を制御する。例えば、仮想計算機モニタは、複数のゲストOSが稼働している場合に、ゲストOSのディスパッチ処理、すなわちCPUを割り当てるゲストOSを決定し、ゲストOSを起動する処理を実行する。また、仮想計算機モニタは、各ゲストOSが実行する特権命令のエミュレーションを実行する。例えば、ゲストOSがユーザ状態で特権命令の実行を要求すると、仮想計算機モニタは、例外処理によって実行要求された特権命令をインターセプトし、実行要求された特権命令を模擬する処理を実行する。
また、仮想計算機モニタは、仮想計算機のブート時に起動され、ゲストOSの起動・停止等、仮想計算機の管理・制御等の処理を実行する。ただし、ホストOSと呼ばれる特別なゲストOSを介して、仮想計算機の管理・制御がなされる場合もある。また、サービスコントロールと呼ばれる機能として、仮想計算機モニタとは異なるコンピュータプログラムによって、仮想計算機の管理・制御が実行される場合もある。
さらに、仮想計算機モニタは、ゲストOSからの入出力要求に対応して、物理デバイスでの入出力処理を実行する。物理デバイスでの入出力処理は、実I/O処理とも呼ばれる。例えば、各ゲストOSは仮想計算機モニタに対して、ハイパーバイザコールと呼ばれるインターフェースを通じて、入出力処理を依頼する。すると、仮想計算機モニタは、例えば、デバイスドライバを通じて、物理デバイス、例えば、ディスプレイ、外部記憶装置、LAN(Local Area Network)等にアクセスする。ただし、ドライバOS(ドライバドメイン)と呼ばれる、実I/O処理を行うことを専らとするゲストOS、あるいは、前述のホストOSが実I/O処理を行う構成も知られている。
一方、ゲストOSは、仮想計算機上で、実I/Oを持たないOSとして例示できる。ゲストOSは、アプリケーションプログラムに対して、仮想計算機モニタを介したハードウェア上の仮想的な資源を提供する。したがって、アプリケーションプログラムとの関係では、ゲストOSは通常のOSと考えることができる。なお、仮想計算機モニタ上のそれぞれのゲストOS、ホストOS、ドライバOSをそれぞれ異なる計算機と見なして、それぞれ仮想計算機と呼ぶ場合もある。
仮想計算機では、アプリケーションプログラムはゲストOS上で実行され、ゲストOSは仮想計算機モニタ上で実行される。そして、アプリケーションプログラムが入出力処理をゲストOSに要求すると、ゲストOSが入出力命令を発行する。発行された入出力命令は、例えば、仮想計算機モニタにインターセプトされ、仮想計算機モニタのドライバ、ゲストOS、あるいは、ホストOSを通じて、物理デバイスに対する入出力処理が実行され
る。ただし、ゲストOSは、ハイパーバイザコールにより、入出力命令を仮想計算機モニタに引き渡す場合もある。いずれにしても、アプリケーションプログラムの入出力処理の要求から、物理デバイスに対する入出力処理に至るまでの仮想計算機の動作は複雑である。
特開2008−225655号公報 特開2006−059052号公報
上述のように、仮想計算機において、入出力処理の要求から実際の物理デバイスへの入出力に至る経路が複雑であり、かつ、ゲストOSは、仮想計算機モニタを介して、仮想的な割り込みを受信し、時間を計測する。したがって、仮想計算機においては、ゲストOSが、入出力処理を伴う処理の実行時間等の性能情報を精度よく取得できないという問題があった。
そこで、開示の技術の一側面は、メモリ、プロセッサ、タイマおよび入出力装置を含む計算機と、メモリ上に展開され、プロセッサで実行される仮想計算機モニタと、を備える仮想計算機として例示できる。仮想計算機モニタは、少なくとも1つのゲストOS(Operating System)のプロセッサ上での実行を制御するとともに、ゲストOSから計算機への処理要求を受け付け、処理要求に対する計算機での実行結果をゲストOSに引き渡す。例えば、仮想計算機モニタは、ゲストOSからタイマへの設定期間経過後のタイマ割り込みの発生を設定するタイマ設定をタイマに代わって受け取る手段としてプロセッサを機能させればよい。さらに、仮想計算機モニタは、タイマ変更手段としてプロセッサを機能させればよい。ここで、タイマ変更手段は、ゲストOSが仮想計算機モニタを通じて入出力装置にデータを入出力するときに、タイマ設定を変更する。例えば、タイマ変更手段は、ゲストOSが認識する入出力待ち時間と入出力待ち時間以外の入出力処理時間との割合が、仮想計算機モニタが認識する入出力待ち時間と入出力処理時間との割合に近づくように、タイマ設定を変更する。さらに、仮想計算機モニタは、タイマ割り込みを受信したときに、タイマ割り込みの発生をゲストOSに通知する手段としてプロセッサを機能させればよい。
開示の技術によれば、仮想計算機において、ゲストOSが入出力処理を伴う処理に対して取得する性能情報の精度を向上することができる。
コンピュータシステムの構成例を示す図である。 比較例に係る計算機システムの構成を例示する図である。 比較例に係るゲストOSのスケジュール例を示す図である。 物理計算機上での状態ごとの処理時間例を示す図である。 仮想計算機上での状態ごとの処理時間例を示す図である。 物理計算機と仮想計算機での状態ごとの時間比率を対比して示す図である。 実施例1に係る仮想計算機における入出力処理の処理時間の例を、比較例の仮想計算機と対比して示す図である。 実施例1に係る仮想計算機の構成例を示す図である。 タイマ割り込みの設定時およびタイマ割り込みの発生後の処理に関連する構成要素を例示する図である。 仮想CPU管理データの例を示す図である。 仮想計算機が測定する時間の種類を例示する図である。 物理OSにおけるプロセススケジューラの処理を例示する図である。 仮想CPU状態表テーブルを例示する図である。 仮想CPU状態決定手段の処理フローを例示する図である。 ゲストOSが設定するタイマ周期μと、仮想計算機モニタがゲストOSに返す仮想タイマ周期との関係を例示する図である。 仮想CPU利用統計算出手段の処理フローを例示する図である。 タイマ変調手段のタイマセット時の処理フローを例示する図である。 タイマ変調手段によるゲストOSに仮想タイマ割り込みを転送するときの処理フローを例示する図である。 仮想CPU状態決定手段がない仮想計算機の構成を例示する図である。
以下、図面を参照して、一実施形態に係る計算機システムを説明する。以下の実施形態の構成は例示であり、計算機システムは実施形態の構成には限定されない。
図2から図4を参照して、比較例に係る計算機システム300を説明する。図2は、比較例に係る計算機システム300の構成を例示する。図2のように、計算機システム300は、ハードウェアとしては、例えば、CPU、メモリを含む処理装置300Aと、物理ディスク302とを含む。CPUはプロセッサに相当する。処理装置300A上では、仮想計算機モニタ301が稼働し、計算機システム300を管理および制御する。
さらに、仮想計算機モニタ301上で、フロントエンドドライバ310A−1、ゲストOS310B−1、アプリケーションプログラム310C−1を含むゲスト仮想計算機310−1が稼働している。また、仮想計算機モニタ301上では、フロントエンドドライバ310A−2、ゲストOS310B−2、アプリケーションプログラム310C−2を含むゲスト仮想計算機310−2が稼働している。ここでは、ゲスト仮想計算機310−1、310−2を総称してゲスト仮想計算機310と呼ぶ。また、フロントエンドドライバ310A−1,310A−2、ゲストOS310B−1,310B−2、アプリケーションプログラム310C−1,310C−2を総称して、それぞれ、フロントエンドドライバ310A、ゲストOS310B、アプリケーションプログラム310Cと呼ぶ。
図2のように、仮想計算機モニタ301は、バックエンドドライバ304、タイマ機構305、スケジューラ306、および実I/Oドライバ307を含む。バックエンドドライバ304は、ゲストOS310に接続されるフロントエンドドライバ310Aとのインターフェースとして機能する。例えば、バックエンドドライバ304は、フロントエンドドライバ310Aと図示しない共有メモリを共有し、データを授受する。
計算機システム300上では、仮想計算機モニタ301がゲスト仮想計算機310による処理をスケジューリングする。すなわち、仮想計算機モニタ301は、ゲスト仮想計算機310のレジスタ値を所定のメモリ領域に待避した後、CPUを割り当てるゲスト仮想計算機310を切り替える。ゲスト仮想計算機の切り替え時には例えば、ゲスト仮想計算機310−1からCPUが解放され、代わってゲスト仮想計算機310−2にCPUが割り当てられる。より具体的には、ゲストOS310B−1からCPUが解放され、ゲストOS310B−2にCPUが割り当てられる。ゲストOS310Bに対するCPUの割り当ては、スケジューラ306によってなされる。なお、スケジューラ306は、仮想CPUスケジューラとも呼ばれる。また、ゲストOS310Bから見たコンピュータプログラ
ムの実行環境、例えばレジスタセットを含むリソースは、仮想CPUと呼ばれる。
スケジューラ306は、ゲストOS310BにCPUを割り付けるディスパッチ処理を実行する。例えば、スケジューラ306は、タイムシェアリングで、ゲストOS310B−1、310B−2を順次起動する。また、例えば、スケジューラ306は、ゲストOS310B−1が起動中の場合には、現在のレジスタセットを所定のメモリ領域に待避する。そして、スケジューラ306は、ゲストOS310−1を停止する。さらに、スケジューラ306は、現在処理中断中のゲストOS310B−2のレジスタセットの待避内容をゲストOS310−2に引き渡す。そして、スケジューラ306は、ゲストOS310−2を起動する。
タイマ機構305は、処理装置300Aに内蔵されたCPUの割り込みベクトルに、割り込み処理プログラムのアドレスを設定し、また所定の時間を指定して、タイマ割り込みをレジスタに設定する。すると、所定の時間経過後にCPUに対してタイマ割り込みが発生し、CPUは、発生したタイマ割り込みに対応する、メモリ空間上の所定のアドレスに設定された割り込み処理プログラムの処理を起動する。仮想計算機モニタ301は、割り込み処理プログラムの処理によって、所定時間の経過を認識する。割り込み処理プログラムによってタイマ割り込みを繰り返して受信することで、仮想計算機モニタ301は、時間を計測する。なお、割り込み処理プログラムは、ハンドラ、コールバック関数とも呼ばれる。
物理ディスク302等の物理デバイスに対する入出力命令は、例えば、以下のように処理される。ゲストOS310B上で動作するアプリケーションプログラム310Cは、ゲストOS310Bの入出力命令をシステムコールによって呼び出す。そして、ゲストOS310Bは、フロントエンドドライバ310Aを通じて、共有メモリに入出力要求を設定し、仮想計算機モニタ301にハイパーバイザコールと呼ぶ機能によって処理を要求する。すると、バックエンドドライバ304が、共有メモリに設定された入出力要求を読み出し、仮想計算機モニタ301に引き渡す。仮想計算機モニタ301は、引き渡された入出力要求にしたがって、物理デバイスにアクセスするデバイスドライバを起動し、入出力処理を実行する。
入出力処理では、デバイスドライバがデータ転送命令を実行することにより、メモリの所定領域に確保されたバッファ領域のデータが図示しないI/Oコントローラに引き渡される。引き渡されるデータには、I/Oコントローラに対するコマンドと入出力される入出力データとが含まれる。データ転送命令発行後、スケジューラ306は、ゲスト仮想計算機310を入出力待ち状態とする。これにより、入出力待ち状態にあるゲスト仮想計算機310は一時動作を中断する。そして、入出力待ち状態にあるゲスト仮想計算機310の動作が一時中断している間に、スケジューラ306により他のゲスト仮想計算機310に動作を中断しているゲスト計算機に割り当てられていたCPUが割り当てられる。なお、物理デバイスでの入出力処理の完了は、I/OコントローラからCPUに割り込みによって通知される。
ただし、ゲストOS310Bが仮想計算機モニタ301にハイパーバイザコールによって入出力処理を要求する代わりに、以下の手順を用いることもできる。例えば、ユーザ状態でゲストOS310Bが入出力要求のシステムコールを呼び出したときに、CPUが特権命令違反を検出する。次に、CPUが仮想計算機モニタ301に制御を移し、仮想計算機モニタ301がシステムコールからの入出力処理をエミュレーションしてもよい。
仮想計算機モニタ301は、例えば、時分割で複数のゲスト仮想計算機310−1、310−2を起動する。なお、ドライバOSやホストOSがバックエンドドライバを搭載し
、ドライバOSやホストOSが実I/O制御を行うようにしてもよい。以下、ゲスト仮想計算機310を単に仮想計算機310ともいう。
図3に、計算機システム300におけるゲストOS310Bのスケジュール例を示す。図3では、ゲストOS310B−1をゲスト1で示し、ゲストOS310B−2をゲスト2で示す。計算機システム300では、処理装置300AのCPUをゲスト1とゲスト2とに、例えば時分割で交互に割り当てることで、複数のゲストOS310Bを動作させる。時分割する1回あたりの時間の割り当て時間は、仮想計算機モニタ301内に固定的に定義できる。また、割り当て時間は、システムパラメータ等によって設定できる。
また、いずれかのゲストOS310Bの負荷が低いなどの理由でゲストOSが与えられた時間を使いきれない場合、スケジューラ306は、負荷が低い方のゲストOS、例えば、ゲストOS310B−1のCPU使用権を奪い、他のゲストOS、例えばゲストOS310B−2にCPUを割り当てて、ゲストOS310B−2を動作させる。図3のようなゲストOS310BへのCPUの割り当ての管理により、CPU資源を有効利用できる。
ゲストOS310Bは、仮想計算機モニタ301を通じたタイマ機構を使って、各種の統計情報を採取し続けている。統計情報には、例えば、ゲストOS310B上で動作する各プロセスがユーザ状態で動作した時間を示すユーザ時間(user 時間)、そのプロセスの
延長でカーネル状態で動作した時間を示すシステム時間(sys時間)や、入出力待ちに要し
た時間を示す入出力待ち時間(iowait時間)等が含まれる。統計情報は、アプリケーションプログラムやミドルウェアのパフォーマンスチューニング等にも役立てられる。
仮想計算機を含む計算機システム300においては、バックエンドドライバ304とフロントエンドドライバ310Aとを用いて、仮想計算機モニタ301がゲストOS310Bの入出力要求を物理デバイスに対する実I/O処理に変換して処理している。計算機システム300ではあるいは、仮想計算機モニタ301による入出力命令のエミュレーションを用いて、仮想計算機モニタ301がゲストOS310Bの入出力要求を物理デバイスに対する実I/Oに変換して処理している。
図4A−図4Cに、仮想計算機310を含む計算機システム300における入出力処理の例を、仮想計算機を含まない通常の計算機と対比して示す。以下、仮想計算機を含まない通常の計算機を物理計算機と呼ぶ。物理計算機は、物理CPUを含む。また、物理計算機で動作するOSを物理OSと呼ぶ。
図4Aは、物理計算機の入出力処理での物理OSが認識する時間例を示す。図4Aで、“アプリケーション”の行は、物理CPUがアプリケーションプログラムを実行していることを示す。以下、アプリケーションプログラムを単にアプリケーションともいう。アプリケーション実行中は、物理CPUが実行するプロセスはユーザ状態にある。また、図4Aで“カーネル”の行は、物理CPUが実行するプロセスがカーネル状態にあることを示す。ユーザ状態およびカーネル状態については、後述する実施例1において説明する。さらに、図4Aで“物理デバイス”の行は、物理デバイスでの処理を示す。
図4Aの例では、物理計算機のプロセスがユーザ状態でのアプリケーション実行中に(user-A1)、アプリケーションからのI/O要求が発生し、カーネル状態での処理(sys-A1)が実行されている。そして、カーネル状態での処理(sys-A1)において、物理デバイ
スに対するI/O発行がなされ、物理デバイスに対する実I/O処理がなされる。そして、カーネル状態での処理は、入出力待ち(iowait-A)となる。図4Aでは、アプリケーションからのI/O要求によりカーネル状態での処理(sys-A1)が開始し、物理デバイスに対するI/O発行により、カーネル状態での処理(sys-A1)が入出力待ちとなる。入出力
待ちの間(iowait-A)、物理OSのカーネル状態での処理は、CPU使用権を奪われる。なお、図4Aで、カーネル状態の処理が入力待ちの区間は、物理デバイスの行のiowait-Aに対応するカーネルの行の空白区間で示されるが、iowait-Aに対応するカーネルの行の空白区間も、” iowait-A”で参照する。
そして、物理デバイスに対する入出力の完了後に、カーネル状態での処理(sys-A2)
が実行される。さらに、カーネル状態での処理(sys-A2)の終了によって、ユーザ状態
での処理(user-A2)が実行されている。図4Aで、カーネル状態での処理(sys-A1)、
物理デバイスに対する入出力待ち(iowait-A)、およびカーネル状態での処理(sys-A2)での時間がそれぞれ、TSA1、TWA、TSA2であったと仮定する。
図4Bは、仮想計算機310の入出力処理でのゲストOS310Bが認識する時間と仮想計算機モニタ301が認識する時間例を示す。図4Bの例では、仮想計算機310において、ゲストOS310B上でユーザ状態でのアプリケーションが実行されている。ユーザ状態でのアプリケーションの実行中に(user-B1)、アプリケーションからのI/O要
求が発生し、ゲストOS310Bのカーネル状態での処理(sys-B11)が実行されている
。カーネル状態での処理(sys-B11)は、例えば、フロントエンドドライバ310Aの処
理を含む。
そして、カーネル状態での処理(sys-B11)において、仮想デバイスに対する入出力処
理の要求がなされる。仮想デバイスに対する入出力処理は、仮想計算機モニタ301上での物理デバイスに対する実I/Oドライバによる処理に変換され、実I/Oドライバによる処理(sys-B21)が実行されている。そして、実I/Oドライバでの処理(sys-B21)において、物理デバイスに対するI/O発行がなされ、実I/Oドライバでの処理(sys-B21)は、物理デバイスに対する入出力待ちとなる(iowait-B2)。図4Bでは、アプリケーションからのI/O要求によりゲストOS310Bのカーネル状態での処理(sys-A1)が開始する。そして、仮想デバイスに対する入出力処理が変換された実I/Oドライバによる処理(sys-B21)において、物理デバイスに対するI/O発行がなされる。図4Bの場
合、ゲストOS310Bのカーネル状態での処理は、アプリケーションからのI/O要求から、仮想デバイスに対する入出力処理の要求までの間であり、図4Aの物理OSの場合のカーネル状態の処理に対応する。したがって、図4Aのsys-A1の部分の処理と、図4Bのsys-B11の処理に同一のハッチングを付している。
そして、物理デバイスに対する入出力処理の完了によって、実I/Oドライバでの処理(sys-B22)に制御が戻る。さらに、実I/Oドライバでの処理(sys-B22)の終了によって、ゲストOS310Bでのカーネル状態での処理(sys-B12)が実行されている。sys-B12の処理もsys-B11の処理と同様、フロントエンドドライバ301Aによる処理を含む。
そしてさらに、ゲストOS310Bでのカーネル状態での処理(sys-B12)の終了によ
って、ユーザ状態でのアプリケーションの処理(user-B2)に制御が戻っている。図4B
において、ゲストOS310Bでのカーネル状態での処理(sys-B12)は、図4Aのカー
ネル状態での処理(sys-A2)に対応する。したがって、図4Aのsys-A2の部分の処理と、図4Bのsys-B12の処理に同一のハッチングを付している。
そして、図4Bのように、ゲストOS310Bは、カーネル状態での処理(sys-B11)
において、仮想デバイスに対する仮想I/O処理(iowait-B1)が起動されてから終了す
るまでの間を仮想デバイスに対する入出力待ちの時間(iowait時間)として認識する。
図4Bで、ゲストOS310Bでのカーネル状態での処理(sys-B11)の時間、仮想デ
バイスに対する入出力待ち(iowait-B1)の時間、およびカーネル状態での処理(sys-B12
)の処理時間がそれぞれ、TSB11、TWB1、TSB12であったと仮定する。
また、図4Bで、仮想計算機モニタ301における、実I/Oドライバの処理(sys-B21)の時間、物理デバイスの入出力待ち(iowait-B2)の時間、および実I/Oドライバでの処理(sys-B22)の処理時間がそれぞれ、TSB21、TWB2、TSB22であった
と仮定する。
上述のように、ゲストOS310Bのカーネル状態での処理(sys-B11)は、仮想デバ
イスへの処理(iowait-B1)が実行される間、入出力待ちの状態となる。ゲストOS31
0Bのカーネル状態での処理(sys-B11)が入出力待ちの間(仮想デバイスがiowait-B1の区間)、ゲストOS310Bは、スケジューラ306のスケジューリングによってCPU使用権を奪われる。
ここで、ゲストOS310Bでの処理時間のうち、カーネル状態での処理がCPUの使用権を奪われるまでの時間(sys-B11の処理によるTSB11の時間)は、ゲストOS3
10のシステム時間(sys時間)として計上される。なお、入出力待ち(仮想デバイスがiowait-B1の区間)の終了後、ゲストOS310Bのカーネル状態から、ユーザ状態に復帰するまでの時間(sys-B12の処理によるTSB12の時間)も、ゲストOS310のシス
テム時間(sys時間)として計上される。
一方、ゲストOS310Bのカーネル状態での処理(sys-B11)が仮想デバイスに対す
る入出力待ちの間(iowait-B1)、仮想計算機モニタ301では、実I/Oドライバによ
る処理(sys-B21)が実行され、実I/Oドライバによる処理(sys-B21)から物理デバイスにI/O発行がされる。そして、物理デバイスに対するI/O発行の後、実I/Oドライバによる処理(sys-B21)は、入出力待ちとなる。
しかしながら、仮想計算機モニタ301の実I/Oドライバが処理(sys-B21およびsys-B22)を行っている時間(TSB21およびTSB22)は、ゲストOS310Bの統計情報としては、入出力待ち時間(iowait時間)として計上されることになる。すなわち、ゲストOS310Bにおいて、仮想デバイスに対する入出力待ち(iowait-B1)の時間T
WB1は、物理デバイスに対する入出力待ち(iowait-B2)の時間TWB2に加えて、入
出力待ちの前後の実I/Oドライバの処理(sys-B21およびsys-B22)の時間TSB21とTSB22を加えた時間となる。
図4Aの場合の物理OSから見た処理時間と図4Bでの仮想OS310Bから見た処理時間を比較すると次のようになる。物理OSにおいて、アプリーションからI/O要求がなされた後の処理時間は、物理OSでのカーネル状態でのI/O発行までの処理(sys-A1)の時間TSA1と、I/O発行からI/O完了までの待ち時間(iowait-Aの区間に相当する時間)TWAと、I/O完了からI/O受理までの処理(sys-A2)の時間TSA2を含む。
一方、図4Bの仮想計算機システム300の場合、実I/Oドライバによる処理(sys-B21)の時間TSB21が、図4Aの時間TSA1に該当する。同様に、図4BのTSB
22が、図4Aの時間TSA2に該当する。そして、物理デバイスに対する入出力待ち(iowait-B2)の時間TWB2が、図4Aの時間TWAに該当する。したがって、仮想計算
機モニタ301における実I/Oドライバの処理(sys-B21,sys-B22)の時間TSB21
+TSB22と、物理デバイスに対する入出力待ち(iowait-B2)の時間TWB2との関
係は、物理OSの場合にほぼ対応する。すなわち、物理OSの場合におけるカーネル状態での処理 (sys-A1,sys-A2)の時間TSA1+TSA2と、物理デバイスに対する入出力待ち(iowait-A)の時間TWAとの関係が、仮想計算機モニタ301における時間TSB2
1+TSB22と、時間TWB2との関係に対応する。
しかしながら、図4BのゲストOS310Bから見た入出力処理に関連する時間の関係は、図4Aの物理OSから見た入出力処理に関連する時間の関係とは必ずしも対応しない。すなわち、図4Bのように、ゲスト310Bが、仮想デバイスに対する入出力待ち(iowait-B1)の時間TWB1には、実I/Oドライバの処理(sys-B21,sys-B22)の時間TSB21+TSB22と、物理デバイスに対する入出力待ち(iowait-B2)の時間TWB2
とを含む。したがって、仮想デバイスに対する入出力待ち(iowait-B1)の時間TWB1
は、物理デバイスに対する入出力待ち(iowait-B2)の時間TWB2によりも、実I/O
ドライバの処理(sys-B21,sys-B22)の時間TSB21+TSB22だけ長くなる。
その結果、ゲストOS310Bから見たカーネル状態での処理(sys-B11,sysB12)の時間TSB11+TSB12と仮想デバイスに対する入出力待ち(iowait-B1)の時間TWB
1との関係は、物理計算機上で動作する物理OSに相当する仮想計算機モニタ301での時間TSA1+TSA2と時間TWAとの関係とは、異なる。
図4Bのように、ゲストOS310Bから見た入出力待ち時間TWB1は、仮想計算機モニタ301がカーネル状態で動作したシステム時間TSB21+TSB22と、仮想計算機モニタ301の入出力待ち時間TWB2とを含む時間である。従って、ゲストOS310Bから見た、仮想計算機310での入出力待ちに要する入出力待ち時間TWB1は、仮想計算機モニタが実行する実I/Oの入出力待ちに要する入出力待ち時間TWB2よりも、長い期間として計測される。
図4Cは、物理計算機上の物理OSと仮想計算機310上のゲストOS310Bとについて、カーネル状態での処理時間と、入出力待ち時間との関係を比較して示す。図4Cのように、「物理OSの場合」という文字列が付された行でのsys-A1,sys-A2の時間TSA
1+TSA2と比較して、「ゲストOSの場合」の文字列が付された行でのsys-B11,sys-B12の処理の時間TSB11+TSB12は短くなっている。一方、「物理OSの場合」
という文字列が付された行でのiowait-Aの時間TWAと比較して、「ゲストOSの場合」の文字列が付された行でのiowait-Bの時間TWB1は長くなっている。したがって、ゲストOS310Bによる統計情報は、パフォーマンスチューニングにおける手がかりとして、信頼性が低下する。
図4Bは、ゲストOS310Bが1つの場合の処理である。複数のゲストOS310Bが動作する場合には、統計情報に関してより複雑な状況を生じる。図4A−図4Cに示したような状況であったため、ゲストOS310B上のアプリケーションプログラム310C、あるいは、ゲストOS310B上のミドルウェア等のパフォーマンスチューニングを行う場合には、ゲストOS310Bから見た統計情報は信頼しがたいものとなる。そこで、例えば、ゲストOS310Bから見た統計情報に代えて、仮想計算機モニタ301が採取する統計情報を利用することも考えられる。ところが、仮想計算機モニタ301の統計情報は、セキュリティやアクセス権限の観点から、ゲストOS310Bの利用者に開示しないのが普通である。
本実施形態に係る計算機システムでは、ゲストOSに修正を加えることなく、ゲストOSで収集した統計情報と物理計算機から見た統計情報とが同等となるように、タイマ機構を補正する仕組みを設ける。本実施形態に係る計算機システムでは、タイマ機構を補正する仕組みにより、ゲストOS上で動作するアプリケーションプログラムやミドルウェアのパフォーマンスチューニングにおいて、比較例に係る計算機システム300よりも有効な統計情報を提供する。
図5から図16を参照して実施例1に係る計算機システム(以下、仮想システムと称する)を説明する。図5は、実施例1の仮想システムにおける入出力処理の処理時間管理の例を、比較例の計算機システム300と対比して示す。図5で、符号C1で示す上段は、比較例に係る計算機システム300での入出力処理での処理時間の例であり、符号C2およびC3で示す下段は、実施例1に係る仮想システムの入出力処理での処理時間の例である。図5で縦方向の破線は、タイマによって検出される時刻の刻みを例示している。ただし、ゲストOS310Bでのタイマの刻みと、ゲストOS310Bを管理する仮想計算機モニタ301でのタイマの刻みは同一であるため、図5のC1では、仮想計算機モニタ301でのタイマの刻みは省略されている。また、user-B1, user-B2, sys-B11,iowait-B1,
sys-B12, sys-B21, iowait-B2, sys-B22で示される処理は、図4Bの場合と同様である
。ただし、実施例1においては、仮想計算機モニタがゲストOSにタイマ割り込みを通知するタイミングを調節する。タイミング調整によって、ゲストOSでのタイマの刻みと、仮想計算機モニタでのタイマの刻みとが一致しない状態が生じ得る。そこで、図5では、C2に、実施例1に係るゲストOSでのタイマの刻みを示すとともに、C3に、実施例1に係る仮想計算機モニタでのタイマの刻みを示している。ここで、ゲストOSでのタイマの刻みは、ゲストOSが観測するタイマ割り込みの時刻として示される。また、仮想計算機モニタでのタイマの刻みは、仮想計算機モニタが観測するタイマ割り込みの時刻として示される。
実施例1でのゲストOSが観測するタイマ割り込みの時刻は、符号C2の欄のうち、C21矢印で示される範囲の縦方向の破線で示されている。なお、符号C2の欄のうち、C21矢印で示される範囲より上側の破線は、C1欄のタイマ割込時刻との関係を示すための参照用の線である。また、実施例1の仮想計算機モニタが観測するタイマ割り込みの時刻は、符号C3の欄の縦方向の破線で示されている。以下、仮想計算機10のゲストOSが起動するタイマを仮想タイマと呼び、仮想計算機モニタが起動するタイマを実タイマと呼ぶ。
実施例1では、仮想計算機モニタによるタイマ割り込みのタイミング調整によって、ゲストOSのタイマ機構を変更することなく、そして、ゲストOSに修正を加えることなく、ゲストOSで収集する統計情報の信頼性を向上する。そこで、実施例1の仮想計算機モニタは、ゲストOSから見たシステム時間と仮想デバイスに対する入出力待ち時間との関係が、物理計算機でのシステム時間と物理デバイスに対する入出力待ち時間との関係と同等となるように、ゲストOSにタイマ割り込みを通知するタイミングを調整する。すなわち、実施例1では、ゲストOSの仮想タイマによるタイマ割り込みの発生回数を、仮想計算機モニタの実タイマによるタイマ割込みの発生回数と一致させたまま、仮想タイマによるタイマ割込みのタイミングが調整される。ゲストOSでのカーネル状態での処理(sys-B11, sys-B12)の時間TSB11+TSB12におけるタイマ割り込みの発生回数の、仮想デバイスに対する入出力待ち(iowait-B1)の時間におけるタイマ割り込みの発生回数に
対する比率をR1とする。また、仮想計算機モニタでのカーネル状態での処理(sys-B21,
sys-B22)の時間TSB21+TSB22におけるタイマ割り込みの発生回数の、物理デバイスに対する入出力待ち(iowait-B2)の時間TWB2におけるタイマ割り込みの発生
回数に対する比率をR2とする。図5に示す実施例1では、R1とR2とが近くなるように、仮想タイマの割り込みの発生タイミングを修正する。
以下、カーネル状態と入出力待ち状態を合わせた時間の全発生回数に対する、カーネル状態の時間および入出力待ち状態の時間、それぞれの発生回数の比率を、タイマ密度と呼ぶことにする。図5に示す実施例1では、以下のように、仮想タイマのタイマ密度が修正される。なお、カーネル状態と入出力待ち状態を合わせた時間のタイマ割込の全発生回数を、入出力処理に伴うタイマ割込の総数と呼ぶ。
(a)C1の破線本数とC2の破線本数とは一致させたままにしておく。そして、
(b)C21矢印で示されるゲストOSのカーネル状態での処理(sys-B11,sys-B12)の
期間内のタイマ密度とC3欄の仮想計算機モニタでのカーネル状態での処理(sys-B21,sys-B22)の期間内のタイマ密度とを極力近づけるように修正する。かつ、
(c)C2欄の仮想デバイスに対する入出力待ち(iowait-B1)の期間内のタイマ密度と
C3欄の物理デバイスに対する入出力待ち(iowait-B2)の期間内のタイマ密度とを極力
近づけるように修正する。
以上の処理によって、ゲストOSのカーネル状態での処理(sys-B11,sys-B12)と仮想
計算機モニタでのカーネル状態での処理とで、タイマ密度が共通になる方向にタイマ割り込みのタイミングが調整される。また、仮想デバイスに対する入出力待ち(iowait-B1)
の期間と物理デバイスに対する入出力待ち(iowait-B2)とで、タイマ密度が共通になる
方向にタイマ割り込みのタイミングが調整される。その結果、上記比率R1は、比率R2に近づけられる。
例えば、C1欄の比較例に係る仮想計算機モニタ301では、sys-B11, iowait-B, sys-B12の処理の期間に、あわせて24回のタイマ割り込みが発生している。より具体的には、sys-B11, iowait-B,sys-B12のそれぞれの期間で、2回、20回、2回のタイマ割り込
みが発生している。タイマ頻度の割合でいえば、1:10:1でタイマ割り込みが発生している。したがって、カーネル状態での処理sys-B11、sys-B12でタイマ密度は、それぞれ1/12である。また、仮想デバイスに対する入出力待ち(iowait-B1)でのタイマ密度
は、11/12である。
一方、C3欄に示す実施例1では、sys-B21, iowait-B2, sys-B22の処理の期間に、併
せて21回のタイマ割り込みが発生している。より具体的には、sys-B21, iowait-B2, sys-B22のそれぞれの期間で7回、7回、7回のタイマ割り込みが発生している。タイマ頻
度の割合でいえば1:1:1でタイマ割り込みが発生している。したがって、カーネル状
態での処理sys-B21、sys-B22でタイマ密度は、それぞれ1/3である。また、物理デバイスに対する入出力待ち(iowait-B2)でのタイマ密度は、1/3である。
つまり、比較例に係るゲスト310Bのタイマ割込の発生回数の、カーネル状態と入出力待ち状態とにおける割合は、実施例1の仮想計算機モニタの場合、あるいは、物理計算機における物理OSの場合とは、一致しない。なお、実施例1の仮想計算機モニタでのタイマ割込の発生回数の、カーネル状態と入出力待ち状態とにおける割合は、物理計算機における物理OSの場合と同様と考えてよい。
そこで、実施例1に係るC2欄では、sys-B11, iowait-B1, sys-B12それぞれに、8回
、8回、8回、すなわちタイマ密度でいえば極力1/3:1/3:1/3で仮想タイマ割り込みを発生させるよう、仮想計算機モニタが仮想タイマ割り込みをゲストOSに伝えるタイミングを調節する。タイミング調整の結果、図5のC2とC3との比較で明らかなように、C2のsys-B11の期間内とC3のsys-B21の期間内とで、タイマ密度が共通になる。また、C2のiowait-B1の期間内とC3のiowait-B2の期間内とで、タイマ密度が共通になる。また、C2のsys-B12の期間内とC3のsys-B22の期間内とで、タイマ密度が共通になる。
図5によれば、C1欄とC2欄においては、1回の入出力処理に伴うタイマ割り込みの回数の総数は同数(共通)であるから、比較例に係る仮想計算機310のゲストOS310Bと、実施例1に係るゲストOSとの間で、時計に誤差は生じない。
一方、仮想タイマ割り込みタイミングの調節によって、実施例1に係るゲストOSの仮
想タイマと仮想計算機モニタの物理タイマとのタイミングにずれが生じているのは、C2に示すゲストOSでsys-B11, iowait-B1, sys-B12と、C3に示す仮想計算機モニタのsys-B11, iowait-B1, sys-B12との間である。したがって、実施例1に係るゲストOSが観測する時刻のずれは、カーネル状態で動作している範囲内に限られる。カーネル状態での動作は数ms程度となるようOSは設計されている。そのため、ゲストOSが観測する時刻のずれが、アプリケーションプログラムで検知される時間情報に影響を与える可能性は低い。
<仮想システムの構成>
図6に、実施例1に係る計算機システムとして仮想システム11の構成例を示す。図6の仮想システム11は、物理CPUと、メモリと、タイマとを含む。また、メモリは、仮想計算機モニタ1と、ゲストOS10Bとを含むコンピュータプログラムを保持する。以下、物理CPUを単にCPUともいう。なお、実施例1では、物理CPU、メモリ、タイマ等のハードウェア、仮想計算機モニタ、および仮想計算機モニタ上で実行されるゲストOSを含む、計算機システム全体を仮想システム11という。
図6のように、仮想計算機モニタ1は、仮想CPUスケジューラ2、仮想CPU状態決定手段3、物理CPU利用統計算出手段4、仮想CPU利用統計算出手段5、タイマ変調手段6を有する。仮想システム11の物理CPUは、仮想CPUスケジューラ2、仮想CPU状態決定手段3、物理CPU利用統計算出手段4、仮想CPU利用統計算出手段5、タイマ変調手段6を含む仮想計算機モニタ1として、コンピュータプログラムを実行する。また、仮想システム11は、メモリ上に、仮想計算機モニタ1が管理する仮想CPU管理データ7を有する。一方、ゲストOS10Bは、タイマ処理設定手段8を有する。仮想システム11の物理CPUは、タイマ処理設定手段8を含むゲストOS10Bとして、コンピュータプログラムを実行する。
<プロセススケジューラと仮想CPUスケジューラ>
実施例1では、仮想計算機モニタ1は、複数の仮想CPUを扱い、仮想CPUに物理CPUを割り当てる。仮想CPUは、物理CPUをゲストOSに割り当てる場合の、物理CPUでの処理状態とリソースとを含む概念である。すなわち、仮想CPUは、従来の物理計算機上で直接動作する物理OSが実現するマルチプロセス環境での個々のプロセスに対応する概念と考えることもできる。あるいは、ゲストOSから見ると、仮想CPUは、マルチプロセッサシステムにおける個々のCPUとして取り扱うことができる。
なお、仮想計算機を含む計算機システムにおいては、例えば、1つのゲストOSが複数の仮想CPUを使い分ける構成も考えられるが、実施例1では1ゲストOSあたりの仮想CPUが1つの場合を考える。
ゲストOSが処理の実行を要求する仮想CPUに対して物理CPUを割り当てる処理は、ディスパッチと呼ばれる。そのため、仮想CPUを次々に切り替えても相互に干渉しないようにするために、仮想計算機モニタ1は、仮想CPU切り替え時にはレジスタの値等の実行コンテキストを一旦メモリ上の所定領域に退避した上で、実行中の仮想CPUを停止する。そして、仮想計算機モニタ1は、停止中の仮想CPUの実行コンテキストを再び復元し、停止した仮想CPUの実行を再開する。この実行コンテキストは仮想CPU管理データ7に含まれる。仮想計算機モニタ1は複数の仮想CPUそれぞれの実行コンテキストを保存することで、実行、待避、停止、再開する処理を繰り返している。仮想CPUスケジューラ2は、所定の規則にしたがって仮想CPUを物理CPUに割り当てる時間や順序を決定する。
図10に、物理OSにおけるプロセススケジューラとともに、仮想CPUスケジューラ
2の処理を例示する。物理OSにおけるプロセスと、仮想計算機モニタ1における仮想CPUの役割とは、ある面では類似している。そこで、図10では、プロセススケジューラの処理と仮想CPUスケジューラ2の処理とを1つの図にまとめて書いている。以下、主として、物理OSにおけるプロセスについて説明するが、仮想計算機モニタ1における仮想CPUも、上記物理CPUにおけるプロセスの状態と同様の状態をとる。
プロセススケジューラはFIFO(First In First Out)を持ち、FIFO上の割当待ちプロセスを順次、CPUにディスパッチする。プロセスのスケジュール状態は、図10中のactive, queued, unqueuedに分けられる。activeとは、CPUが割り当て済みとなっているプロセスの状態をいう。activeは、CPUにて実行中のプロセスの状態ということもできる。queuedとは、プロセスがFIFO上でCPUの割り当て待ち状態にあることをいう。activeあるいはqueuedの状態では、物理OSが管理するプロセスあるいは仮想計算機モニタ1が管理する仮想CPUは、ユーザ状態(user)またはカーネル状態(sys)に区
分される。
また、unqueuedとは、CPUにてプロセスが実行中ではなく、かつ、CPUの割り当て待ち状態にもない、FIFO上にないプロセスの状態をいう。unqueuedのプロセスは、入出力処理完了待ちの入出力待ち状態(iowait)、またはなにもしていないアイドル状態(idle)にある。
物理OSは、FIFOに繋がれていないunqueuedプロセスのうち、idleのものと入出力待ちのものとを、プロセスごとの管理情報から区別することができる。同様に、仮想計算機モニタ1は、FIFOに繋がれていないunqueuedの仮想CPUのうち、アイドル状態のものと入出力待ち状態のものとを、仮想CPUごとの管理情報から区別することができる。
<統計情報の算出>
上述のように、仮想システム11は、物理計算機のプロセス、あるいは仮想システム11の仮想CPUをユーザ状態(user), カーネル状態(sys), 入出力待ち状態(iowait
), アイドル状態(idle)の4つに分類する。これらの状態はCPUのモードやスケジュール状態によって決まる。CPUのモードは、CPUが実行可能な命令を区分するため、CPUに設定される状態、あるいは特権の有無、あるいは実行レベルを示す概念である。例えば、ユーザモードは特権がない、あるいは最も低い特権のモードである。実施例1では、CPUのモードと区別してプロセス(あるいは仮想CPU)について、“状態”という用語を用いる。そこで、実施例1では、プロセスを実行中のCPU(あるいは仮想CPUを割り当てられた実CPU)がユーザモードにあるとき、プロセス(あるいは仮想CPU)がユーザ状態にあるという。
また、カーネルモードは特権がある、あるいはユーザモードよりも高い特権のモードである。カーネルモードは、特権モードと呼んでもよい。ただし、特権モードという場合には、さらにCPUの状態を細かく区分したレベルの異なるモードを含む場合があるが、実施例1ではこれらのモードは区別しない。実施例1では、プロセスを実行中のCPU(あるいは仮想CPUを割り当てられた実CPU)がカーネルモード、あるいは様々な特権モードにあるとき、プロセス(あるいは仮想CPU)がカーネル状態にあるという。
アプリケーションプログラムから、例えばシステムコール等によりゲストOS10Bに制御が移ると、仮想CPUは、カーネル状態となる。カーネル状態では、仮想CPU利用統計算出手段5は、タイマからの経過時間をシステム時間(sys時間)として集計して蓄
積する。
カーネル状態において例えば、デバイスドライバから、物理デバイスのI/Oコントローラに入出力されるデータが転送された後、仮想CPU(プロセス)がキューにつながれ、仮想CPU(プロセス)の実行が一時中止すると、仮想CPU(プロセス)は入出力待ちの状態となる。入出力待ちの状態では、仮想CPU利用統計算出手段5はタイマからの経過時間を入出力待ち時間(iowait時間)として集計し、蓄積する。
ユーザプロセスの実行中、システムコール実行中、あるいは入出力待ちのいずれでもない場合、仮想CPU(プロセス)はアイドル状態(idle)となる。アイドル状態では、仮想CPU利用統計算出手段5は、タイマからの経過時間をアイドル時間(idle時間)として集計して蓄積する。
仮想計算機モニタ1、ゲストOS、あるいは物理OSは、プロセススケジューラまたは仮想CPUスケジューラ2がプロセスまたは仮想CPUを後述のunqueued状態に置いた原因に応じて、入出力待ち時間とアイドル度時間とを区別する。例えば、物理計算機において、物理OSが実行するデバイスドライバが、データ転送命令によって入出力要求を図示しないI/Oコントローラに転送し、プロセスを一時停止する場合、プロセスが一時停止した状態で測定される処理時間は、入出力待ち時間となる。また、入出力要求以外の原因で、プロセスがunqueued状態となった場合には、処理時間は、アイドル時間となる。
図9に、仮想計算機10が測定する時間の種類を例示する。それぞれの時間は、CPUサイクルを基にした時間、例えば、タイマ割り込みの発生を1単位に測定される。ユーザ時間(user時間)は、アプリケーションプログラムを実行した時間、あるいはその累計である。システム時間(sys時間)は、カーネルプログラムのコードを実行した時間、ある
いはその累計である。入出力待ち時間(iowait時間)は、アプリケーションプログラム、カーネルのどちらのプログラムも実行しておらず、かつ、デバイスの処理が完了するのを待機している時間、あるいはその累計である。アイドル時間(idle時間)は、アプリケーションプログラム、カーネルのどちらのプログラムも実行しておらず、かつ、物理デバイスの処理が完了するのを待機していない時間、あるいはその累計である。
物理CPU利用統計算出手段4は、物理CPUで実行中のプロセスのuser, sys, iowait, idleの状態に応じて、経過時間をuser時間、sys時間、iowait時間、idle時間に区別して集計する。なお、図6では物理CPU利用統計算出手段4が仮想計算機モニタ1内にある。
仮想CPU利用統計算出手段5も、物理CPU利用統計算出手段4と同様に経過時間を集計するものであるが、仮想CPU状態に応じて仮想CPUにおける経過時間を集計する点が異なる。
すでに述べたように、仮想CPUとは、物理CPU上でゲストOSを実行するときの計算機リソース、およびレジスタセットを含む実行環境ということができる。仮想CPUは、仮想計算機モニタ1の仮想CPUスケジューラ2によって物理CPUを割り当てられる。そして、ゲストOS10Bに仮想CPUのレジスタセット等の実行環境が引き渡され、ゲストOS10Bが起動される。ゲストOS10Bの起動により、仮想CPUの処理が開始する。仮想CPU状態決定手段3は、仮想計算機モニタ1内に保持される、各種データ(<管理データとデータ構造>を参照)を用いて、仮想CPUの状態user, sys, iowait,
idleを決定する。
仮想CPU利用統計算出手段5は、仮想CPU状態決定手段3の決定にしたがい、仮想CPUの状態を識別し、ユーザ時間(user時間)、システム時間(sys時間)、入出力待
ち時間(iowait時間)、 およびアイドル時間(idle時間)の各々を所定期間集計し、そ
れぞれの蓄積値を算出する。
<管理データとデータ構造>
図8に、仮想CPU管理データ7の例を示す。実行コンテキストは、個々の仮想CPUの状態を示すデータである。実行コンテキストには、例えば、レジスタ値がある。ゲストOSの切り替え時には、切り替え前に実行されていたゲストOS実行時の実行コンテキストがメモリに退避される。一方、切り替え後に実行されるゲストOSのために、メモリに退避されていた実行コンテキストにしたがってレジスタが設定され、切り替え後に実行されるゲストOSが起動される。
Exitフラグは、仮想CPUが、ユーザ状態(user)か、あるいはカーネル状態(sys)かを判定するためのフラグである。ゲストOS10Bが特権命令を実行し、仮想計算
機モニタ1に処理が移る前に、仮想計算機モニタ1は、当該ゲストOS10Bを実行中の仮想CPUに対するExitフラグに1を設定する。逆に、仮想計算機モニタ1からゲストOS10Bに処理が復帰するとき、仮想計算機モニタ1は、Exitフラグを0に設定する。仮想システム11は、Exitフラグを仮想CPU状態決定手段3のための1つの判断要素として用いる。
完了待ちI/O数は、ゲストOS10Bが発行した入出力要求のうち、未完了の入出力処理数を示す。完了待ちI/O数は、例えば、次の手順で算出される。ゲストOS10Bからの入出力要求を契機に仮想計算機モニタ1へ制御が移った際に、仮想計算機モニタ1は完了待ちI/O数に1を加算する。そして、物理入出力が完了してゲストOS10Bに入出力レスポンスを返す際に、仮想計算機モニタ1は完了待ちI/O数から1を減算する。完了待ちI/O数も仮想CPU状態決定手段3の判断要素となる。
実施例1では、仮想計算機モニタ1は、完了待ちI/O数をゲストOS10ごとに算出する。ただし、実施例1では、算出されたゲストOS10ごとの完了待ちI/O数は、ゲストOS10Bが実行される仮想CPUによって識別可能なように、仮想CPU管理データ7に保持する。実施例1では、1つのゲストOS10Bが1つの仮想CPUで実行されることを前提としているので、仮想CPU状態決定手段3は、仮想CPUを特定できれば、当該仮想CPUでの完了待ちI/O数が取得できる。
図11に、仮想計算機モニタ1が仮想CPUの状態(user,sys,iowait,idle)を同定するための仮想CPU状態表テーブルを例示する。仮想CPU状態表テーブルは、図6の仮想CPU管理データ7に含まれる。
図11の仮想CPU状態表テーブルは、第1列目に「実行状態」、第2列目に「Exitフラグ」、第3列目に「完了待ち」I/O数を有する。実行状態とは、図10によって説明したプロセスの状態、つまりactive, queued, unqueuedのいずれかの状態をいう。仮想計算機モニタ1は、仮想CPUの実行状態を、仮想CPUスケジューラ2に問い合わせる。一方、すでに、図8で説明したように、Exitフラグと完了待ちI/O数は仮想CPU管理データ7の中に保持されている。
したがって、仮想CPUの実行状態が、「active」または「queued」である場合には、Exitフラグの値によって、仮想計算機モニタ1は、仮想CPUの状態がuserかsysか
を同定できる。
しかしながら、仮想CPUがunqueuedの場合、idleとiowaitのいずれの状態にあるのかを仮想計算機モニタ1が判定するのは困難である。仮想計算機モニタ1は、ゲストOS10Bからの入出力を代行するが、ゲストOS10Bでの入出力要求の回数や処理を完了し
た回数まで管理しているわけではない。そのため、実施例1では完了待ちI/O数を示す情報が仮想CPU管理データ7中に設けられている。そして、仮想計算機モニタ1が、それぞれのゲストOS10Bからの入出力要求時と、入出力に対する実I/Oの完了時に、完了待ちI/O数を増減し、ゲストOS10Bごとに保持する。そして、仮想CPUがunqueuedの場合、仮想計算機モニタ1は、完了待ちI/O数が0より大きい場合に、仮想CPUの状態がiowaitであると同定する。また、仮想計算機モニタ1は、仮想CPUがunqueuedの場合で、完了待ちI/O数が0の場合に、仮想CPUの状態がidleであると同定する。実施例1では、1つのゲストOSが1つの仮想CPUで実行されることを想定しているので、仮想計算機モニタ1は、仮想CPUごとに完了待ちI/O数を保持する。したがって、仮想計算機モニタ1は、仮想CPUごとの完了待ちI/O数から、仮想CPUの状態を同定できる。
なお、附言すると、1つのゲストOS10Bが、複数の仮想CPUで実行される場合には、以下のように処理を変更すればよい。すなわち、1つのゲストOS10Bが、複数の仮想CPUで実行される場合、ゲストOS10Bには、仮想プライマリCPUと呼ばれる特定の仮想CPUが対応づけられる。ゲストOS10Bは、最初に起動されるとき、まず、仮想プライマリCPUで起動され、その後、場合によって他の仮想CPUで実行される。そこで、完了待ちI/O数は、仮想プライマリCPUによって識別可能に、仮想CPU管理データ7に保持されるようにすればよい。したがって、仮想CPU状態決定手段3は、仮想プライマリCPUを特定できれば、当該仮想プライマリCPUで実行されるゲストOS10Bでの完了待ちI/O数が取得できる。すなわち、複数の仮想CPUの完了待ちI/O数をプライマリ仮想CPUの情報として、合計して持つことで、複数の仮想CPU全体としての完了待ちI/O数を、個々の仮想CPUの完了待ちI/O数と見なして、近似的に、個々の仮想CPUがiowaitかidleかを同定すればよい。
<タイマ処理の説明>
以下、仮想計算機10におけるタイマ処理を説明する。ゲストOS10Bのタイマ処理は、物理計算機のタイマ処理と基本的に同じである。タイマ処理では、まずコールバック関数をタイマに登録し、指定した時間が経過するとタイマ割り込みが発生する。このタイマ割り込みを契機として、物理OSはコールバック関数をタイマから解除した後、コールバック関数を呼び出す。コールバック関数の中では、タイマ割り込みによって周期的に行うべき所定の処理を実行した後、再びコールバック関数をタイマに登録する。これによって、周期的にコールバック関数が呼び出されることになる。コールバック関数は、ハンドラ、割り込み処理プログラムとも呼ばれる。タイマの具体的な実装は物理OSにより異なる。
ゲストOS10Bのタイマ処理が物理計算機のタイマ処理と異なる点は次の通りである。タイマ登録処理は特権命令を伴う。そのため、コールバック関数をタイマに登録する処理の実行時には、ゲストOS10Bから、一旦仮想計算機モニタ1に制御が渡される。仮想計算機モニタ1はゲストOS10Bが指定した時間が経過した後に、ゲストOS10Bに仮想タイマ割り込みを打ち込み、さらに仮想CPUを起床させる。仮想CPUを起床させるとは、仮想CPUで実行されるゲストOS10Bに実行コンテキストを復元した上で、物理CPUを割り当てることをいう。ただし、仮想計算機モニタ1は、ゲストOS10Bに引き渡す実行コンテキスト中に、タイマ割り込みの発生を設定しておく。すると、仮想CPU起床後、ゲストOS10Bは仮想タイマ割り込みを受信する。以上の方法で、仮想計算機モニタ1は、ゲストOS10Bから起動されるタイマ処理を仮想的に代行している。実施例1では、さらに、仮想計算機モニタ1はタイマ変調手段6を備え、仮想計算機10が指定した時間を適宜修正することによって、図5で示したタイマ調整処理を実行する。
図7に、タイマ割り込みの設定時およびタイマ割り込みの発生後の処理に関連する構成要素を例示する。仮想システム11が1つの物理CPUを含むとする。1つの物理CPU上でゲストOS10Bが実行される。ゲストOS10Bが第1のタイマ間隔でタイマ割り込みをハードウェアタイマに設定する(矢印A1)。仮想システム11以外の物理計算機では、タイマ割り込みは、図7の点線AB2の経路で、ハードウェアタイマATMに設定される。
しかし、タイマ割り込みの設定は特権命令であるので、仮想システム11の場合には、物理CPUに例外が発生する。例外によって、ゲストOS10Bから仮想計算機モニタ1に制御が移動する。
ゲストOS10Bから制御が移された仮想計算機モニタ1は、ゲストOS10Bが設定したタイマ割り込みの要求をインターセプトする(矢印A2)。インターセプトとは、ゲストOS10Bが設定期間経過後のタイマ割り込みの発生をハードウェアタイマATMに対して設定するタイマ設定を、ハードウェアタイマATMに代わって受け取ることをいう。実施例1の仮想計算機10では、仮想計算機モニタ1は、例外処理を介してタイマ設定をインターセプトする。インターセプトの結果、ゲストOS10Bによるタイマ割り込みの設定は、ハードウェアタイマに対してはなされない。なお、物理CPUは、ハードウェアタイマATMに代わってタイマ設定を受け取る手段として、メモリに展開されたコンピュータプログラムを実行する。
ゲストOS10Bによるタイマ設定をインターセプトした仮想計算機モニタ1は、ゲストOS10Bが設定した第1のタイマ間隔に代えて、変調された第2のタイマ間隔でタイマ割り込みをハードウェアタイマATMに設定する(矢印A3)。タイマ割り込み設定に際して、仮想計算機モニタ1は、ゲストタイマ起床ハンドラAAHのアドレスを、タイマ割り込みに対して処理される割り込みベクタAIV1に設定する。タイマハンドとは、タイマ割込発生時に起動される関数である。図7においても、ゲストタイマ起床ハンドラAAHは、タイマ割り込み発生時に起動され、ゲストOS10Bにタイマ割り込みを通知する。
タイマ割り込みが発生すると、CPUのタイマ割り込みレジスタAIR1に割り込みフラグが設定され(A4)、タイマ割り込みに対応する割り込みベクタAIV1に設定されたアドレスを基に、ゲストタイマ起床ハンドラAAHが起動される。
起動したゲストタイマ起床ハンドラAAHは、ゲストOS10Bのレジスタセットの内容を含む実行コンテキストAC中のタイマ割り込みレジスタAIR2に割り込みフラグを設定し、ゲストOS10Bに仮想割り込みを送信する(矢印A5)。
ゲストOS10Bが仮想割り込み受信すると、割り込みベクタAIV2に設定されたタイマハンドラATHに制御が移動し、タイマ処理がなされる。タイマハンドラATHによる処理の後、ゲストOS10Bの通常の処理に制御が移動する(矢印A6)。以上の構成によって、仮想計算機モニタ1は、ゲストOS10Bが設定した第1のタイマ間隔に代えて、変調された第2のタイマ間隔でタイマ割り込みをハードウェアタイマATMに設定する。そして、仮想計算機モニタ1は、ハードウェアタイマATMに代わって、ゲストOS10Bに仮想タイマ割り込みを通知する。
<タイマ変調手段>
以下、タイマ変調手段6が、ゲストOS10Bが指定したタイマ周期を調節する方法を説明する。図12に、ゲストOS10B(ハイパーバイザ)が設定するタイマ周期μと、仮想計算機モニタ1(VM)がゲストOS10Bに返す仮想タイマ周期μsys、μioとの
関係を例示する。
図12のtsysで示す期間及びTsysで示す期間においては、ゲストOS10Bが設定す
るタイマ周期μと、仮想計算機モニタ1がゲストOS10Bに返す仮想タイマ周期μsys
との関係は、次の式1で示される。
(式1)μsys=μ・tsys/Tsys;
式1において、tsysは、1回の入出力(例えば、図4、図5のI/O要求からI/O受理までの処理)において、ゲストOS10Bが認識するカーネルプログラムの実行中の期間(例えば、図4BのTSB11+TSB12)に相当する。また、Tsysは、上記1回
の入出力において、仮想計算機モニタ1が認識するカーネルプログラムの実行中の期間(例えば、図4BのTSB21+TSB22)に相当する。実際には、tsysは仮想CPU利用統計算出手段5が算出するカーネルプログラムの実行時間を所定期間累積した累積値として求めることができる。ここで、累積値とは、所定期間収集した合計値という意味である。ただし、累積値として、所定期間中の平均値を用いてもよい。ただし、仮想CPU利用統計算出手段5が算出した実行時間の累積値に代えて、ゲストOS10Bが過去に算出した利用統計に含まれるカーネルプログラムの所定期間での実行時間を利用してもよい。もちろん、ゲストOS10Bが過去に算出した利用統計は、式1による仮想タイマ周期μsysの変調がない状態での利用統計を利用すればよい。tsysがゲストOSが認識する特権状態での処理時間の基準値に相当する。
また、Tsysは物理CPU利用統計算出手段4が算出するカーネルプログラムの実行時
間を累積した累積値として求めることができる。Tsysは、仮想計算機モニタ10が認識
する特権モードでの処理時間の基準値に相当する。
ゲストOS10Bが設定するタイマ周期μに代わるタイマ周期として、期間tsys内で発生する仮想タイマ割込みの発生頻度が期間Tsys内で発生する物理タイマ割込みの発生頻
度と一致するように変調されたタイマ周期μsysを、式1によって決定する。式1によれ
ば、タイマ周期が、tsys/Tsysの比率で変調されることになる。
式1を変形すると、tsys/μsys=Tsys/μとなり、累積時間tsys内でゲストOS10Bが認識する、μsysの間隔で発生するタイマ割り込みの発生回数が、累積時間Tsysで仮想計算機モニタ1が認識する、μの間隔で発生するタイマ割り込みの発生回数と一致する方向に仮想タイマが変調される。すなわち、期間tsysでの仮想タイマでのタイマ密度
と、期間Tsysでの物理タイマでのタイマ密度が共通となる。
一方、図12のtioで示す期間及びTioで示す期間においては、ゲストOS10Bが設
定するタイマ周期μと、仮想計算機モニタ1がゲストOS10Bに返す仮想タイマ周期μioとの関係は、次の式2で示される。
(式2)μio=μ・tio/Tio;
式2において、tioは、1回の入出力(例えば、図4、図5のI/O要求からI/O受理
までの処理)において、ゲストOS10Bが認識する仮想デバイスに対する入出力待ちの期間(例えば、図4BのTWB1)に相当する。また、Tioは、上記1回の入出力において、仮想計算機モニタ1が認識する物理デバイスに対する入出力待ちの期間(例えば、図4BのTWB2)に相当する。実際にはtioは仮想CPU利用統計算出手段5が算出する入出力待ち時間の累積値として求める。ただし、仮想CPU利用統計算出手段5が算出した累積値tioに代えて、ゲストOS10Bが算出した利用統計に含まれる所定期間中の入出力待ち時間を利用してもよい。もちろん、ゲストOS10Bが過去に算出した利用統計は、式2による仮想タイマ周期μioの変調がない状態での利用統計を利用すればよい。tioがゲストOSが認識する入出力待ち時間の基準値に相当する。また、Tioは物理CPU利用統計算出手段4が算出する所定期間中の入出力待ち時間の累積値である。Tioが仮想計算機モニタが認識する入出力待ち時間の基準値に相当する。
ゲストOS10Bが設定するタイマ周期μに代わるタイマ周期として、期間tio内で発
生する仮想タイマ割込みの発生頻度が期間Tio内で発生する物理タイマ割込みの発生頻度と一致するように変調されたタイマ周期μioを、式1によって決定する。
式2を変形すると、tio/μio=Tio/μとなり、累積時間tio内でゲストOS10Bが認識する、μio間隔で発生するタイマ割り込みの発生回数が、累積時間Tioで仮想計算機モニタ1が認識する、μ間隔で発生するタイマ割り込みの発生回数と一致する。したがって、ゲストOS10Bが認識する入出力待ち時間でのタイマ割り込みの発生回数が、仮想計算機モニタ1が認識する入出力待ち時間でのタイマ割り込みの発生回数と一致する方向に、タイマが変調される。すなわち、期間tioでの仮想タイマでのタイマ密度と、期間Tioでの物理タイマでのタイマ密度が共通となる。
さらに、tsys/μsys+tio/μio=(Tsys+Tio)/μであるので、ゲストOS1
0Bが認識するカーネル状態と入出力待ち状態での総割り込み回数は、仮想計算機モニタ1が認識する総割り込み回数と合致する。
図13に、仮想CPU状態決定手段3の処理フローを例示する。仮想CPU状態決定手段3は、図11の仮想CPU状態表テーブルを管理し、参照して、それぞれの仮想CPUの状態を決定する。例えば、仮想CPU状態決定手段3は、仮想CPU利用統計算出手段5からの要求により、それぞれの仮想CPUの状態を決定する。
物理CPUは、仮想CPU状態決定手段3として、コンピュータプログラムを実行する。ただし、実施例1では、仮想CPU状態決定手段3が図13の処理を実行するものとして説明する。
図13の処理では、仮想CPU状態決定手段3が、それぞれの仮想CPUのスケジュール状態を仮想CPUスケジューラ2に問い合わせる(F1)。そして、仮想CPUスケジューラ2からの応答により、仮想CPU状態決定手段3は、それぞれの仮想CPUがactiveまたはqueuedのどちらかの状態にあるか、あるいはどちらの状態でもないかを判定する(F2)。
仮想CPUが、activeまたはqueuedのいずれかの場合(F2 YES)、仮想CPU状態決定手段3は、仮想CPU管理テーブルからExitフラグを取得する(F3)。そして、仮想CPU状態決定手段3は、制御をF5に進める。
一方、仮想CPUがactiveでもなく、かつqueuedでもない場合、すなわち、unqueuedの場合(F2 NO)、仮想CPU状態決定手段3は、処理をF4に進める。この場合、仮想CPU状態決定手段3は、仮想CPU管理データより、完了待ちI/O数を取得する(F4)。
そして、仮想CPU状態決定手段3は、F3で取得したExitフラグ、あるいはF4で取得した完了待ちI/Oフラグを用いて仮想CPU状態表を参照し、仮想CPUの状態、すなわち、user, sys, iowait,およびidleのいずれかを判定し、判定結果を仮想CPU利用統計算出手段に出力する(F5)。
例えば、仮想CPUがactiveまたはqueuedであって、EXITフラグが0の場合、仮想CPU状態決定手段3はユーザ状態(user)を出力する。また、仮想CPUがactiveまたはqueuedであって、EXITフラグが1場合、仮想CPU状態決定手段3はカーネル状態(sys)を出
力する。仮想CPUがactiveおよびqueuedのいずれでもなく(unqueued)、完了待ちI/O数が0以下の場合、仮想CPU状態決定手段3はアイドル(idle)を出力する。仮想CPUがactiveおよびqueuedのいずれでもなく(unqueued)、完了待ちI/O数が1以上の場
合、仮想CPU状態決定手段3はI/O完了待ち(iowait)を出力する。
以上のように、仮想CPU状態決定手段3がuser, sys, iowait, idleを区別するので
、仮想計算機モニタ1が例えば定期的に仮想CPUの状態を監視すれば、仮想CPU利用統計情報を算出することができる。
図14に、仮想CPU利用統計算出手段5の処理フローを例示する。物理CPUは、仮想CPU利用統計算出手段5として、仮想計算機モニタ1に含まれるコンピュータプログラムを実行する。以下、仮想CPU利用統計算出手段5が図14の処理を実行するものとして説明する。図14の処理は、それぞれの仮想CPUの状態が、仮想CPUスケジュール2によってactive, queuedあるいはunqueuedのいずれかに切り替えられるとき、あるいは、完了待ちI/O数が変化するときに起動する。
なお、図14の処理は、所定の時間間隔で起動されるようにしてもよい。図14の処理が、所定の時間間隔で起動される場合、例えば、仮想CPUの状態(user, sys, iowait,
idle)が変化する期間に比べて、誤差として許容できる短時間周期で図14の処理を起
動すればよい。
仮想CPU利用統計算出手段5は、まず、仮想CPUの現在の状態、user,sys,iowait,およびidleを判定する(F21)。仮想CPUの現在の状態は、図13仮想CPU状態決定手段3の処理で決定される。
次に、仮想CPU利用統計算出手段5は、現在時刻から前回の処理終了時刻を減算し、前回の処理終了からの経過時間を求める(F22)。現在時刻は、F22の処理実行時に、仮想計算機モニタ1が認識する現在時刻である。
次に、仮想CPU利用統計算出手段5は、F11で求めた仮想CPUの現在の状態がカーネル状態(sys)か否かを判定する(F23)。仮想CPUの現在の状態がカーネル状
態(sys)である場合(F23 YES)、仮想CPU利用統計算出手段5は、sys時間の累積値tsysに、F22で算出した経過時間を加算する(F24)。そして、仮想CPU
利用統計算出手段5は、制御をF27に移動する。
一方、仮想CPUの現在の状態がカーネル状態(sys)でない場合(S23 NO)、
仮想CPU利用統計算出手段5は、F21で求めた仮想CPUの現在の状態が入出力待ち(iowait)か否かを判定する(F25)。仮想CPUの現在の状態が入出力待ち(iowait)である場合(F25 YES)、仮想CPU利用統計算出手段5は、iowait時間の累積値tioに、F22で算出した経過時間を加算する(F26)。そして、仮想CPU利用統計算出手段5は、制御をF27に移動する。
次に、仮想CPU利用統計算出手段5は、現在時刻を終了時刻として、静的なメモリ、例えば共有メモリに記録する(F27)。そして、仮想CPU利用統計算出手段5は、処理を終了する。
なお、図14の処理では、省略したが、仮想CPUがユーザ状態にあるuser時間、あるいは、仮想CPUがアイドルであるidle時間も同様に計算できる。
また、物理CPU利用統計算出手段4の処理は、仮想計算機モニタ1において処理が実行される点以外は、従来の物理OSで実行される処理と同様である。つまり、仮想計算機モニタ1では、物理計算機における物理OSのプロセスと同様に、ハイパーバイザ上の処理を取り扱うことができる。したがって、物理CPU利用統計算出手段4は、ハイパーバ
イザ上の処理の状態が、ユーザ状態(user)、カーネル状態(sys)、I/O完了待ち(iowait)、または、アイドル(idle)のいずれであるかを判定できる。なお、ハイパーバイザ上
の処理の状態がカーネル状態にある場合とは、図4Bの実I/Oドライバの処理(sys-B21, sys-B22)が実行中である場合を例示できる。したがって、例えば、物理CPU利用統計算出手段4は、図4Bに示す実I/Oドライバのプロセス実行中の場合に、ハイパーバイザ上の処理の状態がカーネル状態にあると判断すればよい。そして、物理CPU利用統計算出手段4は、所定の累積期間のカーネル状態での実行時間(sys時間)を累積値Tsysとする。また、物理CPU利用統計算出手段4は、所定の累積期間の入出力待ち時間(iowait時間)を累積値Tioとする。
図15および図16に、タイマ変調手段6の処理フローを例示する。物理CPUは、タイマ変調手段6として、仮想計算機モニタ1に含まれるコンピュータプログラムを実行する。以下、タイマ変調手段6が図15、図16の処理を実行するものとして説明する。
タイマ変調手段6は、式1、式2にしたがって、ゲストOS10Bに転送する仮想タイマ割り込みの発生時間を変調する。μはゲストOS10Bが指定したタイマ周期であるから、タイマ変調手段6は、仮想CPU状態決定手段3の結果に応じて、変調したタイマ周期を算出する。図15は、タイマセット時の処理であり、図16は、タイマ割り込み発生後、ゲストOS10Bに仮想タイマ割り込みを転送するときの処理である。図16の処理を実行するプログラムは、ゲストタイマ起床ハンドラと呼ばれる。物理CPUは、タイマ割り込みの発生をゲストOSに通知する手段として、メモリ上に展開されたコンピュータプログラムにより図16の処理を実行する。
ゲストOS10Bがタイマ割り込みを設定すると、タイマ割り込みの設定は特権命令であるので、物理CPUに例外が発生する。仮想計算機モニタ1は、CPUで発生した例外を通じて、ゲストOS10Bが設定したタイマ割り込みの設定をインターセプトし、図14のタイマ変調手段6の処理を起動する。CPUは、メモリ上に展開されたコンピュータプログラムしたがい、タイマ割り込みの設定をインターセプトする(図6の矢印B1)。
タイマ変調手段6は、仮想CPU状態決定手段3に問い合わせ、仮想CPUの状態を取得する(F31)。そして、タイマ変調手段6は、実行中の仮想CPUの状態を判定する(F32)。
仮想CPUの状態がカーネル状態(sys)である場合、タイマ変調手段6は、式1にし
たがって、変調後のタイマ間隔μsysを算出する。なお、ゲストOS10Bが設定したタ
イマ間隔μは、ゲストOS10Bが設定したタイマ割り込みをインターセプトしたときに取得できる。そして、タイマ変調手段6は、ゲストOS10Bが設定したタイマ間隔μに代えて、変調後のタイマ間隔をμsysとしてタイマ割り込みをハードウェアタイマに設定
する。さらに、タイマ変調手段6は、設定したタイマ割り込みを受け付けるタイマハンドラとして、ゲストOS10Bを起床させるためのゲストタイマ起床ハンドラを設定する(F33)。
仮想CPUの状態がユーザ状態(user)である場合、またはアイドル状態(idle)である場合、タイマ変調手段6は、タイマ間隔を変調することなしに、ゲストOS10Bが設定したタイマ間隔μによりタイマ割り込みを設定する(F34)。さらに、タイマ変調手段6は、設定したタイマ割り込みを受け付けるタイマハンドラとして、ゲストOS10Bを起床させるためのゲストタイマ起床ハンドラを設定する。すなわち、実施例1の変調方法では、user, idle時間ではタイマ間隔を変調しない。
仮想CPUの状態が入出力待ち(iowait)である場合、式2にしたがって、変調後のタイマ間隔μioを算出する。そして、タイマ変調手段6は、ゲストOS10Bが設定したタ
イマ間隔μに代えて、変調後のタイマ間隔をμioとしてタイマ割り込みを設定する。さらに、タイマ変調手段6は、設定したタイマ割り込みを受け付けるタイマハンドラとして、ゲストOS10Bを起床させるためのゲストタイマ起床ハンドラを設定する(F35)。
図15の処理にしたがって設定されたタイマ割り込みが発生すると、ゲストタイマ起床ハンドラが起動され、図16の処理を実行する。ゲストタイマ起床ハンドラは、まず、タイマ割り込み発生時のゲストタイマ起床ハンドラの起動設定を解除する。すなわち、タイマ割り込みに対する割り込みベクタから、ゲストタイマ起床ハンドラの設定をクリアする(F41)。
次に、ゲストタイマ起床ハンドラは、仮想CPUの実行コンテキストACでタイマ割り込みレジスタAIR2に、割り込みフラグを設定する(図7参照)。そして、ゲストタイマ起床ハンドラは、ゲストOS10Bを起動する。
起動したゲストOS10Bは、コンテキストに含まれる各種レジスタ値を仮想計算機10のCPUのレジスタに設定し、処理を開始する。すると、仮想CPUにはタイマ割り込みが発生したように見える。すなわち、ゲストタイマ起床ハンドラから、仮想タイマ割り込みが仮想CPUに通知される(F42)。以上のように、ゲストOS10Bでは、仮想タイマ割り込みによってタイマハンドラが起動される。したがって、ゲストOS10Bは、実際にはタイマ間隔μsysあるいはタイマ間隔μioで割り込みを通知されたにも拘わら
ず、あたかもタイマ間隔μで割り込みを通知されたものとして振る舞う。
以上述べたように、実施例1の仮想システム11によれば、仮想CPU利用統計算出手段5が、仮想計算機10でのカーネル状態の実行時間の累積値tsysと、入出力待ち状態の実行時間の累積値tioを算出する。また、物理CPU利用統計算出手段4が、仮想システム11に含まれる物理CPUでのカーネル状態の実行時間の累積値Tsysと、入出力待ち
状態の実行時間の累積値Tioを算出する。そして、タイマ変調手段6が、ゲストOS10Bによるタイマ割り込みの設定をインターセプトし、式1、式2にしたがって、タイマ間隔を変更し、実際の物理CPUに対して、タイマ割り込みを設定する。さらに、タイマ変調手段6は、タイマハンドラとして、図16のゲストタイマ起床ハンドラを設定する。
したがって、カーネル状態と入出力待ちの状態とのときにタイマ間隔が式1あるいは式2にしたがって変更され、変更されたタイマ間隔でゲストOS10Bに仮想タイマ割り込みが発生する。すなわち、図5のC2欄とC3欄に示したように、ゲストOS10Bにおける1回の入出力処理において、カーネル状態、入出力待ちの状態での総計としてのタイマ割り込み発生回数が維持される。そして、総計としてのタイマ割り込み発生回数が維持された状態で、ゲストOS10Bでの仮想CPUによるカーネル状態と入出力待ち状態とにおけるタイマ発生回数との比率が調整される。すなわち、ゲストOS10Bでの仮想CPUによるカーネル状態と入出力待ち状態とにおけるタイマ発生回数との比率が、物理CPUでプロセスのカーネル状態と入出力待ち状態とにおけるタイマ発生回数との比率に一致するように、タイマ間隔が変更される。
したがって、仮想OSにおいて、入出力処理実行時のカーネル実行時間および入出力待ち実行時間に関する統計情報が、実際の物理計算機で測定された場合と類似した条件での統計情報に近づく。すなわち、図5に示したように、ゲストOS10Bが仮想計算機モニタ1を通じて入出力装置にデータを入出力するときに、ゲストOS10Bが認識する入出力待ち時間と入出力待ち時間以外の処理時間との割合は、仮想計算機モニタ1が認識する入出力待ち時間と入出力待ち時間以外の処理時間との割合に近づく。
ところで、実施例1では1つの仮想CPUを使う場合について述べたきた。複数の仮想
CPUを使う場合にも、実施例1はそのまま適用することができる。その理由は、user時間とidle時間は変調する必要がなく、sys時間とiowait時間のみを変調するためである。user時間はそもそも変調を加える必要がなく、idle時間は仮想CPU利用統計のなかで、
関心のないその他の値であるから、sys時間とiowait時間の変調だけで十分である。ただ
し、実施例1で示したように、仮想計算機モニタ1が物理システム全体に対して物理CPU利用統計情報を算出する場合は、すべての仮想計算機の仮想CPU利用統計情報におけるsys, iowait時間の割合が同じになるように変調するような、一次近似的な方法となっ
ている。
また、実施例1で例示した累積値tio, tsysは、ゲストOS10Bが実際に観測するiowait時間とsys時間を、仮想計算機モニタ1が新たに設けた完了待ちI/O数手がかりとして推定した値であって、推定のやり方には他のやり方がある。
以下では、iowait時間およびsys時間の近似の精度を高めたり、ゲストOS10Bのiowait時間とsys時間を推定するほかのやり方を複数示す。
<変形例1>
精度よくタイマ変調を実施するポリシとしては、仮想CPU別に物理CPU利用統計情報を算出するようにしてもよい。すなわち、仮想計算機モニタ1は、個々の仮想CPUを識別して管理しているので、仮想計算機モニタ1から物理CPU利用統計情報算出手段4に、利用統計情報を算出する対象の仮想CPUを識別する情報を引き渡し、個々の仮想CPUに対して、物理CPU利用統計情報を算出すればよい。そのために、TsysおよびTioを、個々の仮想CPUを識別する情報で区別した異なるエントリだけ用意して、Tsysお
よびTioを累積する。そして、図14に示したタイマ変調手段6は、変調対象の仮想CPUを識別する情報を基に、該当する仮想CPUの統計情報であるTsys,Tioを参照し、式1および式2にしたがって、μsysおよびμioを算出する。
仮想CPU別に物理CPU利用統計情報を算出する方式は、物理CPUごとに種別の異なる負荷が与えられた場合に適している。例えば、あるゲストOSはディスクアクセスを頻繁に行い、ほかのゲストOSはネットワークアクセスを頻繁に行う際、それぞれのゲストOSがいつも決まった物理CPUを使う場合などである。
また、仮想計算機モニタ1は、個々の物理デバイスを識別して管理しているので、仮想計算機モニタ1から物理CPU利用統計情報算出手段4に、利用統計情報を算出する対象の物理デバイスを識別する情報を引き渡し、個々の物理デバイスに対して、物理CPU利用統計情報を算出すればよい。そのため、TsysおよびTioを、個々の物理デバイスを識
別する情報で区別した異なるエントリだけ用意して、TsysおよびTioを累積すればよい
。そして、図14に示したタイマ変調手段6は、現在実行中の入出力処理の対象である物理デバイスを識別する情報を基に、該当する統計情報であるTsys,Tioを参照し、式1および式2にしたがって、μsysおよびμioを算出すればよい。
個々の物理デバイスごとに、Tsys,Tioを算出する処理は、特性の異なる物理デバイスを複数扱う場合に適している。例えば、USBデバイス、SANディスク、IDEディスクなどで
ある。
<変形例2>
図17に、仮想CPU状態決定手段3がない仮想計算機の構成を例示する。なお、図17のうち、図6と同一の構成要素については、同一の符号を付してその説明を省略する。
図17の構成では、ゲストOS10Bが、仮想CPU管理データ7の中に、仮想CPU
利用統計算出手段5がuser, sys, idle, iowaitのいずれに対して計上すべきかを、明示
的に記入する。すなわち、ゲストOS10Bは、システムコール等の特権命令の発行を促す処理が実行される前は、プロセスがユーザ状態であることを、共有メモリ上の状態フラグなどに明示する。また、ゲストOS10Bは、システムコール等の特権命令の発行を促す処理が実行された後、特権命令が完了するまでは、プロセスがカーネル状態であることを、共有メモリ上の状態フラグに明示する。また、ゲストOS10Bは、I/O要求を実行した後、I/O処理が完了するまでは入出力待ち状態であることを、共有メモリ上の状態フラグに明示する。一方、仮想CPU利用統計算出手段5は、入出力待ち時間であることが共有メモリのフラグに明示されていない場合には、経過時間をidle時間に累積する。以上のようなuser, sys, iowaitをゲストOS10Bが明示するためには、ゲストOS1
0Bにわずかながら修正が必要となるものの、タイマ処理自体への変更は不要である。この場合は、仮想CPU状態決定手段3を省略することができる。また、ゲストOS10Bが、ゲストOS10B自身が認識したuser, sys, iowaitを仮想CPU利用統計算出手段
5に指示するので、高い精度で、user時間、sys時間、およびiowait時間を集計し、蓄積
できる。
なお、さらに、単純には、ゲストOS10Bがuser時間、sys時間、およびiowait時間
を集計し、蓄積するようにしてもよい。そして、ゲストOS10Bが集計し、蓄積したuser時間、sys時間、およびiowait時間を仮想計算機モニタ1が読み取るようにしてもよい
。仮想CPU利用統計算出手段5は、ゲストOS10Bが認識したuser時間、sys時間、
およびiowait時間を、ゲストOS10Bから受け取ることで、さらに正確に、統計情報を取得できる。したがって、式1、および式2に示したtsysおよびtioを正確に取得でき
る。
また、I/O時間の変調率tio/Tio, カーネル時間の変調率tsys/Tsysを、事前に、実験的、経験的に求めた値を用いるようにしてもよい。具体的には、仮想システム11上のゲストOS10Bと、物理システム300上の物理OSのそれぞれにおいて、同じ業務システムを稼動させ、このときのI/O時間およびカーネル時間をそれぞれtioとtsysおよびTioとTsysとして測定する。これらの値を用いて算出したI/O時間の変調率とカーネル時間の変調率を用いて、式(1)および式(2)を算出する。
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやROM(リードオンリーメモリ)等がある。
1、301 仮想計算機モニタ
2 仮想CPUスケジューラ
3 仮想CPU状態決定手段
4 物理CPU利用統計算出手段
5 仮想CPU利用統計算出手段
6 タイマ変調手段
8 タイマ処理設定手段
10 仮想計算機
10B、310B ゲストOS
300 計算機システム
301 仮想計算機モニタ
302 物理ディスク
304 バックエンドドライバ
305 タイマ機構
306 スケジューラ
310A フロントエンドドライバ
310C アプリケーションプログラム

Claims (9)

  1. メモリ、プロセッサ、タイマおよび入出力装置を含む計算機と、
    前記メモリ上に展開され、前記プロセッサで実行される仮想計算機モニタであって、少なくとも1つのゲストOS(Operating System)の前記プロセッサ上での実行を制御するとともに、前記ゲストOSから前記計算機への処理要求を受け付け、前記処理要求に対する前記計算機での実行結果を前記ゲストOSに引き渡す仮想計算機モニタと、を備え、
    前記仮想計算機モニタは、
    前記ゲストOSから前記タイマへの設定期間経過後のタイマ割り込みの発生を設定するタイマ設定を前記タイマに代わって受け取る手段と、
    前記ゲストOSが前記仮想計算機モニタを通じて前記入出力装置にデータを入出力するときに、前記ゲストOSが認識する入出力待ち時間と入出力待ち時間以外の入出力処理時間との関係が、前記仮想計算機モニタが認識する入出力待ち時間と入出力処理時間との関係に近づくように、前記タイマ設定の設定期間を変更するタイマ変更手段と、
    前記タイマ割り込みを受信したときに、前記タイマ割り込みの発生を前記ゲストOSに通知する手段として前記プロセッサを機能させる仮想計算機。
  2. 前記タイマ変更手段は、前記ゲストOSから前記仮想計算機モニタを通じて入出力装置に対してデータを入出力するときのゲストOSが認識する特権状態の期間においては、前記ゲストOSが認識する特権状態での入出力処理時間の基準値と前記仮想計算機モニタが認識する特権状態での処理時間の基準値との比率にしたがって、前記ゲストOSが設定したタイマ割り込み発生までの設定期間を変更し、前記変更された設定期間を指定してタイマ割り込みの発生を設定する請求項1に記載の仮想計算機。
  3. 前記タイマ変更手段は、前記ゲストOSから前記仮想計算機モニタを通じて入出力装置に対してデータを入出力するときのゲストOSが認識する入出力待ちの期間においては、前記ゲストOSが前記仮想計算機モニタを通じて認識する入出力待ち時間の基準値と前記仮想計算機モニタが認識する入出力待ち時間の基準値との比率にしたがって、前記ゲストOSが設定したタイマ割り込み発生までの設定期間を変更し、前記変更された設定期間を指定してタイマ割り込みの発生を設定する請求項1または2に記載の仮想計算機。
  4. メモリ、プロセッサ、タイマおよび入出力装置を含む計算機の前記プロセッサで実行され、少なくとも1つのゲストOS(Operating System)の前記プロセッサ上での実行を制御するとともに、前記ゲストOSから前記計算機への処理要求を受け付け、前記処理要求に対する前記計算機での実行結果を前記ゲストOSに引き渡す仮想計算機モニタであって、
    前記ゲストOSから前記タイマへ送られる、タイマ割り込み発生の設定期間を設定するタイマ設定を、前記タイマに代わって受け取る手段と、
    前記ゲストOSが前記仮想計算機モニタを通じて前記入出力装置にデータを入出力するときに、前記ゲストOSが認識する入出力待ち時間と入出力待ち時間以外の入出力処理時間との関係が、前記仮想計算機モニタが認識する入出力待ち時間と入出力処理時間との関係に近づくように、前記設定期間を変更するタイマ変更手段と、
    設定機関を変更したタイマ設定を前記タイマに設定する手段と、
    前記タイマからタイマ割り込みを受信したときに、前記タイマ割り込みの発生を前記ゲストOSに通知する手段として前記プロセッサを機能させる仮想計算機モニタ。
  5. 前記タイマ変更手段は、前記ゲストOSから前記仮想計算機モニタを通じて入出力装置に対してデータを入出力するときのゲストOSが認識する特権状態の期間においては、前記ゲストOSが認識する特権状態での処理時間の基準値と前記仮想計算機モニタが認識する特権状態での処理時間の基準値との比率にしたがって、前記ゲストOSが設定した設定
    期間を変更し、前記変更された設定期間を指定してタイマ割り込みの発生を前記タイマに設定する請求項4に記載の仮想計算機モニタ。
  6. 前記タイマ変更手段は、前記ゲストOSから前記仮想計算機モニタを通じて入出力装置に対してデータを入出力するときのゲストOSが認識する入出力待ちの期間においては、前記ゲストOSが前記仮想計算機モニタを通じて認識する入出力待ち時間の基準値と前記仮想計算機モニタが認識する入出力待ち時間の基準値との比率にしたがって、前記ゲストOSが設定した設定期間を変更し、前記変更された設定期間を指定してタイマ割り込みの発生を前記タイマに設定する請求項4または5に記載の仮想計算機モニタ。
  7. メモリ、プロセッサ、タイマおよび入出力装置を含み、前記プロセッサ上で、1つのゲストOSと、前記ゲストOSの実行を制御する仮想計算機モニタが動作する計算機が実行する計算機の制御方法であって、
    前記計算機が、
    前記ゲストOSが前記タイマに発行する、前記タイマがタイマ割込みを発生する設定期間設定するタイマ設定を、前記計算機モニタが前記タイマに代わって受け取るステップと、
    前記ゲストOSが前記仮想計算機モニタを通じて前記入出力装置にデータを入出力するときに、前記ゲストOSが認識する入出力待ち時間と入出力待ち時間以外の入出力処理時間との関係が、前記仮想計算機モニタが認識する入出力待ち時間と入出力処理時間との関係に近づくように、前記タイマ設定の設定期間を前記計算機モニタが変更するタイマ変更ステップと、
    前記計算機モニタから前記タイマに、前記設定期間が変更されたタイマ設定を設定するステップと、
    前記タイマから前記タイマ割り込みを受信したときに、前記タイマ割り込みの発生を前記計算機モニタから前記ゲストOSに通知するステップと、を実行する計算機の制御方法。
  8. 前記タイマ変更手ステップは、前記ゲストOSから前記仮想計算機モニタを通じて入出力装置に対してデータを入出力するときのゲストOSが認識する特権状態の期間においては、前記ゲストOSが認識する特権状態での処理時間の基準値と前記仮想計算機モニタが認識する特権状態での処理時間の基準値との比率にしたがって、前記ゲストOSが設定したタイマ割り込み発生までの設定期間を変更し、前記変更された設定期間を指定してタイマ割り込みの発生を設定するステップを含む、請求項7に記載の計算機の制御方法。
  9. 前記タイマ変更ステップは、前記ゲストOSから前記仮想計算機モニタを通じて入出力装置に対してデータを入出力するときのゲストOSが認識する入出力待ちの期間においては、前記ゲストOSが前記仮想計算機モニタを通じて認識する入出力待ち時間の基準値と前記仮想計算機モニタが認識する入出力待ち時間の基準値との比率にしたがって、前記ゲストOSが設定したタイマ割り込み発生までの設定期間を変更し、前記変更された設定期間を指定してタイマ割り込みの発生を設定するステップを含む、請求項7または8に記載の計算機の制御方法。
JP2010007426A 2010-01-15 2010-01-15 仮想計算機、仮想計算機モニタ、および計算機の制御方法 Active JP5434616B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010007426A JP5434616B2 (ja) 2010-01-15 2010-01-15 仮想計算機、仮想計算機モニタ、および計算機の制御方法
US12/983,972 US8539010B2 (en) 2010-01-15 2011-01-04 Virtual machine, virtual machine monitor and computer control method
EP11150743.0A EP2372542B1 (en) 2010-01-15 2011-01-12 Virtual machine, virtual machine monitor and computer control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010007426A JP5434616B2 (ja) 2010-01-15 2010-01-15 仮想計算機、仮想計算機モニタ、および計算機の制御方法

Publications (2)

Publication Number Publication Date
JP2011145956A JP2011145956A (ja) 2011-07-28
JP5434616B2 true JP5434616B2 (ja) 2014-03-05

Family

ID=44210926

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010007426A Active JP5434616B2 (ja) 2010-01-15 2010-01-15 仮想計算機、仮想計算機モニタ、および計算機の制御方法

Country Status (3)

Country Link
US (1) US8539010B2 (ja)
EP (1) EP2372542B1 (ja)
JP (1) JP5434616B2 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8448165B1 (en) * 2009-09-15 2013-05-21 Symantec Corporation System and method for logging operations of virtual machines
US9841985B2 (en) * 2011-04-12 2017-12-12 Red Hat Israel, Ltd. Storage block deallocation in virtual environments
US9026630B2 (en) * 2011-06-14 2015-05-05 Vmware, Inc. Managing resources in a distributed system using dynamic clusters
US8949498B2 (en) 2011-08-11 2015-02-03 Mellanox Technologies Ltd. Interrupt handling in a virtual machine environment
US8886862B2 (en) * 2011-08-11 2014-11-11 Mellanox Technologies Ltd. Virtualization of interrupts
US8665893B2 (en) * 2011-10-21 2014-03-04 Red Hat Israel, Ltd. Switching of a receive queue associated with a virtual machine
US8839447B2 (en) * 2012-02-27 2014-09-16 Ca, Inc. System and method for virtual image security in a cloud environment
US9015838B1 (en) * 2012-05-30 2015-04-21 Google Inc. Defensive techniques to increase computer security
US8813240B1 (en) 2012-05-30 2014-08-19 Google Inc. Defensive techniques to increase computer security
US10185582B2 (en) * 2012-11-28 2019-01-22 Red Hat Israel, Ltd. Monitoring the progress of the processes executing in a virtualization environment
US9208051B2 (en) * 2012-12-26 2015-12-08 Bmc Software, Inc. Automatic creation of graph time layer of model of computer network objects and relationships
US9304795B2 (en) 2013-01-15 2016-04-05 Empire Technology Development Llc Function-targeted virtual machine switching
CN103064746B (zh) * 2013-01-23 2015-08-12 上海交通大学 基于当前credit进行预测调度的处理器资源精确分配方法
US9521188B1 (en) * 2013-03-07 2016-12-13 Amazon Technologies, Inc. Scheduled execution of instances
JP5968818B2 (ja) * 2013-03-28 2016-08-10 株式会社日立製作所 仮想デバイスタイムアウト時間算出装置、方法、およびプログラム
US9053216B1 (en) 2013-08-09 2015-06-09 Datto, Inc. CPU register assisted virtual machine screenshot capture timing apparatuses, methods and systems
US9311475B2 (en) * 2013-08-30 2016-04-12 Vmware, Inc. Trusted execution of binaries and modules
US10289437B2 (en) 2014-01-07 2019-05-14 Red Hat Israel, Ltd. Idle processor management in virtualized systems via paravirtualization
CN103853598B (zh) * 2014-02-21 2017-03-01 北京神舟航天软件技术有限公司 实现嵌入式虚拟机硬实时虚拟定时器响应的方法
US10365936B2 (en) 2014-02-27 2019-07-30 Red Hat Israel, Ltd. Idle processor management by guest in virtualized systems
US10380047B2 (en) 2014-04-07 2019-08-13 Mellanox Technologies, Ltd. Traffic-dependent adaptive interrupt moderation
US9483298B2 (en) * 2014-04-23 2016-11-01 Vmware, Inc. Converting virtual machine I/O requests
KR101592782B1 (ko) * 2014-11-05 2016-02-12 플러스기술주식회사 전가상화 시스템에서 자원을 감시하는 장치 및 방법
US9817688B2 (en) * 2015-02-18 2017-11-14 Red Hat Israel, Ltd. Identifying and preventing removal of virtual hardware
JP6550945B2 (ja) * 2015-06-10 2019-07-31 富士通株式会社 判定制御プログラム、判定制御方法及び仮想マシン管理装置
US9720722B2 (en) * 2015-09-03 2017-08-01 Red Hat Israel, Ltd. Hypervisor driven gradual balloon inflation
US10846117B1 (en) * 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US10467161B2 (en) 2016-05-25 2019-11-05 Mellanox Technologies, Ltd. Dynamically-tuned interrupt moderation
US10127068B2 (en) * 2016-06-30 2018-11-13 Amazon Technologies, Inc. Performance variability reduction using an opportunistic hypervisor
US10459747B2 (en) 2016-07-05 2019-10-29 Red Hat Israel, Ltd. Exitless timer access for virtual machines
JP6751231B2 (ja) * 2016-07-07 2020-09-02 富士通株式会社 ジョブスケジューラ試験プログラム、ジョブスケジューラ試験方法及び並列処理装置
US10503534B1 (en) * 2016-09-09 2019-12-10 Hewlett-Packard Development Company, L.P. Adaptive clock scaling to optimize time-based operations within virtualized guest operating systems
US10203991B2 (en) * 2017-01-19 2019-02-12 International Business Machines Corporation Dynamic resource allocation with forecasting in virtualized environments
CN108512780B (zh) * 2017-02-28 2020-12-15 华为技术有限公司 定时器实现方法及相关装置
US11726807B2 (en) * 2017-05-05 2023-08-15 Vmware, Inc. Safe execution of virtual machine callbacks in a hypervisor
JP6777050B2 (ja) * 2017-09-21 2020-10-28 株式会社デンソー 仮想化システム、仮想化プログラム、及び、記憶媒体
US10733005B1 (en) * 2017-10-10 2020-08-04 Parallels International Gmbh Providing access to mobile applications by heterogeneous devices
US10776289B2 (en) 2018-09-21 2020-09-15 Microsoft Technology Licensing, Llc I/O completion polling for low latency storage device
US10740258B2 (en) 2018-10-23 2020-08-11 Microsoft Technology Licensing, Llc Timer-based I/O completion polling for low latency storage device
JP7151631B2 (ja) * 2019-06-11 2022-10-12 株式会社デンソー 車両用制御装置、車両用表示システム、及び車両用表示制御方法
US20210357239A1 (en) * 2020-05-14 2021-11-18 Capital One Services, Llc Methods and systems for managing computing virtual machine instances
US11595472B2 (en) 2021-01-19 2023-02-28 Mellanox Technologies, Ltd. Controlling packet delivery based on application level information
US11792139B2 (en) 2022-01-24 2023-10-17 Mellanox Technologies, Ltd. Efficient packet reordering using hints

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001166954A (ja) * 1999-12-10 2001-06-22 Hitachi Ltd 仮想計算機装置および仮想計算機装置の制御方法
US7475002B1 (en) * 2004-02-18 2009-01-06 Vmware, Inc. Method and apparatus for emulating multiple virtual timers in a virtual computer system when the virtual timers fall behind the real time of a physical computer system
JP2006059052A (ja) 2004-08-19 2006-03-02 Hitachi Ltd 仮想計算機システム
US7853960B1 (en) * 2005-02-25 2010-12-14 Vmware, Inc. Efficient virtualization of input/output completions for a virtual device
US7529867B2 (en) * 2006-11-01 2009-05-05 Inovawave, Inc. Adaptive, scalable I/O request handling architecture in virtualized computer systems and networks
JP4871174B2 (ja) 2007-03-09 2012-02-08 株式会社日立製作所 仮想計算機システム
US20080271018A1 (en) * 2007-04-24 2008-10-30 Andrew Gross System and Method for Managing an Assurance System
US8453143B2 (en) * 2007-09-19 2013-05-28 Vmware, Inc. Reducing the latency of virtual interrupt delivery in virtual machines
JP2009223842A (ja) * 2008-03-19 2009-10-01 Fujitsu Ltd 仮想計算機制御プログラム及び仮想計算機システム
US8478924B2 (en) * 2009-04-24 2013-07-02 Vmware, Inc. Interrupt coalescing for outstanding input/output completions

Also Published As

Publication number Publication date
US20110179417A1 (en) 2011-07-21
EP2372542B1 (en) 2016-06-01
EP2372542A2 (en) 2011-10-05
US8539010B2 (en) 2013-09-17
EP2372542A3 (en) 2013-01-16
JP2011145956A (ja) 2011-07-28

Similar Documents

Publication Publication Date Title
JP5434616B2 (ja) 仮想計算機、仮想計算機モニタ、および計算機の制御方法
US11797327B2 (en) Dynamic virtual machine sizing
JP6126312B2 (ja) 待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ
US7945908B1 (en) Method and system for improving the accuracy of timing and process accounting within virtual machines
CN109564523B (zh) 使用机会性管理程序降低性能可变性
Kim et al. Demand-based coordinated scheduling for SMP VMs
WO2015090158A1 (zh) 一种虚拟网卡中断亲和性绑定的方法和计算机设备
US9183054B2 (en) Maintaining hardware resource bandwidth quality-of-service via hardware counter
KR101773166B1 (ko) 가상 머신 스케줄 시점 조절 장치 및 방법
JP2008513909A (ja) 仮想マシンモニタに関連するタイマへのサポートを提供する方法及び装置
US11579918B2 (en) Optimizing host CPU usage based on virtual machine guest OS power and performance management
EP3704575A1 (en) A method, apparatus and system for real-time virtual network function orchestration
JP2019169081A (ja) 情報処理装置、情報処理方法、プログラム
KR101203099B1 (ko) 운영체제 태스크의 실행시간 모니터링 방법 및 시스템
JP5136658B2 (ja) 仮想計算機の割当方法及び割当プログラム並びに仮想計算機環境を有する情報処理装置
Miao et al. FlexCore: Dynamic virtual machine scheduling using VCPU ballooning
Pastorelli et al. Os-assisted task preemption for hadoop
WO2023241307A1 (zh) 管理线程的方法及装置
US11169857B2 (en) System and method for reserving a portion of CPU time for host execution
US11934890B2 (en) Opportunistic exclusive affinity for threads in a virtualized computing system
JP2006099333A (ja) 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
KR102240996B1 (ko) 가상화 시스템에서의 입출력 완료 처리 방법 및 장치
KR102443894B1 (ko) 가상화 환경에서 가상머신의 i/o 성능을 높이기 위한 스케줄링 방법
US20240134669A1 (en) Paravirtual pause loops in guest user space
US20240231867A9 (en) Paravirtual pause loops in guest user space

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131107

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131125

R150 Certificate of patent or registration of utility model

Ref document number: 5434616

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150