IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通クライアントコンピューティング株式会社の特許一覧

<>
  • 特開-情報処理装置およびプログラム 図1
  • 特開-情報処理装置およびプログラム 図2
  • 特開-情報処理装置およびプログラム 図3
  • 特開-情報処理装置およびプログラム 図4
  • 特開-情報処理装置およびプログラム 図5
  • 特開-情報処理装置およびプログラム 図6
  • 特開-情報処理装置およびプログラム 図7
  • 特開-情報処理装置およびプログラム 図8
  • 特開-情報処理装置およびプログラム 図9
  • 特開-情報処理装置およびプログラム 図10
  • 特開-情報処理装置およびプログラム 図11
  • 特開-情報処理装置およびプログラム 図12
  • 特開-情報処理装置およびプログラム 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022086569
(43)【公開日】2022-06-09
(54)【発明の名称】情報処理装置およびプログラム
(51)【国際特許分類】
   G06F 9/455 20060101AFI20220602BHJP
   G06F 13/10 20060101ALI20220602BHJP
【FI】
G06F9/455 150
G06F13/10 330C
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2020198653
(22)【出願日】2020-11-30
(71)【出願人】
【識別番号】518133201
【氏名又は名称】富士通クライアントコンピューティング株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】特許業務法人扶桑国際特許事務所
(72)【発明者】
【氏名】永田 雅治
(57)【要約】
【課題】通信の効率を向上させることができる。
【解決手段】情報処理装置10は、通信部11と、記憶部12と、処理部13とを有する。通信部11は、ネットワーク1を介して他の装置と通信可能である。処理部13は、仮想的な記憶領域を記憶部12から割り当てられる仮想的な実行環境2aを制御する。また、処理部13は、実行環境2aのプロセスが他の装置に送信する送信データ3aを書き込む送信バッファ領域3として割り当てる記憶部12上の部分領域を、記憶部12のページ12a,12b,・・・の大きさとそれぞれの境界とに基づいて決定する。処理部13は、部分領域をスワップ非対象に設定する。そして、処理部13は、プロセスからの送信データ3aの送信要求に応じて、プロセスの論理的な記憶領域と記憶部12上の記憶領域との対応情報4に基づいて部分領域に書き込まれた送信データ3aを通信部11に送信する。
【選択図】図1
【特許請求の範囲】
【請求項1】
記憶部と、
ネットワークを介して他の装置と通信可能な通信部と、
仮想的な記憶領域を前記記憶部から割り当てられる仮想的な実行環境を制御し、前記実行環境のプロセスが前記他の装置に送信する送信データを書き込む送信バッファ領域として割り当てる前記記憶部上の部分領域を、前記記憶部を管理するための複数のページの大きさと前記複数のページそれぞれの境界とに基づいて決定し、前記部分領域をスワップ非対象に設定し、前記プロセスからの前記送信データの送信要求に応じて、前記プロセスの論理的な記憶領域と前記記憶部上の記憶領域との対応情報に基づいて前記部分領域に書き込まれた前記送信データを前記通信部に送信する処理部と、
を有する情報処理装置。
【請求項2】
前記処理部は、複数の前記部分領域それぞれに書き込まれた、前記複数のページの大きさより大きい前記送信データが分割された複数の分割送信データを別々に前記通信部に送信する、
請求項1記載の情報処理装置。
【請求項3】
前記処理部は、前記送信データを前記他の装置へ送信するよう前記通信部に指示し、前記通信部が前記送信データを前記他の装置へ送信したログを採取する、
請求項1または2記載の情報処理装置。
【請求項4】
前記処理部は、前記記憶部の他の部分領域を前記複数のページの大きさと前記複数のページそれぞれの境界とに基づいて決定し、前記通信部に、前記プロセスが前記他の装置から受信する受信データを前記他の部分領域に書き込ませ、前記プロセスが前記受信データを受け取る受信バッファ領域として前記他の部分領域を割り当てる、
請求項1ないし3のいずれかに記載の情報処理装置。
【請求項5】
コンピュータに、
仮想的な記憶領域を記憶部から割り当てられる仮想的な実行環境を制御し、
前記実行環境のプロセスが他の装置に送信する送信データを書き込む送信バッファ領域として割り当てる前記記憶部上の部分領域を、前記記憶部を管理するための複数のページの大きさと前記複数のページそれぞれの境界とに基づいて決定し、
前記部分領域をスワップ非対象に設定し、
前記プロセスからの前記送信データの送信要求に応じて、前記プロセスの論理的な記憶領域と前記記憶部上の記憶領域との対応情報に基づいて前記部分領域に書き込まれた前記送信データを、ネットワークを介して前記他の装置と通信可能な通信部に送信する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置およびプログラムに関する。
【背景技術】
【0002】
物理サーバ上で仮想マシン(VM:Virtual Machine)やコンテナを稼働させてサービスを提供することがある。物理サーバ上で稼働している複数の仮想マシンやコンテナそれぞれは、異なるサービスを提供することができる。
【0003】
仮想マシンやコンテナに関する技術としては、例えば、仮想マシン間の通信性能を改善する情報処理装置が提案されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2014-195178号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
例えば、仮想マシンやコンテナのデータ送信では、仮想マシンやコンテナの送信データが物理サーバのメモリ(物理メモリ)から物理サーバのネットワークインタフェース(物理ネットワークインタフェース)にコピーされる。ここで、物理サーバは、仮想マシンやコンテナが通信に使うメモリ領域として、物理メモリ上で分散された複数の細かい領域を割り当てていることがある。すると、物理ネットワークインタフェースを制御するドライバは、物理メモリ上で分散された送信データを、コピーして物理メモリ上で連続にしてから物理ネットワークインタフェースに送信する。このようなデータ送信のためのコピーが発生すると通信の効率が低下する。
【0006】
1つの側面では、本件は、通信の効率を向上させることを目的とする。
【課題を解決するための手段】
【0007】
1つの案では、記憶部と、通信部と、処理部とを有する情報処理装置が提供される。通信部は、ネットワークを介して他の装置と通信可能である。処理部は、仮想的な記憶領域を記憶部から割り当てられる仮想的な実行環境を制御し、実行環境のプロセスが他の装置に送信する送信データを書き込む送信バッファ領域として割り当てる記憶部上の部分領域を、記憶部を管理するための複数のページの大きさと複数のページそれぞれの境界とに基づいて決定し、部分領域をスワップ非対象に設定し、プロセスからの送信データの送信要求に応じて、プロセスの論理的な記憶領域と記憶部上の記憶領域との対応情報に基づいて部分領域に書き込まれた送信データを通信部に送信する。
【発明の効果】
【0008】
1態様によれば、通信の効率を向上させることができる。
【図面の簡単な説明】
【0009】
図1】第1の実施の形態に係る情報処理システムの一例を示す図である。
図2】第2の実施の形態に係る情報処理システムの一例を示す図である。
図3】情報処理装置のハードウェアの一例を示す図である。
図4】情報処理装置と端末装置との通信の一例を示す図である。
図5】情報処理装置の機能例を示すブロック図である。
図6】送受信メモリの管理対応表の一例を示す図である。
図7】送信リングバッファおよび受信リングバッファの一例を示す図である。
図8】仮想マシンのデータ送信の制御の一例を示す図である。
図9】仮想マシンのデータ受信の制御の一例を示す図である。
図10】初期設定処理の手順の一例を示すフローチャートである。
図11】データ送信処理の手順の一例を示すフローチャートである。
図12】データ受信処理の手順の一例を示すフローチャートである。
図13】ログ情報の一例を示す図である。
【発明を実施するための形態】
【0010】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。
【0011】
図1は、第1の実施の形態に係る情報処理システムの一例を示す図である。第1の実施の形態は、ネットワーク1に接続された情報処理装置10で稼働している、仮想的な実行環境2a,2b,・・・の通信を制御するものである。ネットワーク1は、LAN(Local Area Network)であってもよいし、WAN(Wide Area Network)やインターネット等であってもよい。
【0012】
情報処理装置10は、実行環境2a,2b,・・・を稼働させるコンピュータである。実行環境2a,2b,・・・は、例えば、仮想マシンまたはコンテナである。実行環境2aは、仮想通信部、仮想記憶部および仮想処理部を有する。仮想通信部は、ネットワークインタフェースをソフトウェアで再現したものである。また、仮想記憶部は、記憶領域をソフトウェアで再現したものである。また、仮想処理部は、プロセッサをソフトウェアで再現したものである。実行環境2aのプロセスは、仮想処理部、仮想通信部および仮想記憶部によって、物理マシン上と同様に実行される。なお、実行環境2b,・・・も実行環境2aと同様の仮想通信部、仮想記憶部および仮想処理部を有する。
【0013】
情報処理装置10は、通信部11と記憶部12と処理部13とを有する。通信部11は、ネットワーク1を介して他の装置と通信可能である。通信部11は、例えば、情報処理装置10が有するネットワークインタフェースである。
【0014】
記憶部12は、例えば、情報処理装置10が有するメモリである。記憶部12は、ページ12a,12b,12c,12d,12e,12f,・・・(以下では、12a,12b,・・・)に分割されて管理される。例えば、処理部13が記憶領域へのアクセスに用いる論理アドレスと記憶部12における物理アドレスとは、ページ毎に対応付けられる。また、ページ12a,12b,・・・の大きさ(ページサイズ)は、それぞれ同じであり、例えば、4[KB]である。なお、ページサイズは、8[KB]や16[KB]等、4[KB]以外の大きさであってもよい。
【0015】
処理部13は、例えば、情報処理装置10が有するプロセッサまたは演算回路である。処理部13は、仮想的な記憶領域を記憶部12から割り当てられる仮想的な実行環境2a,2b,・・・を制御する。処理部13は、実行環境2aのプロセスによるデータ送信を以下のように制御する。
【0016】
まず、処理部13は、実行環境2aのプロセスが他の装置に送信する送信データ3aを書き込む送信バッファ領域3として割り当てる記憶部12の部分領域を決定する。送信バッファ領域3は、実行環境2aのプロセスの論理アドレス空間において、連続な領域である。ここで、処理部13は、記憶部12を管理するためのページ12a,12b,・・・の大きさとページ12a,12b,・・・それぞれの境界とに基づいて部分領域を決定する。
【0017】
例えば、処理部13は、送信バッファ領域3をページサイズに近い大きさ(例えば、ページサイズと同じ大きさ)の複数の区間に分割する。そして、処理部13は、複数の区間それぞれをページ12a,12b,・・・それぞれの境界をまたがないように割り当てる、記憶部12の部分領域を決定する。一例として、処理部13は、送信バッファ領域3を4[KB]毎の領域に区切ったときの先頭の領域として割り当てる部分領域を、ページ12aの先頭アドレスから4[KB]分の区間(つまり、ページ12a)に決定する。また、処理部13は、送信バッファ領域3を4[KB]毎の領域に区切ったときの先頭から2番目の領域として割り当てる部分領域を、ページ12cに決定する。また、処理部13は、送信バッファ領域3を4[KB]毎の領域に区切ったときの先頭から3番目の領域として割り当てる部分領域を、ページ12eに決定する。例えば、処理部13は、malloc等の関数により、記憶部12のヒープ領域から部分領域を決定する。
【0018】
そして、処理部13は、部分領域をスワップ非対象に設定する。ここで、実行環境2aのプロセスが送信データ3aを送信バッファ領域3に書き込むと、記憶部12の部分領域に送信データ3aが書き込まれる。なお、実行環境2aがページサイズより大きい送信データ3aを送信バッファ領域3に書き込むと、記憶部12の複数の部分領域それぞれに、送信データ3aが分割された複数の分割送信データが書き込まれる。
【0019】
一例として、実行環境2aのプロセスが10[KB]の送信データ3aを送信バッファ領域3に書き込むと、送信データ3aを4[KB]毎に分割したときの先頭の分割送信データは、ページ12aに書き込まれる。また、送信データ3aを4[KB]毎に分割したときの先頭から2番目の分割送信データは、ページ12cに書き込まれる。また、送信データ3aを4[KB]毎に分割したときの末尾の2[KB]の分割送信データは、ページ12eの先頭アドレスから2[KB]分の区間に書き込まれる。
【0020】
処理部13は、実行環境2aのプロセスからの送信データ3aの送信要求に応じて、対応情報4に基づいて部分領域に書き込まれた送信データ3aを通信部11に送信する。対応情報4は、プロセスの論理的な記憶領域と記憶部12上の記憶領域との対応関係を示す。例えば、対応情報4には、実行環境2a,2b,・・・上で実行されるプロセスのID毎に、プロセスの論理的な記憶領域(論理領域)が割り当てられた記憶部12上の記憶領域(物理領域)が登録される。論理領域および物理領域は、先頭アドレスと長さで指定されていてもよい。処理部13は、対応情報4を参照し、実行環境2aのプロセスからの送信要求で指定された論理的な記憶領域に対応する、記憶部12上の記憶領域(つまり、部分領域)を特定する。そして、処理部13は、部分領域に記憶された送信データ3aを通信部11に送信する。
【0021】
なお、送信データ3aがページサイズより大きい場合、処理部13は、複数の部分領域それぞれに書き込まれた、複数の分割送信データを別々に通信部11に送信する。例えば、処理部13は、通信部11にDMA(Direct Memory Access)転送するデータが記憶された記憶部12の記憶領域を登録するためのリングバッファに、複数の部分領域それぞれを別々の転送要求として登録する。そして、処理部13は、DMAコントローラに、複数の分割送信データを別々に通信部11に送信させる。
【0022】
処理部13は、送信データ3aを通信部11に送信すると、送信データ3aを他の装置へ送信するよう通信部11に指示する。通信部11は、処理部13からの指示にしたがって、ネットワーク1を介して他の装置に送信データ3aを送信する。ここで、処理部13は、通信部11が送信データ3aを他の装置へ送信したログを採取する。例えば、処理部13は、通信部11が送信データ3aを他の装置へ送信したときのフレームの大きさや、通信部11が送信データ3aを他の装置へ正常に送信したか否か等を含む送信完了通知を通信部11から取得する。
【0023】
第1の実施の形態によれば、処理部13は、仮想的な記憶領域を記憶部12から割り当てられる仮想的な実行環境2aを制御する。処理部13は、実行環境2aのプロセスが他の装置に送信する送信データ3aを書き込む送信バッファ領域3として割り当てる記憶部12の部分領域を、記憶部12を管理するためのページ12a,12b,・・・の大きさとページ12a,12b,・・・それぞれの境界とに基づいて決定する。処理部13は、部分領域をスワップ非対象に設定する。そして、処理部13は、プロセスからの送信データ3aの送信要求に応じて、プロセスの論理的な記憶領域と記憶部12上の記憶領域との対応情報4に基づいて部分領域に書き込まれた送信データ3aをネットワーク1を介して他の装置と通信可能な通信部11に送信する。
【0024】
このようにして、処理部13は、実行環境2aのプロセスに、ページ内で連続となる部分領域に送信データ3aを書き込ませることができる。そして、処理部13は、部分領域をスワップ非対象に設定することで、記憶部12上に部分領域を固定できる。これにより、処理部13は、送信バッファ領域3が実行環境2aのプロセスの論理的な記憶領域で示された場合でも、記憶部12上の領域である部分領域を対応情報4を用いて特定できる。よって、処理部13は、物理的に連続にするためのコピーなしに送信データ3aを通信部11に送信できるため、情報処理装置10は、通信の効率を向上させることができる。
【0025】
また、処理部13は、複数の部分領域それぞれに書き込まれた、ページ12a,12b,・・・の大きさより大きい送信データ3aが分割された複数の分割送信データを別々に通信部11に送信する。これにより、処理部13は、送信データ3aがページ12a,12b,・・・の大きさより大きい場合であっても、物理的に連続にするためのコピーなしに送信データ3aを通信部11に送信できる。
【0026】
また、処理部13は、送信データ3aを他の装置へ送信するよう通信部11に指示し、通信部11が送信データ3aを他の装置へ送信したログを採取する。これにより、情報処理装置10は、実行環境2a,2b,・・・の送信データの総量に応じて、実行環境2a,2b,・・・のデータ送信を制御することができるようになる。
【0027】
なお、処理部13は、次のように実行環境2aのプロセスのデータ受信を制御してもよい。処理部13は、記憶部12の他の部分領域をページ12a,12b,・・・の大きさとページ12a,12b,・・・それぞれの境界とに基づいて決定する。処理部13は、通信部11に、実行環境2aのプロセスが他の装置から受信する受信データを他の部分領域に書き込ませる。そして、処理部13は、実行環境2aのプロセスが受信データを受け取る受信バッファ領域として他の部分領域を割り当てる。これにより、情報処理装置10は、実行環境2aのプロセスのデータの受信においても、通信の効率を向上させることができる。
【0028】
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、情報処理装置で稼働する仮想マシンの通信を制御するものである。
【0029】
図2は、第2の実施の形態に係る情報処理システムの一例を示す図である。第2の実施の形態の情報処理システムは、情報処理装置100と管理端末30と端末装置31,32,・・・とを有する。情報処理装置100は、複数の仮想マシンを稼働させるコンピュータである。情報処理装置100は、管理端末30によって管理される。例えば、情報処理装置100の管理者は、管理端末30を用いて情報処理装置100にアクセスし、管理端末30を介して、情報処理装置100の操作を行う。情報処理装置100は、ネットワーク20を介して、端末装置31,32,・・・に接続される。ネットワーク20は、LANであってもよいし、WANやインターネット等であってもよい。端末装置31,32,・・・は、情報処理装置100で稼働している仮想マシンと通信をするコンピュータである。
【0030】
図3は、情報処理装置のハードウェアの一例を示す図である。情報処理装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス106を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
【0031】
メモリ102は、情報処理装置100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。バス106に接続されている周辺機器としては、ストレージ装置103、機器接続インタフェース104およびLANコントローラ105がある。
【0032】
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0033】
機器接続インタフェース104は、情報処理装置100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース104には、メモリ装置21やメモリリーダライタ22を接続することができる。メモリ装置21は、機器接続インタフェース104との通信機能を搭載した記録媒体である。メモリリーダライタ22は、メモリカード23へのデータの書き込み、またはメモリカード23からのデータの読み出しを行う装置である。メモリカード23は、カード型の記録媒体である。
【0034】
LANコントローラ105は、ネットワーク20に接続されている。LANコントローラ105は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【0035】
情報処理装置100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、管理端末30および端末装置31,32,・・・も図3に示した情報処理装置100と同様のハードウェアにより実現することができる。なお、管理端末30および端末装置31,32,・・・は、モニタなどの表示装置や、キーボード、マウス等の入力インタフェースをさらに有していてもよい。また、第1の実施の形態に示した情報処理装置10も、図3に示した情報処理装置100と同様のハードウェアにより実現することができる。また、プロセッサ101は、第1の実施の形態に示した処理部13の一例である。また、メモリ102は、第1の実施の形態に示した記憶部12の一例である。また、LANコントローラ105は、第1の実施の形態に示した通信部11の一例である。
【0036】
情報処理装置100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。情報処理装置100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、情報処理装置100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また情報処理装置100に実行させるプログラムを、メモリ装置21、メモリカード23などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0037】
次に、情報処理装置100で稼働する仮想マシンについて説明する。
図4は、情報処理装置と端末装置との通信の一例を示す図である。情報処理装置100は、仮想マシン110a,110b,・・・を稼働させる。例えば、仮想マシン110a,110b,・・・は、通信相手に所定のサービスを提供する。
【0038】
仮想マシン110aは、仮想プロセッサ110a-1と、仮想メモリ110a-2と、仮想ストレージ装置110a-3と仮想LANコントローラ110a-4とを有する。仮想プロセッサ110a-1は、情報処理装置100が実行する仮想化ソフトウェアによって、再現されたプロセッサである。例えば、仮想プロセッサ110a-1が実行する処理は、プロセッサ101が仮想化ソフトウェアを実行することで実現される。
【0039】
仮想メモリ110a-2は、情報処理装置100が実行する仮想化ソフトウェアによって、再現されたメモリである。仮想ストレージ装置110a-3は、情報処理装置100が実行する仮想化ソフトウェアによって、再現されたストレージ装置である。例えば、仮想メモリ110a-2や仮想ストレージ装置110a-3に記憶されたデータは、仮想化ソフトウェアによって、対応するメモリ102やストレージ装置103の領域に書き込まれる。
【0040】
仮想LANコントローラ110a-4は、情報処理装置100が実行する仮想化ソフトウェアによって、再現されたLANコントローラである。例えば、仮想LANコントローラ110a-4による通信は、仮想化ソフトウェアとLANコントローラ105のドライバによって、LANコントローラ105を介した通信に変換される。なお、仮想マシン110b,・・・も仮想マシン110aと同様の仮想プロセッサと、仮想メモリと、仮想ストレージ装置と、仮想LANコントローラとを有する。
【0041】
端末装置31は、ネットワーク20を介して仮想マシン110aと通信し、仮想マシン110aの仮想プロセッサ110a-1が実行するプロセスからサービスの提供を受ける。また、端末装置32は、ネットワーク20を介して仮想マシン110bと通信し、仮想マシン110bの仮想プロセッサが実行するプロセスからサービスの提供を受ける。このように、情報処理装置100は複数の仮想マシンを稼働させることで、複数の異なるサービスを提供できる。
【0042】
なお、第2の実施の形態では、情報処理装置100は複数の仮想マシンを稼働させているが、複数のコンテナを稼働させていてもよい。また、仮想マシン110a,110b,・・・は、第1の実施の形態に示した、実行環境2a,2b,・・・の一例である。また、端末装置31,32,・・・は、第1の実施の形態に示した、他の装置の一例である。
【0043】
ここで、情報処理装置100は、仮想マシン110a,110b,・・・が実行するプロセスの送信バッファの領域や受信バッファの領域に記憶するデータを、メモリ102の空いている複数の細かい領域に書き込むことが考えられる。
【0044】
すると、LANコントローラ105を制御するドライバは、メモリ102上で分散された送信データをコピーしてメモリ102上で連続にしてからLANコントローラ105に送信する。また、LANコントローラ105を制御するドライバは、LANコントローラ105から取得した受信データを、メモリ102上で分散された領域にコピーする。さらに、仮想マシンのプロセスの送受信バッファの論理アドレスが仮想メモリ上で分散された領域に割り当てられている場合、仮想マシンのドライバは、LANコントローラ105を制御するドライバが行うコピーと同様のコピーを仮想マシン上で行う。このように、データ送受信のたびにドライバがデータをコピーすると、仮想マシンの通信の効率が低下する。
【0045】
そこで、第2の実施の形態では、情報処理装置100は、仮想マシンの送受信バッファの領域として、メモリ102のページ毎にまとまった領域を割り当てる。そして、LANコントローラ105を制御するドライバとLANコントローラ105とは、仮想マシンのデータ送受信において、メモリ102のページ内で連続した領域を用いてデータを送受信する。なお、ページの大きさ(ページサイズ)よりも大きい送受信データは複数のページに分割して書き込まれ、LANコントローラ105を制御するドライバとLANコントローラ105とは、ページ毎にデータを送受信する。なお、以下ではページサイズが4[KB]であるものとするが、ページサイズは8[KB]や16[KB]等、4[KB]以外の大きさであってもよい。
【0046】
次に、情報処理装置100の機能について詳細に説明する。
図5は、情報処理装置の機能例を示すブロック図である。情報処理装置100は、仮想マシン110a,110b,・・・およびホストOS120を有する。仮想マシン110a,110b,・・・は、情報処理装置100で稼働している仮想マシンである。仮想マシン110aは、通信アプリ111a、送信バッファ領域112a、受信バッファ領域113aおよび仮想ドライバ114aを有する。
【0047】
通信アプリ111aは、送信バッファ領域112aおよび受信バッファ領域113aを用いてデータの送受信をするアプリケーションである。通信アプリ111aは、送信バッファ領域112aに送信データを書き込み、仮想マシン110aに送信要求をする。また、通信アプリ111aは、受信バッファ領域113aに書き込まれた受信データを取得する。
【0048】
また、通信アプリ111aは、起動したときに、送信バッファ領域112aおよび受信バッファ領域113aに用いるメモリ102の領域をホストOS120に要求する。例えば、通信アプリ111aは、送信バッファ領域112aおよび受信バッファ領域113aのサイズを指定して、送信バッファ領域112aおよび受信バッファ領域113aとしてメモリ102の領域を割り当てるようホストOS120に要求する。
【0049】
送信バッファ領域112aは、通信アプリ111aが送信データの書き込みに用いる領域である。受信バッファ領域113aは、通信アプリ111aが受信データの受け取りに用いる領域である。
【0050】
仮想ドライバ114aは、送信バッファ領域112aに書き込まれた送信データの仮想送信処理要求と、受信バッファ領域113aによる受信データの受信予約とをする。例えば、仮想ドライバ114aは、送信バッファ領域112aの送信データが書き込まれた領域の論理アドレスを指定して、ホストOS120に、指定した論理アドレスに書き込まれたデータの仮想送信処理要求をする。そして、仮想ドライバ114aは、ホストOS120からの通知によって、送信データの送信完了を検出すると、通信アプリ111aに、送信データの送信完了を通知する。
【0051】
また、例えば、仮想ドライバ114aは、受信バッファ領域113aの論理アドレスを指定して、指定した論理アドレスで受信予約をしていることをホストOS120に通知する。そして、仮想ドライバ114aは、ホストOS120からの通知によって、受信データの受信を検出すると、通信アプリ111aに、受信データの受信を通知する。なお、仮想マシン110b,・・・は、仮想マシン110aと同様の機能を有する。
【0052】
ホストOS120は、情報処理装置100によって実行されるオペレーティングシステムである。ホストOS120は、仮想化ソフトウェアによって仮想マシン110a,110b,・・・の制御を行う。なお、情報処理装置100は、ホストOS120に代えてハイパーバイザを有してもよい。ホストOS120は、管理情報領域121、管理部122およびドライバ123を有する。管理情報領域121は、メモリ102またはストレージ装置103の記憶領域を用いて実現される。管理部122およびドライバ123は、メモリ102に記憶されたプログラムをプロセッサ101が実行することで実現される。
【0053】
管理情報領域121は、管理対応表121aと送信リングバッファ121bと受信リングバッファ121cとを記憶する。管理対応表121aには、仮想マシン110a,110b,・・・の論理アドレス空間と物理アドレス空間との対応関係が登録される。送信リングバッファ121bには、LANコントローラ105に送信するデータが記憶されたメモリ102の領域が登録される。受信リングバッファ121cには、LANコントローラ105から受信するデータが記憶されるメモリ102の領域が登録される。
【0054】
管理部122は、仮想マシン110a,110b,・・・の制御をする。管理部122は、送信バッファ領域112aおよび受信バッファ領域113aとして割り当てるメモリ102の領域の決定と、仮想マシン110aのデータの送受信の制御とを行う。
【0055】
送信バッファ領域112aとして割り当てるメモリ102の領域の決定では、管理部122は、まず、仮想マシン110aから送信バッファ領域112aのサイズ(ReqSize[KB])の指定を受け付ける。管理部122は、ReqSize[KB]/4[KB]を切り上げた数の、ページの先頭アドレスから4[KB](つまり、ページ全体)が使用可能な領域をメモリ102から確保する。そして、管理部122は、確保した各領域の先頭から、送信バッファ領域112aの論理アドレスを割り当てる。
【0056】
例えば、管理部122は、送信バッファ領域112aを4[KB]毎の領域に区切り、各領域として、確保した各ページを割り当てる。なお、送信バッファ領域112aを4[KB]毎の領域に区切ったときの末尾の領域が4[KB]未満のサイズの場合、管理部122は、末尾の領域として、ページの先頭から当該サイズの領域を割り当てる。また、管理部122は、データ送信に用いる制御用データを格納するための1つのページをメモリ102から確保する。制御用データは、例えば、ネットワーク20を介してデータを送受信するためのヘッダ等を含む。
【0057】
そして、管理部122は、送信バッファ領域112aとメモリ102の領域との対応関係を管理対応表121aに登録する。管理部122は、送信バッファ領域112aとして割り当てるメモリ102の領域の決定と同様に、受信バッファ領域113aとして割り当てるメモリ102の領域を決定する。
【0058】
管理部122は、仮想マシン110aのデータの送信では、管理対応表121aによって、送信データが書き込まれたメモリ102上の領域を特定する。そして、管理部122は、特定した領域をスワップ非対象に設定し、ドライバ123に通知する。また、管理部122は、ドライバ123から仮想マシン110aに対する受信データを受信したことを通知されると、LANコントローラ105が受信データを書き込んだメモリ102上の領域を、受信バッファ領域113aとして割り当て直す。そして、管理部122は、受信バッファ領域113aとメモリ102の領域との対応関係を管理対応表121aに登録し直す。また、管理部122は、仮想マシン110aに受信データの受信を通知する。
【0059】
ドライバ123は、データの送受信においてLANコントローラ105を制御する。仮想マシン110aのデータの送信では、まず、ドライバ123は、送信データのLANコントローラ105への送信要求を送信リングバッファ121bに登録する。例えば、ドライバ123は、管理部122が特定した、送信データが書き込まれたメモリ102上の領域を送信リングバッファ121bに登録する。なお、送信データが複数の分割送信データとして複数のページに分割されて書き込まれている場合、ドライバ123は、LANコントローラ105への送信要求を分割送信データ毎に別々に送信リングバッファ121bに登録する。
【0060】
ドライバ123は、送信リングバッファ121bに登録された送信要求に基づいて、送信データを、LANコントローラ105へ送信する。例えば、ドライバ123は、DMAコントローラに、送信データをLANコントローラ105へDMA転送させる。そして、ドライバ123は、LANコントローラ105に、送信データを端末装置31に送信させる。
【0061】
また、ドライバ123は、LANコントローラ105が受信データを受信すると、全体が使用可能な、受信データのサイズ分のページをメモリ102から確保する。ドライバ123は、確保したページに受信データを書き込むようLANコントローラ105に指示する。そして、ドライバ123は、受信データの受信相手となる仮想マシンを受信データに含まれるポート番号から特定し、特定した仮想マシンに対する受信データをLANコントローラ105が受信したことを管理部122に通知する。
【0062】
また、ドライバ123は、送受信情報のログを採取する。例えば、ドライバ123は、送受信データのフレームの大きさや、データを正常に送受信したか否か等の情報を記録する。
【0063】
なお、通信アプリ111aは、第1の実施の形態に示した、実行環境2aのプロセスの一例である。また、ページの先頭アドレスは、第1の実施の形態に示した、ページ12a,12b,・・・それぞれの境界の一例である。また、管理対応表121aは、第1の実施の形態に示した、対応情報4の一例である。なお、図5に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
【0064】
図6は、送受信メモリの管理対応表の一例を示す図である。管理対応表121aには、仮想マシン110a,110b,・・・で実行されているプロセス(例えば、通信アプリ111a等)の論理アドレスと物理アドレスとの対応関係が登録される。管理対応表121aは、ID、先頭アドレス(論理)、アドレス長さ(論理)、先頭アドレス(物理)およびアドレス長さ(物理)の項目を有する。
【0065】
IDの項目には、プロセスを識別するためのIDが設定されている。例えば、プロセスを識別するためのIDは、仮想マシン110a,110b,・・・が実行するプロセスそれぞれに設定するPID(Process ID)である。また、例えば、プロセスを識別するためのIDは、ホストOS120が仮想マシン110a,110b,・・・それぞれに設定するPIDと、仮想マシン110a,110b,・・・が実行するプロセスそれぞれに設定するPIDとの組み合わせである。
【0066】
先頭アドレス(論理)およびアドレス長さ(論理)の項目は、プロセスが使用している(例えば、通信アプリ111aが送信バッファ領域112aとして使用している)論理アドレス空間の領域を示す。また、先頭アドレス(物理)およびアドレス長さ(物理)の項目は、プロセスが使用している論理アドレス空間の領域として割り当てられた、メモリ102上の領域を示す。
【0067】
例えば、管理対応表121aは、IDの項目が「0001」、先頭アドレス(論理)の項目が「aaaa」、アドレス長さ(論理)の項目が「4[KB]」、先頭アドレス(物理)の項目が「AAAA」、アドレス長さ(物理)の項目が「4[KB]」のレコードを有する。このレコードは、ID「0001」で示されるプロセスの論理アドレス「aaaa」から「4[KB]」の領域として、メモリ102上のアドレス「AAAA」から「4[KB]」分の領域が割り当てられていることを示す。
【0068】
図7は、送信リングバッファおよび受信リングバッファの一例を示す図である。送信リングバッファ121bは、LANコントローラ105へのデータの送信要求が登録される。送信リングバッファ121bは、Control、Status、先頭アドレスおよびアドレス長さの項目を有する。Controlの項目には、送信するデータの組を示す情報が設定される。Statusの項目には、要求された送信が終了したか否かを示す情報が設定される。先頭アドレスおよびアドレス長さの項目は、送信を要求されたデータが記憶されたメモリ102上の領域を示す。
【0069】
受信リングバッファ121cは、LANコントローラ105からのデータの受信予約が登録される。受信リングバッファ121cも送信リングバッファ121bと同様の項目を有する。
【0070】
次に、仮想マシン110aのデータ送信の制御について説明する。
図8は、仮想マシンのデータ送信の制御の一例を示す図である。図8は、仮想マシン110aの通信アプリ111aが送信バッファ領域112aに書き込んだ送信データ41を、LANコントローラ105へ送信するための制御方法を示す。
【0071】
まず、通信アプリ111aが起動したときに、管理部122が送信バッファ領域112aの論理アドレスをメモリ102の物理アドレスに割り当てる。送信バッファ領域112aは、仮想マシン110aの論理アドレス空間で連続な領域である(論理層)。また、メモリ102は、ページ102a,102b,102c,102d,102e,・・・に分割されて管理される。なお、ページ102b,102dの一部にはデータが格納されている(つまり、使用不可である)。
【0072】
管理部122は、ページの先頭アドレスから4[KB]が使用可能な領域をメモリ102から確保する(物理層)。例えば、管理部122は、ページ102a,102c,102eをメモリ102から確保する。そして、管理部122は、送信バッファ領域112aを4[KB]毎の領域に区切り、各領域として、確保した各ページを割り当てる。例えば、管理部122は、送信バッファ領域112aを4[KB]毎の領域に区切ったときの先頭の領域として、ページ102aを割り当てる。また、管理部122は、送信バッファ領域112aを4[KB]毎の領域に区切ったときの先頭から2番目の領域として、ページ102cを割り当てる。また、管理部122は、送信バッファ領域112aを4[KB]毎の領域に区切ったときの先頭から3番目の領域として、ページ102eを割り当てる。
【0073】
次に、通信アプリ111aが、送信バッファ領域112aに10[KB]の送信データ41を書き込むと、ページ102a,102c,102eに、分割送信データ41a,41b,41cが書き込まれる。分割送信データ41aは、ページ102aの先頭アドレスから4[KB]の領域(つまり、ページ102a全体)に書き込まれる。また、分割送信データ41bは、ページ102cの先頭アドレスから4[KB]の領域(つまり、ページ102c全体)に書き込まれる。また、分割送信データ41cは、ページ102eの先頭アドレスから2[KB]の領域に書き込まれる。そして、ドライバ123は、書き込まれた分割送信データ41a,41b,41cを別々にLANコントローラ105へ送信する。
【0074】
このように、管理部122は、ページの先頭アドレスから4[KB]が使用可能な領域をメモリ102から確保し、確保した領域を送信バッファ領域112aとして割り当てる。これにより、管理部122は、通信アプリ111aに、メモリ102上で4[KB]毎にまとまった領域に送信データ41を書き込ませることができる。よって、ドライバ123は、メモリ102上で連続にするためのコピーなしに、送信データ41をLANコントローラ105へ送信できる。また、ドライバ123は、分割送信データ41a,41b,41cを別々にLANコントローラ105へ送信するため、ページサイズより大きい送信データ41をコピーなしにLANコントローラ105へ送信できる。なお、ページ102a,102c,102eは、第1の実施の形態に示した、部分領域の一例である。
【0075】
次に、仮想マシン110aのデータ受信の制御について説明する。
図9は、仮想マシンのデータ受信の制御の一例を示す図である。図9は、LANコントローラ105が受信した受信データ42を、仮想マシン110aの通信アプリ111aが受け取るための制御方法を示す。なお、図9の例では、メモリ102は、ページ102f,102g,102h,102i,102j,・・・に分割されて管理される。また、ページ102g,102iの一部にはデータが格納されている(つまり、使用不可である)。
【0076】
LANコントローラ105が10[KB]の受信データ42を受信すると(通信回線層)、ドライバ123は、ページの先頭アドレスから4[KB]が使用可能な領域をメモリ102から確保する。例えば、ドライバ123は、ページ102f,102h,102jをメモリ102から確保する(物理層)。
【0077】
そして、ドライバ123は、LANコントローラ105に、受信データ42を4[KB]毎の分割受信データ42a,42b,42cに分割して、確保した各ページに書き込ませる。例えば、LANコントローラ105は、分割受信データ42aをページ102fの先頭アドレスから4[KB]の領域(つまり、ページ102f全体)に書き込む。また、LANコントローラ105は、分割受信データ42bをページ102hの先頭アドレスから4[KB]の領域(つまり、ページ102h全体)に書き込む。また、LANコントローラ105は、分割受信データ42cをページ102jの先頭アドレスから2[KB]の領域に書き込む。
【0078】
そして、管理部122は、受信バッファ領域113aとして割り当てられる、メモリ102の領域を、受信データ42が書き込まれたメモリ102の領域に切り替える。例えば、管理部122は、受信バッファ領域113aを4[KB]毎の領域に区切ったときの先頭の領域として、分割受信データ42aが書き込まれたページ102fを割り当て直す(論理層)。また、管理部122は、受信バッファ領域113aを4[KB]毎の領域に区切ったときの先頭から2番目の領域として、分割受信データ42bが書き込まれたページ102hを割り当て直す。また、管理部122は、受信バッファ領域113aを4[KB]毎の領域に区切ったときの先頭から3番目の領域として、分割受信データ42cが書き込まれたページ102jを割り当て直す。すると、仮想マシン110aの通信アプリ111aは、受信バッファ領域113aから受信データ42を受け取ることができる。
【0079】
このように、ドライバ123は、LANコントローラ105に、受信データ42を分割受信データ42a,42b,42cに分割して、ページ102f,102h,102jに書き込ませる。そして、管理部122は、受信バッファ領域113aとして、分割受信データ42a,42b,42cが書き込まれたページ102f,102h,102jを割り当て直す。これにより、管理部122は、受信データ42を、受信バッファ領域113aとして割り当てられたメモリ102上の領域にコピーすることなく、仮想マシン110aに、受信データ42を受け取らせることができる。なお、ページ102f,102h,102jは、第1の実施の形態に示した、他の部分領域の一例である。
【0080】
以下、仮想マシン110aがデータ送受信するための初期設定処理の手順について、詳細に説明する。
図10は、初期設定処理の手順の一例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。なお、仮想マシン110a,110b,・・・の処理は同様であるため、以下では仮想マシン110aの処理についてのみ説明する。また、送信バッファ領域112aとしてメモリ102の領域を割り当てる処理について説明するが、受信バッファ領域113aとしてメモリ102の領域を割り当てる処理も同様である。
【0081】
[ステップS11]情報処理装置100が起動する。これにより、ホストOS120が起動する。なお、情報処理装置100の起動には、LANコントローラ105の初期化処理等が含まれる。
【0082】
[ステップS12]ホストOS120の管理部122は、仮想マシン110a,110b,・・・に起動を指示する。
[ステップS13]仮想マシン110aは、起動する。
【0083】
[ステップS14]仮想マシン110aの通信アプリ111aは、起動する。
[ステップS15]通信アプリ111aは、送信バッファ領域112aに用いるメモリの取得を仮想マシン110aに要求する。例えば、通信アプリ111aは、送信バッファ領域112aのサイズを指定して、メモリの取得を仮想マシン110aに要求する。
【0084】
[ステップS16]仮想マシン110aは、通信アプリ111aが指定したサイズのメモリ102の領域をホストOS120に要求する。
[ステップS17]ホストOS120の管理部122は、全体が使用可能な、通信アプリ111aが指定したサイズ(ReqSize[KB])分のページをメモリ102から確保する。例えば、管理部122は、ReqSize[KB]/4[KB]を切り上げた数の、ページの先頭アドレスから4[KB](つまり、ページ全体)が使用可能なページをメモリ102から確保する。
【0085】
[ステップS18]管理部122は、ステップS17で確保した各ページの先頭から、送信バッファ領域112aの論理アドレスを割り当てる。例えば、管理部122は、送信バッファ領域112aを4[KB]毎の領域に区切り、各領域として、ステップS17で確保した各ページを割り当てる。なお、送信バッファ領域112aを4[KB]毎の領域に区切ったときの末尾の領域が4[KB]未満のサイズの場合、管理部122は、末尾の領域として、ページの先頭から当該サイズの領域を割り当てる。
【0086】
[ステップS19]管理部122は、データ送信に用いる制御用データを格納するための1つのページをメモリ102から確保する。制御用データは、例えば、ネットワーク20を介してデータを送受信するためのヘッダ等を含む。
【0087】
[ステップS20]管理部122は、送信バッファ領域112aとメモリ102の領域との対応関係を管理対応表121aに登録する。例えば、管理部122は、送信バッファ領域112aを4[KB]毎の領域に区切ったときの先頭の領域とステップS18で割り当てられたページとの対応関係を、次のように管理対応表121aに登録する。
【0088】
管理部122は、IDの項目に通信アプリ111aのIDが設定されたレコードを生成する。管理部122は、生成したレコードの先頭アドレス(論理)の項目に、送信バッファ領域112aの先頭アドレスを設定する。また、管理部122は、生成したレコードの先頭アドレス(物理)の項目に、送信バッファ領域112aを4[KB]毎の領域に区切ったときの先頭の領域としてステップS18で割り当てられたページの先頭アドレスを設定する。また、管理部122は、生成したレコードのアドレス長さ(論理)およびアドレス長さ(物理)の項目に、4[KB]を設定する。
【0089】
[ステップS21]仮想マシン110aは、ホストOS120によって割り当てられたメモリ領域を通信アプリ111aに返却する。
[ステップS22]通信アプリ111aは、仮想マシン110aからメモリ領域を受け取る。通信アプリ111aは、送信バッファ領域112aを用いることができるようになる。
【0090】
このように、管理部122は、メモリ102からページを確保し、送信バッファ領域112aとして、確保したページを割り当てる。これにより、管理部122は、通信アプリ111aに、メモリ102上でページ毎にまとまった送信データ41を書き込ませることができる。
【0091】
以下、仮想マシン110aのデータ送信処理の手順について、詳細に説明する。
図11は、データ送信処理の手順の一例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
【0092】
[ステップS31]仮想マシン110aの通信アプリ111aは、送信バッファ領域112aに送信データ41を書き込む。
[ステップS32]通信アプリ111aは、仮想マシン110aに送信データ41の送信を要求する。
【0093】
[ステップS33]仮想マシン110aの仮想ドライバ114aは、ホストOS120に、送信データ41の仮想送信処理要求をする。例えば、仮想ドライバ114aは、送信バッファ領域112aの送信データ41が書き込まれた領域の論理アドレスを指定して、ホストOS120に、指定した論理アドレスに書き込まれたデータの仮想送信処理要求をする。
【0094】
[ステップS34]ホストOS120の管理部122は、管理対応表121aによって、送信データ41が書き込まれたメモリ102上の領域(物理領域)を特定する。例えば、管理部122は、管理対応表121aを参照して、送信データ41が書き込まれた領域の先頭の論理アドレス「aaaa」から4[KB]の領域として割り当てられたメモリ102上の領域が、物理アドレス「AAAA」から4[KB]であると特定する。これにより、管理部122は、分割送信データ41aが書き込まれたページ102aを特定する。ページ102aの特定と同様に、管理部122は、分割送信データ41bが書き込まれたページ102cと分割送信データ41cが書き込まれたページ102eとを特定する。
【0095】
[ステップS35]ホストOS120のドライバ123は、送信データ41が書き込まれたメモリ102の領域(物理領域)をスワップ非対象とすることで固定する。例えば、ドライバ123は、ページ102a,102c,102eをスワップ非対象とする。なお、ステップS35の処理は、ページ102a,102c,102eが送信バッファ領域112aとして確保されてからLANコントローラ105へ分割送信データを送信するまでに行われればよい。
【0096】
[ステップS36]ドライバ123は、送信データ41のLANコントローラ105への送信要求を分割送信データ毎に別々に送信リングバッファ121bに登録する。例えば、ドライバ123は、分割送信データ41aの送信要求として、送信リングバッファ121bのControlの項目に「1」を設定し、Statusの項目に未送信を示す「0」を設定する。また、ドライバ123は、分割送信データ41aの送信要求として、送信リングバッファ121bの先頭アドレスの項目に「AAAA」を設定し、アドレス長さの項目に「4[KB]」を設定する。分割送信データ41aと同様に、ドライバ123は、分割送信データ41bの送信要求と分割送信データ41cの送信要求と制御用データの送信要求とを送信リングバッファ121bに登録する。
【0097】
[ステップS37]ドライバ123は、送信データ41を、LANコントローラ105へ分割送信データ毎に送信する。例えば、ドライバ123は、送信リングバッファ121bに登録された送信要求に基づいて、分割送信データ41aと分割送信データ41bと分割送信データ41cと制御用データとを、DMAコントローラにDMA転送させる。また、ドライバ123は、送信リングバッファ121bに登録されている、送信した分割送信データが書き込まれた領域を示すレコードのStatusの項目に、送信済みを示す「1」を設定する。
【0098】
[ステップS38]LANコントローラ105は、ホストOS120から取得した送信データ41を、ネットワーク20を介して端末装置31に送信する。
[ステップS39]LANコントローラ105は、送信データ41の送信完了をホストOS120に通知する。例えば、LANコントローラ105は、送信データ41を端末装置31へ送信したときのフレームの大きさや、送信データ41を端末装置31へ正常に送信したか否か等を含む送信完了通知をホストOS120に送信する。
【0099】
[ステップS40]ドライバ123は、送信データ41の送信情報のログを採取する(ロギングする)。例えば、ドライバ123は、ステップS38でLANコントローラ105から取得した送信完了通知に基づいて、送信データ41のフレームの大きさや、送信データ41を正常に送信したか否か等の情報を記録する。
【0100】
[ステップS41]管理部122は、仮想マシン110aに送信データ41の送信完了を通知する。また、管理部122は、ステップS35で設定した、送信データ41が書き込まれたメモリ102の領域のスワップ非対象の設定を解除する。
【0101】
[ステップS42]仮想ドライバ114aは、送信データ41の送信完了を検出する。そして、仮想ドライバ114aは、通信アプリ111aに、送信データ41の送信完了を通知する。
【0102】
[ステップS43]通信アプリ111aは、送信完了通知を仮想マシン110aから取得する。これにより、通信アプリ111aは、送信データ41の送信が完了したことを認識する。
【0103】
このように、ドライバ123は、メモリ102上でページ毎にまとまった分割送信データ41a,41b,41cを別々にLANコントローラ105へ送信する。ここで、管理部122は、ページ102a,102c,102eをスワップ非対象に設定することで、メモリ102上の領域を管理対応表121aによって特定できる。ドライバ123は、管理部122が特定したメモリ102上の領域をLANコントローラ105へ送信することで、メモリ102上で連続にするためのコピーなしに、送信データ41をLANコントローラ105へ送信できる。
【0104】
また、管理部122は、ページ102a,102c,102eをスワップ非対象に設定することで、サイズの大きい送信データ41の送信中に分割送信データの一部がスワップされるのを防ぐことができる。このように、ドライバ123は、メモリ102上で細かく分散された領域を送信バッファ領域112aとして割り当てる場合よりもデータ送信の効率を向上させることができる。なお、管理部122は、送信バッファ領域112aとして割り当てられたメモリ102の領域がスワップ非対象に設定されていないときに当該領域がスワップされる場合、管理対応表121aを更新してもよい。
【0105】
以下、仮想マシン110aのデータ受信処理の手順について、詳細に説明する。
図12は、データ受信処理の手順の一例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
【0106】
[ステップS51]仮想マシン110aの仮想ドライバ114aは、受信バッファ領域113aを指定して受信予約をする。例えば、仮想ドライバ114aは、受信バッファ領域113aの論理アドレスを指定して、指定した論理アドレスで受信予約をしていることをホストOS120に通知する。
【0107】
[ステップS52]ホストOS120のドライバ123は、受信バッファ領域113aを受信リングバッファ121cに登録する。例えば、ホストOS120の管理部122は、管理対応表121aによって、受信バッファ領域113aとして割り当てられた、メモリ102上の領域を特定する。そして、ドライバ123は、受信バッファ領域113aとして割り当てられた、メモリ102上の領域をページ毎に受信リングバッファ121cに登録する。
【0108】
[ステップS53]LANコントローラ105は、データの受信を待機する。
[ステップS54]LANコントローラ105は、端末装置31から受信データ42を受信する。
【0109】
[ステップS55]ドライバ123は、全体が使用可能な、受信データ42のサイズ分のページをメモリ102から確保する。例えば、管理部122は、ページの先頭アドレスから4[KB]が使用可能なページ102f,102h,102jをメモリ102から確保する。そして、ドライバ123は、ページ102f,102h,102jに受信データ42を書き込むようLANコントローラ105に指示する。
【0110】
[ステップS56]仮想マシン110aの通信アプリ111aは、データ受信を要求する。
[ステップS57]LANコントローラ105は、ステップS55でホストOS120からされた指示に従って、ページ毎に分割して受信データ42をメモリ102に書き込む。例えば、LANコントローラ105は、分割受信データ42aをページ102fに書き込む。また、LANコントローラ105は、分割受信データ42bをページ102hに書き込む。また、LANコントローラ105は、分割受信データ42cをページ102jに書き込む。
【0111】
[ステップS58]ドライバ123は、受信データ42の受信情報のログを採取する(ロギングする)。例えば、ドライバ123は、受信データ42のフレームの大きさや、受信データ42を正常に受信したか否か等の情報を記録する。また、ドライバ123は、受信データ42が書き込まれたメモリ102の領域をスワップ非対象とすることで固定する。例えば、ドライバ123は、ページ102f,102h,102jをスワップ非対象とする。
【0112】
[ステップS59]ドライバ123は、受信データ42の受信相手となる仮想マシンを受信データ42に含まれるポート番号から特定する。ドライバ123は、特定した仮想マシン(例えば、仮想マシン110a)の受信バッファ領域113aとして、受信リングバッファ121cに登録されているレコードのStatusの項目に、受信済みを示す「1」を設定する。なお、ドライバ123は、ポート番号から特定した仮想マシンが稼働していない場合、管理部122にエラーを通知してもよい。
【0113】
[ステップS60]管理部122は、仮想マシン110aの受信バッファ領域113aとして、メモリ102上の領域を割り当て直す。例えば、管理部122は、受信バッファ領域113aを4[KB]毎の領域に区切ったときの先頭の領域として、分割受信データ42aが書き込まれたページ102fを割り当てる。また、管理部122は、受信バッファ領域113aを4[KB]毎の領域に区切ったときの先頭から2番目の領域として、分割受信データ42bが書き込まれたページ102hを割り当てる。また、管理部122は、受信バッファ領域113aを4[KB]毎の領域に区切ったときの先頭から3番目の領域として、分割受信データ42cが書き込まれたページ102jを割り当てる。また、管理部122は、受信バッファ領域113aとメモリ102の領域との対応関係を管理対応表121aに登録し直す。
【0114】
[ステップS61]管理部122は、仮想マシン110aに受信データ42の受信を通知する。例えば、管理部122は、ページ102f,102h,102jのスワップ非対象の設定を解除し、受信バッファ領域113aとして割り当てられたメモリ102の空いている領域を受信リングバッファ121cに登録する。
【0115】
[ステップS62]仮想ドライバ114aは、受信データ42の受信を検出する。そして、仮想ドライバ114aは、仮想マシン110aの通信アプリ111aに、受信データ42の受信を通知する。そして、通信アプリ111aは、受信バッファ領域113aに書き込まれた受信データ42を取得する。
【0116】
[ステップS63]通信アプリ111aは、受信データ42を受け取る。通信アプリ111aは、受信バッファ領域113aを参照することで、受信データ42を使用することができる。
【0117】
[ステップS64]通信アプリ111aは、受信バッファ領域113aを解放する。
[ステップS65]仮想マシン110aは、受信バッファ領域113aでデータの受信を再度待ち受けるよう設定する。例えば、仮想マシン110aは、受信バッファ領域113aの論理アドレスを指定して、指定した論理アドレスで受信予約をしていることをホストOS120に通知する。
【0118】
このように、ドライバ123は、LANコントローラ105に、受信データ42をページ毎に分割して書き込ませる。そして、管理部122は、受信バッファ領域113aとして、分割受信データ42a,42b,42cが書き込まれたページ102f,102h,102jを割り当て直す。これにより、管理部122は、受信データ42を、受信バッファ領域113aとして割り当てられたメモリ102上の領域にコピーすることなく、仮想マシン110aに、受信データ42を受け取らせることができる。
【0119】
なお、図10~12に示した、データ送受信のための論理アドレスと物理アドレスとの対応付け等の制御は、ホストOS120の管理部122とドライバ123とが行っている。よって、第2の実施の形態による送受信の制御は、仮想マシン110a,110b,・・・に追加の設定をすることなく実現される。
【0120】
次に、ドライバ123が送受信において採取したログについて説明する。
図13は、ログ情報の一例を示す図である。ログ情報50は、ドライバ123が送受信において採取したログをまとめた情報を示す。ログ情報50は、例えば、ホストOS120が所定のコマンドの入力を受け付けることで出力される。
【0121】
ログ情報50は、LANコントローラ105が受信した総フレーム数と、受信したフレームのバイト換算の大きさを含む。また、ログ情報50は、データ受信の際のエラーの回数を含む。また、ログ情報50は、LANコントローラ105が送信した総フレーム数と、送信したフレームのバイト換算の大きさを含む。また、ログ情報50は、データ送信の際のエラーの回数を含む。このように、ドライバ123が送受信においてログを採取することで、ホストOS120は、仮想マシン110a,110b,・・・が送受信したフレームの総数等を取得することができる。
【0122】
ところで、仮想マシン110a,110b,・・・それぞれが、送信データのメモリ102上の領域を指定して、LANコントローラ105へ送信データを送信することも考えられる。すると、仮想マシン110aは、仮想マシン110aが送信した総フレーム数等を取得することができるが、仮想マシン110b,・・・が送信した総フレーム数等を取得することはできない。これにより、仮想マシン110a,110b,・・・それぞれがサイズの大きい送信データをLANコントローラ105へ送信してしまい、LANコントローラ105によるネットワーク20を介したデータ送信が追い付かないことがある。
【0123】
一方、第2の実施の形態では、例えば、仮想マシン110a,110b,・・・が送信しているフレームの総サイズが大きい場合、ホストOS120は、仮想マシン110a,110b,・・・に送信量を少なくするよう指示することができる。このように、ホストOS120は、仮想マシン110a,110b,・・・が送受信したフレームの総数等に応じた仮想マシン110a,110b,・・・のデータ送受信の制御をできる。
【0124】
第2の実施の形態によれば、情報処理装置100のホストOS120は、仮想的な記憶領域をメモリ102から割り当てられる仮想マシン110aを制御する。ホストOS120は、通信アプリ111aの送信バッファ領域112aとして割り当てるページ102a,102c,102eを、ページサイズとページの先頭アドレスとに基づいて決定する。ホストOS120は、ページ102a,102c,102eをスワップ非対象に設定する。そして、ホストOS120は、通信アプリ111aの論理的な記憶領域とメモリ102上の記憶領域との管理対応表121aに基づいてページ102a,102c,102eに書き込まれた送信データ41をLANコントローラ105に送信する。
【0125】
これにより、ホストOS120は、通信アプリ111aに、ページ内で連続となるように送信データ41を書き込ませることができる。そして、ホストOS120は、ページ102a,102c,102eをスワップ非対象に設定することで、メモリ102上にページ102a,102c,102eを固定できる。これにより、ホストOS120は、送信バッファ領域112aが通信アプリ111aの論理的な記憶領域で示された場合でも、メモリ102上で送信データ41を記憶しているページ102a,102c,102eを、管理対応表121aを用いて特定できる。よって、ホストOS120は、物理的に連続にするためのコピーなしに送信データ41をLANコントローラ105に送信できるため、情報処理装置100は、通信の効率を向上させることができる。
【0126】
また、ホストOS120は、ページ102a,102c,102eそれぞれに書き込まれた、ページサイズより大きい送信データ41が分割された分割送信データ41a,41b,41cを別々にLANコントローラ105に送信する。これにより、ホストOS120は、送信データ41がページサイズより大きい場合であっても、物理的に連続にするためのコピーなしに送信データ41をLANコントローラ105に送信できる。
【0127】
また、ホストOS120は、送信データ41を他の装置へ送信するようLANコントローラ105に指示し、LANコントローラ105が送信データ41を端末装置31へ送信したログを採取する。これにより、ホストOS120は、仮想マシン110a,110b,・・・の送信データの総量に応じて、仮想マシン110a,110b,・・・のデータ送信を制御することができるようになる。
【0128】
また、ホストOS120は、ページ102f,102h,102jをページサイズとページの先頭アドレスとに基づいて決定する。ホストOS120は、LANコントローラ105に、通信アプリ111aが端末装置31から受信する受信データ42をページ102f,102h,102jに書き込ませる。そして、ホストOS120は、通信アプリ111aの受信バッファ領域113aとしてページ102f,102h,102jを割り当てる。これにより、ホストOS120は、通信アプリ111aのデータの受信においても、通信の効率を向上させることができる。
【0129】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【符号の説明】
【0130】
1 ネットワーク
2a,2b,・・・ 実行環境
3 送信バッファ領域
3a 送信データ
4 対応情報
10 情報処理装置
11 通信部
12 記憶部
12a,12b,12c,12d,12e,12f,・・・ ページ
13 処理部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13