次に、本発明を模範的に実施する形態について図面を参照して詳細に説明する。以下に説明する実施形態は、特許請求の範囲に係る発明を限定しない。また実施形態の中で説明されている構成の組み合わせの全てが発明の構成に必須であるとは限らない。
<第1の実施形態>
まず、本発明の第1の実施形態について、図面を参照して詳細に説明する。
図1は、本実施形態の情報処理システム100の構成の例を表すブロック図である。
図1を参照すると、情報処理システム100は、複数の情報処理装置1と、記憶装置3とを含む。図1に描かれている情報処理装置1の台数は2であるが、情報処理装置1の数は2に限られない。また、情報処理システム100は、複数の記憶装置3を含んでいてもよい。複数の情報処理装置1は、互いに通信可能に接続されている。それぞれの情報処理装置1と、記憶装置3とは、互いに通信可能に接続されている。
図2は、本実施形態の情報処理システム100の全体像を模式的に表すブロック図である。図2に示す例では、複数の情報処理装置1と記憶装置3とが、通信ネットワーク4によって接続されている。複数の情報処理装置1が互いに通信を行う通信ネットワークと、それぞれの情報処理装置1と記憶装置3とが通信を行う通信ネットワークは、異なっていてもよい。
図1に示す例では、情報処理装置1は、実行部10と、検出部13とを含む。以下では、実行部10と検出部13とを含む情報処理装置1について説明する。しかし、情報処理装置1は、図3に示す例のように検出部13を含んでいなくてもよい。
図3は、本実施形態の変形例の情報処理システム100Aの構成の例を表すブロック図である。図3に示す情報処理システム100Aと図1に示す情報処理システム100とを比較すると、情報処理システム100Aは、情報処理装置1の代わりに情報処理装置1Aを含む。情報処理装置1Aと情報処理装置1とを比較すると、情報処理装置1Aは検出部13を含まない点が異なる。情報処理システム100Aは、さらに、移行検出装置2を含む。そして、移行検出装置2が検出部13を含む。移行検出装置2が含む検出部13は、情報処理システム100において各情報処理装置1が含む検出部13を同じ動作を行う。そして、情報処理システム100Aは、情報処理システム100と同等の動作を行う。
実行部10は、仮想装置20及び入出力仮想装置16を実行する。実行部10は、例えば、仮想的なコンピュータをエミュレートするソフトウェアと、そのソフトウェアを実行する、情報処理装置1のプロセッサによって実現される。仮想装置20及び入出力仮想装置16は、実行部10によってエミュレートされる仮想的なコンピュータである。本実施形態の説明では、実行部10が、例えば仮想装置20をエミュレートすることを、「実行部10が仮想装置20を実行する」と表記する。同様に、実行部10が入出力仮想装置16をエミュレートすることを、「実行部10が入出力仮想装置16を実行する」と表記する。
仮想装置20は、上述のように、実行部10によってエミュレートされた仮想的なコンピュータである、仮想マシンである。仮想装置20は、要求先装置に対してアクセスを要求するアクセス要求を送信する。要求先装置は、本実施形態では記憶装置3である。要求先装置は必ずしも記憶装置3でなくてもよい。本実施形態では、要求先が記憶装置3である場合の例について説明する。アクセス要求は、例えば、データを読み出す読み出し要求、又はデータを書き込む書き込み要求である。アクセス要求は、例えば、受信した装置が解釈することができる、要求するアクセスの内容を特定するアクセス命令である。以下の説明において、アクセス要求を、アクセス命令とも表記することにする。同様に、書き込み要求を、書き込み命令とも表記する。さらに、読み出し要求を、読み出し命令とも表記する。また、アクセス命令を生成することを、「アクセス命令を発行する」とも表記する。
また、本実施形態では、仮想装置20は、複数の情報処理装置1の間における移動である移行が可能である。すなわち、実行部10は、その実行部10が実行している仮想装置20を、他の情報処理装置1に移行させることができる。前述のように、移行はマイグレーションとも呼ばれる。移行の方法として、既存の様々な方法を適用することができる。仮想装置20が行う移行は、ライブマイグレーションであってもよい。本実施形態の移行は、仮想装置20を停止させた状態で行われる移行であってもよい。
図1に示す例では、実行部10が実行する仮想装置20の数は1である。しかし、実行部10は、図4に示す例のように、2台以上の仮想装置20を実行してもよい。
図4は、複数の仮想装置20を実行する情報処理装置1の構成を模式的に表す図である。図4に示す情報処理装置1が含む実行部10は、3台以上の仮想装置20を実行する。図4において、複数の仮想装置20は、仮想装置群21と表記されている。
検出部13は、仮想装置20の状態が、仮想装置20が実行部10によって実行されている状態と、それ以外の状態との間で変化する、状態変化を検出する。検出部13は、さらに、状態変化の種別を特定する。
状態変化は、例えば、仮想装置20が起動すること、動作していた仮想装置20が動作を停止すること、他の情報処理装置1に仮想装置20が移行すること、他の情報処理装置1から仮想装置20が移行してくることなどである。状態変化の種別は、例えば以上の、状態変化のいずれかを表す。検出部13は、状態が変化した仮想装置20を特定する。検出部13は、状態が変化した仮想装置20の識別子を特定すればよい。検出部13は、例えば、状態が変化した仮想装置20の識別子と、状態変化の種別とを、実行部10から受信すればよい。検出部13は、さらに、状態が変化した仮想装置20の、状態変化の種別を、実行部10から受信してもよい。状態変化の種別は、例えば、状態変化の前後における、仮想装置20の状態であってもよい。検出部13は、他の方法によって仮想装置20の状態変化を検出してもよい。
検出部13は、例えば、複数の情報処理装置1のそれぞれにおいて、仮想装置20の状態変化を検出することにより、仮想装置20が情報処理装置1間で移動した場合における移動元の情報処理装置1と移動先の情報処理装置1とを特定すればよい。検出部13は、例えば、仮想装置20の識別子とその仮想装置20を実行する情報処理装置1の識別子との組み合わせを記憶することによって、どの情報処理装置1がどの仮想装置20を実行しているかを記憶していてもよい。検出部13は、それぞれの仮想装置20の移行の履歴を記憶していてもよい。検出部13は、例えば、仮想装置20の識別子と、その仮想装置20を実行した順番でソートされた情報処理装置1の識別子の列とを記憶すればよい。
入出力仮想装置16は、対象情報記憶部11と、制御部12と、中継部14と、更新部15とを含む。入出力仮想装置16は、例えば、実行部10によってエミュレートされる仮想的なコンピュータが、そのコンピュータを、対象情報記憶部11と、制御部12と、中継部14と、更新部15として動作させるプログラムを実行することによって実現される。すなわち、入出力仮想装置16は、情報処理装置1のプロセッサが、情報処理装置1を対象情報記憶部11と、制御部12と、中継部14と、更新部15として動作させるプログラムを実行することによって、実現される。
対象情報記憶部11は、実行部10によって実行される仮想装置20が行ったアクセスに応じて更新され、その仮想装置20に関連付けられているデータである対象データを記憶する。
制御部12は、検出部13によって、前述の状態変化が検出された場合、状態変化が検出された仮想装置20に関連付けられている対象データに対して、所定の処理を行う。
中継部14は、要求先装置に対してアクセスを要求するアクセス要求を、仮想装置20から受信する。そして、中継部14は、受信したアクセス要求によってアクセスが要求される要求先装置に対して、そのアクセス要求と、そのアクセス要求を送信した仮想装置20に関連付けられている対象データとに基づき、アクセスを行う。
更新部15は、中継部14が行ったアクセスに基づき、そのアクセスを要求するアクセス要求を送信した仮想装置20に関連付けられている対象データを更新する。
記憶装置3は、データを記憶する装置である。記憶装置3は、アクセス要求を受信した場合、受信したアクセス要求に応じた処理を実行する。例えば、アクセス要求が対象データを読み出す読み出し要求である場合、アクセス要求を受信した記憶装置3は、記憶している対象データを、アクセス要求の送信元に送信する。アクセス要求が対象データを書き込む書き込み要求である場合、アクセス要求を受信した記憶装置3は、アクセス要求によって書き込みを要求された対象データを記憶する。記憶装置3は、例えば、ファイルサーバであってもよい。
本実施形態では、以上のように、仮想装置20は、入出力仮想装置16を介して、記憶装置3にアクセスする。入出力仮想装置16は、例えば、アクセス要求によってアクセスされるデータに対するキャッシュを行うキャッシュ装置として動作する。入出力仮想装置16は、例えば、仮想装置20の状態や行ったアクセス等に応じて設定された優先度に従った優先順位で、複数の仮想装置20が送信するアクセス要求を処理する順番を決める優先順位制御装置として動作してもよい。入出力仮想装置16は、それぞれの仮想装置20の状態や出力するデータ等に応じて決定された圧縮率で、仮想装置20が出力するデータを圧縮し、圧縮されたデータを送信先に送信する圧縮装置として動作してもよい。
本実施形態では、入出力仮想装置16が、記憶装置3に格納されているデータに対するキャッシュを行うキャッシュ装置として機能する場合の例について説明する。入出力仮想装置16がキャッシュを行うキャッシュアルゴリズムとして、既存のさまざまなキャッシュアルゴリズムを適用することができる。入出力仮想装置16は、例えば以下の説明のように動作する。
本実施形態では、アクセス要求は、記憶装置3からアクセス対象を読み出す要求である読み出し要求と、記憶装置3にアクセス対象を書き込む要求である書き込み要求である。アクセス対象は、例えばデータである。対象情報記憶部11に格納されている上述の対象データは、アクセスが行われたアクセス対象のコピーである。アクセス要求に基づきアクセスされるアクセス先は、アクセス対象が格納されている記憶領域である。アクセス要求は、アクセス先の識別子を含む。アクセス先の識別子は、要求先装置である記憶装置3が含む記憶領域におけるアドレスである。アクセス先の識別子は、記憶装置3の識別子と、記憶領域のアドレスとの組み合わせであってもよい。
アクセス要求が読み出し要求である場合、アクセス先は、そのアクセス要求に基づき読み出されるアクセス対象が格納されている記憶領域である。以下の説明において、アクセス要求が読み出し要求である場合におけるアクセス先は、「読み出し元」とも表記する。アクセス要求が読み出し要求である場合、アクセス要求は、そのアクセス要求に基づき読み出されるアクセス対象が格納されている読み出し元の識別子を含む。読み出し元の識別子は、要求先装置である記憶装置3が含む記憶領域におけるアドレスである。
アクセス要求が書き込み要求である場合、アクセス先は、そのアクセス要求に基づきアクセス対象が書き込まれる記憶領域である。以下の説明において、アクセス要求が書き込み要求である場合におけるアクセス先は、「書き込み先」とも表記する。アクセス要求が書き込み要求である場合、アクセス要求は、例えば、そのアクセス要求に基づきアクセス対象が書き込まれる書き込み先の識別子を含む。書き込み先の識別子も同様に、例えば、要求先である記憶装置3が含む記憶領域におけるアドレスである。アクセス要求が書き込み要求である場合、アクセス要求に加えて、書き込まれるデータであるアクセス対象が送信される。アクセス要求は、そのアクセス要求が書き込み要求である場合、アクセス対象を含んでいてもよい。
対象情報記憶部11は、アクセス要求に応じて読み出されたデータのコピーである対象データを、例えば、アクセス要求を送信した仮想装置20の識別子と、アクセス要求の要求先における、その対象データが読み出された読み出し元の識別子とに関連付けて記憶する。
中継部14は、仮想装置20からアクセス要求を受信する。そして、中継部14は、受信したアクセス要求の種別を特定する。
受信したアクセス要求が読み出し要求である場合、中継部14は、そのアクセス要求によって読み出されるデータであるアクセス対象全てのコピーが、対象情報記憶部11に格納されているか判定する。受信したアクセス要求によって読み出されるデータであるアクセス対象のコピーが、対象情報記憶部11に格納されている場合、中継部14は、対象情報記憶部11に格納されている、アクセス対象のコピーを読み出す。そして、中継部14は、読み出したアクセス対象のコピーをアクセス要求を送信したい仮想装置20に送信する。
受信したアクセス要求によって読み出されるデータであるアクセス対象の少なくとも一部のコピーが、対象情報記憶部11に格納されていない場合、中継部14は、要求先である記憶装置3に、アクセス対象を読み出す読み出し要求を送信する。中継部14は、記憶装置3から送信されたアクセス対象を、仮想装置20に送信する。
受信したアクセス要求によって読み出されるデータであるアクセス対象のコピーが、対象情報記憶部11に格納されていない場合、さらに、更新部15が、記憶装置3から送信されたアクセス対象のコピーを、対象データとして対象情報記憶部11に格納する。更新部15は、アクセス対象のコピーを、例えば、アクセス要求を送信した仮想装置20の識別子と、アクセス要求の要求先における、そのアクセス対象が読み出された読み出し元の識別子とに関連付けて、対象データとして対象情報記憶部11に格納すればよい。
受信したアクセス要求が書き込み要求である場合、中継部14は、受信した書き込み要求の要求先である記憶装置3に対して、受信したアクセス要求によって要求された書き込みを行う書き込み要求を送信する。
中継部14が受信したアクセス要求が書き込み要求である場合、さらに、更新部15が、中継部14が受信したアクセス要求によって書き込まれるデータのコピーを、対象データとして対象情報記憶部11に格納する。
以上では、便宜上、アクセス対象が仮想装置20に送信され、アクセス対象のコピーが対象情報記憶部11に格納されるとして説明を行った。しかし、アクセス対象及びアクセス対象のコピーのどちらが仮想装置20に送信されてもよい。同様に、アクセス対象及びアクセス対象のコピーのどちらが対象情報記憶部11に格納されてもよい。
また、以上の説明では、実行部10は、対象情報記憶部11、制御部12、中継部14、及び更新部15を含む、入出力仮想装置16を実行する。しかし、例えば図5に示す例のように、実行部10は入出力仮想装置16を実行しなくてもよい。
図5は、本実施形態の他の変形例である情報処理システム100Bの構成を表す図である。情報処理システム100Bの実行部10は、入出力仮想装置16を実行しない。情報処理システム100Bは、入出力装置16Aを含む。そして、入出力装置16Aが、対象情報記憶部11、制御部12、中継部14、及び更新部15を含む。入出力装置16Aは、入出力仮想装置16と同じ機能を持ち、実行部10によって実行される仮想マシンではない装置である。
次に、本実施形態の情報処理装置1の動作について、図面を参照して詳細に説明する。
図6は、本実施形態の情報処理装置1の、通常時における動作の例を表すフローチャートである。通常時における動作は、仮想装置20が移動しない場合における動作を表す。図6に示す動作が開始される際、仮想装置20がアクセス命令を発行する。前述のように、仮想装置20は、実行部10によってエミュレートされている。従って、実行部10がエミュレートする仮想装置20による動作は、実行部10による動作であると言える。しかし、以下では、実行部10がエミュレートする仮想装置20によって、実行部10が行う動作を、仮想装置20が行う動作として説明する。
仮想装置20は、記憶装置3に格納されているデータにアクセスするアクセス命令を発行する。そして、仮想装置20は、発行したアクセス命令を、入出力仮想装置16に送信する。
入出力仮想装置16の中継部14は、仮想装置20からアクセス命令を受信する(ステップS101)。
中継部14は、例えばアクセス命令を解釈することによって、アクセス命令の種類を判定する(ステップS102)。すなわち、中継部14は、受信したアクセス命令が書き込み命令であるか、読み出し命令であるかを判定する。
中継部14が受信したアクセス命令が書き込み命令である場合(ステップS103においてYes)、情報処理装置1の動作は、ステップS104に進む。中継部14が受信したアクセス命令が書き込み命令でない場合(ステップS103においてNo)、情報処理装置1の動作は、ステップS109に進む。
ステップS104において、更新部15は、対象情報記憶部11に格納されている、対象データを更新する。対象情報記憶部11は、アクセス命令によってアクセスが行われたデータ(すなわちアクセス対象)のコピーであるキャッシュを、対象データとして記憶する。言い換えると、本実施形態では、対象データは、アクセス対象のキャッシュである。すなわち、ステップS104において、更新部15は、対象情報記憶部11に格納されているキャッシュを書き換える。前述のように、対象データは、アクセス先の識別子と、仮想装置20の識別子に関連付けられていればよい。なお、以下の説明において、対象データが仮想装置20の識別子に関連付けられていることを、「対象データが仮想装置20に関連付けられている」とも表記する。
本実施形態のように対象データがキャッシュである場合、対象情報記憶部11は、例えば優先度等の属性を、対象データに関連付けて記憶していてもよい。対象データに関連付けられる優先度は、例えば、対象情報記憶部11に空きが無くなった場合に、消去する対象データを選択する際に使用する指標である。優先度は、本実施形態に適用可能なさまざまなキャッシュアルゴリズムのうち、本実施形態に適用されたキャッシュアルゴリズムに基づき選択されていればよい。例えば、更新部15が、優先度の付与と対象データの消去を行えばよい。
キャッシュアルゴリズムとして、LRU(Least Recently Used)が適用されている場合、優先度は、例えば、対象データに対する最後のアクセスからの経過時間の長さを表す指標である。キャッシュアルゴリズムとして、LFU(Least Frequently Used)が適用されている場合、優先度は、例えば、対象データに対するアクセスの頻度である。キャッシュアルゴリズム及び優先度の組み合わせは、以上の組み合わせ以外であってもよい。優先度は、キャッシュアルゴリズムに応じて選択されていればよい。
更新部15は、ステップS104において、まず、対象データ及びその対象データの属性の少なくともいずれかを書き換える必要があるか判定してもよい。判定の結果、対象データ及びその対象データの属性の少なくともいずれかを書き換える必要がある場合、更新部15は、書き換える必要がある、対象データ、属性、又は、対象データ及び属性を書き換えればよい。本実施形態の説明において、対象データ及びその対象データに関連付けられている属性の少なくともいずれかを書き換えることを、「キャッシュを書き換える」あるいは「キャッシュを更新する」と表記する。
属性が上述の優先度である場合、更新部15は、アクセス要求に基づく書き込みによって、対象データの優先度が変化しないか判定すればよい。対象データの優先度が変化しない場合、更新部15は、優先度を書き換える必要がないと判定すればよい。その場合、更新部15は、優先度を書き換えなくてよい。対象データの優先度が変化する場合、更新部15は、優先度を書き換える必要があると判定すればよい。その場合、更新部15は、対象データの優先度を更新すればよい。
さらに、更新部15は、書き込み命令であるアクセス命令が含むデータに基づき、対象データを書き換える必要があるか判定してもよい。判定の結果、対象データを書き換える必要がある場合、更新部15は、対象データを書き換えればよい。更新部15は、書き込み命令であるアクセス命令によって書き込まれるアクセス対象と、そのアクセス命令を発行した仮想装置20の識別子及びアクセス先の識別子に関連付けられている対象データとを比較すればよい。そして、比較したアクセス対象と対象データが異なる場合、更新部15は、対象データを書き換える必要があると判定すればよい。比較したアクセス対象と対象データが同じ場合、更新部15は、対象データを書き換える必要がないと判定すればよい。更新部15は、他の方法によって、対象データを書き換える必要があるか判定してもよい。
次に、中継部14は、アクセス命令を記憶装置3に送信する(ステップS105)。仮想装置20が発行するアクセス命令が、記憶装置3が解釈することができる形式のアクセス命令である場合、中継部14は、受信したアクセス命令をそのまま送信すればよい。仮想装置20が発行するアクセス命令が、記憶装置3が解釈することができる形式のアクセス命令でない場合、中継部14は、受信したアクセス命令を、記憶装置3が解釈することができる形式に変換すればよい。そして、中継部14は、記憶装置3が解釈することができる形式に変換されたアクセス命令を送信すればよい。
アクセス命令は書き込み命令であるので、アクセス命令を受信した記憶装置3は、アクセス対象をアクセス先に書き込む。上述のように、アクセス対象は書き込まれるデータである。また、アクセス先は、記憶装置3が含む記憶領域における、アクセス対象が書き込まれる記憶領域である。記憶装置3は、アクセス対象であるデータの書き込みが終了すると、アクセス命令を送信した中継部14に対して終了信号を送信する。
アクセス命令を送信した中継部14は、書き込みを終了した記憶装置3から終了信号を受信する(ステップS106)。終了信号を受信した中継部14は、アクセス要求を発行した仮想装置20に対して、終了信号を送信する(ステップS107)。アクセス要求を発行した仮想装置20は、終了信号を受信する(ステップS108)。ステップS108の後、情報処理装置1は、図6に示す動作を終了する。
中継部14が受信したアクセス命令が書き込み命令でない場合(ステップS103においてNo)、本実施形態では、アクセス命令は読み出し命令である。
その場合、まず、更新部15がキャッシュを書き換える(ステップS109)。更新部15は、ステップS104と同様に、まずキャッシュを書き換える必要があるか判定すればよい。そして、判定の結果、キャッシュを書き換える必要がある場合、更新部15は、キャッシュを書き換えればよい。キャッシュの書き換えは、上述のように、対象データに関連付けられている属性である優先度の書き換えを含む。
さらに、更新部15は、アクセス要求によって読み出しが要求されたアクセス対象(すなわち読み出しの対象)の全てが、キャッシュとして対象情報記憶部11に格納されているか判定する(ステップS110)。以下の説明において、アクセス対象のコピーである対象データがキャッシュとして対象情報記憶部11に格納されていることを、「アクセス対象がキャッシュされている」と表記する。
読み出しの対象の全てがキャッシュされている場合(ステップS111においてYes)、情報処理装置1の動作はステップS112に進む。読み出しの対象の少なくとも一部がキャッシュされていない場合(ステップS111においてNo)、情報処理装置1の動作はステップS114に進む。
読み出しの対象の全てがキャッシュされている場合(ステップS111においてYes)、中継部14は、読み出しの対象であるアクセス対象のコピーを、対象情報記憶部11から読み出す。読み出しの対象であるアクセス対象のコピーは、アクセス命令を発行した仮想装置20の識別子及びアクセス先の識別子に関連付けられている対象データである。
中継部14は、読み出した対象データを、アクセス命令を発行した仮想装置20に送信する(ステップS113)。アクセス命令を発行した仮想装置20は、対象データを受信する。そして、図6に示す情報処理装置1の動作は終了する。
読み出しの対象の少なくとも一部がキャッシュされていない場合(ステップS111においてNo)、中継部14は、記憶装置3にアクセス命令を転送する(ステップS114)。
仮想装置20が発行するアクセス命令の形式が、記憶装置3が解釈することができる形式でない場合、中継部14は、受信したアクセス命令の形式を記憶装置3が解釈することができる形式に変更する。そして、中継部14は、形式を変更したアクセス命令を、記憶装置3に送信する。アクセス命令を受信した記憶装置3は、アクセス先に格納されているアクセス対象を読み出す。記憶装置3は、読み出したアクセス対象を、中継部14に送信する。
アクセス命令によって読み出されるアクセス対象の一部がキャッシュされている場合、中継部14は、アクセス対象のうち、キャッシュされていない部分を読み出すアクセス命令を作成してもよい。そして、中継部14は、作成したアクセス命令を、記憶装置3に送信してもよい。
中継部14は、記憶装置3から、読み出し命令であるアクセス命令によって読み出されるアクセス対象(すなわち、読み出しの対象)を、記憶装置3から受信する(ステップS115)。
中継部14がアクセス対象を受信すると、更新部15が、そのアクセス対象に基づき、必要に応じてキャッシュを書き換える(ステップS116)。更新部15は、例えば、アクセス対象にコピーが対象データとして対象情報記憶部11に格納されていない部分が存在する場合、そのアクセス対象の部分のコピーを、対象データとして対象情報記憶部11に格納すればよい。前述のように、更新部15は、対象情報記憶部11に格納する対象データに、対象データがコピーされたアクセス対象を読み出すアクセス命令を発行した仮想装置20の識別子及びそのアクセス対象が読み出されたアクセス先の識別子を関連付ける。さらに、更新部15は、キャッシュアルゴリズムに応じて、仮想装置20が発行したアクセス命令におけるアクセス対象のコピーである対象データの優先度を変更する必要があるか判定する。優先度を変更する必要がある対象データが存在する場合、更新部15は、対象情報記憶部11に格納されている、その対象データの優先度を、その優先度に応じた方法で変更すればよい。
次に、中継部14は、アクセス命令による読み出しの対象であるアクセス対象を、そのアクセス命令を発行した仮想装置20に送信する(ステップS117)。アクセス対象の一部がキャッシュされている場合、中継部14は、対象情報記憶部11から読み出した対象データと、記憶装置3から受信した対象データの一部分とが組み合わされたアクセス対象を、アクセス命令を発行した仮想装置20に送信すればよい。アクセス命令を発行した仮想装置20は、アクセス対象を受信する。そして、情報処理装置1は、図6に示す動作を終了する。
仮想装置20が記憶装置3に書き込むデータが、その仮想装置20のみが使用するデータであれば、基本的に、仮想装置20が記憶装置3に書き込んだデータが、その仮想装置20を実行する情報処理装置1以外の情報処理装置1からアクセスされることはない。すなわち、基本的に、仮想装置20が記憶装置3に書き込んだデータが、その仮想装置20を実行する情報処理装置1以外の情報処理装置1によって書き換えられることはない。従って、仮想装置20が記憶装置3に書き込んだデータと、その仮想装置20を実行する情報処理装置1の対象情報記憶部11に格納されている、その仮想装置20が記憶装置3に書き込んだデータのコピーとは、同一である。すなわち、記憶装置3に格納されているデータと、そのデータのキャッシュとの間に、不整合は発生しない。
しかし、例えば、情報処理装置1が実行する仮想装置20の数が多くなりすぎたことによって仮想装置20の性能が要求性能に達しない等の理由により、仮想装置20を他の情報処理装置1に移行させることがある。その場合、記憶装置3に格納されているデータと、そのデータのキャッシュとの間に、不整合が発生する可能性がある。
例えば、図1に示す右の情報処理装置1において動作する仮想装置20が、記憶装置3が記憶するデータにアクセスした場合、右の情報処理装置1の対象情報記憶部11に、仮想装置20がアクセスしたデータのコピーが記憶される。以下の説明において、対象情報記憶部11に格納されている、アクセスが行われたデータのコピーを、そのデータのキャッシュデータと表記することにする。仮想装置20が、記憶装置3に格納されているデータを書き換えた場合、書き換えられたデータのキャッシュデータも、データの書き換えに応じて更新される。従って、記憶装置3に格納されているデータと、右の情報処理装置1の対象情報記憶部11が記憶するキャッシュデータとの間に、不整合は発生しない。
仮想装置20が、右の情報処理装置1から左の情報処理装置1に移行した場合、移行後に仮想装置20がアクセスした記憶装置3が記憶するデータのキャッシュデータは、移行後の仮想装置20が動作する左の情報処理装置1の対象情報記憶部11に格納される。移行後に記憶装置3が記憶装置3に格納されているデータを書き換えた場合、左の情報処理装置1の対象情報記憶部11が記憶する、書き換えられたデータのキャッシュデータは、更新される。
書き換えられたデータのキャッシュデータは、移行前に仮想装置20が動作していた右の情報処理装置1の対象情報記憶部11にも格納されている可能性がある。しかし、右の情報処理装置1の対象情報記憶部11に格納されている、書き換えられたデータのキャッシュデータは、データが書き換えられても更新されない。右の情報処理装置1の対象情報記憶部11に格納されているデータは、移行前に記憶装置3に格納されていたデータのコピーである。従って、記憶装置3に格納されている、移行後に書き換えられたデータと、右の情報処理装置1の対象情報記憶部11に格納されている、移行後に書き換えられたデータのキャッシュデータは、必ずしも一致しない。記憶装置3に格納されているデータと、右の情報処理装置1の対象情報記憶部11に格納されているキャッシュデータとの間に、不整合が生じている可能性がある。
仮想装置20の移行に特に制限がなければ、仮想装置20が、さらに、左の情報処理装置1から右の情報処理装置1に移行する可能性がある。すなわち、記憶装置3に格納されているデータと、右の情報処理装置1の対象情報記憶部11に格納されているキャッシュデータとの間に、不整合が生じている状態で、仮想装置20が右の情報処理装置1に移行する可能性がある。仮想装置20が不整合が生じているキャッシュデータを使用した場合、仮想装置20は、その不整合のために正常に動作できない。
仮想装置20がキャッシュデータの不整合のために正常に動作しないリスクを軽減するためには、不整合が生じている可能性があるキャッシュデータを仮想装置20が使用する可能性を減少させる処理を、例えば制御部12がキャッシュデータに対して行えばよい。
制御部12が、不整合が生じている可能性があるキャッシュデータを仮想装置20が使用する可能性を減少させる処理を、例えば、仮想装置20の状態変化が検出された場合に行えばよい。状態変化は、例えば、情報処理装置1において動作していなかった仮想装置20が、その情報処理装置1における動作を開始する動作開始である。動作開始は、例えば、他の情報処理装置1から仮想装置20が移動すること、及び仮想装置20が起動すること等を含む。他の情報処理装置1に移行した仮想装置20が戻ってくることも、動作開始に含まれる。状態変化は、例えば、情報処理装置1において動作していた仮想装置20が、その情報処理装置1における動作を停止する動作停止である。動作停止は、例えば、仮想装置20が他の情報処理装置1に移動すること、及び仮想装置20がシャットダウンなどによって動作を停止することを含む。検出部13が、例えば以上の状態変化のうちの、あらかじめ定められたいずれかが生じた仮想装置20を検出すればよい。
制御部12は、不整合が生じている可能性があるキャッシュデータを仮想装置20が使用する可能性を減少させる処理として、例えば以下の処理のいずれかを行えばよい。制御部12は、例えば、検出部13が状態変化を検出した仮想装置20に関連付けられているキャッシュデータを消去すればよい。制御部12は、例えば、検出部13が状態変化を検出した仮想装置20に関連付けられているキャッシュデータの、上述の優先度を、そのキャッシュデータが消去される順番が早くなるよう変更してもよい。制御部12は、例えば、検出部13が状態変化を検出した仮想装置20に関連付けられているキャッシュデータに対して、消去することを表すフラグを立ててもよい。その場合、中継部14は、消去することを表すフラグが立っているキャッシュデータを読み出さないよう設計されていればよい。さらに、中継部14が、消去することを表すフラグが立っているキャッシュデータを検出した場合、例えば更新部15が、検出された、消去することを表すフラグが立っているキャッシュデータを消去すればよい。あるいは、制御部12は、例えば、検出部13が状態変化を検出した仮想装置20に関連付けられているキャッシュデータを読み出し禁止に設定してもよい。その場合、中継部14は、読み出し禁止にされているキャッシュデータを読み出さないよう設計されていればよい。
以上のように、制御部12は、検出部13が仮想装置20の所定の状態変化を検出した場合、状態変化が検出された仮想装置20に関連付けられているキャッシュデータに対して、所定の処理を行う。この所定の処理は、例えば上述された処理のいずれかである、不整合が生じている可能性があるキャッシュデータを仮想装置20が使用する可能性を減少させる処理である。キャッシュデータは、本実施形態における対象データである。
次に、仮想装置20に所定の状態変化が生じる場合における、情報処理装置1の動作の例について、図面を参照して詳細に説明する。以下の説明では、仮想装置20の所定の状態変化は、他の情報処理装置1に移行した仮想装置20が戻ってくることである。また、不整合が生じている可能性があるキャッシュデータを仮想装置20が使用する可能性を減少させる所定の処理は、状態変化が検出された仮想装置20に関連付けられているキャッシュデータを削除することである。
図7は、本実施形態の情報処理装置1の、仮想装置20に状態変化が生じる場合における動作の例を表すフローチャートである。図7を使用して、情報処理装置1において起動した仮想装置20が他の情報処理装置1に移行した後、戻ってくる場合における、情報処理装置1の動作について説明する。
まず、情報処理装置1において仮想装置20が起動すること、すなわち、実行部10が仮想装置20のエミュレートを開始した場合の情報処理装置1の動作について説明する。
図7に示す動作において、検出部13は、継続的に、仮想装置20の状態変化の検出を行っている(ステップS201)。
仮想装置20の状態変化が検出されない場合(ステップS202においてNo)、情報処理装置1の動作は、ステップS201に戻る。そして、検出部13は、仮想装置20の状態変化の検出を継続する。
仮想装置20の状態変化が検出された場合(ステップS202においてYes)、制御部12は、検出した状態変化が、仮想装置20の起動であるか判定する。仮想装置20の起動が検出された場合(ステップS203においてYes)、制御部12は、起動が検出された仮想装置20の識別子を特定する(ステップS204)。
検出部13は、仮想装置20の状態変化に加えて、状態変化が検出された仮想装置20の識別子と、状態変化の種別とを検出する。前述のように、検出部13は、例えば実行部10から、状態が変化した仮想装置20の識別子と、状態変化の種別とを受信すればよい。そして、検出部13は、制御部12に対して、状態が変化した仮想装置20の識別子と、状態変化の種別とを送信すればよい。
制御部12は、起動が検出された仮想装置20の識別子を記憶する。そして、情報処理装置1の動作は、ステップS201に戻る。
次に、情報処理装置1が実行している仮想装置20が、他の情報処理装置1に移動する場合の、情報処理装置1の動作について説明する。
上述のように、検出部13は、仮想装置20の状態変化の検出を継続している(ステップS201)。情報処理装置1が実行している仮想装置20が、他の情報処理装置1に移動した場合、検出部13は、仮想装置20の状態変化を検出する(ステップS202においてYes)。検出された状態変化は、仮想装置20の起動ではない(ステップS203においてNo)。その場合、制御部12は、さらに、検出された状態変化が、仮想装置20が他の情報処理装置1に移動したことであるか判定する。制御部12は、検出部13から受信した状態変化の種別に基づいて判定すればよい。
判定の結果、仮想装置20が他の情報処理装置1に移動した場合(ステップS205においてYes)、制御部12は、他の情報処理装置1に移動した仮想装置20の識別子を特定する。そして、制御部12は、特定された、仮想装置20の識別子を、他の情報処理装置1に移動した仮想装置20の識別子として記憶する(ステップS206)。ステップS206の後、情報処理装置1の動作はステップS201に戻る。そして、検出部13は、仮想装置20の状態変化の検出を継続する。
次に、他の情報処理装置1に移動した仮想装置20が、再び戻ってきた場合における、情報処理装置1の動作について説明する。
上述のように、検出部13は、仮想装置20の状態変化の検出を継続している(ステップS201)。仮想装置20が他の情報処理装置1から情報処理装置1に移動した場合、検出部13は、仮想装置20の状態変化を検出する(ステップS202においてYes)。検出された状態変化は、仮想装置20の起動ではない(ステップS203においてNo)。その場合、制御部12は、さらに、検出された状態変化が、仮想装置20が他の情報処理装置1に移動したことであるか判定する。判定の結果、仮想装置20が他の情報処理装置1に移動していない場合(ステップS205においてNo)、制御部12は、仮想装置20が他の情報処理装置1から移動したか判定する。判定の結果、仮想装置20が他の情報処理装置1から情報処理装置1に移動していない場合(ステップS207においてNo)、情報処理装置1の動作は、ステップS201に戻る。そして、検出部13は仮想装置20の状態変化の検出を継続する。
判定の結果、仮想装置20が他の情報処理装置1から情報処理装置1に移動した場合(ステップS207においてYes)、制御部12は、他の情報処理装置1から移動した仮想装置20の識別子を特定する(ステップS208)。
制御部12は、ステップS208において特定された、他の情報処理装置1から移動した仮想装置20の識別子が、他の情報処理装置1に移動した仮想装置20の識別子として記憶されているか判定する。
特定された、他の情報処理装置1から移動した仮想装置20の識別子が、他の情報処理装置1に移動した仮想装置20の識別子として記憶されていない場合(ステップS209においてNo)、情報処理装置1は、図7に示す動作を終了する。あるいはこの場合、情報処理装置1の動作は、ステップS201に戻ってもよい。
特定された、他の情報処理装置1から移動した仮想装置20の識別子が、他の情報処理装置1に移動した仮想装置20の識別子として記憶されている場合(ステップS209においてYes)、情報処理装置1の動作は、ステップS210に進む。なお、仮想装置20が移動して行った移動先である他の情報処理装置1と、戻ってきた仮想装置20の移動元である他の情報処理装置1は、一致する必要はない。
ステップS210において、制御部12は、他の情報処理装置1から移動した仮想装置20に関連付けられている対象データに対して、所定の処理を行う(ステップS210)。前述のように、他の情報処理装置1から移動した仮想装置20に関連付けられている対象データは、他の情報処理装置1から移動した仮想装置20の識別子に関連付けられている対象データである。また、ステップS210において他の情報処理装置1から移動した仮想装置20は、他の情報処理装置1に移動した後、戻ってきた仮想装置20である。対象データは、対象情報記憶部11に格納されている。さらに、対象データは、前述のキャッシュデータである。そして、所定の処理は、図7に示す説明においては、対象データを削除することである。従って、言い換えると、ステップS210において、制御部12は、他の情報処理装置1に移動した後、戻ってきた仮想装置20に関連付けられているキャッシュデータ(すなわち対象データ)を、対象情報記憶部11から削除する。
本実施形態には、仮想装置20が動作する情報処理装置1が保持する、仮想装置20によるアクセスに応じて変化しうる対象データに、仮想装置20が情報処理装置1間で移動することによって生じる不整合を軽減することができるという効果がある。
その理由は、制御部12が、対象情報記憶部11に格納され、状態変化が検出された仮想装置20に関連付けられている対象データに対して、所定の処理を行うからである。所定の処理は、例えば削除である。所定の処理は、状態変化が検出された仮想装置20が、処理が行われた対象データを使用する可能性を低減する処理であれば、削除以外の処理であってもよい。状態変化は、例えば、他の情報処理装置1に移動した後、戻ってくることである。状態変化は、他の状態変化であってもよい。
<第2の実施形態>
次に、本発明の第2の実施形態について、図面を参照して詳細に説明する。
図1は、本実施形態の情報処理システム100の構成を表すブロック図である。本実施形態の情報処理システム100の構成は、第1の実施形態の情報処理システム100の構成と同じである。
本実施形態の更新部15は、アクセス要求が書き込み要求である場合、書き込まれるアクセス対象の全てを、対象情報記憶部11に対象データとして書き込めた場合、記憶装置3にアクセス要求を送信しない。
さらに、本実施形態の制御部12は、実行装置10が実行していた仮想装置20が、他の情報処理装置1に移動したことが検出された場合、例えば中継部14に移動通知を送信する。
本実施形態の中継部14は、移動通知を受信した場合、対象情報記憶部11に格納されている対象データを、記憶装置3が記憶するデータに反映させる。
制御部12は、さらに、対象データの、記憶装置3が記憶するデータへの反映が終了した後、他の情報処理装置1に移動したことが検出された仮想装置20に関連付けられている対象データを消去する。
また、制御部12は、他の情報処理装置1に移動した仮想装置20の識別子を記憶しない。制御部12は、他の情報処理装置1から移動した仮想装置20の識別子と、記憶している、他の情報処理装置1に移動した仮想装置20の識別子とを比較しない。そして、制御部12は、他の情報処理装置1に移動した後、戻ってきた仮想装置20に関連付けられている対象データを消去しない。
以上を除き、本実施形態の各構成要素は、同じ符号が付与された、第1の実施形態の構成要素と同じである。また、第1の実施形態と同様に、本実施形態においても、対象情報記憶部11に格納されている対象データは、キャッシュデータである。
次に、本実施形態の情報処理装置1の動作について、図面を参照して詳細に説明する。
図8及び図9は、本実施形態の情報処理装置1の、通常時の動作を表すフローチャートである。図8及び図9と、図6とを比較すると、図9におけるステップS104とステップS105の間に、ステップS301の動作が含まれる点が異なる。前述のように、図6は、第1の実施形態の情報処理装置1の通常時の動作を表すフローチャートである。図8及び図9における、ステップS301以外のステップの動作は、図6に示す、同じ符号が付与されたステップの動作と同じである。従って、以下では、ステップS301の動作及びステップS301の動作に関連する動作の説明を行い、他の動作についての説明は省略する。
ステップS104においてキャッシュを書き換えた後、更新部15は、アクセス要求に基づく全てのアクセス対象を、対象データとして対象情報記憶部11に書き込めたか判定する(ステップS301)。
書き込み命令であるアクセス命令に基づく全てのアクセス対象を、対象データとして対象情報記憶部11に書き込めた場合(ステップS301においてYes)、中継部14は、仮想装置20に終了信号を送信する(ステップS107)。そして、仮想装置20が、終了信号を受信する(ステップS108)。
アクセス要求に基づく全てのアクセス対象を、対象データとして対象情報記憶部11に書き込めなかった場合(ステップS301においてNo)、ステップS105以降の動作を行う。本実施形態におけるステップS105以降の動作は、図6に示す、第1の実施形態におけるステップS105以降の動作と同じである。
なお、ステップS104において、更新部15は、書き込み命令の基づき対象情報記憶部11に書き込みを行った対象データに、変更されたことを表すフラグを関連付けてもよい。
以上のように、本実施形態では、アクセス命令が書き込み命令である場合、アクセス命令によって書き込まれるデータであるアクセス対象を、対象情報記憶部11に書き込めた場合、アクセス命令受信時においては記憶装置3にアクセス命令を送信しない。
次に、本実施形態の情報処理装置1の、仮想装置20に状態変化が生じた場合における動作について、図面を参照して詳細に説明する。
図10は、本実施形態の情報処理装置1の、仮想装置20に状態変化が生じた場合における動作を表すフローチャートである。図10に示す動作において、ステップS201からステップS205までのステップにおける動作は、図7に示す、第1の実施形態の情報処理装置1の動作における、同じ番号が付与されているステップの動作と同じである。図10に示す動作では、ステップS205においてYesである場合、ステップS401及びステップS402の動作が行われる。以下では、主に、ステップS401及びステップS402の動作と、それらのステップに関連する動作とについて説明する。
本実施形態の検出部13も、仮想装置20の状態変化を、継続的に検出している(ステップS201)。仮想装置20の状態変化が検出され(ステップS202においてYes)、検出された状態変化が起動ではなく(ステップS203においてNo)、情報処理装置1の動作はステップS205に進む。さらに、検出された状態変化が、他の情報処理装置1への移動である場合(ステップS205においてYes)、情報処理装置1の動作はステップS401に進む。
ステップS401において、中継部14は、他の情報処理装置1への移動が検出された仮想装置20に関連付けられている対象データを、記憶装置3に反映させる。すなわち、中継部14は、他の情報処理装置1への移動が検出された仮想装置20に関連付けられている対象データを、その対象データの関連付けられているアクセス先の識別子によって特定される、記憶装置3に含まれる記憶領域に書き込む。なお、上述のステップS104において、書き込みが行われた対象データに変更されたことを表すフラグが関連付けられている場合、中継部14は、変更されたことを表すフラグが関連付けられている対象データだけを、上述のように記憶装置3に書き込めばよい。
ステップS401の動作の後、制御部12は、他の情報処理装置1に移動したことが検出された仮想装置20に関連付けられている対象データに、所定の処理を行う(ステップS402)。本実施形態における所定の処理は、例えば、図6に示すステップS210の動作の説明において述べた、不整合が生じている可能性があるキャッシュデータを仮想装置20が使用する可能性を減少させる処理のいずれかである。本実施形態における所定の処理は、例えば消去であってもよい。
なお、本実施形態の情報処理装置1は、ステップS205において、仮想装置20の状態変化が、仮想装置20が動作している状態から、その仮想装置20が動作していない状態への変化である場合に、ステップS401の動作を行ってもよい。
以上で説明した本実施形態には、第1の実施形態と同じ効果がある。その理由は、第1の実施形態の効果が生じる理由と同じである。ただし、本実施形態では、仮想装置20が他の情報処理装置1に移動したことが検出された場合、中継部14は、その仮想装置20が発行したアクセス命令の受信時において記憶装置3に書き込まれなかったデータを、記憶装置3に書き込む。そして、中継部14による書き込みが終了した後、制御部12は、所定の処理を行う。従って、記憶装置3が記憶するデータと、移動元の情報処理装置1が記憶する、そのデータのキャッシュデータとの間に不整合が存在することによる、他の情報処理装置1移動した仮想装置20が誤動作するリスクを軽減することができる。
本実施形態には、さらに、仮想装置20から書き込み命令であるアクセス命令を受信してから、そのアクセス命令に対する処理が完了するまでの時間を短縮できるという効果がある。
その理由は、アクセス命令によって書き込まれる対象データを、全て対象情報記憶部11に書き込めた場合、中継部14は、そのアクセス命令の受信時において、そのアクセス命令によって書き込まれる対象データを記憶装置3に書き込まないからである。
<第3の実施形態>
次に、本発明の第3の実施形態について、図面を参照して詳細に説明する。
図1は、本実施形態の情報処理システム100の構成の例を表すブロック図である。本実施形態の情報処理システム100の構成は、第1の実施形態の情報処理システム100の構成と同じである。
本実施形態の制御部12は、検出された仮想装置20の状態変化の種別が、あらかじめ設定されている状態変化の種別である場合、その状態変化が検出された仮想装置20に関連付けられている対象データに対して、所定の処理を行う。なお、複数の状態の種別があらかじめ設定されていてもよい。その場合、本実施形態の制御部12は、検出された仮想装置20の状態変化の種別が、あらかじめ設定されている状態変化の種別のいずれかである場合、その状態変化が検出された仮想装置20に関連付けられている対象データに対して、所定の処理を行えばよい。
状態変化の種別は、第1の実施形態の説明において述べた状態変化の種別と同じである。あらかじめ設定されている状態変化の種別は、例えば、情報処理装置1の設計者、管理者、あるいはユーザによって設定されればよい。
次に、本実施形態の情報処理装置1の動作について、図面を参照して詳細に説明する。
図6は、本実施形態の情報処理装置1の、通常時における動作の例を表すフローチャートである。本実施形態の情報処理装置1の、通常時における動作は、第1の実施形態の情報処理装置1の通常時における動作と同じである。従って、本実施形態の情報処理装置1の通常時における動作の説明は省略する。
図11は、本実施形態の情報処理装置1の、仮想装置20の状態が変化した場合における動作を表すフローチャートである。ステップS201及びステップS202の動作は、第1の実施形態における、ステップS201及びステップS202の動作と同じである。従って、これらの動作の説明は省略する。
ステップS501において、制御部12は、検出された、仮想装置20の状態変化の種別が、あらかじめ設定されている状態変化の種別と同じか判定する。複数の状態種別が設定されている場合、制御部12は、検出された、仮想装置20の状態変化の種別が、あらかじめ設定されている状態変化の種別のいずれかと同じか判定する。
検出された、仮想装置20の状態変化の種別が、あらかじめ設定されているいずれの状態変化の種別とも同じでない場合(ステップS501においてNo)、制御部12は、検出された状態変化に応じて定められている処理を行う(ステップS502)。ステップS502における動作は、例えば、図7に示すステップS204あるいはステップS206における動作である。検出された状態変化に応じて定められている処理が存在しない場合、制御部12は、ステップS502における動作を行わなくてよい。
検出された、仮想装置20の状態変化の種別が、あらかじめ設定されているいずれかの状態変化の種別と同じである場合(ステップS501においてYes)、情報処理装置1の動作は、ステップS503に進む。以下の説明において、あらかじめ設定されているいずれかの状態変化の種別と同じ種別の状態変化が検出された仮想装置20を、対象仮想装置と表記する。
ステップS503において、例えば制御部12が、対象仮想装置に関連付けられている、対象情報記憶部11に格納されている対象データに対して、所定の処理を行う。ステップS503における所定の処理は、図7に示すステップS210の動作における所定の処理と同じであればよい。ステップS503において所定の処理を行う構成要素は、制御部12に限られない。例えば、ステップS503における所定の処理は、図10に示すステップS401の動作及びステップS402の動作であってもよい。図10に示す例では、ステップS401の動作は中継部14によって行われる。そして、ステップS402の動作は制御部12によって行われる。
以上で説明した本実施形態には、第1の実施形態と同じ効果がある。その理由は、第1の実施形態の効果が生じる理由と同じである。
<第4の実施形態>
次に、本発明の第4の実施形態について、図面を参照して詳細に説明する。
図12は、本実施形態の情報処理システム100Cの構成の例を表すブロック図である。図12と図1を比較すると、本実施形態の情報処理システム100Cは、記憶装置3の代わりに対象装置3Aを含む点が、第1の実施形態の情報処理システム100と異なる。対象装置3Cは、サーバなどの情報処理装置であってもよい。対象装置3Cは、記憶装置であってもよい。本実施形態では、対象装置3Cが前述の要求先装置である。
図13は、本実施形態の情報処理システム100Cの全体像を模式的に表す図である。図13に示すように、情報処理システム100Cは、複数の情報処理装置1を含んでいてもよい。同様に、情報処理システム100Cは、複数の対象装置3Aを含んでいてもよい。各情報処理システム100Cと各対象装置3Cとは、例えば通信ネットワーク4を介して接続されている。
本実施形態では、仮想装置20は、中継部14を介して、対象装置3Cに対してアクセスを行う。アクセスは、例えば、何らかのデータの送信及び受信の少なくともいずれかを行う通信であればよい。データは、例えば、対象装置3Cに対する命令や、対象装置3Cからの命令であってもよい。
本実施形態では、仮想装置20に対して設定された通信に関する優先順位が、仮想装置20の識別子に関連付けられて、対象データとして対象情報記憶部11に格納される。すなわち、本実施形態では、対象データは仮想装置20の通信に関する優先順位である。
中継部14は、仮想装置20からデータを受信し、受信したデータを対象装置3Cに送信する出力を行う。中継部14は、対象装置3Cからデータを受信し、受信したデータを仮想装置20に送信する入力を行う。中継部14は、複数の仮想装置20が、これらの入力及び出力を含む通信を行う場合、仮想装置20に関連付けられている優先順位が高いほど優先して、仮想装置20が行う通信の処理を行う。中継部14は、例えば、優先順位が高さに応じた広さの通信帯域を仮想装置20に割り当てればよい。中継部14は、例えば、複数の仮想装置20が同時に通信を行おうとする場合、優先度が高い仮想装置20の通信の処理が完了した後、優先度が低い仮想装置20による通信に対する処理を行ってもよい。優先順位に応じた優先度で仮想装置20の通信を処理する方法は、以上の方法ではない、他の方法であってもよい。
更新部15は、例えば、仮想装置20の状態や、仮想装置20が行っている処理の内容や、仮想装置20が行う通信の種類に応じて、各仮想装置20の優先順位を決定する。更新部15が、仮想装置20の優先順位を決定するために使用するパラメータを、以下の説明において、仮想装置20に関する状態と表記する。更新部15は、仮想装置20に関する状態を検出し、検出された、仮想装置20に関する状態に基づき、優先順位を決定する。そして、更新部15は、決定された優先順位を、仮想装置20の識別子に関連付けて、対象データとして対象情報記憶部11に格納する。更新部15が仮想装置20の優先順位を決定する方法は、あらかじめ決められていればよい。更新部15は、優先順位の更新を、例えば、制御部12から指示を受信した場合に行う。更新部15は、さらに、例えば、仮想装置20からの指示を受信した場合に、優先順位の更新を行ってもよい。仮想装置20は、例えば、行っている処理の内容や、行っている通信の種類が変わった場合、更新部15に優先順位を更新する指示を送信するよう設定されていればよい。
仮想装置20にあらかじめ決められた種別の状態変化が生じたことが検出部13によって検出された場合、制御部12は、仮想装置20の優先順位を更新するよう、更新部15に対して指示することによって、各仮想装置20の優先順位を更新する。
図14は、本実施形態の情報処理装置1の、対象データを更新する場合における動作を表すフローチャートである。図14の動作は、例えば、制御部12あるいはいずれかの仮想装置20からの指示によって開始される。
まず、更新部15が、仮想装置20に関する状態を検出する(ステップS601)。
次に、更新部15が、検出された、仮想装置20に関する状態に基づき、仮想装置20に関連付けられている対象データを更新する(ステップS602)。
次に、本実施形態の情報装置1の、仮想装置20に状態変化が生じた場合における動作について、図面を参照して詳細に説明する。
図11は、本実施形態の情報装置1の、仮想装置20に状態変化が生じた場合における動作を表すフローチャートである。
本実施形態の情報処理装置1の、仮想装置20に状態変化が生じた場合における動作は、ステップS503における所定の処理の内容を除いて、第3の実施形態の情報処理装置1の、仮想装置20に状態変化が生じた場合における動作と同じである。
ステップS503において、更新部15が、対象情報記憶部11に格納されている、対象データである優先順位を更新する処理を行う。
以上で説明した本実施形態には、第1の実施形態と同じ効果がある。その理由は、第1の実施形態の効果が生じる理由と同じである。
<第5の実施形態>
次に、本発明の第5の実施形態について、図面を参照して詳細に説明する。
図12は、本実施形態の情報処理システム100Cの構成の例を表すブロック図である。本実施形態の情報処理システム100Cの構成は、第4の実施形態の情報処理システム100Cの構成と同じである。
本実施形態では、対象情報記憶部11に格納されている対象データは、それぞれの仮想装置20に設定されている圧縮設定値である。圧縮設定値は、例えば、圧縮に使用される圧縮アルゴリズムや、圧縮処理におけるパラメータ等の、圧縮方法を特定する値である。圧縮設定値は、あらかじめ定められていればよい。
各仮想装置20は、中継部14を介して、対象装置3Cと通信を行う。
中継部14は、仮想装置20が対象装置3Cに送信するデータを受信すると、受信したデータを、その仮想装置20に関連付けられている対象データである圧縮設定値に基づく圧縮方法で、圧縮する。
更新部15は、例えば、各仮想装置20に対して設定されている圧縮率、仮想装置20が送信するデータの種類、圧縮に使用することができる計算資源の量等に基づき、それぞれの仮想装置20に対する圧縮設定値を決定する。更新部15は、仮想装置20に対して設定されている圧縮率、仮想装置20が送信するデータの種類などを、仮想装置20から受信すればよい。本実施形態では、仮想装置20に対して設定されている圧縮率、仮想装置20が送信するデータの種類などが、上述の、仮想装置20に関する状態である。仮想装置20は、要求に応じて、設定されている圧縮率や送信するデータの種類などを、更新部15に送信するよう設計されていればよい。更新部15は、圧縮に使用することができる計算資源を、例えば実行部10から取得すればよい。更新部15は、さらに、使用可能なそれぞれの圧縮アルゴリズムを使用して、設定可能なさまざまなパラメータに基づき圧縮を行う場合における、平均的な圧縮率や、平均的な資源使用量などを、使用して、圧縮設定値を決定してもよい。更新部15は、使用可能なそれぞれの圧縮アルゴリズムを使用して、設定可能なさまざまなパラメータに基づき圧縮を行う場合における、平均的な圧縮率や、平均的な資源使用量などを、あらかじめ保持していればよい。更新部15が圧縮アルゴリズムやパラメータを選択する方法として、既存のさまざまな方法を使用することができる。更新部15は、例えば、制御部12やいずれかの仮想装置20から指示を受信した場合に、圧縮設定値を決定し、決定した圧縮設定値を状態情報記憶部11に格納すればよい。仮想装置20は、例えば、送信するデータの種類が変更された場合に、更新部15に対して、圧縮設定値を更新する指示を送信すればよい。
制御部12は、いずれかの仮想装置20の状態変化が検出されると、更新部15に圧縮設定値を更新する指示を送信することによって、対象情報記憶部11に格納されている圧縮設定値を更新すればよい。
次に、本実施形態の情報処理装置1の動作について、図面を参照して詳細に説明する。
図14は、本実施形態の情報処理装置1の、対象データを更新する場合における動作を表すフローチャートである。図14の動作は、例えば、制御部12やいずれかの仮想装置20からの指示によって開始される。
まず、更新部15が、仮想装置20に関する状態を検出する(ステップS601)。
次に、更新部15が、検出された、仮想装置20に関する状態に基づき、仮想装置20に関連付けられている対象データを更新する(ステップS602)。
次に、本実施形態の情報装置1の、仮想装置20に状態変化が生じた場合における動作について、図面を参照して詳細に説明する。
図11は、本実施形態の情報装置1の、仮想装置20に状態変化が生じた場合における動作を表すフローチャートである。
本実施形態の情報処理装置1の、仮想装置20に状態変化が生じた場合における動作は、ステップS503における所定の処理の内容を除いて、第3の実施形態の情報処理装置1の、仮想装置20に状態変化が生じた場合における動作と同じである。
ステップS503において、更新部15が、対象情報記憶部11に格納されている、対象データである圧縮設定値を更新する処理を行う。
以上で説明した本実施形態には、第1の実施形態と同じ効果がある。その理由は、第1の実施形態の効果が生じる理由と同じである。
<第6の実施形態>
次に、本発明の第6の実施形態について、図面を参照して詳細に説明する。
図15は、本実施形態の情報処理装置1Cの構成を表すブロック図である。
図15を参照すると、本実施形態の情報処理装置1Cは、仮想装置20を実行する実行部10によって実行される前記仮想装置20が行ったアクセスに応じて更新され、前記仮想装置20に関連付けられている対象データを記憶する対象情報記憶部11と、前記実行部10が実行する前記仮想装置20の状態が、実行されている状態とそれ以外の状態との間で変化する状態変化を検出する検出部13によって、前記仮想装置20の前記状態変化が検出された場合、前記対象データに対して所定の処理を行う制御部12と、を備える。
以上で説明した本実施形態には、第1の実施形態と同じ効果がある。その理由は、第1の実施形態の効果が生じる理由と同じである。
情報処理装置1、情報処理装置1A、情報処理装置1B、情報処理装置1Cは、それぞれ、コンピュータ及びコンピュータを制御するプログラム、専用のハードウェア、又は、コンピュータ及びコンピュータを制御するプログラムと専用のハードウェアの組合せにより実現することができる。
図16は、情報処理装置1、情報処理装置1A、情報処理装置1B、情報処理装置1Cを実現することができる、コンピュータ1000の構成の一例を表す図である。図16を参照すると、コンピュータ1000は、プロセッサ1001と、メモリ1002と、記憶装置1003と、I/O(Input/Output)インタフェース1004とを含む。また、コンピュータ1000は、記録媒体1005にアクセスすることができる。メモリ1002と記憶装置1003は、例えば、RAM(Random Access Memory)、ハードディスクなどの記憶装置である。記録媒体1005は、例えば、RAM、ハードディスクなどの記憶装置、ROM(Read Only Memory)、可搬記録媒体である。記憶装置1003が記録媒体1005であってもよい。プロセッサ1001は、メモリ1002と、記憶装置1003に対して、データやプログラムの読み出しと書き込みを行うことができる。プロセッサ1001は、I/Oインタフェース1004を介して、例えば、記憶装置3や対象装置3Aにアクセスすることができる。プロセッサ1001は、記録媒体1005にアクセスすることができる。記録媒体1005には、コンピュータ1000を、情報処理装置1、情報処理装置1A、情報処理装置1B、又は情報処理装置1Cとして動作させるプログラムが格納されている。
プロセッサ1001は、記録媒体1005に格納されている、コンピュータ1000を、情報処理装置1、情報処理装置1A、情報処理装置1B、又は情報処理装置1Cとして動作させるプログラムを、メモリ1002にロードする。そして、プロセッサ1001が、メモリ1002にロードされたプログラムを実行することにより、コンピュータ1000は、情報処理装置1、情報処理装置1A、情報処理装置1B、又は情報処理装置1Cとして動作する。
実行部10、制御部12、検出部13、中継部14、更新部15は、例えば、プログラムを記憶する記録媒体1005からメモリ1002に読み込まれた、各部の機能を実現することができる専用のプログラムと、そのプログラムを実行するプロセッサ1001により実現することができる。また、対象情報記憶部11は、コンピュータ1000が含むメモリ1002やハードディスク装置等の記憶装置1003により実現することができる。あるいは、実行部10、対象情報記憶部11、制御部12、検出部13、中継部14、更新部15の一部又は全部を、各部の機能を実現する専用の回路によって実現することもできる。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。