以下、本発明の一実施形態に係る携帯端末について、図面を参照しながら詳細に説明する。以下に示す実施形態は本発明の実施形態の一例であって、本発明はこれらの実施形態に限定されるものではない。なお、本実施形態で参照する図面において、同一部分または同様な機能を有する部分には同一の符号または類似の符号(数字の後にA、Bなどを付しただけの符号)を付し、その繰り返しの説明は省略する場合がある。また、図面の寸法比率は説明の都合上実際の比率とは異なったり、構成の一部が図面から省略されたりする場合がある。
(第1実施形態)
<システム構成>
図1は、本発明の第1実施形態に係る情報処理システム100を示す構成図である。図1において、101は、汎用ネットワークであり、該汎用ネットワークを介して情報処理装置102~107が接続されている。ここで、汎用ネットワークとは、識別子を用いて宛先指定が可能なネットワークを指し、例えばインターネット、LAN(Local Area Network)、WAN(Wide Area Network)を指す。
情報処理装置102~107は、互いに所定のプロトコルに従ってネットワーク101を介した通信を行うことが可能である。プロトコルは、汎用ネットワークに応じて異なるが、第1実施形態における情報処理システムにおいては、各情報処理装置102~107が同じ汎用ネットワークで接続される必要はなく、例えば、情報処理装置102と情報処理装置105とを接続する汎用ネットワークと、情報処理装置105と情報処理装置106とを接続する汎用ネットワークが異なっていてもよい。
図2は、本発明の第1実施形態に係る情報処理装置200を示すブロック図である。図1の情報処理装置102~107は、いずれも情報処理装置200と共通の構成を有している。
図2において、201は、マルチコアプロセッサであり、ここでは2つのCPUコア202a、202bを備えている。各CPUコア202a、202bは、それぞれメモリ管理ユニット(Memory Management Unit:MMU)203a、203bを内蔵している。なお、図2では、マルチコアプロセッサを例示したが、シングルコアプロセッサでもよいし、複数のプロセッサを設けたマルチプロセッサでもよい。
メモリ管理ユニット203a、203bは、それぞれアドレス管理テーブル204a、204bを保持している。アドレス管理テーブルとは、仮想メモリ空間の記憶領域を指定するアドレス(以下「仮想アドレス」という)と、ハードウェア資源としてのメモリの記憶領域を指定するアドレス(以下「物理アドレス」という)とを関連付けるためのテーブルである。第1実施形態の情報処理システムでは、物理アドレスと共に他の情報処理装置を指定する識別子(MACアドレス等のネットワークアドレス)を格納する点で、従来のアドレス管理テーブルと異なるテーブルを用いる。詳細については、後述する。
205はバスであり、マルチコアプロセッサ201と後述する各要素とを接続する通信路である。206は、RAM(Random Access Memory)であり、マルチコアプロセッサ201が使用する作業領域207やシステムメモリ領域208を有する。第1実施形態の情報処理装置200は、システムメモリ領域208内に、ハイパーバイザ上で動作する論理プロセッサの状態(ステータス)を示す制御情報209を保持している。すなわち、システムメモリ領域208は、本発明の「制御情報記憶部」に対応する。制御情報209は、ハイパーバイザ上で動作する論理プロセッサの数だけ存在する。
このような制御情報209としては、インテル社の仮想化支援機能で使用するVMCS(Virtual Machine Control Structure)やAMD社の仮想化支援機能で使用するVMCB(Virtual Machine Control Block)が知られているが、論理プロセッサの状態を示す情報(例えば、論理プロセッサの状態を示すレジスタ値、プログラムカウンタ値及びメモリへのポインタの少なくともいずれか一つ)であれば、どのような制御情報を用いてもよい。制御情報209を用いた動作については、後述する。
図2において、210は、ROM(Read Only Memory)であり、BIOS等の各種プログラムが記憶される。211は、入出力部(I/O部)であり、各種データの入出力が行われる。212は、通信部であり、図1の汎用ネットワーク101を介した他の情報処理装置との通信が行われる。通信方式は、無線方式でも有線方式でもよく、近距離無線通信のための機構を備えていてもよい。213は、データベースとして機能するストレージであり、ハードディスク等の大容量記憶媒体を用いることができる。勿論、他の記録媒体を用いてもよいし、固有のストレージを持たずにクラウドコンピューティングを用いてデータを保持する形態であってもよい。
<システムの原理>
図3は、第1実施形態の情報処理システムにおける原理を示す概念図である。301a~301fは、それぞれ情報処理装置の制御部(具体的にはマルチコアプロセッサ)で実行されるハイパーバイザである。つまり、図1、2に示した各情報処理装置においてハイパーバイザが実行されることにより、複数のハイパーバイザ301a~301fが汎用ネットワークを介して接続された情報処理システムを構築している。
302a~302iは、ハイパーバイザ上で動作する仮想マシン(ここでは、OSと表記する)である。図14に示した従来例と大きく異なる点は、第1実施形態の情報処理システムでは、各ハイパーバイザ間にまたがって仮想マシンが動作する点である。例えば、図3において、OS302cは、ハイパーバイザ301a~301dの4つにまたがって動作しており、各ハイパーバイザが連携して1つの仮想マシンを稼働させている。
このように、第1実施形態の情報処理システムは、OS302a~302iが、ハイパーバイザ301a~301fの間でシームレスに動作し、各ハイパーバイザは、CPUコアやメモリといったハードウェア資源(ハードウェア・リソース、もしくは単にリソースともいう)を共有することができる。すなわち、ハイパーバイザ301a~301fが互いに連携して互いのハードウェア・リソースを共用し、仮想マシンの動的なスケールアップを可能とした情報処理システムが構築されている。
次に、そのような情報処理システムを構築するための具体的な実装方法について説明する。図4は、第1実施形態に係る情報処理システムを構築する情報処理装置に実装される制御情報の役割を説明する図である。ここでは、ある論理プロセッサがハイパーバイザ間を遷移している様子を示している。
図4において、401a、401bは、それぞれハイパーバイザである。各ハイパーバイザ401a、401bは、それぞれメモリ402a、402bを有し、各種データを保持している。メモリ402aは、ハイパーバイザ401aを実行している情報処理装置に備えられたハードウェア資源であり、メモリ402bは、ハイパーバイザ401bを実行している情報処理装置に備えられたハードウェア資源である。
ハイパーバイザ401aでは、現在3つの論理プロセッサ403a~403cが動作しており、新たに1つの論理プロセッサが追加されるところである。ハイパーバイザ401bでは、現在2つの論理プロセッサ403d、403eが動作している。403fは、図4の時点より時間tだけ以前に動作していた論理プロセッサを示している。
各論理プロセッサ403a~403eは、それぞれ制御情報404a~404eをシステムメモリ領域に保持している。そして、図4の時点より時間tだけ以前に動作していた論理プロセッサ403fの状態を示す制御情報404fは、図4に示すように、ハイパーバイザ401bからハイパーバイザ401aへの遷移過程にある。前述のとおり、制御情報404fの送信は、汎用ネットワークを介して行われる。そして、ハイパーバイザ401aでは、受信した制御情報404fに基づいて論理プロセッサ403fを再稼働させることができる。
このように、第1実施形態の情報処理システム100では、制御情報404がハイパーバイザ間の物理的な垣根を越えて送受信されることにより、ハイパーバイザに依存することなく論理プロセッサ403を動作させることができ、結果として、ハイパーバイザ401a、401bに跨るように仮想マシン(OS)405を動作させることができる。
なお、制御情報404fをハイパーバイザ401aのどのCPUが処理するかについては、制御情報404fを送信する前に予めハイパーバイザ401aと401bとの間で調停しておくことが望ましい。例えば、リソースの不足しているハイパーバイザのCPUが、リソースの余っているハイパーバイザを探すためのリクエスト命令をネットワーク上にブロードキャストしたり、リソースの使用状況を管理するサーバに送信したりすることにより、制御情報の送信先を求める過程があってもよい。
制御情報の送信先が決まったら、そのハイパーバイザに対してリソースの使用許可を求める命令を送信して事前確認を行ってもよい。そして、調停が完了したらリソースの使用許可を出したハイパーバイザに対して制御情報を送信することにより、その制御情報を受信したハイパーバイザのリソースを使用することができる。このような調停は、各ハイパーバイザの制御下にあるCPUが行い、この場合におけるCPUは、本発明の「発行部」に相当する。
汎用ネットワークを介した制御情報の送受信は、使用するネットワークに応じて適切なプロトコルを選択すればよい。例えば、汎用ネットワークとしてIPネットワークを用い、プロトコルとしてTCP/IPを用いた場合について図5に示す。
図5に示すように、TCPプロトコルでは「3ウェイハンドシェイク」によってハイパーバイザ401aとハイパーバイザ401bとの間の接続が確立される。その後、ハイパーバイザ401bからハイパーバイザ401aに対して制御情報404f及びデータ406が送信される。さらにその後、ハイパーバイザ401aからハイパーバイザ401bに対して制御情報501及びデータ502が送信されるようにしてもよい。
上述のように、論理プロセッサ403をハイパーバイザ401bからハイパーバイザ401aに遷移させるに当たり、論理プロセッサにキャッシュされているデータ(例えば、論理プロセッサのL1~L3キャッシュに記憶されているデータ)や論理プロセッサを実行していたCPUの担当している処理のスタックデータ等の参照頻度の高いデータ406も制御情報404と共に遷移させることが好ましい。これにより、論理プロセッサ403がハイパーバイザ間を遷移しても、参照頻度の高いデータ406も一緒に遷移するため、継続的に処理を実行することができる。このような参照頻度の高いデータ406は、それを参照する論理プロセッサに関連するデータ、換言すれば、該論理プロセッサの状態を示す制御情報に関連するデータである。
なお、参照頻度の高いデータ406を送信するためにアドレス管理テーブルを参照してもよい。例えば、ハイパーバイザ401bは、送信に必要なデータを自身のアドレス管理テーブルを参照して特定し、自身の管理下にあるメモリから読み出して送信することができる。
また、図4に示すように、ハイパーバイザ401bで処理を行っていた論理プロセッサ403fが、ハイパーバイザ401aへと遷移した場合、遷移前に処理していたデータのほとんどは、メモリ402bに記憶されている。したがって、ハイパーバイザ401aに遷移した後、処理を続行していくと、メモリ402bを参照する必要性が生じることとなる。
そこで、第1実施形態の情報処理システム100では、各ハイパーバイザが汎用ネットワークを介して他のハイパーバイザの制御下にあるメモリにアクセスできるようにするための具体的手段を実装している。図6は、第1実施形態に係る情報処理システムを構築する情報処理装置に実装されるアドレス管理テーブルの役割を説明する図である。
図6は、図4を用いて説明した論理プロセッサ403fの遷移後の状態を示している。601は、アドレス管理テーブルであり、図2に示すアドレス管理テーブル204a、204bと同じものである。アドレス管理テーブル601は、OS405が管理する仮想メモリ空間の記憶領域を指定する仮想アドレスと、実際のメモリ空間(メモリ402a、402bで構成するメモリ空間)の記憶領域を指定する物理アドレスとを関連付けるためのテーブルである。
アドレス管理テーブル601の物理アドレスには、2種類の物理アドレスが含まれている。第1の物理アドレスは、アドレス管理テーブル601が記憶される情報処理装置(ハイパーバイザ401a)に設けられたメモリ402aの物理アドレスを指定するもの(図6の「55」、「56」、「57」等)であり、第2の物理アドレスは、他の情報処理装置(ハイパーバイザ401b)に設けられたメモリ402bの物理アドレスを指定するもの(図6の「識別子+81」、「識別子+83」等)である。
ここで、第2の物理アドレスは、単に物理アドレスを指定するだけではなく、他の情報処理装置をネットワーク上で指定する識別子(ネットワークアドレス)を一緒に格納している。なお、第1実施形態では、「識別子+81」のように表現しているが、これに限らず、識別子と物理アドレスとを組み合わせたものであれば、如何なる態様であっても構わない。識別子としては、ハイパーバイザ間を接続する汎用ネットワークのプロトコルに応じた識別子を用いればよい。例えば、「MACアドレス」や「IPアドレス」などを用いることができる。
図6に示したような汎用ネットワークを介したハイパーバイザ間のメモリ参照におけるオーバーヘッドを低減するためには、低レイテンシかつ広帯域な汎用ネットワークを使用することが望ましい。例えば、「infiniBand」、「Converged Enhanced Ethernet(登録商標)」、「Serial RapidIO」を用いることができる。ただし、使用する環境、予算等に応じて適材適所で汎用ネットワークを選択することが可能であり、例えば低レイテンシであることよりも低コストであることを重視する場合に「IPネットワーク」を用いるなど、使用可能な汎用ネットワークに特に制限はない。
以上のとおり、第1実施形態の情報処理システム100を構築する情報処理装置200は、ハイパーバイザ間で各論理プロセッサの制御情報を送受信することにより、論理プロセッサをハイパーバイザ間で遷移させることができ、ハイパーバイザ間に跨って1つの仮想マシン(OS)を動作させることができる。
さらに、各ハイパーバイザの制御下にあるCPUに図6に示したアドレス管理テーブルを備えることにより、相異なるハイパーバイザ間で、汎用ネットワークを介したメモリ参照が可能となり、ハイパーバイザの物理的な隔離を意識することなく、ハイパーバイザ間に跨る仮想マシンを動作させることができる。その結果、相異なるハイパーバイザの制御下にある複数のCPUを統合して制御することができ、より高い処理性能を実現することが可能となる。
例えば、従来、アプリケーションの性能を向上させるためには、図7(a)に示すように、スケールアウト型のアプローチを採用する必要があった。すなわち、複数のハイパーバイザ701a~701dにおいて、それぞれ独立に仮想マシン(OS)702a~702dを動作させ、アプリケーションの性能を向上させる際には、その仮想マシンの数、すなわちハイパーバイザの数を増加させることで対応してきた。
しかし、この場合には、例えば仮想マシン701aを司令塔(ホスト)として機能させ、仮想マシン702a~702dを処理ノード(スレーブ)として機能させることによりアプリケーション処理を行うため、アプリケーションレベルでネットワーク越しの処理の依頼や回答、データ同期、処理タイミング調整等を行う必要があり、開発に多くの工数や高い技術力が要求されるという問題があった。
一方、第1実施形態の情報処理システム100においては、図7(b)に示すように、仮想マシン702aをハイパーバイザ701a~701dに跨って動作させるというスケールアップ型のアプローチを採用することができる。そのため、ネットワーク通信に伴うオーバーヘッドを意識することなく、マルチスレッドのみ意識してプログラム開発を行うだけで容易にアプリケーション性能の向上を図ることができる。
また、リソース(例えばCPUコアやメモリ)に余裕のあるハイパーバイザに論理プロセッサを遷移させることで、各ハイパーバイザのリソースを効率的に使用することができる。すなわち、各ハイパーバイザのリソースの使用状況に応じて、動的に論理プロセッサを遷移(制御情報を遷移)させることにより、情報処理システムの効率的な利用が可能となる。
例えば、図7(a)に示すように、ハイパーバイザ701aにおいて仮想マシン(OS1)702aが動作しており、CPUコア703aが不足しているとする。一方、ハイパーバイザ701bにおいて仮想マシン(OS2)702bが動作しており、CPUコア703bの1つが余っているとする。
この場合に、図7(b)に示すように、ハイパーバイザ701a上で動作していた仮想マシン702aをハイパーバイザ701bまで拡張することにより、ハイパーバイザ701bの余剰CPUコアを仮想マシン702aに割り当てることが可能となる。そのため、所望の処理のために要求されるリソースを余分に調達して分散処理をしなければならないという経済性の悪さを改善し、ハードウェア資源のより高い使用効率を実現することができる。
他にも、ハイパーバイザ701aにおいて仮想マシン(OS1)702aが動作しており、ハイパーバイザ701aが動作する情報処理装置内のメモリ(図示せず)が不足しているとする。一方、ハイパーバイザ701bが動作する情報処理装置内のメモリに空き領域が存在し、容量に余裕があるとする。
この場合に、ハイパーバイザ701a上で動作していた仮想マシン702aをハイパーバイザ701bまで拡張することにより、ハイパーバイザ701bが管理するメモリの空き領域を仮想マシン702aに割り当てることが可能となる。
(第2実施形態)
本発明の第2実施形態の情報処理システム900について図9を用いて説明する。第2実施形態の情報処理システム900は、第1実施形態の情報処理システム100に対し、1つの仮想マシンの内部で、使用するCPU性能の階層化を行うという機能を追加したものである。
従来、1つの仮想マシン内では同一性能のCPUしか使用することができず、高いレベルの処理には相応の処理能力を有する仮想マシンを動作させたり、バックアップ用の仮想マシンを動作させたりするなど、仮想マシンごとに処理レベル(処理量)を決めなければならなかった。そのため、要求される処理が動的に変化するような状況に対し、柔軟に対応することが困難であった。
しかし、第2実施形態の情報処理システム900では、相異なる複数のハイパーバイザに跨って仮想マシン903を動作させることができるという利点を活かし、要求される処理レベルに応じて、使用するCPU性能の割当を動的に変更する変化ことを特徴としている。
図9において、ハイパーバイザ901aは、第1の性能を備えたCPU(以下「高性能CPU」という)902aを搭載する情報処理装置で動作し、ハイパーバイザ901bは、第2の性能を備えたCPU(以下「中性能CPU」という)902bを搭載する情報処理装置で動作し、ハイパーバイザ901cは、第3の性能を備えたCPU(以下「低性能CPU」という)902cを搭載する情報処理装置で動作する。ここでは、第1の性能が最も高く、続いて第2の性能、第3の性能と順に性能は低くなっている。
なお、高性能CPUと言っても絶対的な性能を指すわけではなく、あくまで、それぞれのCPUの相対比較である。すなわち、第1の性能>第2の性能>第3の性能という関係を満たす限り、どのような性能を備えたCPUであってもよい。
そのため、ハイパーバイザ901aは、高性能CPU902aを搭載しているため、相対的に他のハイパーバイザ901b、901cよりも高いレベルの処理が可能である。逆に、ハイパーバイザ901aは、低性能CPU902cを搭載しているため、相対的に他のハイパーバイザ901a、901bよりも低いレベルの処理しかできない。
しかし、低性能CPU902cを使用した場合であっても、割当数が多ければ処理能力も高くなる。そのため、高性能CPU902aが他の仮想マシンに割り当てられて不足しているような状態にあっても、図9に示すように、例えば1つの仮想マシン903に対して、高性能CPU902aを1つ、中性能CPU902bを2つ、低性能CPU902cを3つ割り当てることで要求される処理に対応することが可能である。勿論、高性能CPU902aが空けば、高性能CPUを2つ、中性能CPUを1つというように動的に割当を変更し、処理を継続することも可能である。
以上のように、第2実施形態の情報処理システム900は、各ハイパーバイザ901a~901cが管理するCPU902a~902cの使用状況を常に監視し、仮想マシン903の内部において、要求される処理レベルに応じて、適切なCPU割当を動的に実行し、CPU性能をティアリング(階層化)することができる。また、最低限のCPU性能を割当てることにより、各ハイパーバイザ901a~901cが管理するハードウェア資源の使用効率をさらに高めることが可能である。
(第3実施形態)
本発明の第3実施形態の情報処理システム1000について図10を用いて説明する。第3実施形態の情報処理システム1000は、第1実施形態の情報処理システム100に対し、フェイルオーバー機能を追加したものである。
従来、サーバ等として使用する情報処理装置が故障した際、無停止フェイルサーバーを実現するためには、図10(a)に示すように、ハイパーバイザ1001aの状態を丸ごとコピーしたバックアップ用のハイパーバイザ1001bを設ける必要があった。この場合、ハイパーバイザ1001bを用意するためのコストと、丸ごとコピーするためのネットワーク帯域を消費することとなり、経済性が悪いという問題があった。
しかし、第3実施形態の情報処理システム1000では、相異なる複数のハイパーバイザ間でメモリを共有化することができるという利点を活かし、各ハイパーバイザが管理するメモリのパリティデータを、他のハイパーバイザが管理するメモリに保存し、情報処理装置(ハイパーバイザ)の故障時にパリティデータを利用して無停止フェイルオーバーを実現することを特徴としている。
図10(b)において、ハイパーバイザ1001aには、仮想マシン1002a、1002bが動作しており、各仮想マシン1002a、1002bは、それぞれハイパーバイザ1001aが管理するメモリ内の所定のメモリ領域を占有している。一方、ハイパーバイザ1001bには、仮想マシン1002cに加えて、パリティデータを保存するメモリ領域1003が確保されている。仮想マシン1002cは、ハイパーバイザ1001bが管理するメモリ内の所定のメモリ領域を占有している。
そして、各仮想マシン1002a~1002cが使用するメモリのパリティデータは、すべてメモリ領域1003に保存されている。これにより、何らかの障害でハイパーバイザ1001aが停止した場合にも、メモリ領域1003に保存されたパリティデータを用いて別のハイパーバイザで仮想マシン1002a、1002bを修復することができ、無停止フェイルオーバーを実現することができる。
なお、ここでは各仮想マシン1002a~1002cの使用するメモリ領域のパリティデータをすべてメモリ領域1003に保存する構成としたが、それらのパリティデータを相異なる複数のハイパーバイザが管理するメモリに分散させることも可能である。
以上のように、第2実施形態の情報処理システム1000では、パリティデータ分の容量のメモリ領域とネットワーク帯域のみでフェイルオーバー機能を追加することが可能である。これにより、少ない台数の情報処理装置で冗長性に優れたフェイルオーバーを実現することが可能である。
(第4実施形態)
本発明の第4実施形態の情報処理システム1100について図11を用いて説明する。第4実施形態の情報処理システム1100では、特定のハイパーバイザが管理するメモリに記憶されたデータの処理を、他のハイパーバイザに委託(アウトソーシング)できる点に特徴がある。例えば、諸事情により国外へデータを持ち出せないような国が、そのデータを用いた処理のみを他国にアウトソーシングするような事例が考えうる。
図11において、A国に配置されたハイパーバイザ1101aは、メモリ1102aを管理している。そして、メモリ1102aに記憶されたデータは、A国特有の事情により国外への持ち出しが禁止されているとする。
一方、B国に配置されたハイパーバイザ1101bは、メモリ1102bを管理している。そして、B国は、本発明に係る情報処理システムを用いて、他国のハイパーバイザに対するアウトソーシングを提供しているものとする。
第4実施形態の情報処理システム1100では、A国のハイパーバイザ1101a上の仮想マシン(OS)1103において複数の論理プロセッサ1104a~1104cを動作させて処理を行い、必要に応じて、例えばA国のハードウェア資源(CPUコア等)では計算能力が足りなくなったときに、図11に示すように、ある論理プロセッサ1104cの制御情報1105およびキャッシュデータ1106を、汎用ネットワークを介してB国のハイパーバイザ1101bに遷移させる。勿論、キャッシュデータ以外にも参照頻度の高い他のデータを含ませても構わない。
これにより、仮想マシン1103をA国のハイパーバイザ1101aとB国のハイパーバイザ1101bとの間にまたがって動作させることができ、A国のハイパーバイザ1101aが、B国のハードウェア資源を活用することができる。換言すれば、B国は、A国のハイパーバイザ1101a上で動作する論理プロセッサ1104の制御情報の送信先としてB国のハイパーバイザ1101bを指定することを契約によって許可することで、B国のハイパーバイザ(又はハードウェア資源)のアウトソーシングを可能としている。
なお、第4実施形態の情報処理システム1100を構築するために、A国のハイパーバイザ1101aは、論理プロセッサ1104の制御情報の送信先として、B国のハイパーバイザ1101bのみを指定しておくことが望ましい。宛先が明示的に決まっていないと、B国以外のハイパーバイザに制御情報を送信してしまう恐れがあるからである。
また、A国のハイパーバイザ1101a、B国のハイパーバイザ1101bは共に、データの保存先としてA国のメモリ1102aを指定することが望ましい。A国からのデータの持ち出しが禁止されている以上、B国のメモリ1102bに処理データが保存されないようにすべきだからである。
なお、厳密に言えば、A国からB国に対してキャッシュデータ相当のデータが流れることにはなる。しかし、そもそもキャッシュデータは、データ量として極僅かであるし、その時の処理に応じて内容は異なり、参照頻度の高い断片的なデータであるにすぎない。したがって、その処理時点では断片的なデータが僅かに流れるものの、処理の進行に応じてキャッシュデータは逐次変化するため、A国のデータを丸ごと国外に持ち出すのとは異なり、B国から見れば実質的にA国のデータを取得したことにはならないと言える。
以上のように、第4実施形態の情報処理システム1100は、第1国に存在するデータを実質的に国外に持ち出すことなく、その処理のみを第2国(他国)で処理することを可能とし、自国に処理能力の高いハードウェア資源が存在しなくとも、他国のハードウェア資源を活用することが可能である。
(第5実施形態)
第1実施形態から第4実施形態までは、2つのハイパーバイザ間で仮想マシンを共有化する例を示したが、第5実施形態の情報処理システム1200では、3つ以上のハイパーバイザ間で仮想マシンを共有化する例を示す。
図12は、第5実施形態の情報処理システム1200である。情報処理システム1200は、ハイパーバイザ1201a~1201dの4つのハイパーバイザで構成され、それぞれのハイパーバイザが、メモリ1202a~1202dを管理している。そして、仮想マシン(OS)1203が、各ハイパーバイザにまたがって動作している。
各ハイパーバイザ間においては、制御情報1204a~1204d及び参照頻度の高いデータ(例えばキャッシュデータ)1205a~1205dが送受信される。これにより、各ハイパーバイザは、他のハイパーバイザのリソース(ハードウェア資源)を共用することができ、動的に仮想マシンに対して必要なリソースを与えることが可能である。
各制御情報1204a~1204dの送受信シーケンスは、同時並行で行っても良いし、シーケンシャルに行ってもよい。同時変更に行うと、処理の待ち時間が軽減され、処理速度の向上を図ることができる。また、シーケンシャルに行った場合、接続を確立するための手続きが簡素化されるため、仮想マシンを他のハイパーバイザに拡張する際の処理が少なくて済むという利点がある。
なお、本実施形態では、模式的に、上下左右のハイパーバイザ間で接続を確立する例を示したが、ハイパーバイザ1202aとハイパーバイザ1202dとが直接制御情報1204や参照頻度の高いデータ1205を送受信するような態様も当然とり得る。
また、他のハイパーバイザを介して目的とするハイパーバイザとの間で制御情報1204や参照頻度の高いデータ1205を送受信することも可能である。例えば、ハイパーバイザ1202aが、ハイパーバイザ1202dと仮想マシン1203を共有するにあたり、ハイパーバイザ1202bもしくはハイパーバイザ1202cを介して制御情報1204や参照頻度の高いデータ1205を送受信する場合もあり得る。
さらに、本実施形態では、4つのハイパーバイザ間で仮想マシンを共有する例を示したが、5つ以上のハイパーバイザ間で仮想マシンを共有することも可能である。
以上のように、第5実施形態の情報処理システム1200では、3つ以上のハイパーバイザ間にまたがって仮想マシンを動作させることにより、多くのハイパーバイザ間で仮想マシンを共有して、容易にアプリケーション性能のスケールアップ型向上を図ることができる。
(第6実施形態)
本発明の第6実施形態の情報処理システム1300について図13を用いて説明する。第6実施形態の情報処理システム1300は、第1実施形態の情報処理システム100とアドレス管理テーブルの構成が異なる。
図13において、ハイパーバイザA1301aとハイパーバイザB1301bは、仮想マシン(OS)1302を共有している。仮想マシン1302は、固有のアドレス管理テーブル1303(OS用アドレス管理テーブル」という)を有しており、このOS用アドレス管理テーブル1303は、ハイパーバイザA1301aを実行するCPUコア内のMMU(図示せず)に格納されている。
OS用アドレス管理テーブル1303は、仮想マシン1302が管理する仮想メモリ空間における仮想アドレスを、仮想マシンごとに割り振られた仮想的なアドレス(VM内アドレス)に変換する機能を有している。
また、各ハイパーバイザA1301a、ハイパーバイザB1301bは、それぞれハイパーバイザ用アドレス管理テーブル1304a、1304bを有している。ハイパーバイザ用アドレス管理テーブル1304a、1304bは、それぞれ仮想マシンID(VMID)、仮想マシン内アドレス(VM内アドレス)、ハイパーバイザID、物理アドレス、データを保持する領域を備えている。
仮想マシンIDとは、ハイパーバイザ上で動作している仮想マシン1302に関連付けられたID(識別子)であり、どの仮想マシンに関連付けられたデータを保持しているかを示すものである。例えば、仮想マシンIDが「OS1」である場合、その行の各領域は、OS1に対応付けられたものであることを意味する。
仮想マシン内アドレスとは、仮想マシンごとに割り振られたアドレスであり、仮想マシンIDが示す仮想マシンが参照可能なアドレスである。
ハイパーバイザIDとは、参照先のハイパーバイザ又は参照元のハイパーバイザを指す識別子である。例えば、図13のハイパーバイザ用アドレス管理テーブル1304aにおいて、VM内アドレス「58」に対応する「物理アドレス」や「データ」の欄には実効的なデータが存在しない。すなわち、ハイパーバイザA1031aが管理するメモリには、目的とするデータが存在しない。
しかし、第6実施形態の情報処理システム1300では、ハイパーバイザIDが参照先として「B」を示すため、ハイパーバイザB1301bに格納されるハイパーバイザ用アドレス管理テーブル1304bが参照され、該テーブル内のVM内アドレス「58」が参照されることにより、目的とするデータ「&&&」を、ハイパーバイザB1301bが管理するメモリの物理アドレス「83」に見つけることができる。
以上のように、第6実施形態の情報処理システム1300では、ハイパーバイザ用アドレス管理テーブルをハイパーバイザごとに設け、該管理テーブル内に、ハイパーバイザIDという概念を導入することにより、自身のハイパーバイザに目的とするデータが存在しない場合においても、容易に他のハイパーバイザのメモリを参照することが可能である。
そして、目的とするデータが自身のハイパーバイザ内のメモリに存在すれば、ハイパーバイザ用アドレス管理テーブルにて、対応する物理アドレスを参照し、目的とするデータが自身のハイパーバイザ内のメモリに存在しなければ、ハイパーバイザIDを用いて他のハイパーバイザ用アドレス管理テーブルにて、対応する物理アドレスを参照することができる。