(57)【要約】      （修正有）【課題】異なる情報処理装置の制御下にある複数のＣＰＵを統合して制御する制御プログラムを提供する。【解決手段】制御プログラム（ハイパーバイザ）は、第１情報処理装置２００に、第１情報処理装置上で動作するＯＳが管理する仮想メモリ空間の記憶領域を指定する仮想アドレスと、汎用ネットワークを介して接続された第２情報処理装置における実メモリ空間の記憶領域を指定する物理アドレスとを関連付ける管理テーブル２０４ａ、２０４ｂを参照させ、当該第２情報処理装置に対して処理命令を発信させる。【選択図】図２
2020123382.tif 000002
【特許請求の範囲】
【請求項１】
第１情報処理装置に、
前記第１情報処理装置上で動作するＯＳが管理する仮想メモリ空間の記憶領域を指定する仮想アドレスと、汎用ネットワークを介して接続された第２情報処理装置における実メモリ空間の記憶領域を指定する物理アドレスとを関連付ける管理テーブルを参照して当該第２情報処理装置に対して処理命令を発信させる、制御プログラム。
【請求項２】
前記管理テーブルは、前記第１情報処理装置における実メモリ空間の記憶領域を指定する物理アドレスをさらに含む、請求項１に記載の制御プログラム。
【請求項３】
前記第１情報処理装置に前記ＯＳを動作させると共に、前記第２情報処理装置においても前記ＯＳを動作させる、請求項１または２に記載の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、相異なる複数個のハイパーバイザに跨って仮想マシンを動作させる機能を備えた情報処理装置、プログラムおよび記録媒体に関する。
【背景技術】
【０００２】
近年、コンピュータ・アーキテクチャの仮想化技術が様々な分野で注目されている。仮想化技術とは、コンピュータのリソースを抽象化することであり、コンピュータ・ハードウェアを仮想的なものとして取り扱う技術である。コンピュータ・アーキテクチャの仮想化技術の一つとして、仮想マシン（バーチャル・マシン：ＶＭ）が知られている。
【０００３】
仮想マシンとは、コンピュータの動作をエミュレートするソフトウェアやエミュレートされた仮想のコンピュータそのものを指す。仮想マシンの概念を導入することにより、１つのコンピュータ上で複数のＯＳ（オペレーティング・システム）を動作させたりすることが可能である。そして、１つのコンピュータ上で複数のＯＳを動作させる際、それらのＯＳの制御を行う制御プログラムが存在する。これが、ハイパーバイザである。
【０００４】
サーバ上でハイパーバイザを実行することにより、複数個の仮想マシン（すなわち、複数個のカーネル）を動作させることが可能である。これにより、単一のサーバ上で、それぞれ異なるＯＳ（ゲストＯＳと呼ばれる）を動作させることが可能となる。そして、各ＯＳに依存した様々なインターフェースを利用者に提供することが可能である。
【０００５】
ところで、従来、ハイパーバイザは、サーバごとに動作し、他のサーバで動作する他のハイパーバイザとは連携することができない。例えば、図１４に示すように、あるサーバで動作するハイパーバイザ１１の制御下において、複数のＯＳ１２〜１４が動作しているとする。このとき、各ＯＳ１２〜１４は、ハイパーバイザ１１内のＣＰＵ（中央演算処理装置）（図示せず）により実際の処理がなされ、ハイパーバイザ１１内のメモリ（図示せず）にしかアクセスできない。つまり、ハイパーバイザ１１は、自身が動作するサーバ内に存在するリソースしか用いることができない。
【０００６】
同様に、他のサーバで動作する他のハイパーバイザ２２の制御下においては、別のＯＳ１５が動作しているとする。前述のように、ハイパーバイザ間ではリソースを共有することができないため、相異なるハイパーバイザ１１、２２は、それぞれがＯＳ１２〜１５を独立に制御することしかできず、ハイパーバイザに跨って１つのＯＳ（仮想マシン）を動作させることはできなかった。
【０００７】
その結果、サーバ性能を向上させる必要がある場合やサーバトラブルに対応すべく冗長性を確保する必要がある場合に、サーバの並列度を上げて対処する（スケールアウトする）ことしか実効的な対処ができず、ソフトウェアの開発コストや運用コストが高くなるという問題があった。
【０００８】
このような問題に対処するために、近年ではコンピュータの並列処理技術として、物理的に離隔したＣＰＵ間でメモリを共有化する技術が開発されている。例えば、特許文献１には、ハイパーバイザが、ローカルメモリとリモートメモリとＣＰＵとの間の配置関係を検知し、仮想マシンに割り当てられたＣＰＵから見てリモートメモリとなるメモリから、該ＣＰＵから見てローカルメモリとなるメモリに対して必要データを移動させる技術が記載されている。
【０００９】
また、特許文献２には、ブレードサーバ内にあるメモリテーブルを用いてアドレス変換を行い、他のブレード上のメモリにアクセスする処理が記載されている。すなわち、ブレードサーバを、ＳＭＰ（Symmetric Multiple Processor）サーバとして機能させる技術が記載されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１１−２３８２７８号公報
【特許文献２】特開２０１２−１１３６０４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかし、特許文献１、２に記載された技術は、いずれも相異なるハイパーバイザの制御下にある仮想マシンを統合して制御するものではなく、異なるハイパーバイザの制御下にあるＣＰＵに、単なる分散処理を行わせるものである。したがって、各ＣＰＵの処理負担を軽減できるものの、互いに処理結果の同期を取るための通信を行う必要があり、その通信処理に起因するオーバーヘッドが、結果として、システム全体としての処理効率を阻害する要因ともなっていた。
【００１２】
また、ＣＰＵに分散処理を行わせる場合、例えば、ある仮想マシンを動作させるために追加のＣＰＵが新たに１個必要となった場合であっても、増設単位として１６個のＣＰＵを搭載したサーバを別途用意する必要があるなど、必要なリソースを超過して、余分なハードウェア資源を調達しなければならなくなる場合もある。
【００１３】
本発明は、かかる阻害要因を克服するために創作されたものであり、相異なるハイパーバイザの制御下にある複数の仮想マシンを統合して制御することを可能とする情報処理装置、プログラム及び記憶媒体を提供するものである。
【課題を解決するための手段】
【００１４】
本発明の一実施形態による情報処理装置は、第１のハイバーパイザの管理するメモリのアドレスと、前記第１のハイバーパイザと接続される第２のハイパーバイザの管理するメモリのアドレス及び該第２のハイパーバイザを識別する識別子とを記録するアドレス管理テーブルと、前記アドレス管理テーブルを参照し、前記第１のハイバーパイザより前記第２のハイパーバイザに対して命令及び制御情報を発行する発行部とを備える。前記制御情報は、前記第２のハイパーバイザで動作する論理プロセッサの状態を示す情報である。
【００１５】
本発明の一実施形態による情報処理装置は、第１のハイパーバイザの管理する仮想メモリ空間のアドレスと、前記第１のハイパーバイザとは異なる第２のハイパーバイザを識別する識別子及び該第２のハイパーバイザの管理するメモリのアドレスとを互いに関連付けて記憶するアドレス管理テーブルと、前記第１のハイパーバイザ又は前記第２のハイパーバイザで動作する論理プロセッサの状態を示す制御情報を記憶する制御情報記憶部と、を有し、前記第１のハイパーバイザは、前記第２のハイパーバイザとの間で前記制御情報を送受信可能であると共に、前記アドレス管理テーブルを参照して、前記仮想メモリ空間のアドレスに関連付けられた、前記第２のハイパーバイザの管理するメモリのアドレスにアクセス可能である。
【００１６】
前記制御情報は、論理プロセッサの状態を示すレジスタ値、プログラムカウンタ値及びメモリへのポインタの少なくともいずれか一つであればよい。
【００１７】
前記第１のハイパーバイザと前記第２のハイパーバイザとは、識別子による宛先指定の
可能な汎用ネットワークで接続されていてもよい。
【００１８】
前記第１のハイパーバイザは、自身の管理するメモリに処理対象データが存在せず、かつ、前記第２のハイパーバイザの管理するメモリに前記処理対象データが存在する場合に、前記第２のハイパーバイザに対して前記制御情報を送信してもよい。
【００１９】
前記制御情報は、前記第１のハイパーバイザの管理するリソースの使用状況又は前記第２のハイパーバイザの管理するリソースの使用状況に応じて、前記第１のハイパーバイザと前記第２のハイパーバイザとの間で送受信されてもよい。特に、前記制御情報は、前記使用状況に余剰がある方のリソースを管理するハイパーバイザに対して送信されることが好ましい。
【００２０】
前記制御情報の送受信とともに、前記制御情報に関連するデータ（例えば論理プロセッサがキャッシュしているデータ等の参照頻度の高いデータ）を送受信することが好ましい。
【発明の効果】
【００２１】
本発明によれば、異なるハイパーバイザの制御下にある複数のＣＰＵを統合して制御することができ、より高い処理性能を実現することが可能となる。
【００２２】
また、所望の処理のために要求されるリソースを余分に調達して分散処理をしなければならないという経済性の悪さを改善し、ハードウェア資源のより高い使用効率を実現することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１実施形態に係る情報処理システムを示す構成図である。
【図２】本発明の第１実施形態に係る情報処理装置を示すブロック図である。
【図３】本発明の第１実施形態の情報処理システムにおける原理を示す概念図である。
【図４】本発明の第１実施形態に係る情報処理システムに実装される制御情報の役割を説明する図である。
【図５】本発明の第１実施形態に係る情報処理システムにおける接続の確立手順を説明する図である。
【図６】本発明の第１実施形態に係る情報処理システムに実装されるアドレス管理テーブルの役割を説明する図である。
【図７】本発明の第１実施形態に係る情報処理システムと従来の情報処理システムとの比較を示す図である。
【図８】本発明の第１実施形態に係る情報処理システムと従来の情報処理システムとの比較を示す図である。
【図９】本発明の第２実施形態に係る情報処理システムを示す構成図である。
【図１０】本発明の第３実施形態に係る情報処理システムを示す構成図である。
【図１１】本発明の第４実施形態に係る情報処理システムを示す構成図である。
【図１２】本発明の第５実施形態に係る情報処理システムを示す構成図である。
【図１３】本発明の第６実施形態に係る情報処理システムに実装されるアドレス管理テーブルの構成を示す図である。
【図１４】従来の情報処理システムを示す構成図である。
【発明を実施するための形態】
【００２４】
以下、本発明の一実施形態に係る携帯端末について、図面を参照しながら詳細に説明する。以下に示す実施形態は本発明の実施形態の一例であって、本発明はこれらの実施形態に限定されるものではない。なお、本実施形態で参照する図面において、同一部分または同様な機能を有する部分には同一の符号または類似の符号（数字の後にＡ、Ｂなどを付しただけの符号）を付し、その繰り返しの説明は省略する場合がある。また、図面の寸法比率は説明の都合上実際の比率とは異なったり、構成の一部が図面から省略されたりする場合がある。
【００２５】
（第１実施形態）
＜システム構成＞
図１は、本発明の第１実施形態に係る情報処理システム１００を示す構成図である。図１において、１０１は、汎用ネットワークであり、該汎用ネットワークを介して情報処理装置１０２〜１０７が接続されている。ここで、汎用ネットワークとは、識別子を用いて宛先指定が可能なネットワークを指し、例えばインターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を指す。
【００２６】
情報処理装置１０２〜１０７は、互いに所定のプロトコルに従ってネットワーク１０１を介した通信を行うことが可能である。プロトコルは、汎用ネットワークに応じて異なるが、第１実施形態における情報処理システムにおいては、各情報処理装置１０２〜１０７が同じ汎用ネットワークで接続される必要はなく、例えば、情報処理装置１０２と情報処理装置１０５とを接続する汎用ネットワークと、情報処理装置１０５と情報処理装置１０６とを接続する汎用ネットワークが異なっていてもよい。
【００２７】
図２は、本発明の第１実施形態に係る情報処理装置２００を示すブロック図である。図１の情報処理装置１０２〜１０７は、いずれも情報処理装置２００と共通の構成を有している。
【００２８】
図２において、２０１は、マルチコアプロセッサであり、ここでは２つのＣＰＵコア２０２ａ、２０２ｂを備えている。各ＣＰＵコア２０２ａ、２０２ｂは、それぞれメモリ管理ユニット（Memory Management Unit：ＭＭＵ）２０３ａ、２０３ｂを内蔵している。なお、図２では、マルチコアプロセッサを例示したが、シングルコアプロセッサでもよいし、複数のプロセッサを設けたマルチプロセッサでもよい。
【００２９】
メモリ管理ユニット２０３ａ、２０３ｂは、それぞれアドレス管理テーブル２０４ａ、２０４ｂを保持している。アドレス管理テーブルとは、仮想メモリ空間の記憶領域を指定するアドレス（以下「仮想アドレス」という）と、ハードウェア資源としてのメモリの記憶領域を指定するアドレス（以下「物理アドレス」という）とを関連付けるためのテーブルである。第１実施形態の情報処理システムでは、物理アドレスと共に他の情報処理装置を指定する識別子（ＭＡＣアドレス等のネットワークアドレス）を格納する点で、従来のアドレス管理テーブルと異なるテーブルを用いる。詳細については、後述する。
【００３０】
２０５はバスであり、マルチコアプロセッサ２０１と後述する各要素とを接続する通信路である。２０６は、ＲＡＭ（Random Access Memory）であり、マルチコアプロセッサ２０１が使用する作業領域２０７やシステムメモリ領域２０８を有する。第１実施形態の情報処理装置２００は、システムメモリ領域２０８内に、ハイパーバイザ上で動作する論理プロセッサの状態（ステータス）を示す制御情報２０９を保持している。すなわち、システムメモリ領域２０８は、本発明の「制御情報記憶部」に対応する。制御情報２０９は、ハイパーバイザ上で動作する論理プロセッサの数だけ存在する。
【００３１】
このような制御情報２０９としては、インテル社の仮想化支援機能で使用するＶＭＣＳ（Virtual Machine Control Structure）やＡＭＤ社の仮想化支援機能で使用するＶＭＣＢ（Virtual Machine Control Block）が知られているが、論理プロセッサの状態を示す情報（例えば、論理プロセッサの状態を示すレジスタ値、プログラムカウンタ値及びメモリへのポインタの少なくともいずれか一つ）であれば、どのような制御情報を用いてもよい。制御情報２０９を用いた動作については、後述する。
【００３２】
図２において、２１０は、ＲＯＭ（Read Only Memory）であり、ＢＩＯＳ等の各種プログラムが記憶される。２１１は、入出力部（Ｉ／Ｏ部）であり、各種データの入出力が行われる。２１２は、通信部であり、図１の汎用ネットワーク１０１を介した他の情報処理装置との通信が行われる。通信方式は、無線方式でも有線方式でもよく、近距離無線通信のための機構を備えていてもよい。２１３は、データベースとして機能するストレージであり、ハードディスク等の大容量記憶媒体を用いることができる。勿論、他の記録媒体を用いてもよいし、固有のストレージを持たずにクラウドコンピューティングを用いてデータを保持する形態であってもよい。
【００３３】
＜システムの原理＞
図３は、第１実施形態の情報処理システムにおける原理を示す概念図である。３０１ａ〜３０１ｆは、それぞれ情報処理装置の制御部（具体的にはマルチコアプロセッサ）で実行されるハイパーバイザである。つまり、図１、２に示した各情報処理装置においてハイパーバイザが実行されることにより、複数のハイパーバイザ３０１ａ〜３０１ｆが汎用ネットワークを介して接続された情報処理システムを構築している。
【００３４】
３０２ａ〜３０２ｉは、ハイパーバイザ上で動作する仮想マシン（ここでは、ＯＳと表記する）である。図１４に示した従来例と大きく異なる点は、第１実施形態の情報処理システムでは、各ハイパーバイザ間にまたがって仮想マシンが動作する点である。例えば、図３において、ＯＳ３０２ｃは、ハイパーバイザ３０１ａ〜３０１ｄの４つにまたがって動作しており、各ハイパーバイザが連携して１つの仮想マシンを稼働させている。
【００３５】
このように、第１実施形態の情報処理システムは、ＯＳ３０２ａ〜３０２ｉが、ハイパーバイザ３０１ａ〜３０１ｆの間でシームレスに動作し、各ハイパーバイザは、ＣＰＵコアやメモリといったハードウェア資源（ハードウェア・リソース、もしくは単にリソースともいう）を共有することができる。すなわち、ハイパーバイザ３０１ａ〜３０１ｆが互いに連携して互いのハードウェア・リソースを共用し、仮想マシンの動的なスケールアップを可能とした情報処理システムが構築されている。
【００３６】
次に、そのような情報処理システムを構築するための具体的な実装方法について説明する。図４は、第１実施形態に係る情報処理システムを構築する情報処理装置に実装される制御情報の役割を説明する図である。ここでは、ある論理プロセッサがハイパーバイザ間を遷移している様子を示している。
【００３７】
図４において、４０１ａ、４０１ｂは、それぞれハイパーバイザである。各ハイパーバイザ４０１ａ、４０１ｂは、それぞれメモリ４０２ａ、４０２ｂを有し、各種データを保持している。メモリ４０２ａは、ハイパーバイザ４０１ａを実行している情報処理装置に備えられたハードウェア資源であり、メモリ４０２ｂは、ハイパーバイザ４０１ｂを実行している情報処理装置に備えられたハードウェア資源である。
【００３８】
ハイパーバイザ４０１ａでは、現在３つの論理プロセッサ４０３ａ〜４０３ｃが動作しており、新たに１つの論理プロセッサが追加されるところである。ハイパーバイザ４０１ｂでは、現在２つの論理プロセッサ４０３ｄ、４０３ｅが動作している。４０３ｆは、図４の時点より時間ｔだけ以前に動作していた論理プロセッサを示している。
【００３９】
各論理プロセッサ４０３ａ〜４０３ｅは、それぞれ制御情報４０４ａ〜４０４ｅをシステムメモリ領域に保持している。そして、図４の時点より時間ｔだけ以前に動作していた論理プロセッサ４０３ｆの状態を示す制御情報４０４ｆは、図４に示すように、ハイパーバイザ４０１ｂからハイパーバイザ４０１ａへの遷移過程にある。前述のとおり、制御情報４０４ｆの送信は、汎用ネットワークを介して行われる。そして、ハイパーバイザ４０１ａでは、受信した制御情報４０４ｆに基づいて論理プロセッサ４０３ｆを再稼働させることができる。
【００４０】
このように、第１実施形態の情報処理システム１００では、制御情報４０４がハイパーバイザ間の物理的な垣根を越えて送受信されることにより、ハイパーバイザに依存することなく論理プロセッサ４０３を動作させることができ、結果として、ハイパーバイザ４０１ａ、４０１ｂに跨るように仮想マシン（ＯＳ）４０５を動作させることができる。
【００４１】
なお、制御情報４０４ｆをハイパーバイザ４０１ａのどのＣＰＵが処理するかについては、制御情報４０４ｆを送信する前に予めハイパーバイザ４０１ａと４０１ｂとの間で調停しておくことが望ましい。例えば、リソースの不足しているハイパーバイザのＣＰＵが、リソースの余っているハイパーバイザを探すためのリクエスト命令をネットワーク上にブロードキャストしたり、リソースの使用状況を管理するサーバに送信したりすることにより、制御情報の送信先を求める過程があってもよい。
【００４２】
制御情報の送信先が決まったら、そのハイパーバイザに対してリソースの使用許可を求める命令を送信して事前確認を行ってもよい。そして、調停が完了したらリソースの使用許可を出したハイパーバイザに対して制御情報を送信することにより、その制御情報を受信したハイパーバイザのリソースを使用することができる。このような調停は、各ハイパーバイザの制御下にあるＣＰＵが行い、この場合におけるＣＰＵは、本発明の「発行部」に相当する。
【００４３】
汎用ネットワークを介した制御情報の送受信は、使用するネットワークに応じて適切なプロトコルを選択すればよい。例えば、汎用ネットワークとしてＩＰネットワークを用い、プロトコルとしてＴＣＰ／ＩＰを用いた場合について図５に示す。
【００４４】
図５に示すように、ＴＣＰプロトコルでは「３ウェイハンドシェイク」によってハイパーバイザ４０１ａとハイパーバイザ４０１ｂとの間の接続が確立される。その後、ハイパーバイザ４０１ｂからハイパーバイザ４０１ａに対して制御情報４０４ｆ及びデータ４０６が送信される。さらにその後、ハイパーバイザ４０１ａからハイパーバイザ４０１ｂに対して制御情報５０１及びデータ５０２が送信されるようにしてもよい。
【００４５】
上述のように、論理プロセッサ４０３をハイパーバイザ４０１ｂからハイパーバイザ４０１ａに遷移させるに当たり、論理プロセッサにキャッシュされているデータ（例えば、論理プロセッサのＬ１〜Ｌ３キャッシュに記憶されているデータ）や論理プロセッサを実行していたＣＰＵの担当している処理のスタックデータ等の参照頻度の高いデータ４０６も制御情報４０４と共に遷移させることが好ましい。これにより、論理プロセッサ４０３がハイパーバイザ間を遷移しても、参照頻度の高いデータ４０６も一緒に遷移するため、継続的に処理を実行することができる。このような参照頻度の高いデータ４０６は、それを参照する論理プロセッサに関連するデータ、換言すれば、該論理プロセッサの状態を示す制御情報に関連するデータである。
【００４６】
なお、参照頻度の高いデータ４０６を送信するためにアドレス管理テーブルを参照してもよい。例えば、ハイパーバイザ４０１ｂは、送信に必要なデータを自身のアドレス管理テーブルを参照して特定し、自身の管理下にあるメモリから読み出して送信することができる。
【００４７】
また、図４に示すように、ハイパーバイザ４０１ｂで処理を行っていた論理プロセッサ４０３ｆが、ハイパーバイザ４０１ａへと遷移した場合、遷移前に処理していたデータのほとんどは、メモリ４０２ｂに記憶されている。したがって、ハイパーバイザ４０１ａに遷移した後、処理を続行していくと、メモリ４０２ｂを参照する必要性が生じることとなる。
【００４８】
そこで、第１実施形態の情報処理システム１００では、各ハイパーバイザが汎用ネットワークを介して他のハイパーバイザの制御下にあるメモリにアクセスできるようにするための具体的手段を実装している。図６は、第１実施形態に係る情報処理システムを構築する情報処理装置に実装されるアドレス管理テーブルの役割を説明する図である。
【００４９】
図６は、図４を用いて説明した論理プロセッサ４０３ｆの遷移後の状態を示している。６０１は、アドレス管理テーブルであり、図２に示すアドレス管理テーブル２０４ａ、２０４ｂと同じものである。アドレス管理テーブル６０１は、ＯＳ４０５が管理する仮想メモリ空間の記憶領域を指定する仮想アドレスと、実際のメモリ空間（メモリ４０２ａ、４０２ｂで構成するメモリ空間）の記憶領域を指定する物理アドレスとを関連付けるためのテーブルである。
【００５０】
アドレス管理テーブル６０１の物理アドレスには、２種類の物理アドレスが含まれている。第１の物理アドレスは、アドレス管理テーブル６０１が記憶される情報処理装置（ハイパーバイザ４０１ａ）に設けられたメモリ４０２ａの物理アドレスを指定するもの（図６の「５５」、「５６」、「５７」等）であり、第２の物理アドレスは、他の情報処理装置（ハイパーバイザ４０１ｂ）に設けられたメモリ４０２ｂの物理アドレスを指定するもの（図６の「識別子＋８１」、「識別子＋８３」等）である。
【００５１】
ここで、第２の物理アドレスは、単に物理アドレスを指定するだけではなく、他の情報処理装置をネットワーク上で指定する識別子（ネットワークアドレス）を一緒に格納している。なお、第１実施形態では、「識別子＋８１」のように表現しているが、これに限らず、識別子と物理アドレスとを組み合わせたものであれば、如何なる態様であっても構わない。識別子としては、ハイパーバイザ間を接続する汎用ネットワークのプロトコルに応じた識別子を用いればよい。例えば、「ＭＡＣアドレス」や「ＩＰアドレス」などを用いることができる。
【００５２】
図６に示したような汎用ネットワークを介したハイパーバイザ間のメモリ参照におけるオーバーヘッドを低減するためには、低レイテンシかつ広帯域な汎用ネットワークを使用することが望ましい。例えば、「ｉｎｆｉｎｉＢａｎｄ」、「Ｃｏｎｖｅｒｇｅｄ  Ｅｎｈａｎｃｅｄ  Ｅｔｈｅｒｎｅｔ（登録商標）」、「Ｓｅｒｉａｌ  ＲａｐｉｄＩＯ」を用いることができる。ただし、使用する環境、予算等に応じて適材適所で汎用ネットワークを選択することが可能であり、例えば低レイテンシであることよりも低コストであることを重視する場合に「IPネットワーク」を用いるなど、使用可能な汎用ネットワークに特に制限はない。
【００５３】
以上のとおり、第１実施形態の情報処理システム１００を構築する情報処理装置２００は、ハイパーバイザ間で各論理プロセッサの制御情報を送受信することにより、論理プロセッサをハイパーバイザ間で遷移させることができ、ハイパーバイザ間に跨って１つの仮想マシン（ＯＳ）を動作させることができる。
【００５４】
さらに、各ハイパーバイザの制御下にあるＣＰＵに図６に示したアドレス管理テーブルを備えることにより、相異なるハイパーバイザ間で、汎用ネットワークを介したメモリ参照が可能となり、ハイパーバイザの物理的な隔離を意識することなく、ハイパーバイザ間に跨る仮想マシンを動作させることができる。その結果、相異なるハイパーバイザの制御下にある複数のＣＰＵを統合して制御することができ、より高い処理性能を実現することが可能となる。
【００５５】
例えば、従来、アプリケーションの性能を向上させるためには、図７（ａ）に示すように、スケールアウト型のアプローチを採用する必要があった。すなわち、複数のハイパーバイザ７０１ａ〜７０１ｄにおいて、それぞれ独立に仮想マシン（ＯＳ）７０２ａ〜７０２ｄを動作させ、アプリケーションの性能を向上させる際には、その仮想マシンの数、すなわちハイパーバイザの数を増加させることで対応してきた。
【００５６】
しかし、この場合には、例えば仮想マシン７０１ａを司令塔（ホスト）として機能させ、仮想マシン７０２ａ〜７０２ｄを処理ノード（スレーブ）として機能させることによりアプリケーション処理を行うため、アプリケーションレベルでネットワーク越しの処理の依頼や回答、データ同期、処理タイミング調整等を行う必要があり、開発に多くの工数や高い技術力が要求されるという問題があった。
【００５７】
一方、第１実施形態の情報処理システム１００においては、図７（ｂ）に示すように、仮想マシン７０２ａをハイパーバイザ７０１ａ〜７０１ｄに跨って動作させるというスケールアップ型のアプローチを採用することができる。そのため、ネットワーク通信に伴うオーバーヘッドを意識することなく、マルチスレッドのみ意識してプログラム開発を行うだけで容易にアプリケーション性能の向上を図ることができる。
【００５８】
また、リソース（例えばＣＰＵコアやメモリ）に余裕のあるハイパーバイザに論理プロセッサを遷移させることで、各ハイパーバイザのリソースを効率的に使用することができる。すなわち、各ハイパーバイザのリソースの使用状況に応じて、動的に論理プロセッサを遷移（制御情報を遷移）させることにより、情報処理システムの効率的な利用が可能となる。
【００５９】
例えば、図７（ａ）に示すように、ハイパーバイザ７０１ａにおいて仮想マシン（ＯＳ１）７０２ａが動作しており、ＣＰＵコア７０３ａが不足しているとする。一方、ハイパーバイザ７０１ｂにおいて仮想マシン（ＯＳ２）７０２ｂが動作しており、ＣＰＵコア７０３ｂの１つが余っているとする。
【００６０】
この場合に、図７（ｂ）に示すように、ハイパーバイザ７０１ａ上で動作していた仮想マシン７０２ａをハイパーバイザ７０１ｂまで拡張することにより、ハイパーバイザ７０１ｂの余剰ＣＰＵコアを仮想マシン７０２ａに割り当てることが可能となる。そのため、所望の処理のために要求されるリソースを余分に調達して分散処理をしなければならないという経済性の悪さを改善し、ハードウェア資源のより高い使用効率を実現することができる。
【００６１】
他にも、ハイパーバイザ７０１ａにおいて仮想マシン（ＯＳ１）７０２ａが動作しており、ハイパーバイザ７０１ａが動作する情報処理装置内のメモリ（図示せず）が不足しているとする。一方、ハイパーバイザ７０１ｂが動作する情報処理装置内のメモリに空き領域が存在し、容量に余裕があるとする。
【００６２】
この場合に、ハイパーバイザ７０１ａ上で動作していた仮想マシン７０２ａをハイパーバイザ７０１ｂまで拡張することにより、ハイパーバイザ７０１ｂが管理するメモリの空き領域を仮想マシン７０２ａに割り当てることが可能となる。
【００６３】
（第２実施形態）
本発明の第２実施形態の情報処理システム９００について図９を用いて説明する。第２実施形態の情報処理システム９００は、第１実施形態の情報処理システム１００に対し、１つの仮想マシンの内部で、使用するＣＰＵ性能の階層化を行うという機能を追加したものである。
【００６４】
従来、１つの仮想マシン内では同一性能のＣＰＵしか使用することができず、高いレベルの処理には相応の処理能力を有する仮想マシンを動作させたり、バックアップ用の仮想マシンを動作させたりするなど、仮想マシンごとに処理レベル（処理量）を決めなければならなかった。そのため、要求される処理が動的に変化するような状況に対し、柔軟に対応することが困難であった。
【００６５】
しかし、第２実施形態の情報処理システム９００では、相異なる複数のハイパーバイザに跨って仮想マシン９０３を動作させることができるという利点を活かし、要求される処理レベルに応じて、使用するＣＰＵ性能の割当を動的に変更する変化ことを特徴としている。
【００６６】
図９において、ハイパーバイザ９０１ａは、第１の性能を備えたＣＰＵ（以下「高性能ＣＰＵ」という）９０２ａを搭載する情報処理装置で動作し、ハイパーバイザ９０１ｂは、第２の性能を備えたＣＰＵ（以下「中性能ＣＰＵ」という）９０２ｂを搭載する情報処理装置で動作し、ハイパーバイザ９０１ｃは、第３の性能を備えたＣＰＵ（以下「低性能ＣＰＵ」という）９０２ｃを搭載する情報処理装置で動作する。ここでは、第１の性能が最も高く、続いて第２の性能、第３の性能と順に性能は低くなっている。
【００６７】
なお、高性能ＣＰＵと言っても絶対的な性能を指すわけではなく、あくまで、それぞれのＣＰＵの相対比較である。すなわち、第１の性能＞第２の性能＞第３の性能という関係を満たす限り、どのような性能を備えたＣＰＵであってもよい。
【００６８】
そのため、ハイパーバイザ９０１ａは、高性能ＣＰＵ９０２ａを搭載しているため、相対的に他のハイパーバイザ９０１ｂ、９０１ｃよりも高いレベルの処理が可能である。逆に、ハイパーバイザ９０１ａは、低性能ＣＰＵ９０２ｃを搭載しているため、相対的に他のハイパーバイザ９０１ａ、９０１ｂよりも低いレベルの処理しかできない。
【００６９】
しかし、低性能ＣＰＵ９０２ｃを使用した場合であっても、割当数が多ければ処理能力も高くなる。そのため、高性能ＣＰＵ９０２ａが他の仮想マシンに割り当てられて不足しているような状態にあっても、図９に示すように、例えば１つの仮想マシン９０３に対して、高性能ＣＰＵ９０２ａを１つ、中性能ＣＰＵ９０２ｂを２つ、低性能ＣＰＵ９０２ｃを３つ割り当てることで要求される処理に対応することが可能である。勿論、高性能ＣＰＵ９０２ａが空けば、高性能ＣＰＵを２つ、中性能ＣＰＵを１つというように動的に割当を変更し、処理を継続することも可能である。
【００７０】
以上のように、第２実施形態の情報処理システム９００は、各ハイパーバイザ９０１ａ〜９０１ｃが管理するＣＰＵ９０２ａ〜９０２ｃの使用状況を常に監視し、仮想マシン９０３の内部において、要求される処理レベルに応じて、適切なＣＰＵ割当を動的に実行し、ＣＰＵ性能をティアリング（階層化）することができる。また、最低限のＣＰＵ性能を割当てることにより、各ハイパーバイザ９０１ａ〜９０１ｃが管理するハードウェア資源の使用効率をさらに高めることが可能である。
【００７１】
（第３実施形態）
本発明の第３実施形態の情報処理システム１０００について図１０を用いて説明する。
第３実施形態の情報処理システム１０００は、第１実施形態の情報処理システム１００に対し、フェイルオーバー機能を追加したものである。
【００７２】
従来、サーバ等として使用する情報処理装置が故障した際、無停止フェイルサーバーを実現するためには、図１０（ａ）に示すように、ハイパーバイザ１００１ａの状態を丸ごとコピーしたバックアップ用のハイパーバイザ１００１ｂを設ける必要があった。この場合、ハイパーバイザ１００１ｂを用意するためのコストと、丸ごとコピーするためのネットワーク帯域を消費することとなり、経済性が悪いという問題があった。
【００７３】
しかし、第３実施形態の情報処理システム１０００では、相異なる複数のハイパーバイザ間でメモリを共有化することができるという利点を活かし、各ハイパーバイザが管理するメモリのパリティデータを、他のハイパーバイザが管理するメモリに保存し、情報処理装置（ハイパーバイザ）の故障時にパリティデータを利用して無停止フェイルオーバーを実現することを特徴としている。
【００７４】
図１０（ｂ）において、ハイパーバイザ１００１ａには、仮想マシン１００２ａ、１００２ｂが動作しており、各仮想マシン１００２ａ、１００２ｂは、それぞれハイパーバイザ１００１ａが管理するメモリ内の所定のメモリ領域を占有している。一方、ハイパーバイザ１００１ｂには、仮想マシン１００２ｃに加えて、パリティデータを保存するメモリ領域１００３が確保されている。仮想マシン１００２ｃは、ハイパーバイザ１００１ｂが管理するメモリ内の所定のメモリ領域を占有している。
【００７５】
そして、各仮想マシン１００２ａ〜１００２ｃが使用するメモリのパリティデータは、すべてメモリ領域１００３に保存されている。これにより、何らかの障害でハイパーバイザ１００１ａが停止した場合にも、メモリ領域１００３に保存されたパリティデータを用いて別のハイパーバイザで仮想マシン１００２ａ、１００２ｂを修復することができ、無停止フェイルオーバーを実現することができる。
【００７６】
なお、ここでは各仮想マシン１００２ａ〜１００２ｃの使用するメモリ領域のパリティデータをすべてメモリ領域１００３に保存する構成としたが、それらのパリティデータを相異なる複数のハイパーバイザが管理するメモリに分散させることも可能である。
【００７７】
以上のように、第２実施形態の情報処理システム１０００では、パリティデータ分の容量のメモリ領域とネットワーク帯域のみでフェイルオーバー機能を追加することが可能である。これにより、少ない台数の情報処理装置で冗長性に優れたフェイルオーバーを実現することが可能である。
【００７８】
（第４実施形態）
本発明の第４実施形態の情報処理システム１１００について図１１を用いて説明する。
第４実施形態の情報処理システム１１００では、特定のハイパーバイザが管理するメモリに記憶されたデータの処理を、他のハイパーバイザに委託（アウトソーシング）できる点に特徴がある。例えば、諸事情により国外へデータを持ち出せないような国が、そのデータを用いた処理のみを他国にアウトソーシングするような事例が考えうる。
【００７９】
図１１において、Ａ国に配置されたハイパーバイザ１１０１ａは、メモリ１１０２ａを管理している。そして、メモリ１１０２ａに記憶されたデータは、Ａ国特有の事情により国外への持ち出しが禁止されているとする。
【００８０】
一方、Ｂ国に配置されたハイパーバイザ１１０１ｂは、メモリ１１０２ｂを管理している。そして、Ｂ国は、本発明に係る情報処理システムを用いて、他国のハイパーバイザに対するアウトソーシングを提供しているものとする。
【００８１】
第４実施形態の情報処理システム１１００では、Ａ国のハイパーバイザ１１０１ａ上の仮想マシン（ＯＳ）１１０３において複数の論理プロセッサ１１０４ａ〜１１０４ｃを動作させて処理を行い、必要に応じて、例えばＡ国のハードウェア資源（ＣＰＵコア等）では計算能力が足りなくなったときに、図１１に示すように、ある論理プロセッサ１１０４ｃの制御情報１１０５およびキャッシュデータ１１０６を、汎用ネットワークを介してＢ国のハイパーバイザ１１０１ｂに遷移させる。勿論、キャッシュデータ以外にも参照頻度の高い他のデータを含ませても構わない。
【００８２】
これにより、仮想マシン１１０３をＡ国のハイパーバイザ１１０１ａとＢ国のハイパーバイザ１１０１ｂとの間にまたがって動作させることができ、Ａ国のハイパーバイザ１１０１ａが、Ｂ国のハードウェア資源を活用することができる。換言すれば、Ｂ国は、Ａ国のハイパーバイザ１１０１ａ上で動作する論理プロセッサ１１０４の制御情報の送信先としてＢ国のハイパーバイザ１１０１ｂを指定することを契約によって許可することで、Ｂ国のハイパーバイザ（又はハードウェア資源）のアウトソーシングを可能としている。
【００８３】
なお、第４実施形態の情報処理システム１１００を構築するために、Ａ国のハイパーバイザ１１０１ａは、論理プロセッサ１１０４の制御情報の送信先として、Ｂ国のハイパーバイザ１１０１ｂのみを指定しておくことが望ましい。宛先が明示的に決まっていないと、Ｂ国以外のハイパーバイザに制御情報を送信してしまう恐れがあるからである。
【００８４】
また、Ａ国のハイパーバイザ１１０１ａ、Ｂ国のハイパーバイザ１１０１ｂは共に、データの保存先としてＡ国のメモリ１１０２ａを指定することが望ましい。Ａ国からのデータの持ち出しが禁止されている以上、Ｂ国のメモリ１１０２ｂに処理データが保存されないようにすべきだからである。
【００８５】
なお、厳密に言えば、Ａ国からＢ国に対してキャッシュデータ相当のデータが流れることにはなる。しかし、そもそもキャッシュデータは、データ量として極僅かであるし、その時の処理に応じて内容は異なり、参照頻度の高い断片的なデータであるにすぎない。したがって、その処理時点では断片的なデータが僅かに流れるものの、処理の進行に応じてキャッシュデータは逐次変化するため、Ａ国のデータを丸ごと国外に持ち出すのとは異なり、Ｂ国から見れば実質的にＡ国のデータを取得したことにはならないと言える。
【００８６】
以上のように、第４実施形態の情報処理システム１１００は、第１国に存在するデータを実質的に国外に持ち出すことなく、その処理のみを第２国（他国）で処理することを可能とし、自国に処理能力の高いハードウェア資源が存在しなくとも、他国のハードウェア資源を活用することが可能である。
【００８７】
（第５実施形態）
第１実施形態から第４実施形態までは、２つのハイパーバイザ間で仮想マシンを共有化する例を示したが、第５実施形態の情報処理システム１２００では、３つ以上のハイパーバイザ間で仮想マシンを共有化する例を示す。
【００８８】
図１２は、第５実施形態の情報処理システム１２００である。情報処理システム１２００は、ハイパーバイザ１２０１ａ〜１２０１ｄの４つのハイパーバイザで構成され、それぞれのハイパーバイザが、メモリ１２０２ａ〜１２０２ｄを管理している。そして、仮想マシン（ＯＳ）１２０３が、各ハイパーバイザにまたがって動作している。
【００８９】
各ハイパーバイザ間においては、制御情報１２０４ａ〜１２０４ｄ及び参照頻度の高いデータ（例えばキャッシュデータ）１２０５ａ〜１２０５ｄが送受信される。これにより、各ハイパーバイザは、他のハイパーバイザのリソース（ハードウェア資源）を共用することができ、動的に仮想マシンに対して必要なリソースを与えることが可能である。
【００９０】
各制御情報１２０４ａ〜１２０４ｄの送受信シーケンスは、同時並行で行っても良いし、シーケンシャルに行ってもよい。同時変更に行うと、処理の待ち時間が軽減され、処理速度の向上を図ることができる。また、シーケンシャルに行った場合、接続を確立するための手続きが簡素化されるため、仮想マシンを他のハイパーバイザに拡張する際の処理が少なくて済むという利点がある。
【００９１】
なお、本実施形態では、模式的に、上下左右のハイパーバイザ間で接続を確立する例を示したが、ハイパーバイザ１２０２ａとハイパーバイザ１２０２ｄとが直接制御情報１２０４や参照頻度の高いデータ１２０５を送受信するような態様も当然とり得る。
【００９２】
また、他のハイパーバイザを介して目的とするハイパーバイザとの間で制御情報１２０４や参照頻度の高いデータ１２０５を送受信することも可能である。例えば、ハイパーバイザ１２０２ａが、ハイパーバイザ１２０２ｄと仮想マシン１２０３を共有するにあたり、ハイパーバイザ１２０２ｂもしくはハイパーバイザ１２０２ｃを介して制御情報１２０４や参照頻度の高いデータ１２０５を送受信する場合もあり得る。
【００９３】
さらに、本実施形態では、４つのハイパーバイザ間で仮想マシンを共有する例を示したが、５つ以上のハイパーバイザ間で仮想マシンを共有することも可能である。
【００９４】
以上のように、第５実施形態の情報処理システム１２００では、３つ以上のハイパーバイザ間にまたがって仮想マシンを動作させることにより、多くのハイパーバイザ間で仮想マシンを共有して、容易にアプリケーション性能のスケールアップ型向上を図ることができる。
【００９５】
（第６実施形態）
本発明の第６実施形態の情報処理システム１３００について図１３を用いて説明する。
第６実施形態の情報処理システム１３００は、第１実施形態の情報処理システム１００とアドレス管理テーブルの構成が異なる。
【００９６】
図１３において、ハイパーバイザＡ１３０１ａとハイパーバイザＢ１３０１ｂは、仮想マシン（ＯＳ）１３０２を共有している。仮想マシン１３０２は、固有のアドレス管理テーブル１３０３（ＯＳ用アドレス管理テーブル」という）を有しており、このＯＳ用アドレス管理テーブル１３０３は、ハイパーバイザＡ１３０１ａを実行するＣＰＵコア内のＭＭＵ（図示せず）に格納されている。
【００９７】
ＯＳ用アドレス管理テーブル１３０３は、仮想マシン１３０２が管理する仮想メモリ空間における仮想アドレスを、仮想マシンごとに割り振られた仮想的なアドレス（ＶＭ内アドレス）に変換する機能を有している。
【００９８】
また、各ハイパーバイザＡ１３０１ａ、ハイパーバイザＢ１３０１ｂは、それぞれハイパーバイザ用アドレス管理テーブル１３０４ａ、１３０４ｂを有している。ハイパーバイザ用アドレス管理テーブル１３０４ａ、１３０４ｂは、それぞれ仮想マシンＩＤ（ＶＭＩＤ）、仮想マシン内アドレス（ＶＭ内アドレス）、ハイパーバイザＩＤ、物理アドレス、データを保持する領域を備えている。
【００９９】
仮想マシンＩＤとは、ハイパーバイザ上で動作している仮想マシン１３０２に関連付けられたＩＤ（識別子）であり、どの仮想マシンに関連付けられたデータを保持しているかを示すものである。例えば、仮想マシンＩＤが「ＯＳ１」である場合、その行の各領域は、ＯＳ１に対応付けられたものであることを意味する。
【０１００】
仮想マシン内アドレスとは、仮想マシンごとに割り振られたアドレスであり、仮想マシンＩＤが示す仮想マシンが参照可能なアドレスである。
【０１０１】
ハイパーバイザＩＤとは、参照先のハイパーバイザ又は参照元のハイパーバイザを指す識別子である。例えば、図１３のハイパーバイザ用アドレス管理テーブル１３０４ａにおいて、ＶＭ内アドレス「５８」に対応する「物理アドレス」や「データ」の欄には実効的なデータが存在しない。すなわち、ハイパーバイザＡ１０３１ａが管理するメモリには、目的とするデータが存在しない。
【０１０２】
しかし、第６実施形態の情報処理システム１３００では、ハイパーバイザＩＤが参照先として「Ｂ」を示すため、ハイパーバイザＢ１３０１ｂに格納されるハイパーバイザ用アドレス管理テーブル１３０４ｂが参照され、該テーブル内のＶＭ内アドレス「５８」が参照されることにより、目的とするデータ「＆＆＆」を、ハイパーバイザＢ１３０１ｂが管理するメモリの物理アドレス「８３」に見つけることができる。
【０１０３】
以上のように、第６実施形態の情報処理システム１３００では、ハイパーバイザ用アドレス管理テーブルをハイパーバイザごとに設け、該管理テーブル内に、ハイパーバイザＩＤという概念を導入することにより、自身のハイパーバイザに目的とするデータが存在しない場合においても、容易に他のハイパーバイザのメモリを参照することが可能である。
【０１０４】
そして、目的とするデータが自身のハイパーバイザ内のメモリに存在すれば、ハイパーバイザ用アドレス管理テーブルにて、対応する物理アドレスを参照し、目的とするデータが自身のハイパーバイザ内のメモリに存在しなければ、ハイパーバイザＩＤを用いて他のハイパーバイザ用アドレス管理テーブルにて、対応する物理アドレスを参照することができる。
【符号の説明】
【０１０５】
１００：情報処理システム、１０１…汎用ネットワーク、１０２〜１０７…情報処理装置、３０１ａ〜３０１ｆ…ハイパーバイザ、３０２ａ〜３０２ｉ…仮想マシン（ＯＳ）、４０１ａ、４０１ｂ…ハイパーバイザ、４０２ａ、４０２ｂ…メモリ、４０３ａ〜４０３ｆ…論理プロセッサ、４０４ａ〜４０４ｆ…制御情報、４０５…仮想マシン（ＯＳ）、４０６…参照頻度の高いデータ、６０１…アドレス管理テーブル
【図１】
2020123382.tif 000003
【図２】
2020123382.tif 000004
【図３】
2020123382.tif 000005
【図４】
2020123382.tif 000006
【図５】
2020123382.tif 000007
【図６】
2020123382.tif 000008
【図７】
2020123382.tif 000009
【図８】
2020123382.tif 000010
【図９】
2020123382.tif 000011
【図１０】
2020123382.tif 000012
【図１１】
2020123382.tif 000013
【図１２】
2020123382.tif 000014
【図１３】
2020123382.tif 000015
【図１４】
2020123382.tif 000016