JP6885635B1 - 情報処理装置、情報処理方法及び情報処理装置用プログラム - Google Patents

情報処理装置、情報処理方法及び情報処理装置用プログラム Download PDF

Info

Publication number
JP6885635B1
JP6885635B1 JP2020036956A JP2020036956A JP6885635B1 JP 6885635 B1 JP6885635 B1 JP 6885635B1 JP 2020036956 A JP2020036956 A JP 2020036956A JP 2020036956 A JP2020036956 A JP 2020036956A JP 6885635 B1 JP6885635 B1 JP 6885635B1
Authority
JP
Japan
Prior art keywords
virtual machine
data
destination virtual
communication
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020036956A
Other languages
English (en)
Other versions
JP2021140415A (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.)
NEC Platforms Ltd
Original Assignee
NEC Platforms 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 NEC Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2020036956A priority Critical patent/JP6885635B1/ja
Application granted granted Critical
Publication of JP6885635B1 publication Critical patent/JP6885635B1/ja
Publication of JP2021140415A publication Critical patent/JP2021140415A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

【課題】3台以上の複数台の仮想マシンを備えた装置であっても、仮想マシン間の通信処理に使用するリソースが大きくなり、リソース不足による性能低下が発生することのない装置を提供する。【解決手段】3台以上の複数の仮想マシンを備える情報処理装置は、仮想マシン毎に、送信される実データを記憶するためのリングバッファの先頭アドレスと終端アドレス、排他制御フラグとを含むデータテーブルを記憶し、送信元の仮想マシンから送信先の仮想マシンに送信する実データのリングバッファのデータ格納エリアでの保存の有無、送信先の仮想マシンによる受信要求の有無、送信先の仮想マシンに対応するデータテーブルの排他制御フラグの状態に基づき、リングバッファのアドレスを利用して、送信元の仮想マシンから送信先の仮想マシンデータへのデータの転送制御をする通信制御部140を備える。【選択図】図2

Description

本発明は、情報処理装置、情報処理方法及び情報処理装置用プログラムに関する。
リソースさえ余剰があれば一台の物理ハードウェアに対して迅速に、複数のマシンを稼働できることから仮想マシンに関する技術が注目されている。ところで、仮想マシン間の通信は同一のホストマシン上の仮想マシン同士であっても、TCP-IPなどネットワーク通信用の通信プロトコルを使用する必要がある。ネットワーク通信用のプロトコルに従った通信方式は、通信データ中の通信制御用データが大きいため通信する実データが少ないときに通信効率が悪く、複数の処理階層を経由することから通信処理のオーバーヘッドが大きい。また、ネットワーク通信用のI/O処理は他のI/O処理と比較して処理優先度が低いため、システムのI/O負荷が高くなったときに性能が低下しやすい。
特許文献1には、メモリアクセスのプロトコルを使って仮想マシン間での通信を実現するために仮想マシン間用の管理テーブルを使う通信方法が開示されている。この通信方法により同一のホストマシン上の仮想マシン同士で高速な通信が可能となる。
特開2019-164661号公報
ところで、特許文献1に開示の通信方法で使用する管理テーブルを拡張することで3以上の複数の仮想マシン間の通信が可能となる。しかし、特許文献1に開示の通信方法では、仮想マシンの組み合わせごとに、管理テーブルにおいて4つの識別IDが必要となることから、仮想マシンがN個なら組合せの数の4倍(N×(N−1)÷2×4)の数の識別IDがホストマシン上に必要となる。そのため、仮想マシン間の通信処理に使用するリソースが大きくなり、リソース不足による性能低下が発生するという課題があった。
そこでこの発明は、上記の課題を解決する情報処理装置、情報処理方法及び情報処理装置用プログラムを提供することを目的としている。
本発明の第1の態様によれば、3台以上の複数の仮想マシンを備える情報処理装置は、仮想マシン毎に、送信される実データを記憶するためのリングバッファの先頭アドレスと終端アドレス、排他制御フラグとを含むデータテーブルを記憶する記憶手段と、送信元の仮想マシンから送信先の仮想マシンに送信する実データの前記リングバッファのデータ格納エリアでの保存の有無、前記送信先の仮想マシンによる受信要求の有無、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグの状態に基づき、前記リングバッファのアドレスを利用して、前記送信元の仮想マシンから前記送信先の仮想マシンデータへのデータの転送制御をする通信制御手段と、を備える。
本発明の第2の態様によれば、3台以上の複数の仮想マシンを備える情報処理装置による情報処理法は、仮想マシン毎に、送信される実データを記憶するためのリングバッファの先頭アドレスと終端アドレス、排他制御フラグとを含むデータテーブルを記憶し、送信元の仮想マシンから送信先の仮想マシンに送信する実データの前記リングバッファのデータ格納エリアでの保存の有無、前記送信先の仮想マシンによる受信要求の有無、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグの状態に基づき、前記リングバッファのアドレスを利用して、前記送信元の仮想マシンから前記送信先の仮想マシンデータへのデータの転送制御をする。
本発明の第3の態様によれば、3台以上の複数の仮想マシンを備える情報処理装置用プログラムは、仮想マシン毎に、送信される実データを記憶するためのリングバッファの先頭アドレスと終端アドレス、排他制御フラグとを含むデータテーブルを記憶させ、送信元の仮想マシンから送信先の仮想マシンに送信する実データの前記リングバッファのデータ格納エリアでの保存の有無、前記送信先の仮想マシンによる受信要求の有無、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグの状態に基づき、前記リングバッファのアドレスを利用して、前記送信元の仮想マシンから前記送信先の仮想マシンデータへのデータの転送制御をする。
本発明によれば、仮想マシン毎に、送信される実データを記憶するためのリングバッファの先頭アドレスと終端アドレス、排他制御フラグとを含むデータテーブルを記憶し、送信元の仮想マシンから送信先の仮想マシンに送信する実データのリングバッファのデータ格納エリアでの保存の有無、送信先の仮想マシンによる受信要求の有無、送信先の仮想マシンに対応するデータテーブルの排他制御フラグの状態に基づき、リングバッファのアドレスを利用して、送信元の仮想マシンから前記送信先の仮想マシンデータへのデータの転送制御をする。これにより、3台以上の複数の仮想マシンを備える情報処理装置において、リソース不足による性能低下を抑えられる、という効果が得られる。
本発明の一実施形態に係る情報処理装置のハードウェア構成を示す図である。 本発明の一実施形態に係る制御部のソフトウェア構成を示す概略ブロック図である。 本発明の一実施形態に係るコマンドの一例を示すデータテーブルである。 本発明の一実施形態に係る宛先情報の一例を示すデータテーブルである。 本発明の一実施形態に係る通信用メモリのアドレスの一例を示すデータテーブルである。 本発明の一実施形態に係る仮想マシンの通信用メモリ及び通信用メモリドライバの論理ブロックアドレスの一例を示すデータテーブルである。 本発明の一実施形態に係る通信用メモリが管理する識別データの一例を示すデータテーブルである。 本発明の一実施形態に係る仮想マシンの通信用メモリを設定する処理の流れを示すフローチャートである。 本発明の一実施形態に係る仮想マシン間の通信において、初期設定の処理の流れを示すシーケンス図である。 本発明の一実施形態に係る仮想マシン間の通信において、同じ識別IDに対して受信要求よりも先に送信要求が実行され、かつ他スレッドの送信要求との競合が発生しない場合の処理の流れを示すシーケンス図である。 本発明の一実施形態に係る仮想マシン間の通信において、同じ識別IDに対して送信要求よりも先に受信要求が実行され、かつ送信要求実行時に他スレッドとの競合が発生しない場合の処理の流れを示すシーケンス図である。 本発明の一実施形態に係る仮想マシン間の通信において、同じ識別IDに対して受信要求よりも先に送信要求が実行された場合の処理例の図9を基に、他スレッドの送信要求との競合により送信側で通信データ保存待ちが発生した場合の処理の流れを示すシーケンス図である。 本発明の一実施形態に係る仮想マシン間の通信において、同じ識別IDに対して受信要求よりも先に送信要求が実行された場合の処理例の図9を基に、他スレッドの送信要求との競合により、受信側で通信データ転送待ちが発生した場合の処理の流れを示すシーケンス図である。 本発明の一実施形態に係る仮想マシン間の通信において、同じ識別IDに対して送信要求よりも先に受信要求が実行された場合の処理例の図10を基に、他スレッドの送信要求との競合により、送信側で通信データ転送待ちが発生した場合の処理の流れを示すシーケンス図である。 特許文献1に係る通信用メモリのデータテーブルの一例を示す図である。 特許文献1に係る図13で示した通信用メモリの送受信アドレスに対応する通信用メモリドライバの論理ブロックアドレス(識別ID)のデータテーブルの一例を示す図である。 特許文献1に係る図14で示した識別IDを基にした管理テーブルの一例を示す図である。 本発明の一実施形態に係る通信用メモリのデータテーブルの一例を示す図である。 本発明の一実施形態に係る図16で示した通信用メモリの送受信アドレスに対応する通信用メモリドライバの論理ブロックアドレス(識別ID)のデータテーブルの一例を示す図である。 本発明の一実施形態に係る図17で示した識別IDを基にした管理テーブルの一例を示す図である。 本発明の一実施形態に係る通信データ記憶部に記録する各仮想マシン用のリングバッファの一例を示す図である。 本発明の一実施形態に係るリングバッファの動作の一例を示す図である。 本実施形態による情報処理装置のハードウェア構成を例示する図である。 本実施形態による情報処理装置の最少構成を示す図である。
以下、本発明の一実施形態による情報処理装置を、図面を参照して説明する。図1は本発明の一実施形態に係る情報処理装置1のハードウェア構成を示す図である。
情報処理装置1は、制御部100と、システムメモリ200と、通信用メモリドライバ300と、仮想通信用メモリ400と、N台の仮想マシン(第一仮想マシン500、第二仮想マシン600、・・・、第N仮想マシン800)を備える。ここで、Nは3以上の整数とする。
なお、本実施形態における仮想マシンは、ホスト型でもよいし、ハイパーバイザ型でもよい。つまり、同一ホストマシン上で動作する仮想マシンであれば、仮想マシンの稼働方式及び稼働数は問わない。以下の本実施形態では、例として、ホストマシン上でホスト型の仮想マシンをN台動作させるものとして説明する。
制御部100は、CPU(Central Processing Unit)等のプロセッサを用いて構成される。制御部100は、プログラムをメインメモリに展開し、プロセッサがプログラムを実行することによって、プログラムに従って処理を実行する。本実施形態では、制御部100は、プログラムを実行することで、図2に示す制御部として機能する。
システムメモリ200は、通信用メモリ記憶部210及び通信データ記憶部220を備える。なお、システムメモリ200は、記憶部の一態様である。
通信用メモリ記憶部210は、後述する図3から図5までのデータテーブルを予め記憶する。また、通信用メモリ記憶部210は、データ登録部130から受信する、処理のコマンド(以下「指示データ」という。)や、識別ID、通信IDなどの情報(以下「識別データ」という。)を、図6で後述するデータテーブルに記憶する。
通信データ記憶部220は、N台の仮想マシン(第一仮想マシン500、第二仮想マシン600、・・・、第N仮想マシン800)の間で通信される実データを記憶する。通信データ記憶部220は、各仮想マシン宛てに送信された実データを記憶するために、各仮想マシン用のリングバッファを備え、図6のデータテーブルにそれらのリングバッファの先頭アドレスと終端アドレスを記憶する。
通信用メモリドライバ300は、仮想通信用メモリ400の生成を行う。制御部100は、通信用メモリドライバ300の機能を用いてプログラムの処理を実行する。仮想通信用メモリ400は、N個の仮想メモリ(第一仮想メモリ410、第二仮想メモリ420、・・・、第N仮想メモリ440)を備える。なお、仮想メモリ(第一仮想メモリ410、第二仮想メモリ420、・・・、第N仮想メモリ440)のフォーマットは、VHDXやVHDなど仮想マシンで使用できるフォーマットであれば、どのフォーマットを使用してもよい。また、仮想メモリ(第一仮想メモリ410、第二仮想メモリ420、・・・、第N仮想メモリ440)は、第一記憶領域の一態様である。
仮想メモリ(第一仮想メモリ410、第二仮想メモリ420、・・・、第N仮想メモリ440)は、通信用メモリ(第一通信用メモリ520、第二通信用メモリ620、・・・、第N通信用メモリ820)と対応付けて扱われる。
第一仮想マシン500は、第一アプリケーション510及び第一通信用メモリ520を備える。
第一アプリケーション510は、第一仮想マシン500が他の仮想マシンとデータの送受信を行う際、第一通信用メモリ520を通して送受信の命令を通信用メモリドライバ300へ通知する。
第一通信用メモリ520は、第一アプリケーション510から通知された送受信の命令を通信用メモリドライバ300へ通知し、通信を行う。なお、第一通信用メモリ520は、後述するメモリ制御部110によって、第一仮想メモリ410とアドレスが対応付けされる。また、第一通信用メモリ520は、第二記憶領域の一態様である。
第二仮想マシン600は、第二アプリケーション610及び第二通信用メモリ620を備える。
第二アプリケーション610は、第二仮想マシン600が他の仮想マシンとデータの送受信を行う際、第二通信用メモリ620を通して送受信の命令を通信用メモリドライバ300へ通知する。
第二通信用メモリ620は、第二アプリケーション610から通知された送受信の命令を通信用メモリドライバ300へ通知し、通信を行う。なお、第二通信用メモリ620は、後述するメモリ制御部110によって、第二仮想メモリ420が対応付けされる。また、第二通信用メモリ620は、第二記憶領域の一態様である。
第N仮想マシン800は、第Nアプリケーション810及び第N通信用メモリ820を備える。
第Nアプリケーション810は、第N仮想マシン800が他の仮想マシンとデータの送受信を行う際、第N通信用メモリ820を通して送受信の命令を通信用メモリドライバ300へ通知する。
第N通信用メモリ820は、第Nアプリケーション810から通知された送受信の命令を通信用メモリドライバ300へ通知し、通信を行う。なお、第N通信用メモリ820は、後述するメモリ制御部110によって、第N仮想メモリ440が対応付けされる。また、第N通信用メモリ820は、第二記憶領域の一態様である。
なお、システムメモリ200及び通信用メモリドライバ300は、記憶装置の一例であり、仮想通信用メモリ400は、仮想的な記憶装置の一例である。
図2は、本発明の一実施形態に係る制御部100のソフトウェア構成を示す概略ブロック図である。制御部100は、プログラムを実行することで、メモリ制御部110、データ判定部120、データ登録部130及び通信制御部140として機能する。
メモリ制御部110は、仮想マシンと通信を行うための、仮想の通信用メモリ(以下「仮想通信用メモリ400」という)を構成する。はじめに、メモリ制御部110は、メインメモリから記憶領域を確保し、通信用メモリドライバ300によりアクセスする仮想通信用メモリ400を生成する。メモリ制御部110は、仮想通信用メモリ400に、N個の仮想メモリ(第一仮想メモリ410、第二仮想メモリ420、・・・、第N仮想メモリ440)を生成する。次に、メモリ制御部110は仮想メモリ(第一仮想メモリ410、第二仮想メモリ420、・・・、第N仮想メモリ440)を、通信用メモリ(第一通信用メモリ520、第二通信用メモリ620、・・・、第N通信用メモリ820)に対応付ける。
これにより、仮想マシン(第一仮想マシン500、第二仮想マシン600、・・・、第N仮想マシン800)が、通信用メモリ(第一通信用メモリ520、第二通信用メモリ620、・・・、第N通信用メモリ820)を用いて通信を行う場合、メモリ制御部110は、通信用メモリ(第一通信用メモリ520、第二通信用メモリ620、・・・、第N通信用メモリ820)を、仮想通信用メモリ400にアクセスさせる。
情報処理装置1のOSがWindows(登録商標)の場合であれば、プロセスからファイルへのアクセスが行われる際には入出力要求パケット(IRP:I/O Request Packet)が発行される。データ判定部120は、プロセスから受け取った入出力要求パケットの情報に基づいて、実データ及び識別データを判定する。入出力要求パケットの情報には、通信用メモリのアドレスに対応した論理ブロックアドレスLBA(Logical Block Addressing)が含まれ、データ判定部120は、送信要求及び受信要求の発行元の識別IDとしてLBAを使用する。そして、データ判定部120は、判定結果に基づいて取得したデータをデータ登録部130へ送る。
データ登録部130は、データ判定部120から受け取ったデータをシステムメモリ200に登録する。本実施形態では、例として、データ登録部130は、データ判定部120から受け取った識別ID、通信ID、保存データフラグ、データ保存_先頭アドレス、データ保存_終端アドレス、及び排他制御フラグを通信用メモリ記憶部210に登録する。
データ登録部130は、通信制御部140の処理の結果に基づいて、仮想マシンが制御された状態を表すデータ(以下「状態情報」という)を通信制御部140から受け取り、通信用メモリ記憶部210に登録する。データ登録部130は、データ判定部120から受け取った実データを通信データ記憶部220に登録する。
通信制御部140は、複数の仮想マシン間の通信を制御する。通信制御部140は、後述する図6のデータテーブルに基づいて、仮想マシンのデータ通信を制御する。具体的には、通信制御部140は、OSが発行する入出力要求パケットなどの識別データに基づいて、仮想マシン間の通信を制御する。
例えば、第一アプリケーション510から、初期化リクエストがあった場合、通信制御部140は、図6のデータテーブルを参照し、指示データが書込用初期設定の「INIT_W」、識別IDが「LBA_AP1_W」、送り元が「AP1」であることを確認する。そして、通信制御部140は、第一アプリケーション510の書き込み用初期設定を行う。
通信制御部140が行う制御に関しては、後述する図8から図12のシーケンス図を用いて説明する。また、通信制御部140は、制御処理が行われる工程に基づいて、状態情報をデータ登録部130へ送る。
図3Aは、本発明の一実施形態に係るコマンドの一例を示すデータテーブルである。図3Bは、本発明の一実施形態に係る宛先情報の一例を示すデータテーブルである。
通信用メモリ記憶部210は、書き込みの初期設定を行う指示データ、読み込みの初期設定を行う指示データ及び送信を行う指示データを、予め記憶する。また、通信する宛先や送り元を示す宛先情報も同様に記憶されている。
図3Aでは、例として、指示データの項目に「INIT_W」、「INIT_R」、「TX」が記憶されている。図3Bでは、例として、宛先情報の項目に「AP1」、「AP2」、・・・、「APN」が記憶されている。なお、図3A、図3Bは、本実施形態のデータフォーマットの一例であり、使用する通信方法に合わせて変更してもよい。
図4は、本発明の一実施形態に係る通信用メモリのアドレスの一例を示すデータテーブルである。
通信用メモリ記憶部210は、仮想マシンの通信用メモリの送信用アドレス及び受信用アドレスを、予め記憶する。
図4では、例として、第一通信用メモリ520の送信用アドレス項目に「0xXXXXXXX1」、第一通信用メモリ520の受信用アドレス項目に「0xYYYYYYY1」が記憶されている。第二通信用メモリ620の送信用アドレス項目に「0xXXXXXXX2」、第二通信用メモリ620の受信用アドレス項目に「0xYYYYYYY2」が記憶されている。第N通信用メモリ820の送信用アドレス項目に「0xXXXXXXXN」、第N通信用メモリ820の受信用アドレス項目に「0xYYYYYYYN」が記憶されている。
図5は、本発明の一実施形態に係る仮想マシンの通信用メモリ及び通信用メモリドライバの論理ブロックアドレスの一例を示すデータテーブルである。論理ブロックアドレスとは、記憶装置においてデータの位置を示すアドレスを指定する方法である。論理ブロックアドレスは、論理ブロックを含むブロックアドレス空間の先頭からのブロックオフセットを表す。なお、特許文献1では1対1の通信を例としており、これを基にして3台以上の複数の仮想マシン間での通信を行う場合には、仮想マシンの組合せ毎に1対1の通信を行うことが想定される。その場合には、後述する図15のように仮想マシンの組合せの数の4倍(N×(N−1)÷2×4)の数のアドレスが必要となる。本発明では、仮想マシンの組合せ毎に1対1の通信を行うのではなく、1対Nの通信が可能となるように管理テーブルを作成し、必要となるアドレスの数は仮想マシンの数の2倍(N×2)となる。
図5では、例として、通信用メモリのI/Oに使用する論理ブロックアドレスとして、図4で示した通信用メモリの送信用アドレスと、受信用アドレスと、を用いている。通信用メモリドライバの論理ブロックアドレスは、通信用メモリのI/Oに使用する論理ブロックアドレスと関連付けて記憶される、通信用メモリドライバの論理ブロックアドレスとして、例として、「LBA_AP1_W」「LBA_AP1_R」「LBA_AP2_W」「LBA_AP2_R」・・・「LBA_APN_W」「LBA_APN_R」を設定している。
図6は、本発明の一実施形態に係る通信用メモリ記憶部210で管理する識別データの一例を示すデータテーブルである。本実施形態では、通信用メモリ記憶部210で管理する識別データのデータテーブル(以下「管理テーブル」という。)は、識別ID、通信ID、状態情報、保存データフラグ、データ保存_先頭アドレス、データ保存_終端アドレス、排他制御フラグを有する。
識別IDのデータ項目は、通信用メモリドライバの論理ブロックアドレスが登録される。図6において、論理ブロックアドレスは、図5の通信用メモリの送受信のアドレスと対応付いて登録されている。
通信IDのデータ項目は、宛先情報が登録される。図6において、宛先情報は、図3の宛先情報と対応付いて登録されている。
状態のデータ項目は、「初期設定中」「アイドル」「送信要求中」「通信データ保存待ち」「送信完了待ち」「受信要求中」「通信データ転送待ち」「受信完了待ち」の8つの状態情報うち、いずれか1つの状態情報が登録される。状態のデータ項目は、通信制御部140の処理に基づいて、データ登録部130によって登録される。なお、初期設定を行う前は識別IDによる管理情報が無いため、「初期状態」として表す。
保存データフラグのデータ項目は、保存された実データが存在するか否かに基づいて、データ登録部130によって登録される。保存データフラグの種別は、「有効」、「無効」とし、保存データが有る場合には「有効」、保存データが無い場合には「無効」とする。
データ保存_先頭アドレスとデータ保存_終端アドレスのデータ項目は、初期設定を行う際、通信データを一時的に格納するメモリエリア(リングバッファ)の先頭アドレスと終端アドレスがデータ登録部130によって登録される。リングバッファの動作は後述する図19と図20の図を用いて説明する。
排他制御フラグのデータ項目は、対象となるリングバッファへデータ保存もしくはリングバッファからのデータ転送が可能か否かに基づいて、データ登録部130によって登録される。排他制御フラグの種別は、「処理可」、「処理不可」とし、リングバッファへの書き込み中、リングバッファからの読み込み中、保存データフラグの変更中、または通信先への直接のデータ転送中、のいずれでもない場合には「処理可」とする。排他制御フラグが「処理可」の場合に、データ登録部130は排他制御フラグを「処理不可」として登録した後、リングバッファへの書き込み、リングバッファからの読み込み、または保存データフラグの変更を行う。その後、リングバッファへの書き込み、リングバッファからの読み込み、または保存データフラグの変更が完了した後に、データ登録部130は排他制御フラグを「処理可」として登録する。排他制御フラグが「処理不可」となった場合の動作は、後述する図11Aと図11Bと図12のシーケンス図を用いて説明する。この排他制御フラグにより、複数台の仮想マシン間で通信を行うことにより発生するデータ送受信の競合を防ぎ、リングバッファのデータ破壊や転送データ破壊を防ぐことができる。
なお、保存データフラグ、データ保存_先頭アドレス、データ保存_終端アドレス、排他制御フラグは、管理テーブルの受信用の識別IDのエントリに格納する。
図19は、本発明の一実施形態に係る通信データ記憶部220に記録する各仮想マシン用のリングバッファの一例を示す図である。通信を行う仮想マシンの受信用アドレスに対応する識別ID毎にリングバッファを備え、通信を行う仮想マシンがN個の場合には、各リングバッファは(N−1)個のデータ格納エリアをもつ。初期設定時には、図6のデータテーブルのリングバッファの先頭アドレスと終端アドレスには、リングバッファの開始アドレスが格納される。
図20は、リングバッファの動作の一例を示す図である。データ書き込み時には、終端アドレスのデータ格納エリアにデータを書き込み、その後、終端アドレスに次のデータ格納エリアのアドレスを格納する。データ読み込み時には、先頭アドレスのデータ格納エリアからデータを読み込み、その後、先頭アドレスに次のデータ格納エリアのアドレスを格納する。
これにより、先頭アドレスと終端アドレスが等しい場合には保存されたデータは無く、等しくない場合に保存されたデータは有ることになる。また、リングバッファの終了アドレスの次のデータ格納エリアのアドレスは、リングバッファの開始アドレスとする。これにより、最小限の固定したメモリ領域を使用して、同様の手順でデータの書き込みと読み込みを継続することができる。
本実施例では、管理テーブルに保存データフラグを備えて保存データの有無を確認するが、リングバッファの先頭アドレスと終端アドレスの比較により保存データの有無を確認しても良い。この場合には、データ送受信時に保存データフラグを登録しなくても良く、管理テーブルから保存データフラグを削減しても良い。また、データ送受信時の保存データフラグを登録しない場合には、保存データフラグの排他制御は必要なくなるため、受信側でリングバッファから実データを読み出す際に排他制御フラグの確認と登録をしなくても良い。この場合には、後述する図11Bで示す受信側での通信データ転送待ちは発生しない。
図7は、本発明の一実施形態に係る仮想マシンの通信用メモリを設定する処理の流れを示すフローチャートである。
メモリ制御部110は、メインメモリから記憶領域を確保し、通信用メモリドライバ300によりアクセスする仮想通信用メモリ400を生成する(ステップS100)。
メモリ制御部110は、仮想通信用メモリ400の中に仮想マシンの数と同数の仮想メモリ(第一仮想メモリ410、第二仮想メモリ420、・・・、第N仮想メモリ440)を生成する(ステップS101)。
メモリ制御部110は、各仮想マシンの通信用メモリに、ステップS101で生成した仮想メモリを1対1で対応付ける(ステップS102)。
図8は、本発明の一実施形態に係る仮想マシン間の通信において、初期設定(第一仮想マシン用の書込用初期設定と第二仮想マシン用の読込用初期設定)の処理の流れを示すシーケンス図である。なお、他の仮想マシンについても同様の処理となる。
第一通信用メモリからの入出力要求パケットを処理するスレッドW1と、第二通信用メモリからの入出力要求パケットを処理するスレッドR2は、マルチスレッドで動作する。
ここでは、第一通信用メモリ520を用いてデータ送信、第二通信用メモリ620を用いてデータ受信する例としている。なお、他の仮想マシンの組み合わせについても同様の処理となる。
第一アプリケーション510は、第一通信用メモリ520の送信用アドレスを用いて初期化要求(書込用初期設定の入出力要求パケット生成)を行う(ステップS200)。この初期化要求により、OSが発行する入出力要求パケットの情報(指示データ:INIT_W、送り元:AP1、識別ID:LBA_AP1_W)をデータ判定部120が受け取る(ステップS201)。
データ判定部120は、入出力要求パケットの情報に基づき、入出力要求パケットに含まれる識別IDなどの識別データを判定する(ステップS202)。データ判定部120の判定結果に基づいて、データ登録部130は、通信用メモリ記憶部210が記憶する管理テーブルに、識別IDを「LBA_AP1_W」、状態を「初期設定中」として登録する(ステップS203)。
データ登録部130は、管理テーブルに識別ID「LBA_AP1_W」の通信IDを「AP1」として識別データを登録する(ステップS204)。初期値を記憶した後、データ登録部130は、管理テーブルに識別ID「LBA_AP1_W」の状態を「アイドル」として登録する(ステップS205)。そして、通信制御部140は、ステップS201の入出力要求パケットで要求された処理の完了通知を第一アプリケーション510へ送る(ステップS206)。
第二アプリケーション610は、第二通信用メモリ620の受信用アドレスを用いて初期化要求(読込用初期設定の入出力要求パケット生成)を行う(ステップS207)。この初期化要求により、OSが発行する入出力要求パケットの情報(指示データ:INIT_R、送り元:AP2、識別ID:LBA_AP2_R)をデータ判定部120が受け取る(ステップS208)。
データ判定部120は、入出力要求パケットの情報に基づき、入出力要求パケットに含まれる識別IDなどの識別データを判定する(ステップS209)。データ判定部120の判定結果に基づいて、データ登録部130は、通信用メモリ記憶部210が記憶する管理テーブルに、識別IDを「LBA_AP2_R」、状態を「初期設定中」として登録する(ステップS210)。
データ登録部130は、管理テーブルに識別ID「LBA_AP2_R」の通信IDを「AP2」、保存データフラグを「無効」、データ保存_先頭アドレスを「LBA_AP2_R用リングバッファ_先頭アドレス(初期値:LBA_AP2_R用リングバッファの開始アドレス)」、データ保存_終端アドレスを「LBA_AP2_R用リングバッファ_終端アドレス(初期値:LBA_AP2_R用リングバッファの開始アドレス)」として識別データを登録する(ステップS211)。初期値を記憶した後、データ登録部130は、管理テーブルに識別ID「LBA_AP2_R」の状態を「アイドル」として登録する(ステップS212)。そして、通信制御部140は、ステップS208の入出力要求パケットで要求された処理の完了通知を第二アプリケーション610へ送る(ステップS213)。
図9は、本発明の一実施形態に係る仮想マシン間の通信において、同じ識別IDに対して受信要求よりも先に送信要求が実行され、かつ他スレッドの送信要求との競合が発生しない場合の処理の流れを示すシーケンス図である。
以下、図9から図12まで、第一仮想マシン500から第二仮想マシン600へのデータの送信を例にするが、他の仮想マシン間のデータの送信における処理も同様である。また、図9、図10に示す記号A、B、C、Dは、図8に示す対応する記号A、B、C、Dに続く処理であることを示す。
第一アプリケーション510は、第一通信用メモリ520の送信用アドレスを用いて送信要求(送信リクエストの入出力要求パケット生成)を行う(ステップS300)。この送信要求により、OSが発行する入出力要求パケットの情報(識別ID:LBA_AP1_W、指示データ:TX、送り元:AP1、宛先:AP2)をデータ判定部120が受け取る(ステップS301)。
データ判定部120は、入出力要求パケットの情報に基づき、入出力要求パケットに含まれる識別IDなどの識別データを判定する(ステップS302)。データ判定部120の判定結果に基づいて、データ登録部130は、管理テーブルに、識別ID「LBA_AP1_W」の状態を「送信要求中」として登録する(ステップS303)。さらに、データ判定部120は、判定結果に基づいて、識別ID「LBA_AP2_R」の状態が「アイドル中」であることをデータ登録部130に通知する。データ登録部130は、管理テーブルの識別ID「LBA_AP2_R」の排他制御フラグが「処理可」であること確認し、排他制御フラグを「処理不可」として登録した後、通信データ記憶部220の「LBA_AP2_R用」のリングバッファ_終端アドレスが示すデータ格納エリアに実データを保存する。さらに、データ登録部130は、識別ID「LBA_AP2_R」のリングバッファ_終端アドレスに次のデータ格納エリアのアドレスを格納し、識別ID「LBA_AP2_R」のデータ保存フラグを「有効」にして、排他制御フラグを「処理可」にする。(ステップS304)。
データ登録部130は、管理テーブルに、識別ID「LBA_AP1_W」の状態を「送信完了待ち」として登録する(ステップS305)。
第二アプリケーション610は、第二通信用メモリ620の受信用アドレスを用いて受信要求(受信リクエストの入出力要求パケット生成)を行う(ステップS306)。この受信要求により、OSが発行する入出力要求パケットの情報(識別ID:LBA_AP2_R)をデータ判定部120が受け取る(ステップS307)。
データ判定部120は、入出力要求パケットの情報に基づき、入出力要求パケットに含まれる識別IDなどの識別データを判定する(ステップS308)。具体的には、データ判定部120は、識別ID「LBA_AP2_R」のデータ保存フラグを参照し、保存された実データがあるか確認する。データ登録部130は、管理テーブルに、識別ID「LBA_AP2_R」の状態を「受信要求中」として登録する(ステップS309)。
図9の処理フローでは、実データは保存されているため、データ登録部130は、管理テーブルの識別ID「LBA_AP2_R」の排他制御フラグが「処理可」であること確認し、管理テーブルに識別ID「LBA_AP2_R」の排他制御フラグを「処理不可」として登録した後、通信制御部140は、通信データ記憶部220の「LBA_AP2_R用」のリングバッファ_先頭アドレスが示すデータ格納エリアから実データを読み出して、読み出した実データをAP2宛の実データとして第二アプリケーション610に転送する(ステップS310)。データ登録部130は、識別ID「LBA_AP2_R」のリングバッファ_先頭アドレスに次のデータ格納エリアのアドレスを格納することで、リングバッファ_先頭アドレスが示すデータ格納エリアに保存された実データを破棄し、識別ID「LBA_AP2_R」のリングバッファ_先頭アドレスと識別ID「LBA_AP2_R」のリングバッファ_終端アドレスが等しい場合に識別ID「LBA_AP2_R」のデータ保存フラグを「無効」にして、排他制御フラグを「処理可」にする。識別ID「LBA_AP2_R」のリングバッファ_先頭アドレスと識別ID「LBA_AP2_R」のリングバッファ_終端アドレスが等しくない場合には、リングバッファに保存データは有るため、識別ID「LBA_AP2_R」のデータ保存フラグは「有効」とする。
通信制御部140が実データを第二アプリケーション610に転送した後、データ登録部130は、管理テーブルに、識別ID「LBA_AP2_R」の状態を「アイドル」として登録する(ステップS311)。そして、通信制御部140は、ステップS307の入出力要求パケットで要求された処理の完了を通知する(ステップS312)。
また、データ登録部130は、管理テーブルに、識別ID「LBA_AP1_W」の状態を「アイドル」として登録する(ステップS313)。そして、通信制御部140は、ステップS301の入出力要求パケットで要求された処理の完了を通知する(ステップS314)。
図10は、本発明の一実施形態に係る仮想マシン間の通信において、同じ識別IDに対して送信要求よりも先に受信要求が実行され、かつ送信要求実行時に他スレッドとの競合が発生しない場合の処理の流れを示すシーケンス図である。
第二アプリケーション610は、第二通信用メモリ620の受信用アドレスを用いて受信要求(受信リクエストの入出力要求パケット生成)を行う(ステップS400)。この受信要求により、OSが発行する入出力要求パケットの情報(識別ID:LBA_AP2_R)をデータ判定部120が受け取る(ステップS401)。
データ判定部120は、入出力要求パケットの情報に基づき、入出力要求パケットに含まれる識別IDなどの識別データを判定する(ステップS402)。具体的には、データ判定部120は、識別ID「LBA_AP2_R」のデータ保存フラグを参照し、保存された実データがあるか確認する。データ登録部130は、管理テーブルに、識別ID「LBA_AP2_R」の状態を「受信要求中」として登録する(ステップS403)。
図10の処理フローでは、実データは保存されていないため、データ登録部130は、管理テーブルに、識別ID「LBA_AP2_R」の状態を「受信完了待ち」として登録する(ステップS404)。
第一アプリケーション510は、第一通信用メモリ520の送信用アドレスを用いて送信要求(送信リクエストの入出力要求パケット生成)を行う(ステップS405)。この送信要求により、OSが発行する入出力要求パケットの情報(識別ID:LBA_AP1_W、指示データ:TX、送り元:AP1、宛先:AP2)をデータ判定部120が受け取る(ステップS406)。
データ判定部120は、入出力要求パケットの情報に基づき、入出力要求パケットに含まれる識別IDなどの識別データを判定する(ステップS407)。データ判定部120の判定結果に基づいて、データ登録部130は、管理テーブルに、識別ID「LBA_AP1_W」の状態を「送信要求中」として登録する(ステップS408)。さらにデータ判定部120は、判定結果に基づいて、「LBA_AP2_R」の状態が「受信完了待ち」であることをデータ登録部130に通知する。データ登録部130は、管理テーブルの識別ID「LBA_AP2_R」の排他制御フラグが「処理可」であること確認し、排他制御フラグを「処理不可」として登録した後、通信制御部140は、実データを第二アプリケーション610へ転送する(ステップS409)。すなわち、通信制御部140は、実データを送信先となるAP2のリングバッファを介することなく、実データを第二アプリケーション610へ転送する。
通信制御部140が実データを第二アプリケーション610に転送した後、データ登録部130は、管理テーブルに、識別ID「LBA_AP2_R」の状態を「アイドル」として登録し、排他制御フラグを「処理可」として登録する(ステップS410)。そして、通信制御部140は、ステップS401の入出力要求パケットで要求された処理の完了を通知する(ステップS411)。
また、データ登録部130は、管理テーブルに、識別ID「LBA_AP1_W」の状態を「アイドル」として登録(ステップS412)する。そして、通信制御部140は、ステップS406の入出力要求パケットで要求された処理の完了を通知する(ステップS413)。
図11Aは、同じ識別IDに対して受信要求よりも先に送信要求が実行された場合の処理例の図9を基に、他スレッドの送信要求との競合により送信側で通信データ保存待ちが発生した場合の処理の流れを示すシーケンス図である。ステップS300、S301、S302、S303、S304、S305は図9と同様であり、ステップS303−2のみ、図9と異なる。
ステップS303にて、データ登録部130は、管理テーブルに、識別ID「LBA_AP1_W」の状態を「送信要求中」として登録する。その後、データ判定部120の判定結果に基づいて、宛先の識別ID「LBA_AP2_R」の状態が「アイドル中」であり、かつ、識別ID「LBA_AP2_R」の排他制御フラグが「処理不可」ある場合に、データ登録部130は、他のスレッドが識別ID「LBA_AP2_R」への送信データ書き込み中と判断し、識別ID「LBA_AP1_W」の状態を「通信データ保存待ち中」として登録する(ステップS303−2)。データ登録部130は、識別ID「LBA_AP2_R」の排他制御フラグが「処理可」になるまで排他制御フラグの値を定期的に確認し、識別ID「LBA_AP2_R」の排他制御フラグが「処理可」であることを確認すると、次のステップS304に進み、データ登録部130は、排他制御フラグを「処理不可」として登録した後、実データをリングバッファに保存する。その後、データ登録部130は、識別ID「LBA_AP2_R」のデータ保存フラグを「有効」にして、排他制御フラグを「処理可」にする。
図11Bは、同じ識別IDに対して受信要求よりも先に送信要求が実行された場合の処理例の図9を基に、他スレッドの送信要求との競合により、受信側で通信データ転送待ちが発生した場合の処理の流れを示すシーケンス図である。ステップS306、S307、S308、S309、S310は図9と同様であり、ステップS309−2のみ、図9と異なる。
ステップS309にて、データ登録部130は、管理テーブルに、識別ID「LBA_AP2_R」の状態を「受信要求中」として登録する。その後、図9の処理フローでは実データは保存されているため、データ登録部130は、識別ID「LBA_AP2_R」の排他制御フラグを確認し、排他制御フラグが「処理不可」であることを確認すると、識別ID「LBA_AP2_R」の状態を「通信データ転送待ち中」として登録する(ステップS309−2)。データ登録部130は、識別ID「LBA_AP2_R」の排他制御フラグが「処理可」になるまで排他制御フラグの値を定期的に確認し、値が変化したときに次のステップS310に進み、データ登録部130は、排他制御フラグを「処理不可」として登録して、通信制御部140は、実データをリングバッファから読み出して第二アプリケーション610に転送する。その後、データ登録部130は、リングバッファから実データを破棄し、識別ID「LBA_AP2_R」のリングバッファ_先頭アドレスとデータ保存フラグを変更して、排他制御フラグを「処理可」にする。
なお、保存データフラグ使用せず、保存データフラグで保存データの有無を確認する方法ではなく、リングバッファの先頭アドレスと終端アドレスの比較により保存データの有無を確認する方法とした場合には、図11Bで示した受信側での通信データ転送待ちは発生しない。
図12は、同じ識別IDに対して送信要求よりも先に受信要求が実行された場合の処理例の図10を基に、他スレッドの送信要求との競合により、送信側で通信データ転送待ちが発生した場合の処理の流れを示すシーケンス図である。ステップS406、S407、S408、S409、S410は図10と同様であり、ステップS408−2のみ、図10と異なる。
ステップS408にて、データ登録部130は、管理テーブルに、識別ID「LBA_AP1_W」の状態を「送信要求中」として登録する。その後、データ判定部120の判定結果に基づいて、識別ID「LBA_AP2_R」の状態が「受信完了待ち」であり、かつ、識別ID「LBA_AP2_R」の排他制御フラグが「処理不可」ある場合に、データ登録部130は、識別ID「LBA_AP1_W」の状態を「通信データ転送待ち中」として登録する(ステップS408−2)。データ登録部130は、識別ID「LBA_AP2_R」の排他制御フラグが「処理可」になるまで排他制御フラグの値を定期的に確認し、識別ID「LBA_AP2_R」の排他制御フラグが「処理可」であることを確認すると、次のステップS409に進み、データ登録部130は、排他制御フラグを「処理不可」として登録して、通信制御部140は、実データを第二アプリケーション610へ転送する。すなわち、通信制御部140は、リングバッファを介することなく実データを第二アプリケーション610へ転送する。その後、ステップS410にて、データ登録部130は、識別ID「LBA_AP2_R」の状態を「アイドル」として登録し、排他制御フラグを「処理可」として登録する。
図13から図15に、特許文献1の通信方法を基にして3台の仮想マシン間で通信を行うことを想定したデータテーブルの例を示す。特許文献1では1対1の通信を例としており、複数の仮想マシン間での通信を行う場合には、仮想マシンのペア毎に1対1の通信を行う必要がある。図13に通信用メモリのデータテーブルを示す。図14に図13で示した通信用メモリの送受信アドレスに対応する通信用メモリドライバの論理ブロックアドレス(識別ID)のデータテーブルを示し、図15に図14で示した識別IDを基にした管理テーブルを示す。このように仮想マシンの組合せ毎に4つの識別ID、2つのデータ保存バッファが必要となり、3台の仮想マシン間で通信する場合には、12個の識別IDと6個のデータ保存バッファが必要となる。N台の仮想マシン間で通信する場合には、組合せの数は(N×(N−1)÷2)であるため、((N×(N−1)÷2)×4)個の識別IDと((N×(N−1)÷2)×2)個のデータ保存バッファが必要となる。また、通信を行うためには1つの識別IDに対してホスト上に1つのスレッドを使用する。このため、通信を行う仮想マシンの数が多いとホスト上に必要となるスレッド数が多くなり、初期設定が煩雑になると共に、通信処理に使用するリソースが大きくなり、リソース不足による性能低下が発生する。また、ホスト上の通信用メモリドライバは(N×(N−1))個のデータ保存バッファを備えることになり、1つの仮想マシンからのデータ通信要求を処理する場合に(N−1)個のデータ保存バッファについて保存データの有無を確認する必要がある。
図16から図18に、本実施の形態における通信方法を使用して3台の仮想マシン間で通信を行う場合のデータテーブルの例を示す。図16に通信用メモリのデータテーブルを示す。第一仮想マシン、第二仮想マシン、第三仮想マシンに対して、第一通信用メモリ、第二通信用メモリ、第三通信用メモリを備え、それぞれ送信用アドレスと受信用アドレスを備える。図17に図16で示した通信用メモリの送受信アドレスに対応する通信用メモリドライバの論理ブロックアドレス(識別ID)のデータテーブルを示し、図18に図17で示した識別IDを基にした管理テーブルを示す。これによると仮想マシン毎に2つの識別ID、1つのリングバッファが必要となり、3台の仮想マシン間で通信する場合には、6個の識別IDと3個のリングバッファが必要となる。N台の仮想マシン間で通信する場合には、(N×2)個の識別IDとN個のリングバッファが必要となる。また、通信を行うためには1つの識別IDに対してホスト上に1つのスレッドを使用する。これにより、ホスト上に必要となるスレッドの数を最小限にすることができ、通信を行う仮想マシンの数が多い場合でも、初期設定が煩雑にならず、リソース不足による性能低下することなく、3台以上の複数の仮想マシン間で高速な通信が可能となる。さらに、リングバッファは1つの仮想マシンに対して(N−1)個のデータ格納エリアを備えるが、1つの仮想マシンからの受信データ要求に対して、通信用メモリドライバは1つのリングバッファについて保存データの有無を確認すればよく、先行技術を基にして複数の仮想マシン間で通信を行うことを想定した場合よりデータ受信時の保存データの有無の確認処理を削減することができる。
本発明の実施例では、1つの仮想マシンに通信を実施するアプリケーションを1個実装して、仮想マシン間の通信として説明したが、1つの仮想マシン内に通信を実施するアプリケーションを複数個実装して、仮想マシンを跨いだ複数のアプリケーション間の通信も可能である。
以上、本実施の形態に示す情報処理装置1では、N個の仮想マシン間で通信を行う場合に、リングバッファのデータ格納エリアの数を(N−1)個とした。情報処理装置1において、メモリ領域が十分に大きい場合には数を増やし、メモリ領域が小さい場合には数を減らすなど、メモリ領域に合わせてリングバッファのエントリ数を変更しても良い。
また、本実施の形態において、特許文献1に示す通信方法を基にした複数の仮想マシン間の通信方法(以下「1対1通信の拡張による通信方法」と呼ぶ)との対比を示した。本実施の形態に示す情報処理装置1が行う通信方法(以下「1対N通信による通信方法」と呼ぶ)と前述の「1対1通信の拡張による通信方法」を組み合わせた通信方法としても良い。具体的には、仮想マシンの数が少ない場合には「1対1通信の拡張による通信方法」、仮想マシンの数が多い場合には「1対N通信による通信方法」とし、ホストマシンのリソース数や通信速度を監視する監視機能を追加し、監視機能の結果を見て、自動的に最適な通信方法に切り替えても良い。
次に、情報処理装置1におけるハードウェアの構成例について述べる。図21は、情報処理装置1のハードウェア構成を例示する図である。図21では、情報処理装置1を実現するための計算機2は任意の仮想マシンを実現しうる性能を備えた計算機である。
計算機2は、バス21、プロセッサ22、メモリ23、ストレージデバイス24、入出力インタフェース25、および、外部インタフェース26を備える。バス21は、プロセッサ22、メモリ23、ストレージデバイス24、入出力インタフェース25、及び外部インタフェース26が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ22などを互いに接続する方法は、バス接続に限定されない。プロセッサ22は、CPU(Central Processing Unit)やその他、処理機能を有する種々のプロセッサである。メモリ23は、RAM(Random Access Memory)などを用いて実現される主記憶装置である。ストレージデバイス24は、ハードディスク、SSD(Solid State Drive)、メモリカード、又は ROM(Read Only Memory)などを用いて実現される補助記憶装置である。
入出力インタフェース25は、計算機2と入出力デバイスとを接続するためのインタフェースである。例えば入出力インタフェース25には、キーボードなどの入力装置や、ディスプレイ装置などの出力装置が接続される。
外部インタフェース26は、計算機2を例えばネットワークなどに接続するためのインタフェースである。線接続であってもよい。外部インタフェース26は、ネットワークインタフェースではなく、直接外部機器を接続するインタフェースであってもよい。
ストレージデバイス24は、情報処理装置1の各処理部を実現するプログラムモジュールを記憶している。プロセッサ22は、これら各プログラムモジュールをメモリ23に読み出して実行することで、各プログラムモジュールに対応する機能を実現する。
図22は、情報処理装置1の最小構成図を示す図である。情報処理装置1は、記憶部(システムメモリ)200と通信制御部140を備える。
情報処理装置1は、3台以上の複数の仮想マシンを備える。
記憶部200は、仮想マシン毎に、送信される実データを記憶するためのリングバッファの先頭アドレスと終端アドレス、排他制御フラグとを含むデータテーブルを記憶する。
通信制御部140は、送信元の仮想マシンから送信先の仮想マシンに送信する実データのリングバッファのデータ格納エリアでの保存の有無、送信先の仮想マシンによる受信要求の有無、送信先の仮想マシンに対応するデータテーブルの排他制御フラグの状態に基づき、リングバッファのアドレスを利用して、送信元の仮想マシンから送信先の仮想マシンデータへのデータの転送制御をする。
以上のように、本実施の形態における情報処理装置1では、排他制御機構による待ち時間が、先行技術の通信方法と比較すると増加するが、TCP-IPなどネットワーク通信用の通信プロトコルを使用する通信方法と比較した場合には、通信プロトコルを使用する通信方法でも排他制御機構は必要となるため、複数の処理階層を経由することによる通信処理のオーバーヘッドが無い分、通信プロトコルを使用する通信方法よりも高速な通信が可能である。
100 制御部
110 メモリ制御部
120 データ判定部
130 データ登録部
140 通信制御部
200 システムメモリ
210 通信用メモリ記憶部
220 通信データ記憶部
300 通信用メモリドライバ
400 仮想通信用メモリ
410 第一仮想メモリ
420 第二仮想メモリ
440 第N仮想メモリ
500 第一仮想マシン
510 第一アプリケーション
520 第一通信用メモリ
600 第二仮想マシン
610 第二アプリケーション
620 第二通信用メモリ
800 第N仮想マシン
810 第Nアプリケーション
820 第N通信用メモリ

Claims (10)

  1. 3台以上の複数の仮想マシンを備える情報処理装置であって、
    仮想マシン毎に、送信される実データを記憶するためのリングバッファの先頭アドレスと終端アドレス、排他制御フラグとを含むデータテーブルを記憶する記憶手段と、
    送信元の仮想マシンから送信先の仮想マシンに送信する実データの前記リングバッファのデータ格納エリアでの保存の有無、前記送信先の仮想マシンによる受信要求の有無、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグの状態に基づき、前記リングバッファのアドレスを利用して、前記送信元の仮想マシンから前記送信先の仮想マシンデータへのデータの転送制御をする通信制御手段と
    を備える情報処理装置。
  2. 送信先の仮想マシンに対応するデータテーブルの先頭アドレスに次のデータ格納エリアのアドレスを格納するデータ登録手段
    をさらに備え、
    前記通信制御手段は、送信元の仮想マシンから送信先の仮想マシンに送信する実データが前記リングバッファのデータ格納エリアに保存されており、前記送信先の仮想マシンが受信要求をしており、かつ、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグが処理可を示している場合、前記送信先の仮想マシンに対応するデータテーブルの先頭アドレスから前記実データを読み出して前記送信先の仮想マシンに前記読み出したデータを転送し、
    前記データ登録手段は、前記通信制御手段による前記送信先の仮想マシンに前記読み出した前記実データの転送の後、前記送信先の仮想マシンに対応するデータテーブルの先頭アドレスに次のデータ格納エリアのアドレスを格納する
    請求項1に記載の情報処理装置。
  3. 前記データ登録手段は、送信元の仮想マシンが送信先の仮想マシンに送信する実データを有し、かつ、前記送信先の仮想マシンが受信要求をしていなく、かつ、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグが処理可を示している場合、前記送信先の仮想マシンに対応するデータテーブルの終端アドレスから前記実データを保管するとともに、前記送信先の仮想マシンに対応するデータテーブルの終端アドレスに次のデータ格納エリアのアドレスを格納する
    ことをさらに行う、請求項2に記載の情報処理装置。
  4. 前記通信制御手段は、送信元の仮想マシンが送信先の仮想マシンに送信する実データを有し、かつ、前記送信先の仮想マシンが受信要求しており、かつ、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグが処理可を示している場合、前記リングバッファを介することなく前記実データを前記送信先の仮想マシンに転送する
    請求項1から請求項3のいずれか1項に記載の情報処理装置。
  5. 前記データ登録手段は、送信元の仮想マシンが送信先の仮想マシンに送信する実データを有し、かつ、前記送信先の仮想マシンが受信要求をしていなく、かつ、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグが処理不可を示す場合、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグが処理可を示すまで、前記送信先の仮想マシンに対応するデータテーブルの終端アドレスから前記実データを保管する処理を保留する
    請求項3に記載の情報処理装置。
  6. 前記通信制御手段は、送信元の仮想マシンから送信先の仮想マシンに送信する実データが前記リングバッファのデータ格納エリアに保存されており、前記送信先の仮想マシンが受信要求をしており、かつ、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグが処理不可を示している場合、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグが処理可を示すまで、前記送信先の仮想マシンに対応するデータテーブルの先頭アドレスから前記実データを読み出して前記送信先の仮想マシンに前記読み出したデータを転送する処理を保留する
    請求項2に記載の情報処理装置。
  7. 前記通信制御手段は、送信元の仮想マシンが送信先の仮想マシンに送信する実データを有し、かつ、前記送信先の仮想マシンが受信要求しており、かつ、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグが処理不可を示している場合、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグが処理可を示すまで、前記リングバッファを介することなく前記実データを前記送信先の仮想マシンに転送する処理を保留する
    請求項4に記載の情報処理装置。
  8. 送信元の仮想マシンから送信先の仮想マシンに送信する実データが前記リングバッファのデータ格納エリアに保存されているか否は、該送信先の仮想マシンに対応するデータテーブルの先頭アドレスと終端アドレスが一致するか否かにより確認される
    請求項1から請求項7のいずれか1項に記載の情報処理装置。
  9. 3台以上の複数の仮想マシンを備える情報処理装置による情報処理法であって、
    仮想マシン毎に、送信される実データを記憶するためのリングバッファの先頭アドレスと終端アドレス、排他制御フラグとを含むデータテーブルを記憶し、
    送信元の仮想マシンから送信先の仮想マシンに送信する実データの前記リングバッファのデータ格納エリアでの保存の有無、前記送信先の仮想マシンによる受信要求の有無、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグの状態に基づき、前記リングバッファのアドレスを利用して、前記送信元の仮想マシンから前記送信先の仮想マシンデータへのデータの転送制御をする
    情報処理方法。
  10. 仮想マシン毎に、送信される実データを記憶するためのリングバッファの先頭アドレスと終端アドレス、排他制御フラグとを含むデータテーブルを記憶させ、
    送信元の仮想マシンから送信先の仮想マシンに送信する実データの前記リングバッファのデータ格納エリアでの保存の有無、前記送信先の仮想マシンによる受信要求の有無、前記送信先の仮想マシンに対応するデータテーブルの排他制御フラグの状態に基づき、前記リングバッファのアドレスを利用して、前記送信元の仮想マシンから前記送信先の仮想マシンデータへのデータの転送制御をする
    ことをコンピュータに行わせる3台以上の複数の仮想マシンを備える情報処理装置用プログラム。
JP2020036956A 2020-03-04 2020-03-04 情報処理装置、情報処理方法及び情報処理装置用プログラム Active JP6885635B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020036956A JP6885635B1 (ja) 2020-03-04 2020-03-04 情報処理装置、情報処理方法及び情報処理装置用プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020036956A JP6885635B1 (ja) 2020-03-04 2020-03-04 情報処理装置、情報処理方法及び情報処理装置用プログラム

Publications (2)

Publication Number Publication Date
JP6885635B1 true JP6885635B1 (ja) 2021-06-16
JP2021140415A JP2021140415A (ja) 2021-09-16

Family

ID=76310154

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020036956A Active JP6885635B1 (ja) 2020-03-04 2020-03-04 情報処理装置、情報処理方法及び情報処理装置用プログラム

Country Status (1)

Country Link
JP (1) JP6885635B1 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002373084A (ja) * 2001-06-14 2002-12-26 Hitachi Ltd 二重化システムの状態交換・障害検出兼用方法
JP4756603B2 (ja) * 2006-10-10 2011-08-24 ルネサスエレクトロニクス株式会社 データプロセッサ
JP7056870B2 (ja) * 2018-03-20 2022-04-19 Necプラットフォームズ株式会社 情報処理装置、情報処理方法及びプログラム

Also Published As

Publication number Publication date
JP2021140415A (ja) 2021-09-16

Similar Documents

Publication Publication Date Title
US10169080B2 (en) Method for work scheduling in a multi-chip system
CN100405303C (zh) 数据处理系统
US7752349B2 (en) Apparatus and method for performing DMA data transfer
US5991797A (en) Method for directing I/O transactions between an I/O device and a memory
KR100326864B1 (ko) 네트워크통신방법및네트워크시스템
US9529532B2 (en) Method and apparatus for memory allocation in a multi-node system
JP3807250B2 (ja) クラスタシステム、コンピュータ及びプログラム
CN110888827A (zh) 数据传输方法、装置、设备及存储介质
US10592459B2 (en) Method and system for ordering I/O access in a multi-node environment
US9372800B2 (en) Inter-chip interconnect protocol for a multi-chip system
EP3563534B1 (en) Transferring packets between virtual machines via a direct memory access device
WO2021051919A1 (zh) 一种数据转发芯片及服务器
JP2018190277A (ja) メモリアクセス制御装置及びその制御方法
CN115357416B (zh) 一种跨系统进行数据处理的方法及装置
JP2002041449A (ja) バスシステム及びその実行順序の調整方法
US20090292856A1 (en) Interserver communication mechanism and computer system
WO2006134804A1 (ja) 外部デバイスアクセス装置
JP6885635B1 (ja) 情報処理装置、情報処理方法及び情報処理装置用プログラム
US7529857B2 (en) Data processing apparatus and data transfer control method
JP7056870B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP4856413B2 (ja) 演算処理装置、情報処理装置、及び演算処理装置の制御方法
US20230229500A1 (en) Parallel and distributed computing system
CN109992560B (zh) 一种通信方法及通信系统
JP4983133B2 (ja) 入出力制御装置およびその制御方法、並びにプログラム
JP7197212B2 (ja) 情報処理装置、情報処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210325

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210506

R150 Certificate of patent or registration of utility model

Ref document number: 6885635

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150