(57)【要約】【課題】仮想マシンの処理能力および可用性を向上させる。【解決手段】仮想マシンエミュレートシステムは、複数の物理マシンのうちの少なくとも１つの物理マシンに設けられ、複数の物理マシンがそれぞれに有している複数のコアの全てを一括して管理し、仮想マシンを構築する際、少なくとも２つの物理マシンのそれぞれから少なくとも１つのコアを指定し、指定された複数のコアを仮想マシンの仮想ＣＰＵとして割り当てるコア管理手段を備える。【選択図】  図１
2019067013.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理マシンのうちの少なくとも１つの前記物理マシンに設けられ、複数の前記物理マシンがそれぞれに有している複数のコアの全てを一括して管理し、仮想マシンを構築する際、少なくとも２つの前記物理マシンのそれぞれから少なくとも１つの前記コアを指定し、指定された複数の前記コアを前記仮想マシンの仮想ＣＰＵとして割り当てるコア管理手段を備えることを特徴とする仮想マシンエミュレートシステム。
【請求項２】
前記コア管理手段は、前記仮想マシンエミュレートシステム内の全ての前記コアについての稼働情報を記憶するシステムコア管理テーブルを用いて全ての前記コアを一括して管理することを特徴とする請求項１記載の仮想マシンエミュレートシステム。
【請求項３】
前記稼働情報は、複数の前記コアの使用状況についての情報を含むことを特徴とする請求項２記載の仮想マシンエミュレートシステム。
【請求項４】
前記稼働情報は、複数の前記コアの使用頻度についての情報を含むことを特徴とする請求項３記載の仮想マシンエミュレートシステム。
【請求項５】
前記仮想マシンを構築する際に、それ以前に所定の理由により決定された前記コア管理手段である指定コア管理手段は、前記稼働情報をユーザに提示し、前記稼働情報を認識した前記ユーザから、仮想マシン割当情報を含む仮想マシン割当要求を受け付け、前記仮想マシン割当情報に多重化指定が含まれる場合、前記指定コア管理手段によって管理される前記コアを多重化する場合の前記コアを管理する前記コア管理手段である多重化コア管理手段に対して、多重化要求を送信することを特徴とする請求項２乃至４のいずれか１項に記載の仮想マシンエミュレートシステム。
【請求項６】
多重化された前記仮想マシンが起動した後に、前記コア管理手段は、自己が前記指定コア管理手段であるか前記多重化コア管理手段であるかを判定し、自己が前記多重化コア管理手段である場合に、前記指定コア管理手段に対してヘルスチェック信号を送信し、前記ヘルスチェック信号に対する応答が所定時間内に受信できない場合、前記多重化コア管理手段は、自己を前記指定コア管理手段とすることを特徴とする請求項５に記載の仮想マシンエミュレートシステム。
【請求項７】
複数の前記物理マシンのそれぞれに設けられ、それぞれの前記物理マシンの複数の前記コアを制御するコア制御手段をさらに備え、
前記コア管理手段は、前記仮想マシンが構築された後に、ＯＳまたはアプリケーションから処理命令を受信した際に、前記稼働情報に基づいて、前記仮想ＣＰＵに割り当てられている複数の前記コアの中から最適な前記コアを選定し、選定された前記コアを制御する前記コア制御手段に対して前記処理命令を送信することを特徴とする請求項２乃至４のいずれか１項に記載の仮想マシンエミュレートシステム。
【請求項８】
複数の物理マシンのうちの少なくとも１つの前記物理マシンにおいて、複数の前記物理マシンがそれぞれに有している複数のコアを一括して管理し、仮想マシンを構築する際、少なくとも２つの前記物理マシンのそれぞれから少なくとも１つの前記コアを指定し、指定された複数の前記コアを前記仮想マシンの仮想ＣＰＵとして割り当てることを特徴とする仮想マシンエミュレート方法。
【請求項９】
複数の物理マシンのうちの少なくとも１つの前記物理マシンのコンピュータに、複数の前記物理マシンがそれぞれに有している複数のコアを一括して管理し、仮想マシンを構築する際、少なくとも２つの前記物理マシンのそれぞれから少なくとも１つの前記コアを指定し、指定された複数の前記コアを前記仮想マシンの仮想ＣＰＵとして割り当てる処理
を実行させるためのコンピュータプログラム。
【請求項１０】
複数のコアをそれぞれに有する複数の物理マシンのうちの少なくとも２つの前記物理マシンのそれぞれから少なくとも一つずつ指定された複数の前記コアが割り当てられた仮想ＣＰＵを備えることを特徴とする仮想マシン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば、クラウドサーバ事業等に利用される仮想マシンエミュレートシステム、仮想マシンエミュレート方法、コンピュータプログラム、および仮想マシンに関する。
【背景技術】
【０００２】
物理マシンのＯＳ（Operating System）上のソフトウェアによってエミュレートされる仮想マシンが知られている。この場合、ＯＳレベルまたはクラウドベースを対象とした処理能力向上や可用性の確保にはクラスタが用いられている。クラスタの方式には、たとえば、アクティブスタンバイ方式やレプリケーション方式がある。
【０００３】
特許文献１には、運用系に属する呼処理サーバが有する第１のプロセッサの各コアを、呼処理サーバのＶＭ（Virtual Machine）ごとに割り当て、待機系に属する呼処理サーバが有する第２のプロセッサの複数のコアの一部を待機系である複数のＶＭに割り当てる技術が記載されている。
【０００４】
特許文献２には、ユーザによってリソースの容量の上限値が設定されるリソースプールにより、リソースプール内であれば任意の容量の仮想マシンを任意の台数設定する技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−２７１６６号公報
【特許文献２】特開２０１５−０４６０７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
クラウドコンピューティングのように、仮想マシンを短期的に扱う場合、未使用のコアを含む物理マシンを検索して仮想マシンを構築する。しかしながら、仮想マシンは一台の物理マシン上でしか存在できなかった。すなわち、物理マシン内での未使用のコア構成でしか仮想マシンを構築することができなかった。
【０００７】
従って、たとえば、仮想マシンが所望するコア数（たとえば、３コア）未満のコア（たとえば、２コア）を有する物理マシンは使用されないため、非効率である。また、仮想マシンの処理能力を物理マシン以上にすることはできないし、負荷が特定の物理マシンに偏る場合もある。
【０００８】
また、仮想マシンの可用性を高めるため、複数の仮想マシンを多重化することがある。しかしながら、上述したように、複数の仮想マシンは同一の物理マシン（物理ＣＰＵ(Central Processing Unit)）内にパッケージングされているため、物理ＣＰＵ自体が壊れた場合には全ての仮想マシンがダウンする虞がある。
【０００９】
そこで、仮想マシンを異なる物理マシン間にて多重化することが想定される。たとえば、アプリケーションレベル上でのクラスタ構成を用いることが想定される。しかしながらこの場合、データを同期させるため、データをプライマリ仮想マシンからセカンダリ仮想マシンに転送する必要がある。このデータ転送は、処理負荷が大きいため、頻繁に実行するとアプリケーションの処理性能が低下する虞がある。
【００１０】
特許文献１や特許文献２の技術では上記課題を解決することはできない。
【００１１】
本発明は、上記課題を解決するためになされたものであり、仮想マシンの性能および可用性を向上させることが可能な仮想マシンエミュレートシステム、仮想マシンエミュレート方法、コンピュータプログラム、および仮想マシンを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の仮想マシンエミュレートシステムは、複数の物理マシンのうちの少なくとも１つの前記物理マシンに設けられ、複数の前記物理マシンがそれぞれに有している複数のコアの全てを一括して管理し、仮想マシンを構築する際、少なくとも２つの前記物理マシンのそれぞれから少なくとも１つの前記コアを指定し、指定された複数の前記コアを前記仮想マシンの仮想ＣＰＵとして割り当てるコア管理手段を備える。
【００１３】
本発明の仮想マシンエミュレート方法は、複数の物理マシンのうちの少なくとも１つの前記物理マシンにおいて、複数の物理マシンがそれぞれに有している複数のコアを一括して管理し、仮想マシンを構築する際、少なくとも２つの前記物理マシンのそれぞれから少なくとも１つの前記コアを指定し、指定された複数の前記コアを前記仮想マシンの仮想ＣＰＵとして割り当てることを特徴とする。
【００１４】
本発明のコンピュータプログラムは、複数の物理マシンのうちの少なくとも１つの前記物理マシンのコンピュータに、複数の物理マシンがそれぞれに有している複数のコアを一括して管理し、仮想マシンを構築する際、少なくとも２つの複数の前記物理マシンのそれぞれから少なくとも１つの前記コアを指定し、指定された複数の前記コアを前記仮想マシンの仮想ＣＰＵとして割り当てる処理を実行させる。
【００１５】
本発明の仮想マシンは、複数のコアをそれぞれに有する複数の物理マシンのうちの少なくとも２つの前記物理マシンのそれぞれから少なくとも一つずつ選択された複数の前記コアが割り当てられた仮処理命令の数想ＣＰＵを備える。
【発明の効果】
【００１６】
本発明によれば、仮想マシンの処理能力および可用性を向上させることが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施形態に係る仮想マシンエミュレートシステムの構成例を示すブロック図である。
【図２】図１に示す仮想マシンエミュレートシステムの動作例を説明するためのフローチャートである。
【図３】本発明の第２の実施形態に係る仮想マシンエミュレートシステムの構成例を示すブロック図である。
【図４】本発明の第３の実施形態に係る仮想マシンエミュレートシステムの構成例を示すブロック図である。
【図５】仮想マシンのイメージ図である。
【図６】第３の実施形態で構築される第１仮想マシンの例を示す図である。
【図７】第３の実施形態で構築される第２仮想マシンの例を示す図である。
【図８】図４に示すコア管理部の構成例を示すブロック図である。
【図９】図４に示すコア制御部の構成例を示すブロック図である。
【図１０】第３の実施形態の仮想マシンエミュレートシステムにおける、仮想マシンの割当動作の一例を説明するためのフローチャートである。
【図１１】本実施形態の仮想マシンエミュレートシステムにおける、割り当てられた仮想マシンが稼働した後に仮想ＣＰＵがＯＳ／アプリケーションからの処理命令を受信した際の動作の一例を示すフローチャートである。
【図１２】本実施形態の仮想マシンエミュレートシステムにおける稼働情報の更新動作の一例を示すフローチャートである。
【図１３】本実施形態の仮想マシンエミュレートシステムにおける、割り当てられた仮想マシンが稼働した後の障害監視動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
［第１の実施形態］
（構成の説明）
図１は、本発明の第１の実施形態に係る仮想マシンエミュレートシステム１の構成例を示すブロック図である。
【００１９】
仮想マシンエミュレートシステム１は、物理マシン上で仮想マシンをエミュレートする。仮想マシンエミュレートシステム１は、複数の物理マシン（図１では、物理マシン２および物理マシン３を例示）のうちの少なくとも１つの物理マシンに設けられるコア管理部（図１では、コア管理部４およびコア管理部５を例示）を備える。コア管理部は、コア管理手段の一例である。
【００２０】
コア管理部４およびコア管理部５は、物理マシン２、３がそれぞれに有している物理ＣＰＵの複数のコアの全てを一括して管理する。そして、仮想マシンを構築する際、コア管理部４およびコア管理部５の少なくとも一方は、少なくとも２つの物理マシン（たとえば、物理マシン２、３）のそれぞれから少なくとも１つのコアを指定し、指定された複数のコアを仮想マシンの仮想ＣＰＵとして割り当てる。
【００２１】
なお、コア管理部は、少なくとも２つの物理マシンのそれぞれから指定されたコアを含む仮想マシンを構築する上記機能に加えて、１つの物理マシン内のコアのみで構成される仮想マシンを構築する機能を備えることができる。
（動作の説明）
図２は、図１に示す仮想マシンエミュレートシステム１の動作例（仮想マシンエミュレート方法）を説明するためのフローチャートである。
【００２２】
物理マシン２、３のうちの少なくとも１つの物理マシン、たとえば、物理マシン２において、コア管理部４は、物理マシン２、３がそれぞれに有している複数のコアを一括して管理する（ステップＳ１）。コア管理部４は、仮想マシンを構築する際、少なくとも２つの物理マシン（たとえば、物理マシン２、３）のそれぞれから少なくとも１つのコアを指定し、指定された複数のコアを仮想マシンの仮想ＣＰＵとして割り当てる。
【００２３】
第１の実施形態の仮想マシンエミュレートシステム（特に、コア管理部）の構成および動作については以下で示す第３の実施形態にて詳細に説明する。
（効果の説明）
以上説明した第１の実施形態において、少なくとも１つのコア管理部は、少なくとも２つの物理マシンのそれぞれから少なくとも１つのコアを指定し、指定された複数のコアを仮想マシンの仮想ＣＰＵとして割り当てる。すなわち、本実施形態では、１つの仮想マシンを複数の物理マシンに跨いで構築することができる。これにより、仮想マシンの処理能力を１つの物理マシン以上にすることできる。また、負荷（使用コアの数）が特定の物理マシンにだけ偏ることを回避できる。
【００２４】
さらに、本実施形態では、仮想マシンの仮想ＣＰＵを、異なる物理マシンのコアで構成している。１つの物理ＣＰＵが故障した場合であっても、他方の物理ＣＰＵまで故障する可能性は低い。従って、本実施形態によれば、仮想マシン全体がダウンする事態を回避することができる。
【００２５】
以上を纏めると、本実施形態によれば、仮想マシンの処理能力および可用性を向上させることが可能となる。
［第２の実施形態］
図３は、図１に示す仮想マシンエミュレートシステム１、または後述される図４に示す仮想マシンエミュレートシステム１０をコンピュータによって実現した例であり、本発明の第２の実施形態に係る仮想マシンエミュレートシステム１００の構成例を示すブロック図である。仮想マシンエミュレートシステム１００は、記憶部１０２と、プロセッサ等を含む演算部１０４と、を備える。記憶部１０２は、コンピュータ読み取り可能な記録媒体であり、コンピュータプログラム１５０を記憶する。コンピュータプログラム１５０は、例えば、図２に示される処理や図１０に示される処理を演算部１０４に実行させるためのプログラムである。コンピュータプログラム１５０は、たとえば、複数の物理マシンのうちの少なくとも１つの物理マシンの演算部１０４（コンピュータ）により実行される。
【００２６】
以上説明した第２の実施形態によれば、第１および後述される第３の実施形態と同様に、仮想マシンの処理能力および可用性を向上させることが可能となる。
【００２７】
なお、演算部１０４は、例えば、ＣＰＵと、ＣＰＵが実行する命令を記憶するメモリとで構成される。また、コンピュータ読み取り可能な記録媒体は、例えば、非一時的な記憶装置である。非一時的な記憶装置の例としては、例えば、光ディスク、磁気ディスク、ＲＯＭ（Read Only Memory）、不揮発性半導体メモリ等の可搬媒体、コンピュータシステムに内蔵されるハードディスクを挙げることができる。また、コンピュータ読み取り可能な記録媒体は、一時的な記憶装置であってもよい。一時的な記憶装置の例としては、例えば、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の信号線、あるいは、コンピュータシステム内部の揮発性メモリを挙げることができる。
［第３の実施形態］
（構成の説明）
図４は、本発明の第３の実施形態に係る仮想マシンエミュレートシステム１０の構成例を示すブロック図である。仮想マシンエミュレートシステム１０は、物理マシン上で仮想マシンをエミュレートする。
【００２８】
仮想マシンエミュレートシステム１０は、複数の物理マシン（図４では、物理マシン１２および物理マシン１４を例示）のうちの少なくとも１つの物理マシンに設けられるコア管理部（図４では、コア管理部２２およびコア管理部３２を例示）を備える。コア管理部は、コア管理手段の一例である。さらに、仮想マシンエミュレートシステム１０は、物理マシン１２、１４毎に設けられるコア制御部（図４では、コア制御部２４およびコア制御部３４を例示）を備える。コア制御部は、コア制御手段の一例である。
【００２９】
所望の仮想マシンを構築する際、少なくとも１つの物理マシンに設けられるコア管理部（たとえば、図４において物理マシン１２のコア管理部２２）がユーザにより指定される。本実施形態では、このコア管理部を「指定コア管理部」（指定コア管理手段の一例）と呼ぶ。指定コア管理部、たとえば、コア管理部２２は、所望の仮想マシンを構築しようとするユーザに対しての最初のユーザインタフェースマシンとして機能する。なお、指定コア管理部によって管理されるコアを多重化する場合のコアを管理するコア管理部を、本実施形態では、「多重化コア管理部」（多重化コア管理手段の一例）と呼ぶ。指定コア管理部と多重化コア管理部は、たとえば、Ａｃｔｉｖｅ／Ａｃｔｉｖｅ構成（相互スタンバイ構成）の関係にある。正常時にはそれぞれのコア管理部が異なる処理を実行し、指定コア管理部が故障した場合（あるいは異常が発見された場合）、指定コア管理部によって管理されるコアが実行していた処理は、多重化コア管理部によって管理されるコアに引き継がれる。換言すれば、指定コア管理部に異常が生じた場合、多重化コア管理部が指定コア管理部となる。
【００３０】
仮想マシンエミュレートシステム１０上で動作させる仮想マシンの性能（たとえば、処理速度）向上を目的とする場合、コア管理部（コア管理部２２）は、典型的には、１つの物理マシン（たとえば、物理マシン１２）に設けられる。もちろん、性能向上を目的とする場合であっても、コア管理部を複数設けることも可能である。
【００３１】
一方、仮想マシンの可用性を向上させるために一つの仮想マシンのコア構成を多重化させることを目的とする場合、コア管理部（コア管理部２２、コア管理部３２）は、少なくとも２つの物理マシン１２、１４のそれぞれに設けられる。
【００３２】
物理ＣＰＵ２０および物理ＣＰＵ３０は、それぞれ複数のコアを備える。本実施形態では、それぞれが６つのコアを持つ場合（ヘキサコアの場合）を例に挙げる。たとえば、物理ＣＰＵ２０はコアＡ乃至Ｆを備え、物理ＣＰＵ３０はコアＧ乃至Ｌを備える。もちろん、１つの物理ＣＰＵにおけるコアの数は６個に限定されない。
【００３３】
コア管理部２２、３２は、仮想マシンエミュレートシステム１０内の全ての物理マシン１２、１４の全てのコアＡ乃至Ｌを一括して管理する。詳細には、コア管理部２２、３２は、コア制御部２４、３４を介してシステム内の全てのコアＡ乃至Ｌについての稼働情報を取得する。
【００３４】
そして、仮想マシンを構築する際、コア管理部２２、３２のうちの少なくとも一方は、稼働情報に基づいて、少なくとも２つの物理マシン（たとえば、物理マシン１２、１４）のそれぞれから少なくとも１つのコアを指定し、指定された複数のコアを仮想マシンの仮想ＣＰＵとして割り当てる。稼働情報は、各コアの指定状況（使用状況）についての情報や、各コアの使用頻度（単位時間あたりに受信した処理命令の数）についての情報を含む。
【００３５】
なお、コア管理部は、少なくとも２つの物理マシンのそれぞれから指定されたコアを含む仮想マシンを構築する上記機能に加えて、１つの物理マシン内のコアのみで構成される仮想マシンを構築する機能を備えることができる。
【００３６】
なお、この場合、コア管理部２２、３２のうちの少なくとも１つのコア管理部は、稼働情報をユーザに提示し、当該提示に基づくユーザの指定により、仮想マシンに割り当てるコア（以下、「指定コア」と呼ぶ場合もある）を決定することもできる。
【００３７】
また、上記指示は、具体的には、たとえば、どの物理マシン１２、１４のコア管理部を仮想マシンとして利用するかの指定（多重化する場合は複数のコア管理部）と、どの物理マシン１２、１４のコアをいくつ使うかの指定等を含む。
【００３８】
なお、指定コア管理部と多重化コア管理部は、互いに通信を行い、自らが有していない情報（他の物理マシンのコアの稼働情報）を他のコア管理部から得ることによりそれぞれのシステムコア管理テーブル６０の内容を同期させることができる。すなわち、多重化の場合、各コア管理部の、後述するシステムコア管理テーブル６０は同一内容であり、その内容は、仮想マシンエミュレートシステム１０内の全てのコアについての稼働情報である。
【００３９】
また、コア管理部２２、３２は、稼働情報を解析することにより、自らが指定コアを決定してもよい。
【００４０】
仮想マシンを構築する際、コア管理部２２、３２は、それぞれのコア制御部２４、３４に対して、指定コアの確保を指示する。
【００４１】
また、仮想マシン構築後に、ＯＳやアプリケーションから処理命令を受信した場合、コア管理部２２、３２は、仮想マシン（仮想ＣＰＵ）として割り当てられている全てのコアの中から所定のコア（たとえば、最適なコア）を指定して、指定されたコアを制御するコア制御部２４、３４へ処理命令を送信する。
【００４２】
コア制御部２４、３４は、それぞれが属する各物理マシン１２、１４の全ての各コアについての稼働情報を取得し、取得した稼働情報を、コア管理部２２、３２のそれぞれに報告する。
【００４３】
仮想マシンを構築する際、コア制御部２４、３４は、コア管理部２２、３２からの指定コアの確保指示に基づいて、仮想マシンのための指定コアを確保する。
【００４４】
仮想マシンが起動されて、コア管理部２２、３２から処理命令を受信した際、コア制御部２４、３４は、指定されたコアに処理命令を転送する。コア制御部２４、３４は、コアから受信した、処理命令についての処理結果をコア管理部へ送信する。
【００４５】
図５は、仮想マシンのイメージ図を示す。図５（Ａ）は、比較のために一般的な仮想マシン、すなわち、１つの物理マシン内で構築される仮想マシンのイメージ図である。図５（Ｂ）は、第３の実施形態で構築される仮想マシン、すなわち、複数の物理マシンを横断して構築される仮想マシンのイメージ図である。なお、図５（Ｂ）では、１つの物理マシン内で構築された仮想マシンが示されているが、この仮想マシンは必ずしも必要ではない。
【００４６】
図６は、本実施形態で構築される第１仮想マシン４１Ａの例を示す図である。第１仮想マシン４１Ａは、特に、性能の向上を目的として構築される仮想マシンである。第１仮想マシン４１Ａは、ＯＳと、アプリケーションと、仮想ＣＰＵ４０Ａと、を含む。仮想ＣＰＵ４０Ａは、指定コア管理部であるコア管理部２２と、コア制御部２４と、物理マシン１２の全てのコアＡ乃至Ｆと、物理マシン１４のコア制御部３４と、物理マシン１４の３つのコアＧ乃至Ｉと、で構成される。この場合、物理マシン１４のコア管理部３２は不要である。物理マシン１４のコア制御部３４は、物理マシン１２のコア管理部２２によって制御される。第１仮想マシン４１Ａは、コア９個で構成される仮想ＣＰＵ４０Ａを備えるため、１台の物理マシンに較べてコアの数が多く性能が高い。たとえば、同一の処理を実行する場合には処理時間を短縮することができる。なお、図６に示す第１仮想マシン４１Ａのコア構成はあくまで一例である。第１仮想マシン４１Ａで使用されるコアの合計が物理マシンのコア数を上回っていれば十分である。たとえば、第１仮想マシン４１Ａは、物理マシン１２の４個のコアと物理マシン１４の４個のコアとで構成された仮想ＣＰＵ４０Ａを備えることができる。この場合、上記と同様に、第１仮想マシン４１Ａのコアの数は８個となり、１台の物理マシンのコアの数６個を上回る。また、指定コア管理部は必ずしもコア管理部２２である必要はなく、他の物理マシンのコア管理部であってもよい。
【００４７】
図７は、本実施形態で構築される第２仮想マシン４１Ｂの例を示す図である。第２仮想マシン４１Ｂは、特に、可用性の向上を目的として構築される仮想マシンである。第２仮想マシン４１Ｂは、ＯＳと、アプリケーションと、仮想ＣＰＵ４０Ｂと、を含む。仮想ＣＰＵ４０Ｂは、指定コア管理部であるコア管理部２２と、コア制御部２４と、コアＡ乃至Ｆ（指定コア）と、多重化コア管理部であるコア管理部３２と、コア制御部３４と、コアＧ乃至Ｌ（指定コア）と、で構成される。この場合、コア管理部２２とコア管理部３２との間で情報が共有されている。第２仮想マシン４１Ｂでは、コア制御部２４によって制御されるコアＡ乃至Ｆと、コア制御部３４によって制御されるコアＧ乃至Ｌと、が多重化（二重化または冗長化とも呼ばれる）されている。
【００４８】
図８は、図４、図６、図７に示されるコア管理部２２の構成例を示すブロック図である。なお、コア管理部３２の構成は、コア管理部２２の構成と同一である。また、指定コア管理部と多重化コア管理部とでは動作は同一ではないが、これは使用される構成が異なるのであって、潜在的に有する構成自体は同一である。
【００４９】
コア管理部２２は、ユーザインタフェース部５０と、仮想ＣＰＵ処理部５２と、多重化処理部５４と、コア制御通信部５６と、システムコア稼働管理部５８と、システムコア管理テーブル６０と、システム監視部６２と、を備える。
【００５０】
ユーザインタフェース部５０は、ユーザと仮想マシンエミュレートシステム１０とが情報をやり取りするための仕組みである。ユーザインタフェース部５０は、たとえば、キーボード、マウス、ディスプレイなどのハードウェアと、画面上のメニュー、アイコン、ウィンドウなどのソフトウェアと、を含む。
【００５１】
仮想ＣＰＵ処理部５２は、ＯＳ／アプリケーションから処理命令を受信する。
【００５２】
なお、図６に示すように、仮想ＣＰＵ内において、１つのコア管理部（すなわち、指定コア管理部）のみが設定されている場合、ＯＳ／アプリケーションからの処理命令は、この指定コア管理部の仮想ＣＰＵ処理部５２によって受信される。
【００５３】
一方、図７に示すように、仮想ＣＰＵ内において、複数のコア管理部（すなわち、指定コア管理部と多重化コア管理部）が設定されている場合、ＯＳ／アプリケーションからの処理命令は、たとえば、常に、一旦指定コア管理部の仮想ＣＰＵ処理部５２によって受信されてもよい。あるいは、複数のコア管理部の仮想ＣＰＵ処理部５２が処理命令をそれぞれ受信し、当該処理命令の実行先であるコアが自己の管理外のコアであるか否か等を判断することにより受信した処理命令を取捨選択することも可能である。たとえば、コア管理部は、メモリやＩ／Ｏ（Input/Output）アクセスする際の排他制御を実施し、コアの動作を制御することができる。上記排他制御を最小限に抑える仕組みは、ＯＳの機能で対応することができる。
【００５４】
多重化処理部５４は、多重化を行う場合の多重化コア管理部（たとえば、図４においてコア管理部３２）と通信を行う。
【００５５】
コア制御通信部５６は、コア制御部２４と通信する。たとえば、コア制御通信部５６は、仮想マシンにおいて指定されたコアに対する処理命令を、コア制御部２４に転送する。なお、たとえば、図６に示すように、コア管理部が多重化されておらず、たとえば、図６に示すように、コア管理部２２のみが使用されている場合、コア管理部２２が属していない物理マシン１４にはコア管理部は存在していない（使用されていない）。しかしながら、このような場合であっても、物理マシン１４にも制御対象のコア（コアＧ、Ｈ、Ｉ）は存在している。従って、この場合、指定コア管理部である、図６のコア管理部２２のコア制御通信部５６は、コア管理部２２が存在していない物理マシン１４のコア制御部３４に対しても受信した処理命令を転送する。
【００５６】
システムコア稼働管理部５８は、コア制御部２４から、コア制御部２４によって制御される全てのコアについての稼働情報を受信し、システムコア管理テーブル６０に保存する。なお、仮想マシンが多重化されていない場合、指定コア管理部が属していない物理マシンのコア制御部からもそのコア制御部によって制御される全てのコアについての稼働情報を受信する。
【００５７】
システム監視部６２は、障害監視を行う。
【００５８】
図９は、図４に示されるコア制御部２４の構成例を示すブロック図である。なお、コア制御部３４の構成は、コア制御部２４の構成と同一である。
【００５９】
コア制御部２４は、コア管理通信部８０と、コア通信部８２と、コア稼働管理部８４と、コア管理テーブル８６と、を備える。
【００６０】
コア管理通信部８０は、コア管理部２２と通信する。たとえば、コア管理通信部８０は、コア管理部２２から処理命令を受信する。
【００６１】
コア通信部８２は、コア管理通信部８０によって受信された処理命令をコアに転送する。
【００６２】
コア稼働管理部８４は、所定の周期で定期的に起動する。起動したコア稼働管理部８４は、コア管理テーブル８６を参照してコアの稼動情報を収集し、収集した稼働情報を、コア管理通信部８０を介してコア管理部へ送信する。稼働情報の内容は上述したとおりである。
【００６３】
コア管理テーブル８６は、自己が属する物理マシン内のコアについての稼動情報を保存する。
（動作の説明）
図１０は、仮想マシンエミュレートシステム１０における仮想マシンの割当動作の一例を説明するためのフローチャートである。なお、以下の説明では、物理マシン１２のコア管理部２２が指定コア管理部に指定されていることを前提とした説明を行う。もちろん、指定コア管理部は、コア管理部２２に限定されない。
【００６４】
仮想マシンの割当時、指定コア管理部であるコア管理部２２のユーザインタフェース部５０は、ユーザから稼働情報要求を受け付ける（ステップＳ１０）。ユーザインタフェース部５０は、システムコア管理テーブル６０から稼働情報（仮想マシンエミュレートシステム１０内のすべてのコアＡ乃至Ｌの稼働に関する情報）を読み出す（ステップＳ１１）。ユーザインタフェース部５０は、稼働情報要求の応答として稼働情報をユーザに提示する（ステップＳ１２）。具体的には、ユーザインタフェース部５０は、読み出した稼働情報をディスプレイ等に表示する。
【００６５】
ユーザインタフェース部５０は、稼働情報を認識したユーザから、物理マシンの指定、使用するコア数、さらには多重化指定等の情報である仮想マシン割当情報を含む仮想マシン割当要求を受け付ける（ステップＳ１３）。コア制御通信部５６は、ユーザインタフェース部５０によって受け付けられた仮想マシン割当要求に基づいた情報であり、コアを確保するための要求であるコア確保要求を、指定された物理マシン（たとえば、物理マシン１２）のコア制御部（たとえば、コア制御部２４）に対して送信する（ステップＳ１４）。
【００６６】
コア制御部２４のコア管理通信部８０は、コア確保要求を受信する（ステップＳ１５）。コア管理通信部８０は、コア管理テーブル８６上の稼働情報を更新する（ステップＳ１６）。具体的には、コア管理通信部８０は、コア確保要求によって指定されたコアの状態を「使用中」に変更する。コア管理通信部８０は、コア確保要求に対する応答であり、コアの確保が終了したことを示すコア確保応答を、コア管理部２２へ送信する（ステップＳ１７）。
【００６７】
コア確保応答を受信したコア制御通信部５６は、ユーザの指示（仮想マシン割当情報の内容）が多重化指定を含むか否かを判定する（ステップＳ１８）。多重化指定が含まれる場合（ステップＳ１８／Ｙｅｓ）、多重化処理部５４は、多重化コア管理部（たとえば、物理マシン１４のコア管理部３２）へ、上記の仮想マシン割当情報を含む多重化要求を送信する（ステップＳ１９）。
【００６８】
多重化コア管理部であるコア管理部３２の多重化処理部５４は、多重化要求を受信する（ステップＳ２０）。多重化処理部５４は、受信した多重化要求に含まれる仮想マシン割当情報を保存する（ステップＳ２１）。多重化処理部５４は、多重化要求の応答としての多重化応答を、指定コア管理部であるコア管理部２２へ送信する（ステップＳ２２）。
【００６９】
ユーザの指示に多重化指定が含まれない場合（ステップＳ１８／Ｎｏ）、および多重化コア管理部であるコア管理部３２から多重化応答を受信した場合、指定コア管理部は、仮想マシン割当情報を保存する（ステップＳ２３）。ユーザインタフェース部５０は、ユーザに対して、仮想マシン割当要求の応答としての仮想マシン割当応答を出力する（ステップＳ２４）。これらの一連の処理により、仮想マシンが割り当てられる。
【００７０】
図１１は、割り当てられた仮想マシンが稼働した後において仮想ＣＰＵがＯＳ／アプリケーションからの処理命令を受信した際の動作の一例を示すフローチャートである。
【００７１】
仮想マシン稼働後、仮想ＣＰＵは、ＯＳやアプリケーションから処理命令を受信する（ステップＳ３０）。具体的には、処理命令は、仮想ＣＰＵを構成するコア管理部の仮想ＣＰＵ処理部５２によって受信される。仮想ＣＰＵ処理部５２は、システムコア管理テーブル６０から稼働情報を読み出す（ステップＳ３１）。仮想ＣＰＵ処理部５２は、少なくとも稼動情報に基づいて、仮想マシンで割り当てられている複数のコアの中で最適なコアを選定する（ステップＳ３２）。この最適なコアの選定処理は、スケジューリングと呼ばれる場合がある。また、最適なコアを選定するために使用される稼働情報は、具体的には、たとえば、各コアの使用頻度（単位時間あたりに受信した処理命令の数）についての情報である。仮想ＣＰＵ処理部５２は、選定されたコアを制御するコア制御部に対して処理命令を送信する（ステップＳ３３）。コア制御部のコア管理通信部８０は、処理命令を受信する（ステップＳ３４）。コア管理通信部８０は、当該処理命令を実行するコア（たとえば、最適なコア）に関して、コア管理テーブル８６の稼働情報における当該コアの処理命令の数をインクリメントする（ステップＳ３５）。コア通信部８２は、処理命令を当該コアへ送信する（ステップＳ３６）。
【００７２】
図１２は、稼働情報の更新動作の一例を示すフローチャートである。
【００７３】
まず、図１１を用いて説明したように、コア制御部では処理命令を受信する度に、コア管理テーブル８６における処理命令の数をインクリメントしている。
【００７４】
そして、コア制御部のコア稼働管理部８４は、所定の周期で定期的に起動する。具体的には、たとえば、コア稼働管理部８４は、計時手段（図９において不図示）の計測結果を観測することにより、あるいは当該計時手段からのタイムアップ信号の受信の有無を確認することにより、起動タイミングが到来したか否かを判定する（ステップＳ３９）。起動タイミングが到来しない場合（ステップＳ３９／Ｎｏ）、ステップＳ３９の処理が再度実行される。一方、起動タイミングが到来すると（ステップＳ３９／Ｙｅｓ）、コア稼働管理部８４は、起動し、コア管理テーブル８６から各コアの処理命令の数を読み出す（ステップＳ４０）。コア稼働管理部８４は、読み出した各コアの処理命令の数を、コア管理部へ送信する（ステップＳ４１）。送信後、コア稼働管理部８４は、コア管理テーブルにおける各コアの処理命令の数をクリアしてゼロにする（ステップＳ４２）。
【００７５】
コア管理部のシステムコア稼働管理部５８は、各コアの処理命令の数を受信する（ステップＳ４３）。システムコア稼働管理部５８は、受信した処理命令の数を、システムコア管理テーブル６０に反映する（ステップＳ４４）。
【００７６】
以上の処理により、全てのコア管理部は、全てのコアについての、単位時間あたりの処理命令の数（すなわち、使用頻度）を把握することができる。
【００７７】
なお、仮想マシン内が多重化されておらず、システム内に指定コア管理部のみが存在する場合（たとえば、図６の場合）、指定コア管理部が存在しない方の物理マシンに存在するコア制御部は、読み出した各コアの処理命令の数を、指定コア管理部へ送信する。
【００７８】
一方、仮想マシン内が多重化されている場合（たとえば、図７の場合）、コア制御部は、自己が属する物理マシン内のコア管理部のみに処理命令の数を送信する。この場合、指定コア管理部と多重化コア管理部のデータ同期（システムコア管理テーブル６０の同期）は別途実施される。
【００７９】
図１３は、割り当てられた仮想マシンが稼働した後の障害監視動作の一例を示すフローチャートである。
【００８０】
本障害監視は、コア管理部のシステム監視部６２が所定の周期で定期的に起動した際に実行される。具体的には、たとえば、システム監視部６２は、計時手段（図８において不図示）の計測結果を観測することにより、あるいは当該計時手段からのタイムアップ信号の受信の有無を確認することにより、起動タイミングが到来したか否かを判定する（ステップＳ４９）。起動タイミングが到来しない場合（ステップＳ４９／Ｎｏ）、ステップＳ４９の処理が再度実行される。一方、起動タイミングが到来すると（ステップＳ４９／Ｙｅｓ）、システム監視部６２は、起動し、自己が属するコア管理部が「多重化コア管理部」として動作しているか否かを判定する（ステップＳ５０）。自己が属するコア管理部が「多重化コア管理部」として動作している場合（ステップＳ５０／Ｙｅｓ）、システム監視部６２は、指定コア管理部へ「ヘルスチェック信号」を送信する（ステップＳ５１）。システム監視部６２は、ヘルスチェック信号に対する指定コア管理部からの応答が所定時間内に受信できたか否かを判定する（ステップＳ５２）。応答が所定時間内に受信できない場合（ステップＳ５２／Ｎｏ）、システム監視部６２は、自己が属するコア管理部を「指定コア管理部」とする（ステップＳ５３）。
【００８１】
自己が属するコア管理部が「指定コア管理部」として動作している場合（ステップＳ５０／Ｎｏ）、所定時間内にヘルスチェック信号に対する応答を受信した場合（ステップＳ５２／Ｙｅｓ）、およびステップＳ５３の処理が終了した場合、以下のステップＳ５４の処理が実行される。
【００８２】
システム監視部６２は、コア制御部の状態を監視する。具体的には、システム監視部６２は、自己が属するコア管理部の管理下にあるコア制御部に対してヘルスチェック信号を送信する（ステップＳ５４）。この場合、管理下にあるコア制御部は、必ずしも同一の物理マシンに属するコア制御部とは限らず、他の物理マシンに属するコア制御部を含む場合もある。システム監視部６２は、ヘルスチェック信号に対するコア制御部からの応答が所定時間内に受信できたか否かを判定する（ステップＳ５５）。コア制御部からの応答を受信できなかった場合（ステップＳ５５／Ｎｏ）、システム監視部６２は、システムコア管理テーブル６０の、当該コア制御部が管理しているコアの状態を「使用不可」に変更する（ステップＳ５６）。ステップＳ５６の処理が完了した場合、および、コア制御部からの応答が受信できた場合（ステップＳ５５／Ｙｅｓ）、ステップＳ４９の処理が再度実行される。
（効果の説明）
以上説明した第３の実施形態において、少なくとも１つのコア管理部は、少なくとも２つの物理マシンのそれぞれから少なくとも１つのコアを指定し、指定された複数のコアを仮想マシンの仮想ＣＰＵとして割り当てている。すなわち、本実施形態では、１つの仮想マシンを複数の物理マシンに跨いで構築することができる。これにより、仮想マシンの処理能力を１つの物理マシン以上にすることできる。また、負荷（使用コアの数）が特定の物理マシンにだけ偏ることを回避できる。
【００８３】
さらに、仮想マシンの仮想ＣＰＵは、異なる物理マシンのコアで構成される。１つの物理ＣＰＵが故障した場合であっても他方の物理ＣＰＵまで故障する可能性は低い。従って、仮想マシン全体がダウンする事態を回避することができる。
【００８４】
以上を纏めると、本実施形態によれば、仮想マシンの処理能力および可用性を向上させることが可能となる。
【００８５】
さらに、本実施形態の場合、仮想マシンは、複数の物理マシンのコアで構成されているが、システムとしては１システムで構成される。従って、仮想ＯＳ上での考慮が不要であり、多重化および高速化、あるいは回路や装置の規模を簡素化することが可能である。
【００８６】
さらに、本実施形態の場合、物理マシンは跨いでいるが、仮想ＯＳはひとつなので、クラスタ構成とは違い、通常のＯＳ保守で済む。すなわち、本実施形態によれば、保守性を向上させることができる。
【００８７】
さらに、本実施形態によれば、物理マシンに囚われることなくコア単位で仮想マシンを構築することができるため、１つのコアのみが空いている物理マシンや旧式の物理マシンを利用することができる。すなわち、本実施形態によれば、資源を有効活用することができる。
【００８８】
しかも、本実施形態では、仮想マシンに割り当てるコアを、物理マシン単位ではなくシステム全体で管理している。従って、物理マシン上に複数の仮想マシンを構築する場合、シームレスに構築することができる。
【００８９】
以上、各実施形態を用いて本発明を説明したが、本発明の技術的範囲は、上記各実施形態の記載に限定されない。上記各実施形態に多様な変更又は改良を加えることが可能であることは当業者にとって自明である。従って、そのような変更又は改良を加えた形態もまた本発明の技術的範囲に含まれることは説明するまでもない。また、以上説明した各実施形態において使用される、数値や各構成の名称等は例示的なものであり適宜変更可能である。
【符号の説明】
【００９０】
１    仮想マシンエミュレートシステム
２、３    物理マシン
４、５    コア管理部
１０    仮想マシンエミュレートシステム
１２、１４    物理マシン
２０、３０    物理ＣＰＵ
２２、３２    コア管理部
２４、３４    コア制御部
４０Ａ、４０Ｂ    仮想ＣＰＵ
４１Ａ    第１仮想マシン
４１Ｂ    第２仮想マシン
５０    ユーザインタフェース部
５２    仮想ＣＰＵ処理部
５４    多重化処理部
５６    コア制御通信部
５８    システムコア稼働管理部
６０    システムコア管理テーブル
６２    システム監視部
８０    コア管理通信部
８２    コア通信部
８４    コア稼働管理部
８６    コア管理テーブル
１００    仮想マシンエミュレートシステム
１０２    記憶部
１０４    演算部
１５０    コンピュータプログラム
【図１】
2019067013.tif 000003
【図２】
2019067013.tif 000004
【図３】
2019067013.tif 000005
【図４】
2019067013.tif 000006
【図５】
2019067013.tif 000007
【図６】
2019067013.tif 000008
【図７】
2019067013.tif 000009
【図８】
2019067013.tif 000010
【図９】
2019067013.tif 000011
【図１０】
2019067013.tif 000012
【図１１】
2019067013.tif 000013
【図１２】
2019067013.tif 000014
【図１３】
2019067013.tif 000015