JPWO2015132942A1 - 計算機 - Google Patents

計算機 Download PDF

Info

Publication number
JPWO2015132942A1
JPWO2015132942A1 JP2016506044A JP2016506044A JPWO2015132942A1 JP WO2015132942 A1 JPWO2015132942 A1 JP WO2015132942A1 JP 2016506044 A JP2016506044 A JP 2016506044A JP 2016506044 A JP2016506044 A JP 2016506044A JP WO2015132942 A1 JPWO2015132942 A1 JP WO2015132942A1
Authority
JP
Japan
Prior art keywords
interrupt
vector
interrupt vector
guest
host
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
JP2016506044A
Other languages
English (en)
Other versions
JP6157719B2 (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 JPWO2015132942A1 publication Critical patent/JPWO2015132942A1/ja
Application granted granted Critical
Publication of JP6157719B2 publication Critical patent/JP6157719B2/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • 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 Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

複数のオペレーティングシステムが稼動する計算機であって、仮想計算機を管理する仮想化機能部を備え、仮想計算機上ではオペレーティングシステムが稼動し、仮想化機能部は割込コントローラを含み、割込コントローラは、ホスト側割込みベクタを管理するためのベクタ情報と、オペレーティングシステムによって設定されたゲスト側割込みベクタに対するホスト側割込みベクタの割当てを管理するための割込みベクタ割当情報とを保持し、割込コントローラは、ゲスト側割込みベクタに対する前記ホスト側割込みベクタの割当て状態を解析し、解析の結果に基づいて、ゲスト側割込みベクタに対するホスト側割込みベクタの割当てを変更する。

Description

本発明は、仮想化機能を備える計算機システムにおけるI/Oデバイスの割込み処理に関する。
ハイパバイザ等の仮想化機能部を備える物理計算機から構成される計算機システムでは、単一の物理計算機のリソースを分割し、複数の仮想的な計算機(仮想計算機)に提供する。仮想計算機のそれぞれでは、ゲストOSが動作する。また、仮想計算機には、物理計算機に搭載される複数のI/Oデバイスの少なくともいずれかが割り当てられる。
I/Oデバイスには、Host Bass Adapter (HBA)、Network Interface Card (NIC)等のネットワークアダプタが含まれる。各仮想計算機上で稼動するゲストOSは、当該仮想計算機に割り当てられたI/Oデバイスを介して、ネットワークに接続される、記憶装置などの外部装置へアクセスすることができる。
一般的な計算機システムでは、I/Oデバイスの障害の発生等によってI/Oデバイスから割込みが通知された場合、I/Oデバイスを制御するOSが、割り込み通知に対応する割り込み処理を実行する。
特開2010−250453号公報
仮想化機能部を備える計算機システムでは、仮想化機能部が、障害が発生したI/Oデバイスが割り当てられる仮想計算機上で稼動するゲストOSに割込みを通知する。ゲストOSは、I/Oデバイスの割込処理を実行する。例えば、仮想化機能部は、I/Oデバイスの動作が停止等によってI/Oデバイスから障害の発生を示す割込みをゲストOSに通知する(例えば、特許文献1参照)。
仮想化機能部は、I/Oデバイスに割込要因毎に割込みベクタ(ホスト側割込みベクタ)を割り当てる。これによって、I/Oデバイスは、ホスト側割込みベクタを含む割り込み通知を仮想化機能部に通知できる。仮想計算機上で動作するゲストOSも同様に、当該仮想計算機に割り当てられるI/Oデバイスに割込みベクタ(ゲスト側割込みベクタ)を割り当てる。
仮想化機能部は、I/Oデバイスからホスト側割込みベクタを含む割り込みの通知を受け付けた場合、ホスト側割込みベクタをゲストOSが管理するゲスト側割込みベクタに変換し、ゲスト側割込みベクタを含む割り込みを当該ゲストOSに通知する。
ゲストOSは、仮想化機能部から割り込みの通知を受け付けた場合、当該通知に含まれるゲスト側割込みベクタに基づいて、割り込みを通知したI/Oデバイス、及び通知された割り込みに対応する割り込み処理の種類を特定できる。
一般的に、仮想化機能部は、ゲストOSと同じ数だけのホスト側割込みベクタを確保し、確保された割込みベクタをI/Oデバイスに割り当てる。
しかし、物理計算機が備えるCPUにおいて利用可能な割込みベクタにはハードウェア上の制限がある。そのため、各ゲストOSが仮想計算機に割り当てられたI/Oデバイスにゲスト側割込みベクタを設定できても、物理計算機に搭載される全てのI/OデバイスにおいてCPUのベクタから確保する必要があり、I/Oデバイス数が非常に多い物理計算機の場合、I/Oデバイスに割り当てるホスト側割込みベクタが不足する。
これに対し、仮想化機能部は、複数のゲスト側割込みベクタに、同一のホスト側割込みベクタを設定する。すなわち、ホスト側割込みベクタは、複数のゲスト側割込みベクタの共有となる。この場合、仮想化機能部は、前述のホスト側割込みベクタを含む割り込みを受け付けた場合、各I/Oデバイスの割り込み要因レジスタを参照することによって、割り込み通知を発行したI/Oデバイス及び割込要因を特定する。仮想化機能部は、特定されたI/Oデバイスが割り当てられた仮想計算機上のゲストOSに割り込みを通知する。
しかし、I/Oデバイスの割込要因レジスタへのアクセス処理は、計算機システム上の処理の中でも特にオーバーヘッドが大きいため、当該アクセス処理の増加によってシステム性能が低下する。
したがって、I/Oデバイスの割込要因レジスタへのアクセス処理によるオーバーヘッドを最小とするためにCPUに割り当て可能な割り込みベクタの数を把握し、計算機システムの稼動中に割込みベクタの割当てを最適にする技術が必要となる。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、複数のオペレーティングシステムが稼動する計算機であって、前記計算機は、物理リソースとして、プロセッサ、前記プロセッサに接続される揮発性メモリ、前記プロセッサに接続される不揮発性メモリ、及び前記プロセッサに接続される少なくとも一つのI/Oデバイスを備え、前記物理リソースを用いて少なくとも一つの仮想計算機を生成し、前記少なくとも一つの仮想計算機を管理する仮想化機能部を備え、前記少なくとも一つの仮想計算機上では、オペレーティングシステムが稼動し、前記オペレーティングシステムは、当該オペレーティングシステムが稼動する仮想計算機に割り当てられる仮想的なI/Oデバイスが割り込みを通知するために設定されたゲスト側割込みベクタを管理するための第1のベクタ情報を保持し、前記仮想化機能部は、前記少なくとも一つのI/Oデバイスからの割り込み通知に対する処理を実行する割込コントローラを含み、前記割込コントローラは、前記物理リソースに含まれる前記少なくとも一つのI/Oデバイスが割り込みを通知するために設定されたホスト側割込みベクタを管理するための第2のベクタ情報と、前記ゲスト側割込みベクタに対する前記ホスト側割込みベクタの割当てを管理するための割込みベクタ割当情報と、を保持し、前記ゲスト側割込みベクタは、一つの前記ゲスト側割込みベクタに一つの前記ホスト側割込みベクタが割り当てられたユニーク割込みベクタ、及び、複数の前記ゲスト側割込みベクタに一つの前記ホスト側割込みベクタが割り当てられた共有割込みベクタを含み、前記割込コントローラは、前記ホスト側割込みベクタを含む割り込み通知を受けつけた場合、前記割込みベクタ割当情報に基づいて、当該ホスト側割込みベクタが割り当てられる前記ゲスト側割込みベクタを特定し、前記特定されたゲスト側割込みベクタが前記ユニーク割込みベクタである場合、前記第2のベクタ情報及び前記割込みベクタ割当情報に基づいて、前記オペレーティングシステムに当該特定されたゲスト側割込みベクタを含む割り込みを通知し、前記特定されたゲスト側割込みベクタが前記共有割込みベクタである場合、前記第2のベクタ情報及び前記割込みベクタ割当情報に基づいて、前記ホスト側割込みベクタが割り当てられる前記I/Oデバイスにアクセスすることによって、前記ゲスト側割込みベクタ及び割り込み先の前記オペレーティングシステムを特定し、前記特定されたオペレーティングシステムに、当該特定されたゲスト側割込みベクタを含む割り込みを通知し、前記ゲスト側割込みベクタに対する前記ホスト側割込みベクタの割当て状態を解析し、前記解析の結果に基づいて、前記ゲスト側割込みベクタに対する前記ホスト側割込みベクタの割当てを変更することを特徴とする。
本発明の一形態によれば、仮想化機能部は、ゲスト側割込みベクタに対するホスト側割込みベクタの割当て状態の解析結果に基づいて、動的に、共有割込みベクタとユニーク割込みベクタとの割当てを変更できる。したがって、I/Oデバイスへのアクセスによる性能低下を最小限に抑えることができる。さらに、ゲスト側割込みベクタに対するホスト側割込みベクタの割当て状態に応じて、最適な割当て状態を実現できる。
前述した以外の課題、構成及び効果は、以下の実施例の説明によって明らかにされる。
本発明の実施例1の物理計算機のハードウェア構成の一例を示す説明図である。 本発明の実施例1のI/Oデバイスの構成を示すブロック図である。 本発明の実施例1のゲスト側割込みベクタに対するホスト側割込みベクタの割当て状態を示す説明図である。 本発明の実施例1の割込みベクタ割当情報の一例を示す説明図である。 本発明の実施例1の統計情報の一例を示す説明図である。 本発明の実施例1の統計情報の一例を示す説明図である。 本発明の実施例1のハイパバイザ及びゲストOSが、割り込みが発生した場合に実行する処理の流れを説明するシーケンス図である。 本発明の実施例1のハイパバイザが実行する割込みベクタの割当変更処理を説明するフローチャートである。 本発明の実施例1のハイパバイザが実行する割込みベクタの割当変更処理を説明するフローチャートである。 本発明の実施例1のゲスト側割込みベクタに対するホスト側割込みベクタの割当て状態を示す説明図である。 本発明の実施例1の割込みベクタ割当情報を示す説明図である。 本発明の実施例2のハイパバイザが実行する割込みベクタの割当変更処理を説明するフローチャートである。
以下、発明の一実施例を添付図面に基づいて説明する。
図1は、本発明の実施例1の物理計算機のハードウェア構成及びソフトウェア構成の一例を示す説明図である。
物理計算機10は、物理ハードウェア100として、プロセッサ101、メモリ102、及び、複数のI/Oデバイス103を備える。なお、物理ハードウェア100には、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等、その他のハードウェア構成が含まれてもよい。
プロセッサ101は、メモリ102に格納されるプログラムを実行する。プロセッサ101は、複数のCPUコアを有する。プロセッサ101がプログラムを実行することによって、ハイパバイザ200等の機能が実現される。以下、プログラムを主体に処理を説明する場合、当該プログラムがプロセッサ101によって実行されていることを示す。
メモリ102は、プロセッサ101によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。また、メモリ102は、各プログラムのワークエリアを含む。本実施例のメモリ102には、ハイパバイザ200を実現するプログラム、及びゲストOS400を実現するプログラム等が格納される。
I/Oデバイス103は、外部装置と接続することによって、外部から情報を入力し、外部に情報を出力するためのデバイスである。I/Oデバイス103は、例えば、NIC、HBA等が考えられる。本実施例では一つのカードが一つのI/Oデバイス103に対応するものとする。なお、一つのカードに複数のコントローラが含まれる場合、ハイパバイザ200は、一つのコントローラによって管理されるデバイスを一つのI/Oデバイス103として認識できる。
物理計算機10が起動すると、メモリ102の一部の記憶領域にハイパバイザ200を実現するプログラムが格納され、プロセッサ101によって実行される。
ハイパバイザ200は、物理ハードウェア100を用いて仮想計算機を生成し、生成された仮想計算機を管理する。本実施例では、ハイパバイザ200は、物理ハードウェア100を論理的に分割することによって、LPAR300を生成し、生成されたLPAR300上にゲストOS400を稼動させる。
ここで、ハイパバイザ200が管理する割込みベクタ及びゲストOS400が管理する割込みベクタについて説明する。
ハイパバイザ200は、物理ハードウェア100の各I/Oデバイス103に割込みベクタを割り当てる。なお、ハイパバイザ200は、一つの割込みベクタを用いて一つの割込要因を管理することもできるし、一つの割込みベクタを用いて複数の割込要因を管理することもできる。ハイパバイザ200が管理する割込みベクタをホスト側割込みベクタとも記載する。
ゲストOS400は、LPAR300に割り当てられたI/Oデバイス103に割込みベクタを割り当てる。なお、ゲストOS400は、一つの割込みベクタを用いて一つの割込要因を管理することもできるし、一つの割込みベクタを用いて複数の割込要因を管理することもできる。ゲストOS400が管理する割込みベクタをゲスト側割込みベクタとも記載する。
ハイパバイザ200は、プロセッサ割当て管理部201、メモリコントローラ202、及び割込コントローラ203を備える。なお、ハイパバイザ200は、前述した機能部以外の機能部を備えてもよい。
プロセッサ割当て管理部201は、LPAR300に対する論理プロセッサの割当てを管理する。プロセッサ割当て管理部201は、論理プロセッサ管理部210及びスケジューラ220を含む。
論理プロセッサ管理部210は、LPAR300に対する論理プロセッサの割当てを管理する。スケジューラ220は、LPAR300上で稼動するゲストOS400が実行する処理に対する論理プロセッサの割当てを制御する。
メモリコントローラ202は、LPAR300に対する論理メモリの割当てを管理する。本実施例では、メモリコントローラ202は、メモリ102の記憶領域の一部を論理メモリとしてLPARに割り当てる。また、メモリコントローラ202は、LPAR300上で稼動するゲストOS400のメモリアクセスを制御する。
割込コントローラ203は、I/Oデバイス103等からの割り込みに対する処理を制御する。また、割込コントローラ203は、ゲスト側割込みベクタに対するホスト側割込みベクタの割当てを管理する。割込コントローラ203は、ベクタ割当変更部230、割込みハンドラ240、統計情報250、ベクタテーブル260、及び割込みベクタ割当情報270を含む。
ベクタ割当変更部230は、統計情報250に基づいて、ゲスト側割込みベクタに割り当てるホスト側割込みベクタの割当てを変更する。割込みハンドラ240は、発生した割り込みに対する処理を実行する。
統計情報250は、発生した割り込みの統計情報を格納する。本実施例では、後述する一つのベクタグループに対して一つの統計情報250が生成される。統計情報250については、図5A及び図5Bを用いて後述する。
ベクタテーブル260は、ハイパバイザが管理するI/Oデバイス103に割り当てたホスト側割込みベクタと、ホスト側割込みベクタに対応する割込みハンドラ240を読み出すためのアドレスとが対応付けられたエントリを複数格納する。ベクタテーブル260は、公知のものであるため詳細な説明は省略する。
割込みベクタ割当情報270は、ゲスト側割込みベクタに対するホスト側割込みベクタの割当状態を管理するための情報である。割込みベクタ割当情報270については、図4を用いて後述する。
ハイパバイザ200は、I/Oデバイス103からホスト側割込みベクタを含む割り込みの通知を受けつけた場合、割込みベクタ割当情報270に基づいてホスト側割込みベクタをゲスト側割込みベクタに変換し、変換されたゲスト側割込みベクタを含む割り込みの通知をゲストOS400に出力する。ゲストOS400は、ハイパバイザ200から割り込みの通知を受け付けた場合、当該通知からゲスト側割込みベクタを取得する。ゲストOS400は、自身が保持するベクタテーブルを参照して、取得されたゲスト側割込みベクタに対応する割込みハンドラを呼び出して、割込処理を実行する。
図2は、本発明の実施例1のI/Oデバイス103の構成を示すブロック図である。
I/Oデバイス103は、割込要因レジスタ500を備える。また、I/Oデバイス103には、ホスト側割込みベクタ510が割り当てられる。
割込要因レジスタ500は、割り込みが発生した要因を示す値を保持するレジスタである。ホスト側割込みベクタ510は、I/Oデバイス103がプロセッサ101(ハイパバイザ200)に割り込みを通知する場合に用いられる割込みベクタである。図2に示す例では、二つのベクタが設定される。「ベクタ01」は、二つの割込要因を有する割り込みを通知するために用いられる割込みベクタであり、「ベクタ02」は、一つの割込要因を有する割込を通知するために用いられるベクタである。
I/Oデバイス103には、以下のような三つのタイプが存在する。
一つのタイプのI/Oデバイス103は、ハイパバイザ200が割込要因レジスタ500にアクセスした場合、割込要因レジスタ500に格納される値が消去されないI/Oデバイスである。以下の説明では、前述したI/Oデバイス103をType1のI/Oデバイスとも記載する。
一つのタイプのI/Oデバイス103は、ハイパバイザ200が割込要因レジスタ500にアクセスした場合、割込要因レジスタ500に格納される値が消去されるI/Oデバイスである。以下の説明では、前述したI/Oデバイス103をType2のI/Oデバイスとも記載する。
複数のType2のI/Oデバイスを用いて、複数のゲスト側割込みベクタがホスト側割込みベクタを共有する場合、ハイパバイザ200は、割込要因を特定するために割込要因レジスタ500にアクセスする必要がある。しかし、Type2のI/Oデバイスはハイパバイザ200からアクセスされると割込要因レジスタ500に格納される値が消去される。そのため、複数の割込が同時に発生した場合、割込要因を発生することが困難になる。前述したような理由によって、本実施例のハイパバイザ200は、複数のType2のI/Oデバイスを用いてホスト側割込みベクタが共有されないように制御する。なお、ホスト側割込みベクタの共有については図3を用いて後述する。
一つのタイプのI/Oデバイス103は、I/Oデバイス103の仕様が公開されていない等の理由によって、割込要因レジスタ500にアクセスできないI/Oデバイスである。以下の説明では、前述したI/Oデバイス103をType3のI/Oデバイスとも記載する。
Type3のI/Oデバイスでは、ハイパバイザ200が割込要因レジスタ500にアクセスできないため割込要因を特定できない。したがって、Type3のI/Oデバイスを用いたホスト側割込みベクタの共有は行われない。
図3は、本発明の実施例1のゲスト側割込みベクタに対するホスト側割込みベクタの割当て状態を示す説明図である。
図3では、物理ハードウェア100は、第1のI/Oデバイス103、第2のI/Oデバイス103及び第3のI/Oデバイス103を含むものとする。ここで、第1のI/Oデバイス103及び第2のI/Oデバイス103は、Type1のI/Oデバイスであり、第3のI/Oデバイス103は、Type2のI/Oデバイスであるものとする。
また、図3では、物理計算機10には二つのLPAR300が生成され、それぞれのLPAR300に第1のゲストOS400及び第2のゲストOS400が稼動しているものとする。第1のゲストOS400が稼動するLPAR300には第1のI/Oデバイス103及び第3のI/Oデバイス103が割り当てられ、第2のゲストOS400が稼動するLPAR300には第2のI/Oデバイス103が割り当てられているものとする。
ハイパバイザ200は、物理ハードウェア100に含まれる各I/Oデバイス103に割込みベクタ(ホスト側割込みベクタ)を割り当てる。I/Oデバイス103は、所定の割込要因が発生した場合、当該割込要因に対応する割込みベクタ(ホスト側割込みベクタ)を用いて、割り込みの発生をハイパバイザ200に通知する。
図3では、ハイパバイザ200は、第1のI/Oデバイス103にホスト側割込みベクタとして「ベクタ01」を割り当てる。ハイパバイザ200は、「ベクタ01」を用いて三つの割込要因を管理する。また、ハイパバイザ200は、第2のI/Oデバイス103にホスト側割込みベクタとして、「ベクタ02」及び「ベクタ03」を割り当てる。ハイパバイザ200は、「ベクタ02」を用いて二つの割込要因を管理し、また、「ベクタ03」を用いて二つの割込要因を管理する。ハイパバイザ200は、第3のI/Oデバイス103にホスト側割込みベクタとして、「ベクタ04」及び「ベクタ05」を割り当てる。ハイパバイザ200は、「ベクタ04」を用いて一つの割込要因を管理し、また、「ベクタ05」を用いて三つの割込要因を管理する。
ゲストOS400は、LPAR300に割り当てられたI/Oデバイス103に割込みベクタ(ゲスト側割込みベクタ)を割り当てる。
ハイパバイザ200は、一つゲスト側割込みベクタに一つのホスト側割込みベクタを割り当てる。一つのホスト側割込みベクタに一つのゲスト側割込みベクタが割り当てられている場合、当該ゲスト側割込みベクタをユニーク割込みベクタとも記載する。一方、一つのホスト側割込みベクタに複数のゲスト側割込みベクタが割り当てられている場合、当該ゲスト側割込みベクタを共有割込みベクタとも記載する。
なお、一つのホスト側割込みベクタを用いて複数の割込要因が管理されている場合には以下のように取り扱う。一つのゲスト側割込みベクタを用いて管理される割込要因の数が、当該ゲスト側割込みベクタに割り当てられるホスト側割込みベクタを用いて管理される割込要因の数と同一の場合、当該ゲスト側割込みベクタはユニーク割込みベクタとして扱う。それ以外の場合のゲスト側割込みベクタは共有割込みベクタとして扱う。
図3では、ゲスト側割込みベクタのうち、「ベクタ14」、「ベクタ21」及び「ベクタ22」はユニーク割込みベクタであり、「ベクタ11」、「ベクタ13」、「ベクタ15」及び「ベクタ16」は、共有割込みベクタである。
本実施例のハイパバイザ200は、割り込みが発生した場合に統計情報250を更新し、また、発生した割り込みに対応する割込処理を実行する。また、本実施例のハイパバイザ200は、統計情報250に基づいて、ゲスト側割込みベクタに対するホスト側割込みベクタの割当てを最適化する。
ハイパバイザ200は、複数のType1のI/Oデバイスから構成される第1のベクタグループ、及び一つのType2のI/Oデバイスから構成される第2のベクタグループを生成する。後述するように、ハイパバイザ200は、ベクタグループ内で、ゲスト側割込みベクタに対するホスト側割込みベクタの割当てを変更する。そのため、ハイパバイザ200は、ベクタグループ毎に統計情報を管理する。
なお、第1のベクタグループ及び第2のベクタグループが複数存在する場合、ハイパバイザ200は、それぞれのベクタグループに識別子を付与し、ベクタグループの識別子及びベクタグループの種別を対応付けて管理する。ここで、ベクタグループの種別は、第1のベクタグループ及び第2のベクタグループのいずれであるかを示す情報である。
図3では、ハイパバイザ200は、第1のI/Oデバイス103及び第2のI/Oデバイス103から構成される第1のベクタグループの統計情報250と、第3のI/Oデバイス103から構成される第2のベクタグループの統計情報250とを生成する。ハイパバイザ200は、割り込みが発生すると、いずれかの統計情報250を更新する。
なお、一つのカードに複数のコントローラが含まれる場合には以下のように扱われる。カード内の一つのコントローラによって管理されるデバイスがType1のI/Oデバイスとして認識される場合、複数のコントローラをまたいでゲスト側割込みベクタの割当てを変更できる。そのため、複数のコントローラから構成されるグループを、第1のベクタグループとして扱うことができる。一方、カード内の一つのコントローラによって管理されるデバイスがType2のI/Oデバイスとして認識される場合、コントローラ内でのみゲスト側割込みベクタの割当てを変更できる。そのため、一つのコントローラから構成されるグループを、第2のベクタグループとして扱うことができる。すなわち、ハイパバイザ200は、ハイパバイザ200自身がI/Oデバイス103として管理するデバイスをタイプ別にグループ化し、グループ毎にゲスト側割込みベクタの割当てを管理する。
次に、統計情報250及び割込みベクタ割当情報270についてについて説明する。
図4は、本発明の実施例1の割込みベクタ割当情報270の一例を示す説明図である。
割込みベクタ割当情報270は、ホスト側割込みベクタ601、ゲスト側割込みベクタ602、ゲストOS603、及びデバイス名604を含む。
ホスト側割込みベクタ601は、ホスト側割込みベクタの値を格納する。ゲスト側割込みベクタ602は、ゲスト側割込みベクタの値を格納する。ゲストOS603は、ゲストOSの識別子を格納する。デバイス名604は、ゲストOS603に割り当てられるI/Oデバイス103の識別子を格納する。
図5A及び図5Bは、本発明の実施例1の統計情報250の一例を示す説明図である。図5Aは第1のベクタグループの統計情報250を示し、図5Bは第2のベクタグループの統計情報250を示す。
統計情報250は、ID701、ゲスト側割込みベクタ702、ホスト側割込みベクタ703、ベクタ種別704、デバイス名705、及び統計値706を含む。
ID701は、統計情報におけるエントリを一意に識別するための識別子を格納する。ゲスト側割込みベクタ702は、ゲスト側割込みベクタの値を格納する。ホスト側割込みベクタ703は、ゲスト側割込みベクタ702に対応するゲスト側割込みベクタに割り当てられるホスト側割込みベクタの値を格納する。
ベクタ種別704は、ゲスト側割込みベクタ702に対応するゲスト側割込みベクタがユニーク割込みベクタ及び共有割込みベクタのいずれであるかを示す情報を格納する。ベクタ種別704に「ユニーク」が格納される場合、ゲスト側割込みベクタがユニーク割込みベクタであることを示し、ベクタ種別704に「共有」が格納される場合、ゲスト側割込みベクタが共有割込みベクタであることを示す。
デバイス名705は、ホスト側割込みベクタ703に対応するホスト側割込みベクタが割り当てられるI/Oデバイス103の識別子を格納する。統計値706は、ゲスト側割込みベクタ702に対応する割り込みが発生した数を格納する。図5Aに示すように、本実施例では、ハイパバイザ200は、ゲスト側割込みベクタを処理単位として統計値を管理する。
ここで、統計情報250の生成方法について説明する。
ハイパバイザ200は、物理ハードウェア100に含まれるI/Oデバイス103の種別を特定し、一つ以上のベクタグループを生成する。ハイパバイザ200は、生成されたベクタグループに識別子を付与する。
例えば、物理ハードウェア100に複数のType1のI/Oデバイスが含まれている場合、複数のType1のI/Oデバイスから構成される第1のベクタグループを一つ生成する。また、物理ハードウェア100に複数のType2のI/Oデバイスが含まれる場合、一つのType2のI/Oデバイスから構成される第2のベクタグループを複数生成する。
ハイパバイザ200は、生成されたベクタグループの中から一つベクタグループを選択する。ハイパバイザ200は、選択されたベクタグループを構成するI/Oデバイス103を全て特定する。さらに、ハイパバイザ200は、ベクタテーブル260を参照して、特定されたI/Oデバイス103に割り当てられるホスト側割込みベクタを特定する。さらに、ハイパバイザ200は、割込みベクタ割当情報270を参照して、ホスト側割込みベクタが割り当てられるゲスト側割込みベクタを特定する。
次に、ハイパバイザ200は、選択されたベクタグループの空の統計情報250を一つ生成する。
ハイパバイザ200は、特定されたゲスト側割込みベクタの中から処理対象のゲスト側割込みベクタを選択し、統計情報250に選択されたゲスト側割込みベクタに対して一つのエントリを追加する。なお、ハイパバイザ200は、一つのゲスト側割込みベクタを用いて複数の割込要因が管理されているか否かにかかわらず、一つのゲスト側割込みベクタ(番号)に対して一つのエントリを追加する。ハイパバイザ200は、追加されたエントリのID701に所定の識別子を設定し、また、統計値706に「0」を設定する。
ハイパバイザ200は、追加されたエントリのゲスト側割込みベクタ702にゲスト側割込みベクタを設定する。また、ハイパバイザ200は、割込みベクタ割当情報270を参照してゲスト側割込みベクタに対応するホスト側割込みベクタ及びI/Oデバイス103を特定し、追加されたエントリのホスト側割込みベクタ703に特定されたホスト側割込みベクタを設定し、また、当該エントリのデバイス名705に特定されたI/Oデバイスの識別子を設定する。
ハイパバイザ200は、割込みベクタ割当情報270を参照して、ゲスト側割込みベクタがユニーク割込みベクタ及び共有割込みベクタのいずれであるかを判定する。ゲスト側割込みベクタがユニーク割込みベクタである場合、ハイパバイザ200は、追加されたエントリのベクタ種別704に「ユニーク」を設定する。一方、ゲスト側割込みベクタが共有割込みベクタである場合、ハイパバイザ200は、追加されたエントリのベクタ種別704に「共有」を設定する。
ハイパバイザ200は、前述した処理を全てのゲスト側割込みベクタに対して実行する。他のベクタグループについても同様の処理を実行することによって統計情報250を生成できる。以上が、統計情報250の生成方法の説明である。
図6は、本発明の実施例1のハイパバイザ200及びゲストOS400が、割り込みが発生した場合に実行する処理の流れを説明するシーケンス図である。
まず、ゲスト側割込みベクタがユニーク割込みベクタである場合に実行される処理の流れについて説明する。ここでは、図3に示す、第3のI/Oデバイス103に割り当てられたホスト側割込みベクタである「ベクタ04」を例に説明する。
第3のI/Oデバイス103は、「ベクタ04」に対応する割込要因が発生すると、ハイパバイザ200に「ベクタ04」を含む割り込みを通知する(ステップS101)。
ハイパバイザ200は、割込みベクタ割当情報270を参照して、割り込みの通知に含まれるホスト側割込みベクタが割り当てられたゲスト側割込みベクタを含む割り込みを、第1のゲストOS400に通知する(ステップS102)。具体的には、以下のような処理が実行される。
ハイパバイザ200は、割り込みの通知を受けつけると、ベクタテーブル260を参照して、割り込みを通知したI/Oデバイス103を特定する。さらに、ハイパバイザ200は、割込みベクタ割当情報270を参照して、割り込みの通知に含まれる「ベクタ04」が割り当てられるゲスト側割込みベクタを特定する。ハイパバイザ200は、特定されたゲスト側割込みベクタがユニーク割込みベクタであるか否かを判定する。
ここでは、「ベクタ04」は第1のゲストOS400が管理するゲスト側割込みベクタである「ベクタ14」にのみ割り当てられているため、ハイパバイザ200は、「ベクタ14」がユニーク割込みベクタであると判定する。これによって、ハイパバイザ200は、割込要因を特定するために割込要因レジスタ500にアクセスする必要がないことが分かる。
ハイパバイザ200は、割込みベクタ割当情報270に基づいて、「ベクタ14」を含む割り込みを第1のゲストOS400に通知する。以上がステップS102の処理の説明である。
第1のゲストOS400は、ハイパバイザから「ベクタ14」を含む割り込みの通知を受けつけると、「ベクタ14」に対応する割込処理を実行する(ステップS103)。
具体的には、第1のゲストOS400は、第1のゲストOS400が管理するベクタテーブルを参照して、「ベクタ14」に対応する割込みハンドラを呼び出す。
このとき、ハイパバイザ200は、第1のゲストOS400に割り込みを通知した後、第2のベクタグループの統計情報250を更新する(ステップS104)。具体的には、以下のような処理が実行される。
ハイパバイザ200は、ステップS102において特定された第3のI/Oデバイス103が所属するベクタグループを特定する。ここでは、ハイパバイザ200は、第3のI/Oデバイス103が第2のベクタグループに所属することを特定する。
ハイパバイザ200は、第2のベクタグループの統計情報250を参照し、ゲスト側割込みベクタ702が「ベクタ14」であるエントリを検索する。ハイパバイザ200は、検索されたエントリの統計値706の値を「1」加算する。以上がステップS104の処理の説明である。
次に、ゲスト側割込みベクタが共有割込みベクタである場合に実行される処理の流れについて説明する。ここでは、図3に示す、第1のI/Oデバイス103に割り当てられたホスト側割込みベクタである「ベクタ01」を例に説明する。
第1のI/Oデバイス103は、「ベクタ01」に対応する割込要因が発生すると、ハイパバイザ200に「ベクタ01」を含む割り込みを通知する(ステップS111)。
ハイパバイザ200は、第1のI/Oデバイス103の割込要因レジスタ500にアクセスし(ステップS112)、割込要因レジスタ500に格納される値を取得する(ステップS113)。具体的には、以下のような処理が実行される。
ハイパバイザ200は、割り込みの通知を受けつけると、ベクタテーブル260を参照して、割り込みを通知したI/Oデバイス103を特定する。さらに、ハイパバイザ200は、割込みベクタ割当情報270を参照して、割り込みの通知に含まれる「ベクタ01」が割り当てられるゲスト側割込みベクタを特定する。ハイパバイザ200は、特定されたゲスト側割込みベクタがユニーク割込みベクタであるか否かを判定する。
ここでは、ハイパバイザ200は、割込みベクタ割当情報270に基づいて、「ベクタ01」が第1のゲストOS400が管理するゲスト側割込みベクタである「ベクタ11」及び「ベクタ13」に割り当てられていることを特定する。さらに、ハイパバイザ200は、「ベクタ11」及び「ベクタ13」が共有割込みベクタであると判定する。
ハイパバイザ200は、割込みベクタ割当情報270を参照して、割り込みの発生元が第1のI/Oデバイス103であることを特定する。ハイパバイザ200は、割込みベクタ割当情報270を参照して、第1のI/Oデバイス103が第2のゲストOS400に割り当てられていることを特定する。ハイパバイザ200は、第1のI/Oデバイス103の割込要因レジスタ500から値を取得する。ここでは、ハイパバイザ200が「ベクタ11」への割り込みであることを特定したものとする。以上がステップS112及びステップS113の処理の説明である。
ハイパバイザ200は、割込みベクタ割当情報270に基づいて、ゲスト側割込みベクタを特定し、特定されたゲスト側割込みベクタを含む割り込みを第2のゲストOS400に通知する(ステップS114)。ここでは、ハイパバイザ200は、「ベクタ11」を含む割り込みを、第1のゲストOS400に通知するものとする。
第2のゲストOS400は、ハイパバイザ200から「ベクタ11」を含む割り込みの通知を受けつけると、「ベクタ11」に対応する割込処理を実行する(ステップS115)。
具体的には、第2のゲストOS400は、第2のゲストOS400が管理するベクタテーブルを参照して、「ベクタ11」に対応する割込みハンドラを呼び出す。
このとき、ハイパバイザ200は、第2のゲストOS400に割り込みを通知した後、第1のベクタグループの統計情報250を更新する(ステップS116)。具体的には、以下のような処理が実行される。
ハイパバイザ200は、ステップS112において特定された第1のI/Oデバイス103が所属するベクタグループを特定する。ここでは、ハイパバイザ200は、第1のI/Oデバイス103が第1のベクタグループに所属することを特定する。
ハイパバイザ200は、第1のベクタグループの統計情報250を参照する。ハイパバイザ200は、ゲスト側割込みベクタ702が「ベクタ11」であるエントリを検索する。ハイパバイザ200は、検索されたエントリの統計値706の値を「1」加算する。以上がステップS116の処理の説明である。
図5を用いて説明したように、ゲスト側割込みベクタがユニーク割込みベクタである場合、I/Oデバイス103の割込要因レジスタ500へのアクセスは発生しない。一方、ゲスト側割込みベクタが共有割込みベクタである場合、I/Oデバイス103の割込要因レジスタ500へのアクセスが発生する。ステップS112及びステップS113の処理は、オーバーヘッドが最も大きい処理である。
図7A及び図7Bは、本発明の実施例1のハイパバイザ200が実行する割込みベクタの割当変更処理を説明するフローチャートである。
ハイパバイザ200のベクタ割当変更部230が割込みベクタの割当変更処理を実行する。ベクタ割当変更部230には、予め、処理の回数を示す閾値が設定されているものとする。また、処理対象のベクタグループの識別子を入力することもできる。
ベクタ割当変更部230は、周期的に、又は、ユーザから指示を受け付けると処理を開始する。このとき、ベクタ割当変更部230は、処理の開始時に、割込みベクタの変更が可能であるか否かを判定してもよい。
例えば、ベクタ割当変更部230は、物理ハードウェア100に含まれるI/Oデバイス103が全てType3のI/Oデバイスであるか否かを判定する。I/Oデバイス103が全てType3のI/Oデバイスである場合、ベクタ割当変更部230は、割込みベクタの割当て変更処理を実行しない。これは、共有割込みベクタの設定ができないためである。また、ベクタ割当変更部230は、物理計算機10に設定可能なホスト側割込みベクタの数が「2」以上であるか否かを判定する。物理計算機10に設定可能なホスト側割込みベクタの数が「2」より小さい場合、ベクタ割当変更部230は、割込みベクタの割当変更処理を実行しない。これは、共有割込みベクタの設定ができないためである。
ベクタ割当変更部230は、ベクタグループのループ処理を開始する(ステップS201)。具体的には、ベクタ割当変更部230は、ベクタグループの中から処理対象のベクタグループを選択し、選択されたベクタグループの統計情報250を取得する。なお、予め処理対象のベクタグループが指定されている場合には、ベクタ割当変更部230は、指定されたベクタグループのみを選択する。
ベクタ割当変更部230は、選択されたベクタグループに含まれるI/Oデバイス103に設定されたホスト側割込みベクタの数が「2」以上であるか否かを判定する(ステップS202)。
具体的には、ベクタ割当変更部230は、ベクタテーブル260を参照して、I/Oデバイス103に設定されるホスト側割込みベクタの数を算出する。ベクタ割当変更部230は、算出されたホスト側割込みベクタの数が「2」以上であるか否かを判定する。
選択されたベクタグループに含まれるI/Oデバイス103に設定されたホスト側割込みベクタの数が「2」より小さいと判定された場合、ベクタ割当変更部230は、統計情報250を初期化し(ステップS209)、ステップS210に進む。具体的には、ベクタ割当変更部230は、統計値706の値を「0」に設定する。
選択されたベクタグループに含まれるI/Oデバイス103に設定されたホスト側割込みベクタの数が「2」以上であると判定された場合、ベクタ割当変更部230は、選択されたベクタグループが第1のベクタグループであるか否かを判定する(ステップS203)。具体的には、ベクタ割当変更部230は、ベクタグループの種別に基づいて、選択されたベクタグループが第1のベクタグループであるか否かを判定する。
選択されたベクタグループが第1のベクタグループであると判定された場合、ベクタ割当変更部230は、選択されたベクタグループの統計情報250に基づいて、変更対象のユニーク割込みベクタ及び共有割込みベクタを選択する(ステップS204)。
具体的には、ベクタ割当変更部230は、ベクタ種別704に「共有」が設定されるエントリの中から、統計値706の値が最も大きいエントリを選択する。また、ベクタ割当変更部230は、ベクタ種別704に「ユニーク」が設定されるエントリの中から、統計値706の値が最も小さいエントリを選択する。
ベクタ割当変更部230は、ユニーク割込みベクタと共有割込みベクタとの間の割当てを変更できるか否かを判定する(ステップS205)。
具体的には、ベクタ割当変更部230は、共有割込みベクタに対応するエントリの統計値706の値(SVecMax)が、ユニーク割込みベクタに対応するエントリの統計値706の値(UVecMin)より大きいか否かを判定する。すなわち、下式(1)を満たすか否か判定される。式(1)を満たす場合、ベクタ割当変更部230は、ユニーク割込みベクタと共有割込みベクタの割当てを変更できると判定する。
Figure 2015132942
ユニーク割込みベクタと共有割込みベクタとの間の割当てを変更できないと判定された場合、ベクタ割当変更部230は、統計情報250を初期化し(ステップS209)、ステップS210に進む。具体的には、ベクタ割当変更部230は、統計値706の値を「0」に設定する。
ユニーク割込みベクタと共有割込みベクタとの間の割当てを変更できると判定された場合、ベクタ割当変更部230は、割込みベクタの割当てを変更する(ステップS206)。すなわち、ベクタ割当変更部230は、割込みベクタ割当情報270を更新する。
具体的には、ベクタ割当変更部230は、共有割込みベクタに対応するエントリのホスト側割込みベクタ601に、ユニーク割込みベクタに割り当てられたホスト側割込みベクタを設定し、ユニーク割込みベクタにエントリのホスト側割込みベクタ601に、共有割込みベクタに割り当てられたホスト側割込みベクタを設定する。
このとき、ハイパバイザ200は、単に、ゲスト側割込みベクタに対するホスト側割込みベクタの割り当てを変更するだけではなく、I/Oデバイス103に対するホスト側割込みベクタの割り当ても変更する。
ベクタ割当変更部230は、ユニーク割込みベクタ及び共有割込みベクタに対応するエントリを選択できないように制御する。これは、同一の処理が繰り返し実行される場合に、すでに変更されたゲスト側割込みベクタが選択されないようにするためである。
ベクタ割当変更部230は、統計情報250についても以下のように変更する。すなわち、ベクタ割当変更部230は、共有割込みベクタに対応するエントリのホスト側割込みベクタ703に、ユニーク割込みベクタに割り当てられたホスト側割込みベクタを設定し、ユニーク割込みベクタに対応するエントリのホスト側割込みベクタ703に、共有割込みベクタに割り当てられたホスト側割込みベクタを設定する。
前述した処理によって、共有割込みベクタに割り当てられるホスト側割込みベクタが、ユニーク割込みベクタに割り当てられるホスト側割込みベクタに変更され、ユニーク割込みベクタに割り当てられるホスト側割込みベクタが、共有割込みベクタに割り当てられるホスト側割込みベクタに変更される。
ベクタ割当変更部230は、ユニーク割込みベクタと共有割込みベクタとの間の割当ての変更回数が、閾値より小さいか否かを判定する(ステップS207)。
変更回数が閾値以上である場合、ベクタ割当変更部230は、統計情報250を初期化し(ステップS209)、ステップS210に進む。具体的には、ベクタ割当変更部230は、統計値706の値を「0」に設定する。
変更回数が閾値より小さいと判定された場合、ホスト側割込みベクタの数から変更回数を減算した数が「2」以上であるか否かを判定する(ステップS208)。
ホスト側割込みベクタの数から変更回数を減算した数が「2」以上であると判定された場合、ベクタ割当変更部230は、ステップS204に戻り同様の処理を実行する。
ホスト側割込みベクタの数から変更回数を減算した数が「2」より小さいと判定された場合、ベクタ割当変更部230は、統計情報250を初期化し(ステップS209)、ステップS210に進む。具体的には、ベクタ割当変更部230は、統計値706の値を「0」に設定する。
ベクタ割当変更部230は、統計情報250を初期化した後、全てのベクタグループについて処理が完了したか否かを判定する(ステップS210)。
全てのベクタグループについて処理が完了していないと判定された場合、ベクタ割当変更部230は、ステップS201に戻り、新たなベクタグループに対して同様の処理を実行する。
全てのベクタグループについて処理が完了したと判定された場合、ベクタ割当変更部230は、処理を終了する。
ステップS203において、選択されたベクタグループが第2のベクタグループであると判定された場合、ベクタ割当変更部230は、選択されたベクタグループの統計情報250に基づいて、変更対象のユニーク割込みベクタ及び共有割込みベクタを選択する(ステップS211)。ステップS211からステップS216の処理は、ステップS204からステップS209と同一の処理であるため説明を省略する。
第1のベクタグループに対する処理と第2のベクタグループに対する処理とでは、以下のような違いがある。第1のベクタグループの場合、複数のType1のI/Oデバイスに設定されたホスト側割込みベクタに対してゲスト側割込みベクタの割当てが変更される。一方、第2のベクタグループの場合、一つのType2のI/Oデバイスに設定されたホスト側割込みベクタに対してゲスト側割込みベクタの割当てが変更される。
割込みベクタの割当変更処理を実行することによって、ゲスト側割込みベクタに対するホスト側割込みベクタの割当て状態が最適化される。これによって、計算機システム全体におけるオーバーヘッドを低減できる。
ここで、図8及び図9を用いて、割込みベクタの割当変更処理の具体的な処理結果について説明する。以下の説明では、ステップS201において、図3に示す第1のベクタグループが選択されたものとする。また、処理の回数を示す閾値は「1」であるものとする。
図8は、本発明の実施例1のゲスト側割込みベクタに対するホスト側割込みベクタの割当て状態を示す説明図である。図9は、本発明の実施例1の割込みベクタ割当情報270を示す説明図である。図8及び図9は、割込みベクタの割当変更処理が実行された後の状態を示す。
ステップS202では、「ベクタ01」、「ベクタ02」、及び「ベクタ03」の三つホスト側割込みベクタが存在するため、ホスト側割込みベクタの数は「3」と算出される。したがって、ベクタ割当変更部230は、選択されたベクタグループに含まれるI/Oデバイス103に設定されるホスト側割込みベクタの数は「2」以上であると判定する。
ステップS204では、ベクタ割当変更部230は、ユニーク割込みベクタとして「ベクタ21」を選択し、共有割込みベクタとして「ベクタ11」を選択する。
ステップS205では、「ベクタ21」に対応するエントリの統計値706の値は、「ベクタ21」に対応するエントリの統計値706の値より大きいため、式(1)を満たす。したがって、ベクタ割当変更部230は、ユニーク割込みベクタと共有割込みベクタとの間の割当てを変更できると判定する。
ステップS206では、ベクタ割当変更部230は、ゲスト側割込みベクタ602が「ベクタ11」であるエントリのホスト側割込みベクタ601を「ベクタ01」から「ベクタ02」に変更する。また、ベクタ割当変更部230は、ゲスト側割込みベクタ602が「ベクタ21」であるエントリのホスト側割込みベクタ601を「ベクタ02」から「ベクタ01」に変更する。これによって、共有割込みベクタであった「ベクタ11」はユニーク割込みベクタに変更され、ユニーク割込みベクタであった「ベクタ21」は共有割込みベクタに変更される。
実施例1では、統計情報250に基づいて、ゲスト側割込みベクタに対するホスト側割込みベクタの割当てが変更されていた。実施例2では、ゲストOS400における割込要因のランクに基づいて、ゲスト側割込みベクタに対するホスト側割込みベクタの割当てが変更される。
実施例2の物理計算機10、I/Oデバイス103の構成は実施例1と同一であるため説明を省略する。なお、実施例2では、割込コントローラ203は、統計情報250を保持していなくてもよい。第2の実施例の割込みベクタ割当情報270は、実施例1と同一であるため説明を省略する。実施例2では、割込みベクタの割当変更処理の内容が異なる。
図10は、本発明の実施例2のハイパバイザ200が実行する割込みベクタの割当変更処理を説明するフローチャートである。
ベクタ割当変更部230は、ゲスト側割込みベクタのランク情報を受け付けると処理を開始する(ステップS301)。ここで、ゲスト側割込みベクタのランク情報は、ゲストOS400における割込要因の優先順位を示す情報であり、ゲスト側割込みベクタと優先順位とが対応付けられる。
ベクタ割当変更部230は、ゲスト側割込みベクタのループ処理を開始する(ステップS302)。具体的には、ベクタ割当変更部230は、ランク情報の中から、最も優先順位が高いゲスト側割込みベクタを選択する。
ベクタ割当変更部230は、選択されたゲスト側割込みベクタに対応するI/Oデバイス103に設定されるホスト側割込みベクタの数が「2」以上であるか否かを判定する(ステップS303)。ステップS303の処理はステップS202の処理と同一の処理である。
具体的には、ベクタ割当変更部230は、割込みベクタ割当情報270を参照して、選択されたゲスト側割込みベクタに割り当てられるホスト側割込みベクタが設定されたI/Oデバイス103を特定する。ベクタ割当変更部230は、ベクタテーブル260を参照して、当該I/Oデバイス103に設定されたホスト側割込みベクタの数を算出する。
I/Oデバイス103に設定されたホスト側割込みベクタの数が「2」より小さいと判定された場合、ベクタ割当変更部230は、ループ処理を終了し、また、割込みベクタ割当変更処理を終了する。
I/Oデバイス103に設定されたホスト側割込みベクタの数が「2」以上であると判定された場合、ベクタ割当変更部230は、割込みベクタ割当情報270を参照して、選択されたゲスト側割込みベクタがユニーク割込みベクタであるか否かを判定する(ステップS304)。
選択されたゲスト側割込みベクタがユニーク割込みベクタであると判定された場合、ベクタ割当変更部230は、ステップS310に進む。
選択されたゲスト側割込みベクタがユニーク割込みベクタでないと判定された場合、ベクタ割当変更部230は、ランク情報及び割込みベクタ割当情報270に基づいて、変更対象のユニーク割込みベクタを選択する(ステップS305)。具体的には、以下のような処理が実行される。
ベクタ割当変更部230は、割込みベクタ割当情報270を参照して、ベクタ種別704に「ユニーク」が設定されるエントリを検索し、検索されたエントリのホスト側割込みベクタ601の値を取得する。
ベクタ割当変更部230は、取得されたホスト側割込みベクタに基づいてランク情報を参照して、ユニーク割込みベクタの優先順位を取得する。ベクタ割当変更部230は、ユニーク割込みベクタが複数存在する場合、取得された各ユニーク割込みベクタの優先順位を比較する。ベクタ割当変更部230は、最も優先順位が低いユニーク割込みベクタを、変更対象のユニーク割込みベクタとして選択する。
ベクタ割当変更部230は、ユニーク割込みベクタと共有割込みベクタとの間の割当てを変更できるか否かを判定する(ステップS306)。
具体的には、ベクタ割当変更部230は、共有割込みベクタの優先順位が、ユニーク割込みベクタの優先順位より高いか否かを判定する。共有割込みベクタの優先順位が、ユニーク割込みベクタの優先順位より高い場合、ベクタ割当変更部230は、ユニーク割込みベクタと共有割込みベクタとの間の割当てを変更できると判定する。
ユニーク割込みベクタと共有割込みベクタとの間の割当てを変更できないと判定された場合、ベクタ割当変更部230は、ループ処理を終了し、また、割込みベクタ割当変更処理を終了する。
ユニーク割込みベクタと共有割込みベクタとの間の割当てを変更できると判定された場合、ベクタ割当変更部230は、割込みベクタ割当情報270を更新する(ステップS307)。すなわち、ベクタ割当変更部230は、共有割込みベクタに割り当てられるホスト側割込みベクタと、ユニーク割込みベクタに割り当てられるホスト側割込みベクタとを入れ替える。なお、ステップS307の処理は、ステップS206の処理と同一であるため説明を省略する。
ベクタ割当変更部230は、ユニーク割込みベクタと共有割込みベクタとの間の割当ての変更回数が、閾値より小さいか否かを判定する(ステップS308)。ステップS308の処理は、ステップS207と同一の処理である。
変更回数が閾値以上である場合、ベクタ割当変更部230は、ループ処理を終了し、また、割込みベクタ割当変更処理を終了する。
変更回数が閾値より小さいと判定された場合、ホスト側割込みベクタの数から変更回数を減算した数が「2」以上であるか否かを判定する(ステップS309)。ステップS309の処理は、ステップS208の処理と同一の処理である。
ホスト側割込みベクタの数から変更回数を減算した数が「2」以上であると判定された場合、ベクタ割当変更部230は、ステップS310に進む。
ホスト側割込みベクタの数から変更回数を減算した数が「2」より小さいと判定された場合、ベクタ割当変更部230は、ループ処理を終了し、また、割込みベクタ割当変更処理を終了する。
ステップS310において、ベクタ割当変更部230は、全てのゲスト側割込みベクタについて処理が完了したか否かを判定する(ステップS310)。
全てのゲスト側割込みベクタについて処理が完了していないと判定された場合、ベクタ割当変更部230は、ステップS302に戻り、新たなゲスト側割込みベクタに対して同様の処理を実行する。
全てのゲスト側割込みベクタについて処理が完了したと判定された場合、ベクタ割当変更部230は、割込みベクタ割当変更処理を終了する。
以上説明したように、本発明によれば、ハイパバイザ200は、統計情報250又はランク情報に基づいて、ゲスト側割込みベクタに対するホスト側割込みベクタの割当状態を解析し、解析結果に基づいて、ゲスト側割込みベクタに対するホスト側割込みベクタの割当てを変更する。
統計情報250に基づいて割込みベクタの割当てが変更された場合、アクセス頻度が高い割込要因に対応するゲスト側割込みベクタが、優先的にユニーク割込みベクタとなるためオーバーヘッドを低減することができる。また、ランク情報に基づいて割込みベクタの割当てが変更された場合、優先順位が高いゲスト側割込みベクタがユニーク割込みベクタとなるためオーバーヘッドを低減することができる。
なお、仮想計算機をLPARとして説明したが、本発明はこれに限定されない。複数の仮想計算機が同一の物理ハードウェア100を共有する割り当て方式でも同様の構成を実現することができる。この場合、仮想計算機に割り当てられるI/Oデバイス103は時間毎に異なる。そのため、前述した方式を用いた仮想計算機の場合、I/Oデバイス103の割り当ても管理する必要がある点が異なる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java等の広範囲のプログラム又はスクリプト言語で実装できる。
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD−RW、CD−R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
I/Oデバイスには、Host Bus Adapter (HBA)、Network Interface Card (NIC)等のネットワークアダプタが含まれる。各仮想計算機上で稼動するゲストOSは、当該仮想計算機に割り当てられたI/Oデバイスを介して、ネットワークに接続される、記憶装置などの外部装置へアクセスすることができる。
複数のType2のI/Oデバイスを用いて、複数のゲスト側割込みベクタがホスト側割込みベクタを共有する場合、ハイパバイザ200は、割込要因を特定するために割込要因レジスタ500にアクセスする必要がある。しかし、Type2のI/Oデバイスはハイパバイザ200からアクセスされると割込要因レジスタ500に格納される値が消去される。そのため、複数の割込が同時に発生した場合、割込要因を特定することが困難になる。前述したような理由によって、本実施例のハイパバイザ200は、複数のType2のI/Oデバイスを用いてホスト側割込みベクタが共有されないように制御する。なお、ホスト側割込みベクタの共有については図3を用いて後述する。
ハイパバイザ200は、割込みベクタ割当情報270に基づいて、ゲスト側割込みベクタを特定し、特定されたゲスト側割込みベクタを含む割り込みを第2のゲストOS400に通知する(ステップS114)。ここでは、ハイパバイザ200は、「ベクタ11」を含む割り込みを、第2のゲストOS400に通知するものとする。
ステップS205では、「ベクタ11」に対応するエントリの統計値706の値は、「ベクタ21」に対応するエントリの統計値706の値より大きいため、式(1)を満たす。したがって、ベクタ割当変更部230は、ユニーク割込みベクタと共有割込みベクタとの間の割当てを変更できると判定する。

Claims (10)

  1. 複数のオペレーティングシステムが稼動する計算機であって、
    前記計算機は、物理リソースとして、プロセッサ、前記プロセッサに接続される揮発性メモリ、前記プロセッサに接続される不揮発性メモリ、及び前記プロセッサに接続される少なくとも一つのI/Oデバイスを備え、
    前記物理リソースを用いて少なくとも一つの仮想計算機を生成し、前記少なくとも一つの仮想計算機を管理する仮想化機能部を備え、
    前記少なくとも一つの仮想計算機上では、オペレーティングシステムが稼動し、
    前記オペレーティングシステムは、
    当該オペレーティングシステムが稼動する仮想計算機に割り当てられる仮想的なI/Oデバイスが割り込みを通知するために設定されたゲスト側割込みベクタを管理するための第1のベクタ情報を保持し、
    前記仮想化機能部は、前記少なくとも一つのI/Oデバイスからの割り込み通知に対する処理を実行する割込コントローラを含み、
    前記割込コントローラは、
    前記物理リソースに含まれる前記少なくとも一つのI/Oデバイスが割り込みを通知するために設定されたホスト側割込みベクタを管理するための第2のベクタ情報と、
    前記ゲスト側割込みベクタに対する前記ホスト側割込みベクタの割当てを管理するための割込みベクタ割当情報と、を保持し、
    前記ゲスト側割込みベクタは、一つの前記ゲスト側割込みベクタに一つの前記ホスト側割込みベクタが割り当てられたユニーク割込みベクタ、及び、複数の前記ゲスト側割込みベクタに一つの前記ホスト側割込みベクタが割り当てられた共有割込みベクタを含み、
    前記割込コントローラは、
    前記ホスト側割込みベクタを含む割り込み通知を受けつけた場合、前記割込みベクタ割当情報に基づいて、当該ホスト側割込みベクタが割り当てられる前記ゲスト側割込みベクタを特定し、
    前記特定されたゲスト側割込みベクタが前記ユニーク割込みベクタである場合、前記第2のベクタ情報及び前記割込みベクタ割当情報に基づいて、前記オペレーティングシステムに当該特定されたゲスト側割込みベクタを含む割り込みを通知し、
    前記特定されたゲスト側割込みベクタが前記共有割込みベクタである場合、前記第2のベクタ情報及び前記割込みベクタ割当情報に基づいて、前記ホスト側割込みベクタが割り当てられる前記I/Oデバイスにアクセスすることによって、前記ゲスト側割込みベクタ及び割り込み先の前記オペレーティングシステムを特定し、前記特定されたオペレーティングシステムに、当該特定されたゲスト側割込みベクタを含む割り込みを通知し、
    前記ゲスト側割込みベクタに対する前記ホスト側割込みベクタの割当て状態を解析し、
    前記解析の結果に基づいて、前記ゲスト側割込みベクタに対する前記ホスト側割込みベクタの割当てを変更することを特徴とする計算機。
  2. 請求項1に記載の計算機であって、
    前記割込コントローラは、
    前記ゲスト側割込みベクタ毎の割り込みの発生回数を管理するための統計情報を保持し、
    前記統計情報に基づいて、複数の共有割込みベクタの中から処理対象の共有割込みベクタを選択し、複数のユニーク割込みベクタの中から処理対象のユニーク割込みベクタを選択し、
    前記共有割込みベクタを前記ユニーク割込みベクタに変更し、前記ユニーク割込みベクタを前記共有割込みベクタに変更することを特徴とする計算機。
  3. 請求項2に記載の計算機であって、
    前記割込コントローラは、
    前記複数の共有割込みベクタの中から、前記割り込みの発生回数が最も大きい共有割込みベクタを検索し、
    前記複数のユニーク割込みベクタの中から、前記割り込みの発生回数が最も小さいユニーク割込みベクタを検索し、
    前記検索された共有割込みベクタに割り当てられるホスト側割込みベクタを、前記検索されたユニーク割込みベクタに割り当てられるホスト側割込みベクタに変更し、
    前記検索されたユニーク割込みベクタに割り当てられるホスト側割込みベクタを、前記検索された共有割込みベクタに割り当てられるホスト側割込みベクタに変更することを特徴とする計算機。
  4. 請求項2に記載の計算機であって、
    前記物理リソースは、複数のI/Oデバイスを含み、
    前記複数のI/Oデバイスの各々は、割り込みの要因を示す値を格納する割込要因レジスタを含み、
    前記複数のI/Oデバイスは、
    前記仮想化機能部が前記割込要因レジスタにアクセスした場合に、前記割込要因レジスタの値が保持されたままの状態となる複数の第1のI/Oデバイスと、
    前記仮想化機能部が前記割込要因レジスタにアクセスした場合に、前記割込要因レジスタの値が消去された状態となる複数の第2のI/Oデバイスと、を含み、
    前記割込コントローラは、
    前記複数の第1のI/Oデバイスから構成される第1のベクタグループを生成し、
    前記第1のベクタグループに含まれる前記複数の第1のI/Oデバイスの各々に設定される前記ホスト側割込みベクタが割り当てられる前記ゲスト側割込みベクタの前記割り込みの発生回数を管理するための前記統計情報を生成し、
    一つの第2のI/Oデバイスから構成される第2のベクタグループを生成し、
    前記第2のI/Oデバイスに設定される前記ホスト側割込みベクタが割り当てられる前記ゲスト側割込みベクタの前記割り込みの発生回数を管理するための前記統計情報を生成し、
    前記ゲスト側割込みベクタの割当てを変更する場合に、処理対象のベクタグループを選択し、前記選択されたベクタグループに対応する前記統計情報を参照して、前記処理対象の共有割込みベクタ及び前記処理対象のユニーク割込みベクタを選択することを特徴とする計算機。
  5. 請求項1に記載の計算機であって、
    前記割込コントローラは、
    前記ゲスト側割込みベクタの優先順位を示すランク情報を受信し、
    前記ランク情報に基づいて、複数の共有割込みベクタの中から処理対象の共有割込みベクタを選択し、
    前記ランク情報に基づいて、複数のユニーク割込みベクタの中から処理対象のユニーク割込みベクタを選択し、
    前記共有割込みベクタを前記ユニーク割込みベクタに変更し、前記ユニーク割込みベクタを前記共有割込みベクタに変更することを特徴とする計算機。
  6. 複数のオペレーティングシステムが稼動する計算機における割込みベクタ管理方法であって、
    前記計算機は、
    物理リソースとして、プロセッサ、前記プロセッサに接続される揮発性メモリ、前記プロセッサに接続される不揮発性メモリ、及び前記プロセッサに接続される少なくとも一つのI/Oデバイスを備え、
    前記物理リソースを用いて少なくとも一つの仮想計算機を生成し、前記少なくとも一つの仮想計算機を管理する仮想化機能部を備え、
    前記少なくとも一つの仮想計算機上では、オペレーティングシステムが稼動し、
    前記オペレーティングシステムは、
    当該オペレーティングシステムが稼動する仮想計算機に割り当てられる仮想的なI/Oデバイスが割り込みを通知するために設定されたゲスト側割込みベクタを管理するための第1のベクタ情報を保持し、
    前記仮想化機能部は、前記少なくとも一つのI/Oデバイスからの割り込み通知に対する処理を実行する割込コントローラを含み、
    前記割込コントローラは、
    前記物理リソースに含まれる前記少なくとも一つのI/Oデバイスが割り込みを通知するために設定されたホスト側割込みベクタを管理するための第2のベクタ情報と、
    前記ゲスト側割込みベクタに対する前記ホスト側割込みベクタの割当てを管理するための割込みベクタ割当情報と、を保持し、
    前記ゲスト側割込みベクタは、一つの前記ゲスト側割込みベクタに一つの前記ホスト側割込みベクタが割り当てられたユニーク割込みベクタ、及び、複数の前記ゲスト側割込みベクタに一つの前記ホスト側割込みベクタが割り当てられた共有割込みベクタを含み、
    前記割込みベクタ管理方法は、
    前記割込コントローラが、前記ホスト側割込みベクタを含む割り込み通知を受けつけた場合、前記割込みベクタ割当情報に基づいて、当該ホスト側割込みベクタが割り当てられる前記ゲスト側割込みベクタを特定する第1のステップと、
    前記割込コントローラが、前記特定されたゲスト側割込みベクタが前記ユニーク割込みベクタである場合、前記第2のベクタ情報及び前記割込みベクタ割当情報に基づいて、前記オペレーティングシステムに当該特定されたゲスト側割込みベクタを含む割り込みを通知する第2のステップと、
    前記割込コントローラが、前記特定されたゲスト側割込みベクタが前記共有割込みベクタである場合、前記第2のベクタ情報及び前記割込みベクタ割当情報に基づいて、前記ホスト側割込みベクタが割り当てられる前記I/Oデバイスにアクセスすることによって、前記ゲスト側割込みベクタ及び割り込み先の前記オペレーティングシステムを特定し、前記特定されたオペレーティングシステムに、当該特定されたゲスト側割込みベクタを含む割り込みを通知する第3のステップと、
    前記割込コントローラが、前記ゲスト側割込みベクタの割当て状態を解析する第4のステップと、
    前記割込コントローラが、前記解析の結果に基づいて、前記ゲスト側割込みベクタに対する前記ホスト側割込みベクタの割当てを変更する第5のステップと、を含むことを特徴とする割込みベクタ管理方法。
  7. 請求項6に記載の割込みベクタ管理方法であって、
    前記割込コントローラは、前記ゲスト側割込みベクタ毎の割り込みの発生回数を管理するための統計情報を保持し、
    前記第4のステップは、前記統計情報に基づいて、複数の共有割込みベクタの中から処理対象の共有割込みベクタを選択し、複数のユニーク割込みベクタの中から処理対象のユニーク割込みベクタを選択する第6のステップを含み、
    前記第5のステップは、前記共有割込みベクタを前記ユニーク割込みベクタに変更し、前記ユニーク割込みベクタを前記共有割込みベクタに変更する第7のステップを含むことを特徴とする割込みベクタ管理方法。
  8. 請求項7に記載の割込みベクタ管理方法であって、
    前記第6のステップは、
    前記複数の共有割込みベクタの中から、前記割り込みの発生回数が最も大きい共有割込みベクタを検索するステップと、
    前記複数のユニーク割込みベクタの中から、前記割り込みの発生回数が最も小さいユニーク割込みベクタを検索するステップと、を含み、
    前記第7のステップは、
    前記検索された共有割込みベクタに割り当てられるホスト側割込みベクタを、前記検索されたユニーク割込みベクタに割り当てられるホスト側割込みベクタに変更するステップと、
    前記検索されたユニーク割込みベクタに割り当てられるホスト側割込みベクタを、前記検索された共有割込みベクタに割り当てられるホスト側割込みベクタに変更するステップと、を含むことを特徴とする割込みベクタ管理方法。
  9. 請求項7に記載の割込みベクタ管理方法であって、
    前記物理リソースは、複数のI/Oデバイスを含み、
    前記複数のI/Oデバイスの各々は、割り込みの要因を示す値を格納する割込要因レジスタを含み、
    前記複数のI/Oデバイスは、
    前記仮想化機能部が前記割込要因レジスタにアクセスした場合に、前記割込要因レジスタの値が保持されたままの状態となる複数の第1のI/Oデバイスと、
    前記仮想化機能部が前記割込要因レジスタにアクセスした場合に、前記割込要因レジスタの値が消去された状態となる複数の第2のI/Oデバイスと、を含み、
    前記割込みベクタ管理方法は、
    前記割込コントローラが、前記複数の第1のI/Oデバイスから構成される第1のベクタグループを生成するステップと、
    前記割込コントローラが、前記第1のベクタグループに含まれる前記複数の第1のI/Oデバイスの各々に設定される前記ホスト側割込みベクタが割り当てられる前記ゲスト側割込みベクタの前記割り込みの発生回数を管理するための前記統計情報を生成するステップと、
    前記割込コントローラが、一つの第2のI/Oデバイスから構成される第2のベクタグループを生成するステップと、
    前記割込コントローラが、前記第2のI/Oデバイスに設定される前記ホスト側割込みベクタが割り当てられる前記ゲスト側割込みベクタの前記割り込みの発生回数を管理するための前記統計情報を生成するステップと、を含み、
    前記第4のステップは、
    処理対象のベクタグループを選択するステップと、
    前記選択されたベクタグループに対応する前記統計情報を参照して、前記処理対象の共有割込みベクタ及び前記処理対象のユニーク割込みベクタを選択するステップと、を含むことを特徴とする割込みベクタ管理方法。
  10. 請求項6に記載の割込みベクタ管理方法であって、
    前記第4のステップは、
    前記ゲスト側割込みベクタの優先順位を示すランク情報を受信するステップと、
    前記ランク情報に基づいて、複数の共有割込みベクタの中から処理対象の共有割込みベクタを選択するステップと、
    前記ランク情報に基づいて、複数のユニーク割込みベクタの中から処理対象のユニーク割込みベクタを選択するステップと、を含み
    前記第5のステップは、前記共有割込みベクタを前記ユニーク割込みベクタに変更し、前記ユニーク割込みベクタを前記共有割込みベクタに変更するステップを含むことを特徴とする割込みベクタ管理方法。
JP2016506044A 2014-03-07 2014-03-07 計算機 Expired - Fee Related JP6157719B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/055879 WO2015132942A1 (ja) 2014-03-07 2014-03-07 計算機

Publications (2)

Publication Number Publication Date
JPWO2015132942A1 true JPWO2015132942A1 (ja) 2017-03-30
JP6157719B2 JP6157719B2 (ja) 2017-07-05

Family

ID=54054777

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016506044A Expired - Fee Related JP6157719B2 (ja) 2014-03-07 2014-03-07 計算機

Country Status (3)

Country Link
US (1) US10042790B2 (ja)
JP (1) JP6157719B2 (ja)
WO (1) WO2015132942A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6515771B2 (ja) * 2015-10-07 2019-05-22 富士通コネクテッドテクノロジーズ株式会社 並列処理装置及び並列処理方法
JP6814756B2 (ja) * 2018-02-08 2021-01-20 日立オートモティブシステムズ株式会社 ハイパーバイザ、演算装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004114132A1 (ja) * 2003-06-20 2004-12-29 Fujitsu Limited 割り込み制御方法、割り込み制御装置及び割り込み制御プログラム
US20050091029A1 (en) * 2000-12-21 2005-04-28 Microsoft Corporation System and method for the logical substitution of processor control in an emulated computing environment
US20050132365A1 (en) * 2003-12-16 2005-06-16 Madukkarumukumana Rajesh S. Resource partitioning and direct access utilizing hardware support for virtualization
JP2011198157A (ja) * 2010-03-19 2011-10-06 Fujitsu Ltd 仮想計算機システム、仮想計算機制御装置および仮想計算機制御方法
JP2013519170A (ja) * 2010-02-05 2013-05-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ゲストローカル割込みコントローラを仮想化するように構成されたプロセッサ
JP2015022553A (ja) * 2013-07-19 2015-02-02 株式会社日立製作所 計算機の制御方法及び計算機

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6412035B1 (en) * 1997-02-03 2002-06-25 Real Time, Inc. Apparatus and method for decreasing the response times of interrupt service routines
US7373446B2 (en) * 2004-11-05 2008-05-13 Microsoft Corporation Method and system for dynamically patching an operating system's interrupt mechanism
US8453143B2 (en) * 2007-09-19 2013-05-28 Vmware, Inc. Reducing the latency of virtual interrupt delivery in virtual machines
US8234432B2 (en) * 2009-01-26 2012-07-31 Advanced Micro Devices, Inc. Memory structure to store interrupt state for inactive guests
JP5320140B2 (ja) 2009-04-14 2013-10-23 株式会社日立製作所 計算機システム、割込み中継回路及び割込み中継方法
US8544010B2 (en) * 2009-09-18 2013-09-24 Vmware, Inc. Providing notification to speculatively waking up target virtual machine for an I/O event using multiple virtual machines and processors
US8312175B2 (en) * 2010-01-21 2012-11-13 Vmware, Inc. Virtual machine access to storage via a multi-queue IO storage adapter with optimized cache affinity and PCPU load balancing
US8478922B2 (en) * 2010-06-23 2013-07-02 International Business Machines Corporation Controlling a rate at which adapter interruption requests are processed

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050091029A1 (en) * 2000-12-21 2005-04-28 Microsoft Corporation System and method for the logical substitution of processor control in an emulated computing environment
WO2004114132A1 (ja) * 2003-06-20 2004-12-29 Fujitsu Limited 割り込み制御方法、割り込み制御装置及び割り込み制御プログラム
US20050132365A1 (en) * 2003-12-16 2005-06-16 Madukkarumukumana Rajesh S. Resource partitioning and direct access utilizing hardware support for virtualization
JP2013519170A (ja) * 2010-02-05 2013-05-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ゲストローカル割込みコントローラを仮想化するように構成されたプロセッサ
JP2011198157A (ja) * 2010-03-19 2011-10-06 Fujitsu Ltd 仮想計算機システム、仮想計算機制御装置および仮想計算機制御方法
JP2015022553A (ja) * 2013-07-19 2015-02-02 株式会社日立製作所 計算機の制御方法及び計算機

Also Published As

Publication number Publication date
US20160364349A1 (en) 2016-12-15
US10042790B2 (en) 2018-08-07
JP6157719B2 (ja) 2017-07-05
WO2015132942A1 (ja) 2015-09-11

Similar Documents

Publication Publication Date Title
EP3285170B1 (en) Application profiling job management system, program, and method
US9081612B2 (en) Virtual machine control method and virtual machine
US10222985B2 (en) Autonomous dynamic optimization of platform resources
CN107015862B (zh) 用于具有不同能力的核心的线程和/或虚拟机调度
JP5370946B2 (ja) リソース管理方法及び計算機システム
US11681544B2 (en) Interference-aware scheduling service for virtual GPU enabled systems
US20130238804A1 (en) Computer system, migration method, and management server
US9176787B2 (en) Preserving, from resource management adjustment, portions of an overcommitted resource managed by a hypervisor
US9063918B2 (en) Determining a virtual interrupt source number from a physical interrupt source number
US9298516B2 (en) Verification of dynamic logical partitioning
US20160196157A1 (en) Information processing system, management device, and method of controlling information processing system
KR20110019729A (ko) 스케줄러 내의 스케줄링 컬렉션
US10691481B2 (en) System and method for detection of underprovisioning of memory in virtual machines
WO2016056060A1 (ja) 計算機及びベクタの設定方法
US10235202B2 (en) Thread interrupt offload re-prioritization
JP6157719B2 (ja) 計算機
JP6694683B2 (ja) スケジューラコンピューティング装置、それを含む分散コンピューティングシステムのデータノード、及びその方法
JP2010205208A (ja) ホストコンピュータ、マルチパスシステム、パス割当方法およびプログラム
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
JP2016038888A (ja) 情報処理システム、情報処理方法及び情報処理プログラム
KR20120118271A (ko) 가상머신 이동 대상 선택 방법
JP6495871B2 (ja) リソース管理システム、リソース管理サーバ及びリソース管理方法
JP2010205207A (ja) ホストコンピュータ、マルチパスシステム、パス割当方法およびプログラム
WO2016203647A1 (ja) 計算機及び処理のスケジューリング方法
US20190278715A1 (en) System and method for managing distribution of virtual memory over multiple physical memories

Legal Events

Date Code Title Description
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: 20170509

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170606

R150 Certificate of patent or registration of utility model

Ref document number: 6157719

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees