JP2016115253A - 情報処理装置、メモリ管理方法およびメモリ管理プログラム - Google Patents
情報処理装置、メモリ管理方法およびメモリ管理プログラム Download PDFInfo
- Publication number
- JP2016115253A JP2016115253A JP2014255125A JP2014255125A JP2016115253A JP 2016115253 A JP2016115253 A JP 2016115253A JP 2014255125 A JP2014255125 A JP 2014255125A JP 2014255125 A JP2014255125 A JP 2014255125A JP 2016115253 A JP2016115253 A JP 2016115253A
- Authority
- JP
- Japan
- Prior art keywords
- virtual
- processes
- data
- memory
- memory area
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】複数のプロセス間でデータが受け渡される際の処理負荷を低減する。【解決手段】情報処理装置1では、仮想マシン10,20が動作する。プロセス11は仮想マシン10において実行され、プロセス21a,21bは仮想マシン20において実行される。プロセス11,21a,21bの処理時には仮想メモリ12,22a,22bがそれぞれ参照される。処理部3は、仮想メモリ12,22a,22bに物理メモリ領域31,32,33がそれぞれ割り当てられた状態から、物理メモリ領域31,32の割り当て先を仮想メモリ22a,22bにそれぞれ変更する。これにより、実体的なデータ転送が行われることなく、プロセス11からプロセス21aへデータが受け渡されるとともに、プロセス21aからプロセス21bへデータが受け渡される。【選択図】図1
Description
本発明は、情報処理装置、メモリ管理方法およびメモリ管理プログラムに関する。
近年、ストレージ装置に保存すべきデータ量は増加の一途を辿っており、それに伴って古いストレージシステムを刷新し、新しいストレージシステムを構築することが求められている。しかし、従来のストレージシステムに含まれる製品には、用途に応じて接続方式やデータの運用方式などが異なっており、用途ごとに異なる製品を用いてストレージシステムを構築する必要があった。
例えば、ストレージ装置に対するアクセスを制御するストレージ制御装置には、接続方式の異なるものがある。具体的な例としては、ブロック単位でアクセス要求を受信するストレージ制御装置と、ファイル単位でアクセス要求を受信するストレージ制御装置とがある。
このような状況に対し、複数の接続方式に対応した“ユニファイド・ストレージ”と呼ばれる製品が登場している。ユニファイド・ストレージのシステムに適用されるストレージ制御装置は、例えば、ブロック単位でのアクセス要求を受信してストレージ装置へのアクセスを制御できるとともに、ファイル単位でのアクセス要求を受信してストレージ装置へのアクセスを制御することもできる。このように、ユニファイド・ストレージは接続方式に依存せず多様な用途のシステムに導入可能であるため、装置の統一化による運用コストの削減効果が期待できる。
一方、1つのコンピュータ上で複数の仮想マシンを動作させる仮想化技術が普及している。ここで、複数の仮想マシンが動作する状況でのメモリ管理方法としては、次のようなものがある。
例えば、ホストおよび複数のゲストの間で装置の制御を移管する仮想マシン制御ロジックと、第2のゲストの仮想メモリアドレスから第1のゲストの仮想メモリアドレスに情報を複製するための命令を実行する実行装置と、第1の仮想メモリアドレスおよび第2の仮想メモリアドレスを、それぞれ第1の物理メモリアドレスおよび第2の物理メモリアドレスに変換するメモリ管理装置とを備える装置が提案されている。
また、例えば、リングバッファ、または、転送ページおよびアドレス空間操作のどちらか一方を少なくとも使用することによって、第1のパーティションと第2のパーティションの間で情報の転送を可能にする転送機構を使用する方法が提案されている。
ところで、ユニファイド・ストレージに適用されるストレージ制御装置の例として、ブロック単位でのアクセス要求に応じたアクセス制御処理と、ファイル単位でのアクセス要求に応じたアクセス制御処理とを、それぞれ個別の仮想マシン上で実行することが考えられる。この場合の方法として、一方の仮想マシンで受信したアクセス要求に応じたストレージ制御装置へのアクセス制御処理を、他方の仮想マシンを介して実行する方法が考えられる。
しかし、この方法では、ストレージ制御装置へのアクセスが行われるまでの間に、仮想マシン間でのデータの受け渡しや、受け渡されたデータを、一方のストレージ制御装置でのアクセス単位のデータから他方のストレージ制御装置でのアクセス単位のデータに変換する、といった多数のプロセスが実行される。そして、プロセスが実行されるごとに、実行済みのデータを次のプロセスが参照するメモリ領域へコピーするというコピー処理が発生する。このような多数回のコピー処理が発生することで、プロセッサの処理負荷が増大し、その結果、ホスト装置からのアクセス要求に対する応答性能が低下するという問題があった。
また、このような多数回のコピー処理の発生という問題は、上記のようなストレージ制御装置に限らず、複数の仮想マシンが動作する環境で多数のプロセス間でデータが受け渡される場合に発生し得る。
1つの側面では、本発明は、複数のプロセス間でデータが受け渡される際の処理負荷を低減することが可能な情報処理装置、メモリ管理方法およびメモリ管理プログラムを提供することを目的とする。
1つの案では、第1の仮想マシンと第2の仮想マシンとが動作し、3以上のプロセスを含む複数のプロセスのそれぞれが第1の仮想マシンと第2の仮想マシンのいずれかにおいて並列に実行され、第1の仮想マシンにおいて複数のプロセスのうちの少なくとも1つが実行されるとともに、第2の仮想マシンにおいて複数のプロセスのうちの他の少なくとも1つが実行される情報処理装置が提供される。この情報処理装置は、記憶部および処理部を有する。記憶部は、複数のプロセスの実行時にそれぞれ参照される複数の仮想メモリのアドレスと、複数の仮想メモリのそれぞれに割り当てられる物理メモリ領域のアドレスとの対応関係が登録されたアドレス情報を記憶する。処理部は、複数の仮想メモリのそれぞれに物理メモリ領域が割り当てられた状態において、複数のプロセスにあらかじめ付与された順位に基づいて、複数の仮想メモリのうち、順位が最後のプロセスに対応する仮想メモリを除く他の仮想メモリのそれぞれに割り当てられた物理メモリ領域の割り当て先が、現在割り当てられている仮想メモリに対応するプロセスの次のプロセスに対応する仮想メモリに変更されるようにアドレス情報を更新する。
また、1つの案では、上記の情報処理装置と同様の処理が実行されるメモリ管理方法が提供される。
さらに、1つの案では、上記の情報処理装置と同様の処理をコンピュータに実行させるメモリ管理プログラムが提供される。
さらに、1つの案では、上記の情報処理装置と同様の処理をコンピュータに実行させるメモリ管理プログラムが提供される。
1つの側面では、複数のプロセス間でデータが受け渡される際の処理負荷を低減できる。
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る情報処理装置の構成例および処理例を示す図である。情報処理装置1においては、仮想マシン10,20が動作する。また、情報処理装置1においては、3以上の多数のプロセスを含む複数のプロセスが実行される。各プロセスは、仮想マシン10,20のいずれかにおいて実行される。また、複数のプロセスのうち少なくとも1つは、仮想マシン10において実行され、複数のプロセスのうち他の少なくとも1つは、仮想マシン20において実行される。さらに、これらの複数のプロセスは、並列に実行される。図1の例では、仮想マシン10においてプロセス11が実行され、仮想マシン20においてプロセス21a,21bが実行される。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る情報処理装置の構成例および処理例を示す図である。情報処理装置1においては、仮想マシン10,20が動作する。また、情報処理装置1においては、3以上の多数のプロセスを含む複数のプロセスが実行される。各プロセスは、仮想マシン10,20のいずれかにおいて実行される。また、複数のプロセスのうち少なくとも1つは、仮想マシン10において実行され、複数のプロセスのうち他の少なくとも1つは、仮想マシン20において実行される。さらに、これらの複数のプロセスは、並列に実行される。図1の例では、仮想マシン10においてプロセス11が実行され、仮想マシン20においてプロセス21a,21bが実行される。
なお、プロセス11,21a,21bは、例えば、それぞれ個別のアプリケーションプログラムにしたがって実行される。この場合、例えば、プロセス11の処理を実現するアプリケーションプログラムは、仮想マシン10が実行する仮想OS(Operating System)上で実行される。また、プロセス21a,21bの処理をそれぞれ実現するアプリケーションプログラムは、仮想マシン20が実行する仮想OS上で実行される。
プロセス11,21a,21bには、仮想メモリ12,22a,22bがそれぞれ割り当てられている。仮想メモリ12は、仮想マシン10上の仮想メモリ空間に確保されるメモリ領域である。プロセス11は、仮想メモリ12を利用して所定の処理を実行する。仮想メモリ22a,22bは、仮想マシン20上の仮想メモリ空間に確保されるメモリ領域である。プロセス21aは、仮想メモリ22aを利用して所定の処理を実行する。プロセス21bは、仮想メモリ22bを利用して所定の処理を実行する。なお、仮想メモリ12,22a,22bのそれぞれの容量は同じであるとする。
また、プロセス11,21a,21bには、あらかじめ順位が付与されている。この順位は、データの受け渡しの順序を示す。図1の例では、プロセス11,21a,21bの順に順位が付与されており、データがプロセス11,21a,21bの順に受け渡される。より詳しくは、プロセス11によって処理された処理済みのデータは、仮想メモリ12から仮想メモリ22aへ転送される。これにより、処理済みのデータがプロセス11からプロセス21aへ受け渡される。また、プロセス22aによって処理された処理済みのデータは、仮想メモリ22aから仮想メモリ22bへ転送される。これにより、処理済みのデータがプロセス21aからプロセス21bへ受け渡される。
情報処理装置1においては、以下で説明する処理により、仮想メモリ12から仮想メモリ22aへ、および、仮想メモリ22aから仮想メモリ22bへの実体的なデータ転送が行われずに、プロセス間でデータが受け渡される。
情報処理装置1は、記憶部2および処理部3を有する。記憶部2は、例えば、RAM(Random Access Memory)などの記憶装置の記憶領域として実現される。処理部3は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)などのプロセッサにより実現される。
記憶部2には、アドレス情報2aが記憶されている。アドレス情報2aには、仮想メモリ12,22a,22bの仮想アドレスと、仮想メモリ12,22a,22bにそれぞれ割り当てられた物理メモリ領域の物理アドレスとの対応関係が登録されている。なお、アドレス情報2aに登録されるアドレスは、例えば、対応するメモリ領域の先頭アドレスである。
ここで、図1では、アドレスXの値を“ADD_X”と示している。例えば、仮想メモリ12の仮想アドレスはADD_a、仮想メモリ22a,22bの仮想アドレスはそれぞれADD_A,ADD_Bである。なお、図1におけるアドレス情報2aの記載箇所では、アドレスの値について“ADD_”の記載を省略している。
処理部3は、仮想メモリ12,22a,22bのそれぞれに対する物理メモリ領域の割り当てを制御する。例えば、図1の状態1において、処理部3は、物理メモリ領域31〜33を確保している。物理メモリ領域31の物理アドレスはADD_1、物理メモリ領域32の物理アドレスはADD_2、物理メモリ領域33の物理アドレスはADD_3であるとする。状態1において、処理部3は、仮想メモリ12,22a,22bに対して、物理メモリ領域31,32,33をそれぞれ割り当てる。
この状態で、プロセス11,21a,21bは、それぞれに対応付けられた仮想メモリを利用して処理を並列に実行する。実際には、プロセス11,21a,21bは、物理メモリ領域31,32,33をそれぞれ用いて処理を実行する。その結果、プロセス11,21a,21bによる処理済みデータが、物理メモリ領域31,32,33にそれぞれ格納される。
次に、処理部3は、仮想メモリ12,22a,22bに割り当てる物理メモリ領域が次のように変更されるように、アドレス情報2aを更新する。処理部3は、順位が最後のプロセス21bに対応する仮想メモリ22bを除く他の仮想メモリ12,22aに割り当てられた物理メモリ領域31,32の割り当て先を、現在割り当てられている仮想メモリに対応するプロセスの次のプロセスに対応する仮想メモリに変更する。これにより、図1の状態2では、物理メモリ領域31の割り当て先は仮想メモリ12から仮想メモリ22aに変更され、物理メモリ領域32の割り当て先は仮想メモリ22aから仮想メモリ22bに変更される。
このような割り当て変更により、仮想メモリ12に格納されていたプロセス11による処理済みデータは、仮想メモリ22aに移動され、仮想メモリ22aに格納されていたプロセス21aによる処理済みデータは、仮想メモリ22bに移動される。すなわち、プロセス11による処理済みデータは、実体的なデータ転送が行われることなく、プロセス21aに受け渡される。また、プロセス21aによる処理済みデータも、実体的なデータ転送が行われることなく、プロセス21bに受け渡される。
したがって、複数のプロセス間でデータが受け渡される際の情報処理装置1の処理負荷を低減することができる。また、複数の仮想メモリに割り当てられる物理メモリ領域が一度に変更されることで、複数のプロセスによる処理の並列性を維持したまま、プロセス間のデータ受け渡しの処理負荷を低減できる。
なお、状態2では、仮想メモリ12に対しては、物理メモリ領域33、または、新たに確保された物理メモリ領域が割り当てられる。
〔第2の実施の形態〕
第2の実施の形態では、第1の実施の形態の情報処理装置1を備えるシステムとして、ストレージシステムを例示する。
〔第2の実施の形態〕
第2の実施の形態では、第1の実施の形態の情報処理装置1を備えるシステムとして、ストレージシステムを例示する。
図2は、第2の実施の形態に係るストレージシステムの構成例を示す図である。図2に示すストレージシステムは、ストレージ装置100とホスト装置301,302とを含む。ホスト装置301は、例えば、LAN(Local Area Network)311を介してストレージ装置100と接続されている。ホスト装置302は、例えば、SAN(Storage Area Network)312を介してストレージ装置100と接続されている。ホスト装置301は、ストレージ装置100に対して、ストレージ装置100内のストレージ部に対するアクセスを要求する。ホスト装置302も同様に、ストレージ装置100に対して、ストレージ装置100内のストレージ部に対するアクセスを要求する。
ストレージ装置100は、CM(Controller Module)110とDE(Drive Enclosure)120とを備える。DE120は、ホスト装置301,302からのアクセス対象となるストレージ部である。DE120には、ストレージ部を構成するストレージデバイスとして、複数のHDD(Hard Disk Drive)が搭載されている。なお、DE120は、例えば、ストレージ装置100の外部に設けられていてもよい。また、ストレージ部を構成するストレージデバイスとしては、HDDに限らず、例えばSSD(Solid State Drive)等の他の種類のストレージデバイスが使用されてもよい。
CM110は、図1に示した情報処理装置1の一例である。CM110は、ストレージ部に対するアクセスを制御するストレージ制御部である。すなわち、CM110は、ホスト装置301,302からのアクセス要求に応じて、DE120内のHDDへのアクセスを制御する。例えば、CM110は、DE120内のHDDに記憶されたデータの読み出し要求をホスト装置301から受け付けると、読み出しを要求されたデータをDE120内のHDDから読み出し、ホスト装置301に送信する。また、CM110は、DE120内のHDDへのデータの書き込み要求をホスト装置301から受け付けると、書き込みを要求されたデータをDE120内のHDDに書き込む。
CM110は、プロセッサ111、RAM112、HDD113、読み取り装置114、ホストインタフェース115,116およびディスクインタフェース117を備える。
プロセッサ111は、CM110全体を統括的に制御する。RAM112は、CM110の主記憶装置として使用され、プロセッサ111に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。また、RAM112は、DE120内のHDDに記憶されたデータのキャッシュ領域としても使用される。
プロセッサ111は、CM110全体を統括的に制御する。RAM112は、CM110の主記憶装置として使用され、プロセッサ111に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。また、RAM112は、DE120内のHDDに記憶されたデータのキャッシュ領域としても使用される。
HDD113は、CM110の二次記憶装置として使用され、プロセッサ111により実行されるプログラムやその実行に必要な各種のデータ等を記憶する。なお、二次記憶装置としては、例えば、SSDなどの他の種類の不揮発性記憶装置が使用されてもよい。
読み取り装置114には、可搬型の記録媒体114aが脱着される。読み取り装置114は、記録媒体114aに記録されたデータを読み取ってプロセッサ111に送信する。記録媒体114aとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
ホストインタフェース115は、LAN311を介してホスト装置301と接続し、ホスト装置301とプロセッサ111との間でデータを送受信するインタフェース処理を実行する。ホストインタフェース116は、SAN312を介してホスト装置302と接続し、ホスト装置302とプロセッサ111との間でデータを送受信するインタフェース処理を実行する。
ディスクインタフェース117は、DE120と接続し、DE120内の各HDDとプロセッサ111との間でデータを送受信するインタフェース処理を実行する。
ところで、上記のストレージシステムにおいて、ホスト装置302は、CM110に対してブロック単位でアクセス要求を行う。例えば、ホスト装置302は、FC(Fibre Channel)、FCoE(FC over Ethernet、“Ethernet”は登録商標)、iSCSI(SCSI:Small Computer System Interface)などの通信プロトコルにしたがってCM110と通信する。一方、ホスト装置301は、CM110に対してファイル単位でアクセス要求を行う。例えば、ホスト装置301は、NFS(Network File System)、CIFS(Common Internet File System)などの通信プロトコルにしたがってCM110と通信する。
ところで、上記のストレージシステムにおいて、ホスト装置302は、CM110に対してブロック単位でアクセス要求を行う。例えば、ホスト装置302は、FC(Fibre Channel)、FCoE(FC over Ethernet、“Ethernet”は登録商標)、iSCSI(SCSI:Small Computer System Interface)などの通信プロトコルにしたがってCM110と通信する。一方、ホスト装置301は、CM110に対してファイル単位でアクセス要求を行う。例えば、ホスト装置301は、NFS(Network File System)、CIFS(Common Internet File System)などの通信プロトコルにしたがってCM110と通信する。
ストレージ装置100は、データのアクセス単位が異なる2つの通信プロトコルに対応する“ユニファイド・ストレージ”として動作する。CM110は、ブロック単位でのアクセス要求に応じてDE120へのアクセス制御を行う処理機能と、ファイル単位でのアクセス要求に応じてDE120へのアクセス制御を行う処理機能の両方を備える。CM110は、これら2つの処理機能を、個別の仮想マシン上で実行されるアプリケーションプログラムによってそれぞれ実現する。
図3は、CMの処理機能の構成例を示すブロック図である。CM110には、仮想マシン210,220が構築される。仮想マシン210は、LAN311を介してホスト装置301に接続され、ホスト装置301からのファイル単位でのアクセス要求に応じてDE120へのアクセス制御を行う処理機能を実現する。一方、仮想マシン220は、SAN312を介してホスト装置302に接続され、ホスト装置302からのブロック単位でのアクセス要求に応じてDE120へのアクセス制御を行う処理機能を実現する。
また、CM110は、ハイパーバイザ230を有する。ハイパーバイザ230の処理は、CM110のプロセッサ111によってハイパーバイザプログラムを実行することによって実現される。ハイパーバイザ230は、仮想マシン210,220を構築し、それらの動作を管理する。また、ハイパーバイザ230は、仮想マシン210,220に割り当てる物理リソースを管理する。ハイパーバイザ230は、そのような物理リソースの管理機能の1つとして、メモリ制御部231を有する。メモリ制御部231は、仮想マシン210,220において実行される、後述する特定の複数のアプリケーションプログラムに対する物理メモリ領域の割り当てを管理する。
また、CM110は、仮想マシン210において実現される処理機能として、仮想OS211、NAS(Network Attached Storage)エンジン212およびブロックドライバ213を有する。また、CM110は、仮想マシン220において実現される処理機能として、仮想OS221、SANエンジン222、ブロックターゲットドライバ223およびブロックドライバ224を有する。
仮想OS211の処理は、仮想マシン210がOSプログラムを実行することで実現される。NASエンジン212およびブロックドライバ213の処理は、仮想マシン210が、仮想OS211上でそれぞれ所定のアプリケーションプログラムを実行することで実現される。
NASエンジン212は、ストレージ装置100をNASとして動作させるための処理を実行する。すなわち、NASエンジン212は、ホスト装置301からのファイル単位でのアクセス要求に応じてDE120に対するアクセス制御を行う。
ブロックドライバ213は、NASエンジン212からの要求に応じて、ストレージ部に対するデータの読み書きを実行する。NASエンジン212が実マシン上で実現される場合には、ブロックドライバ213は、読み書きの対象となるデータを実際のストレージ部、すなわちDE120との間で送受信する。しかし、本実施の形態ではNASエンジン212は仮想マシン210上で実現される。そこで、ブロックドライバ213は、読み書きの対象となるデータを、DE120の代わりに仮想マシン220上のブロックターゲットドライバ223との間で送受信する。これにより、仮想マシン210は、ホスト装置301からのアクセス要求を受信すると、仮想マシン220を介してDE120にアクセスする。
一方、仮想OS221の処理は、仮想マシン220がOSプログラムを実行することで実現される。SANエンジン222、ブロックターゲットドライバ223およびブロックドライバ224の処理は、仮想マシン220が、仮想OS221上でそれぞれ所定のアプリケーションプログラムを実行することで実現される。
SANエンジン222は、ホスト装置302からのブロック単位でのアクセス要求に応じてDE120に対するアクセス制御を行う。また、SANエンジン222は、ブロック割り当て部222aを有する。ブロック割り当て部222aは、NASエンジン212からDE120に対するアクセスの単位となるブロックと、SANエンジン222からDE120に対するアクセスの単位となるブロックとを、相互に変換する。以下、前者を“NASブロック”、後者を“SANブロック”と記載する場合がある。
なお、ブロック割り当て部222aは、SANエンジン222を実現するSANエンジンプログラムとは別のアプリケーションプログラムの実行によって実現されてもよい。
ブロックターゲットドライバ223は、ブロックドライバ213とブロック割り当て部222aとの間でNASブロックを受け渡す。
ブロックターゲットドライバ223は、ブロックドライバ213とブロック割り当て部222aとの間でNASブロックを受け渡す。
ブロックドライバ224は、SANエンジン222からの要求に応じて、DE120に対してSANブロック単位でアクセスする。例えば、ホスト装置302から書き込み要求が送信された場合、ブロックドライバ224は、SANエンジン222がホスト装置302から受信した書き込みデータをSANブロック単位でSANエンジン222から取得し、DE120に書き込む。また、ホスト装置302から読み出し要求が送信された場合、ブロックドライバ224は、読み出しが要求されたデータをSANブロック単位でDE120から読み出し、SANエンジン222に渡す。渡されたデータはホスト装置302に送信される。
一方、ホスト装置302から書き込み要求が送信された場合、ブロックドライバ224は、書き込みが要求されたデータをSANブロック単位でブロック割り当て部222aから取得し、DE120に書き込む。また、ホスト装置301から読み出し要求が送信された場合、ブロックドライバ224は、読み出しが要求されたデータをSANブロック単位でDE120から読み出し、ブロック割り当て部222aに渡す。
ここで、ホスト装置301からCM110に対してファイル単位での書き込みおよび読み出しが要求された場合の処理の比較例について説明する。まず、図4は、ファイル単位で書き込みが要求された場合の処理の比較例を示す図である。
ファイル単位での書き込みが要求された場合、書き込みが要求されたデータは、NASエンジン212、ブロックドライバ213、ブロックターゲットドライバ223、ブロック割り当て部222a、ブロックドライバ224の順に受け渡される。そして、それぞれの処理機能によって、データに対して必要に応じた処理が施される。なお、以下の説明では、NASエンジン212、ブロックドライバ213、ブロックターゲットドライバ223、ブロック割り当て部222a、ブロックドライバ224を特に区別せずに表す場合には、これらの処理機能を“アプリケーション”と記載する場合がある。
図4に示すように、NASエンジン212、ブロックドライバ213、ブロックターゲットドライバ223、ブロック割り当て部222a、ブロックドライバ224に対して、作業領域としてメモリ領域401a,401b,401c,401d,401eが、ハイパーバイザ230によってそれぞれ割り当てられる。メモリ領域401a,401bは、仮想マシン210内の仮想メモリ領域から割り当てられる。また、メモリ領域401c〜401eは、仮想マシン220内の仮想メモリ領域から割り当てられる。
上記の各アプリケーションにより、例えば、次のような処理が実行される。NASエンジン212は、ホスト装置301から受信した書き込みデータをメモリ領域401aに格納する(ステップS11)。NASエンジン212は、ブロックドライバ213に対して書き込みデータの書き込み要求コマンドを通知するとともに、メモリ領域401aに格納されたデータをメモリ領域401bにコピーする。
この書き込み要求コマンドの通知時には、仮想OS211が備えるファイルシステムにより、書き込みが要求されたファイルをNASブロックに分割した場合のブロックアドレスが計算される。そして、NASエンジン212からブロックドライバ213に対して、NASブロック単位のブロックアドレスを用いた書き込み要求コマンドが通知される。
ブロックドライバ213は、NASエンジン212から通知された書き込み要求コマンドに基づいて、メモリ領域401bにコピーされた書き込みデータに対して、NASブロック単位の制御情報を付加する(ステップS12)。これにより、書き込みが要求されたファイルがNASブロック単位のデータに分割される。ブロックドライバ213は、仮想マシン220のブロックターゲットドライバ223に対して次の処理を依頼するとともに、メモリ領域40bに格納された、制御情報が付加された書き込みデータを、メモリ領域401cにコピーする。
ブロックターゲットドライバ223は、ブロック割り当て部222aに対して次の処理を依頼する(ステップS13)とともに、メモリ領域401cに格納されたデータをメモリ領域401dにコピーする。
ブロック割り当て部222aは、メモリ領域401dに格納されたNASブロック単位の書き込みデータを、SANブロック単位の書き込みデータに変換し、変換後の書き込みデータに対して、さらに所定のデータ加工を施す(ステップS14)。
SANブロック単位の書き込みデータへの変換は、ステップS12で付加された制御情報の代わりに、SANブロック単位の制御情報が書き込みデータに付加されることで行われる。これにより、NASブロック単位の書き込みデータが、SANブロック単位に分割し直される。また、データ加工の例としては、圧縮処理、あらかじめ決められたRAID(Redundant Arrays of Inexpensive Disks)レベルに応じたデータ変換処理などがある。ブロック割り当て部222aは、以上の処理が終了すると、ブロックドライバ224に対して次の処理を依頼するとともに、メモリ領域401dに格納されたデータ加工後の書き込みデータを、メモリ領域401eにコピーする。
ブロックドライバ224は、ブロック割り当て部222aからの依頼に基づいて、メモリ領域401eに格納されたSANブロック単位の書き込みデータを、DE120内の該当するHDDに書き込む(ステップS15)。
図5は、ファイル単位で読み出しが要求された場合の処理の比較例を示す図である。ファイル単位での読み出しが要求された場合、読み出しが要求されたデータは、ブロックドライバ224、ブロック割り当て部222a、ブロックターゲットドライバ223、ブロックドライバ213、NASエンジン212の順に受け渡される。そして、それぞれのアプリケーションによって、データに対して必要に応じた処理が施される。
図5に示すように、ブロックドライバ224、ブロック割り当て部222a、ブロックターゲットドライバ223、ブロックドライバ213、NASエンジン212に対して、作業領域としてメモリ領域402a,402b,402c,402d,402eが、ハイパーバイザ230によってそれぞれ割り当てられる。メモリ領域402a〜402cは、仮想マシン220内の仮想メモリ領域から割り当てられ、メモリ領域402d,402eは、仮想マシン210内の仮想メモリ領域から割り当てられる。
上記の各アプリケーションにより、例えば、次のような処理が実行される。ブロックドライバ224は、読み出しが要求された読み出しデータを、DE120内の該当するHDDからSANブロック単位で読み出し、メモリ領域402aに格納する(ステップS21)。ブロックドライバ224は、ブロック割り当て部222aに対して次の処理を依頼するとともに、メモリ領域402aに格納した読み出しデータをメモリ領域402bへコピーする。メモリ領域402aに格納された読み出しデータには、SANブロック単位の制御情報が付加されている。
ブロック割り当て部222aは、メモリ領域402bに格納された読み出しデータに対して、所定のデータ加工を施し、さらに、データ加工後のSANブロック単位の書き込みデータを、NASブロック単位の読み出しデータに変換する(ステップS22)。
データ加工とは、図4のステップS14におけるデータ加工の逆変換処理である。例えば、ステップS14でデータの圧縮処理が実行される場合、ステップS22ではデータの解凍処理が実行される。NASブロック単位の書き込みデータへの変換は、SANブロック単位の制御情報の代わりに、NASブロック単位の制御情報が読み出しデータに付加されることで行われる。これにより、DE120から読み出されたSANブロック単位の読み出しデータは、NASブロック単位の読み出しデータに分割し直される。ブロック割り当て部222aは、以上の処理が終了すると、ブロックターゲットドライバ223に対して次の処理を依頼するとともに、NASブロック単位のブロックデータを、制御情報とともにメモリ領域402bからメモリ領域402cにコピーする。
ブロックターゲットドライバ223は、ブロックドライバ213に対して次の処理を依頼するとともに、メモリ領域402cに格納されたデータをメモリ領域402dにコピーする。これにより、ブロックターゲットドライバ223は、NASブロック単位の読み出しデータをブロックドライバ213に受け渡す(ステップS23)。
ブロックドライバ213は、書き込みデータに付加された制御情報を削除し、書き込みデータをNASエンジン212が参照可能なデータに変換する(ステップS24)。ブロックドライバ213は、NASエンジン212に対して次の処理を依頼するとともに、メモリ領域402dに格納された、制御情報が削除された読み出しデータを、メモリ領域402eにコピーする。
ステップS24の処理では、ファイルシステムにより、メモリ領域402eに格納された読み出しデータにおけるファイル単位の区分位置がNASエンジン212に通知される。NASエンジン212は、メモリ領域402eに格納された読み出しデータをファイル単位で読み出し、読み出したファイルをホスト装置301に送信する(ステップS25)。
上記の図4の処理により、ホスト装置301からファイル単位で書き込みが要求された場合でも、書き込みが要求されたデータはSANブロック単位でDE120に格納されるようになる。また、上記の図5の処理により、ホスト装置301からファイル単位で読み出しが要求された場合でも、読み出しが要求されたデータはSANブロック単位でDE120から読み出され、NASブロック単位のデータに変換され、さらにファイル単位のデータに変換されて、ホスト装置301に送信されるようになる。
しかしながら、図4,図5で説明したように、ファイル単位での書き込みや読み出しが要求された場合には、複数のアプリケーションの間で、必要に応じて変換や加工が施されながら、書き込みデータや読み出しデータが受け渡される。そして、書き込みデータや読み出しデータがアプリケーション間で受け渡されるたびに、それらのデータのコピーが行われる。
ここで、図4,図5で説明したように、各アプリケーションが対応するメモリ領域内のデータに対して行う処理内容のうち、最も処理負荷が大きい内容はブロック割り当て部222aによるデータの変換や加工である。一方、ブロック割り当て部222a以外のアプリケーションによる処理内容のうち、最も処理負荷が大きい内容は制御情報の付け替えであり、メモリ領域に格納された全書き込みデータまたは全読み出しデータの入出力が発生するものではない。このため、各アプリケーションが対応するメモリ領域内のデータに対して行う処理の負荷は、アプリケーション全体として見れば、アプリケーション間でのデータコピーの負荷より圧倒的に小さい。
したがって、書き込み処理や読み出し処理が行われる際の全体の処理負荷に対して、アプリケーション間でのデータコピーの負荷は比較的大きな割合を占める。特に、近年では大容量のデータが取り扱われることが多くなり、それに伴って、上記のデータコピーによる処理負荷が全体の処理時間に大きな影響を与えるようになってきた。
例えば、CM110とDE120との間の最大転送速度をχ(MB/s)とし、図4に示したメモリ領域のデータに対して、対応するアプリケーションが変換、データ加工などの処理を施すことによる転送速度の低下率をα(%)とし、メモリ領域間のデータコピーによる転送速度の低下率をβ(%)とする。アプリケーションによる変換、データ加工などの処理回数を3回、メモリ領域間のデータコピー回数を4回とすると、全体の転送速度は例えば“(1−α)3(1−β)4χ”と計算される。χ=300(MB/s)、α=5(%)、β=3(%)とすると、全体の転送速度は227.7MB/sとなり、転送速度性能が24%も劣化してしまう。また、CM110のプロセッサの処理負荷の観点では、DE120との間のデータ伝送とメモリ領域間のコピーとで、プロセッサの処理時間のほとんどが占められてしまい、ホスト装置301,302に対するCM110の応答速度だけでなく、CM110の他の処理速度も著しく低下してしまう。
そこで、第2の実施の形態において、CM110は、アプリケーションの間でデータを受け渡す際に、アプリケーションが参照する各仮想メモリ領域に対する物理メモリ領域の割り当てを変更する。これにより、アプリケーションの間でデータを受け渡すための実体的なデータ転送を発生させないようにする。このような制御は、ハイパーバイザ230のメモリ制御部231によって行われる。
図6は、ファイル単位で書き込みが要求された場合のアプリケーション間でのデータ受け渡し動作例を示す図である。ホスト装置301からファイル単位で書き込みが要求された場合の書き込み処理の実行時には、メモリ制御部231は、NASエンジン212、ブロックドライバ213、ブロックターゲットドライバ223、ブロック割り当て部222a、ブロックドライバ224に対して、作業領域として仮想メモリ領域241a,241b,241c,241d,241eをそれぞれ割り当てる。仮想メモリ領域241a,241bは、仮想マシン210内の仮想メモリ空間から割り当てられる。また、仮想メモリ領域241c〜241eは、仮想マシン220内の仮想メモリ空間から割り当てられる。
なお、仮想メモリ領域241a〜241eは、同一の容量を有する。また、これ以後、書き込み処理が終了するまでの間、各アプリケーションには作業領域として同じ仮想メモリ領域が割り当てられたままになる。
また、メモリ制御部231は、CM110のRAM112上に5つの物理メモリ領域141a〜141eを確保する。物理メモリ領域141a〜141eのそれぞれの容量は、仮想メモリ領域241a〜241eのそれぞれと同じである。メモリ制御部231は、仮想メモリ領域241a〜241eのそれぞれに対して、物理メモリ領域141a〜141eのいずれかを割り当てる。この割り当ての際、メモリ制御部231は、次のように、仮想メモリ領域に割り当てる物理メモリ領域を、データの転送方向に沿って循環的に変更する。
例えば、図6の状態11において、メモリ制御部231は、仮想メモリ領域241a,241b,241c,241d,241eに対して、物理メモリ領域141a,141b,141c,141d,141eをそれぞれ割り当てる。この状態では、NASエンジン212は、物理メモリ領域141aを利用しながら図4のステップS11のような処理を実行する。ブロックドライバ213は、物理メモリ領域141bを利用しながら図4のステップS12のような処理を実行する。ブロックターゲットドライバ223は、物理メモリ領域141cを利用しながら図4のステップS13のような処理を実行する。ブロック割り当て部222aは、物理メモリ領域141dを利用しながら図4のステップS14のような処理を実行する。ブロックドライバ224は、物理メモリ領域141eを利用しながら図4のステップS15のような処理を実行する。ただし、各アプリケーションによる図4のステップS11〜S15のうちの対応する処理には、次のアプリケーションに対応する仮想メモリ領域へのデータコピー処理は含まれない。各アプリケーションによる上記処理は、並列に実行される。
各アプリケーションによる上記の処理が終了すると、メモリ制御部231は、仮想メモリ領域241a〜241eに対する物理メモリ領域141a〜141eの割り当てをし直す。このとき、メモリ制御部231は、あるアプリケーションに対応する仮想メモリ領域に割り当てられていた物理メモリ領域を、その次のアプリケーションに対応する仮想メモリ領域に割り当てる。
例えば、図6の状態12に示すように、物理メモリ領域141aの割り当て先は、仮想メモリ領域241aから仮想メモリ領域241bに変更される。物理メモリ領域141bの割り当て先は、仮想メモリ領域241bから仮想メモリ領域241cに変更される。物理メモリ領域141cの割り当て先は、仮想メモリ領域241cから仮想メモリ領域241dに変更される。物理メモリ領域141dの割り当て先は、仮想メモリ領域241dから仮想メモリ領域241eに変更される。物理メモリ領域141eの割り当て先は、仮想メモリ領域241eから仮想メモリ領域241aに変更される。この状態で、各アプリケーションによる処理が並列に実行される。
さらに、状態12での各アプリケーションによる処理が終了すると、メモリ制御部231は、仮想メモリ領域241a〜241eに対する物理メモリ領域141a〜141eの割り当てをし直す。これにより、状態13に遷移する。状態13では、物理メモリ領域141aの割り当て先は、仮想メモリ領域241bから仮想メモリ領域241cに変更される。物理メモリ領域141bの割り当て先は、仮想メモリ領域241cから仮想メモリ領域241dに変更される。物理メモリ領域141cの割り当て先は、仮想メモリ領域241dから仮想メモリ領域241eに変更される。物理メモリ領域141dの割り当て先は、仮想メモリ領域241eから仮想メモリ領域241aに変更される。物理メモリ領域141eの割り当て先は、仮想メモリ領域241aから仮想メモリ領域241bに変更される。
このように、各仮想メモリ領域に割り当てられる物理メモリ領域は、データの転送方向に沿って循環的に変更される。これにより、あるアプリケーションに参照されていた仮想メモリ領域内のデータは、そのデータが物理メモリ空間上で移動することなく、次のアプリケーションによって参照可能な状態になる。例えば、状態11でNASエンジン212に参照される仮想メモリ領域241aに割り当てられていた物理メモリ領域141aは、状態12ではブロックドライバ213に参照される仮想メモリ領域241bに割り当てられる。これにより、状態11で仮想メモリ領域241aに格納されたデータは、状態12ではブロックドライバ213によって参照される。このような処理により、物理メモリ空間上でデータを移動させずに、アプリケーション間でデータを受け渡すことが可能になり、プロセッサ111の処理負荷を低減できる。なお、後述するように、アプリケーション間でデータを受け渡す際の処理は、アドレス変換テーブルの書き替え処理のみとなり、この処理負荷は、仮想メモリ領域間でデータが物理的に移動する際の処理負荷より大幅に小さい。
また、仮想メモリ領域241a〜241eには、それぞれ異なる書き込みデータが格納される。そして、各アプリケーションにより、対応する仮想メモリ領域に格納されたデータに対する処理が並列に実行される。上記のように、各アプリケーションによる対応する仮想メモリ領域を用いた処理が終了すると、仮想メモリ領域に対する物理メモリ領域の割り当てが、データの転送方向に沿って循環的に変更される。これにより、各アプリケーションによる処理の並列性を保ったまま、アプリケーション間のデータの受け渡しの際の処理負荷を低減できる。
図7は、ファイル単位で読み出しが要求された場合のアプリケーション間でのデータ受け渡し動作例を示す図である。ホスト装置301からファイル単位で読み出しが要求された場合の書き込み処理の実行時には、メモリ制御部231は、ブロックドライバ224、ブロック割り当て部222a、ブロックターゲットドライバ223、ブロックドライバ213、NASエンジン212に対して、作業領域として仮想メモリ領域242a,242b,242c,242d,242eをそれぞれ割り当てる。仮想メモリ領域242a〜242cは、仮想マシン220内の仮想メモリ空間から割り当てられ、仮想メモリ領域242d,242eは、仮想マシン210内の仮想メモリ空間から割り当てられる。
なお、書き込み要求時と同様に、仮想メモリ領域242a〜242eは、同一の容量を有する。また、これ以後、読み出し処理が終了するまでの間、各アプリケーションには作業領域として同じ仮想メモリ領域が割り当てられたままになる。
また、メモリ制御部231は、CM110のRAM112上に5つの物理メモリ領域142a〜142eを確保する。物理メモリ領域142a〜142eのそれぞれの容量は、仮想メモリ領域242a〜242eのそれぞれと同じである。メモリ制御部231は、仮想メモリ領域242a〜242eのそれぞれに対して、物理メモリ領域142a〜142eのいずれかを割り当てる。この割り当ての際、メモリ制御部231は、次のように、仮想メモリ領域に割り当てる物理メモリ領域を、データの転送方向に沿って循環的に変更する。
例えば、図7の状態21において、メモリ制御部231は、仮想メモリ領域242a,242b,242c,242d,242eに対して、物理メモリ領域142a,142b,142c,142d,142eをそれぞれ割り当てる。この状態では、ブロックドライバ224は、物理メモリ領域142aを利用しながら図5のステップS21のような処理を実行する。ブロック割り当て部222aは、物理メモリ領域142bを利用しながら図5のステップS22のような処理を実行する。ブロックターゲットドライバ223は、物理メモリ領域142cを利用しながら図5のステップS23のような処理を実行する。ブロックドライバ213は、物理メモリ領域142dを利用しながら図5のステップS24のような処理を実行する。NASエンジン212は、物理メモリ領域142eを利用しながら図5のステップS25のような処理を実行する。ただし、各アプリケーションによる図5のステップS21〜S25のうちの対応する処理には、次のアプリケーションに対応する仮想メモリ領域へのデータコピー処理は含まれない。
各アプリケーションによる上記の処理が終了すると、メモリ制御部231は、仮想メモリ領域242a〜242eに対する物理メモリ領域142a〜142eの割り当てをし直す。このとき、メモリ制御部231は、あるアプリケーションに対応する仮想メモリ領域に割り当てられていた物理メモリ領域を、その次のアプリケーションに対応する仮想メモリ領域に割り当てる。
例えば、図7の状態22に示すように、物理メモリ領域142aの割り当て先は、仮想メモリ領域242aから仮想メモリ領域242bに変更される。物理メモリ領域142bの割り当て先は、仮想メモリ領域242bから仮想メモリ領域242cに変更される。物理メモリ領域142cの割り当て先は、仮想メモリ領域242cから仮想メモリ領域242dに変更される。物理メモリ領域142dの割り当て先は、仮想メモリ領域242dから仮想メモリ領域242eに変更される。物理メモリ領域142eの割り当て先は、仮想メモリ領域242eから仮想メモリ領域242aに変更される。
さらに、状態22での各アプリケーションによる処理が終了すると、メモリ制御部231は、仮想メモリ領域242a〜242eに対する物理メモリ領域142a〜142eの割り当てをし直す。これにより、状態23に遷移する。状態23では、物理メモリ領域142aの割り当て先は、仮想メモリ領域242bから仮想メモリ領域242cに変更される。物理メモリ領域142bの割り当て先は、仮想メモリ領域242cから仮想メモリ領域242dに変更される。物理メモリ領域142cの割り当て先は、仮想メモリ領域242dから仮想メモリ領域242eに変更される。物理メモリ領域142dの割り当て先は、仮想メモリ領域242eから仮想メモリ領域242aに変更される。物理メモリ領域142eの割り当て先は、仮想メモリ領域242aから仮想メモリ領域242bに変更される。
このように、書き込みの場合と同様、読み出しの場合でも、各仮想メモリ領域に割り当てられる物理メモリ領域は、データの転送方向に沿って循環的に変更される。これにより、あるアプリケーションに参照されていた仮想メモリ領域内のデータは、そのデータが物理メモリ空間上で移動することなく、次のアプリケーションによって参照可能な状態になる。したがって、物理メモリ空間上でデータを移動させずに、アプリケーション間でデータを受け渡すことが可能になり、プロセッサ111の処理負荷を低減できる。
また、書き込みの場合と同様、仮想メモリ領域242a〜242eには、それぞれ異なる読み出しデータが格納される。そして、各アプリケーションにより、対応する仮想メモリ領域に格納されたデータに対する処理が並列に実行される。上記のように、各アプリケーションによる対応する仮想メモリ領域を用いた処理が終了すると、仮想メモリ領域に対する物理メモリ領域の割り当てが、データの転送方向に沿って循環的に変更される。これにより、各アプリケーションによる処理の並列性を保ったまま、アプリケーション間のデータの受け渡しの際の処理負荷を低減できる。
図8は、アドレス変換テーブルのデータ構成例を示す図である。アドレス変換テーブル250は、主として、各アプリケーションが参照する仮想メモリ領域と、物理メモリ領域との対応関係を保持する。アドレス変換テーブル250により、物理メモリアドレスが、仮想OS211,221がそれぞれ参照可能なアドレス空間にマッピングされる。アドレス変換テーブル250は、メモリ制御部231によって生成されてRAM112に記録され、更新される。
ホスト装置301からの要求に応じた書き込み処理または読み出し処理が実行される際に、アドレス変換テーブル250にはエントリ情報251a〜251eが登録される。エントリ情報251a〜251eのそれぞれは、上記のようなデータの受け渡しが行われるアプリケーション、すなわち、NASエンジン212、ブロックドライバ213、ブロックターゲットドライバ223、ブロック割り当て部222a、ブロックドライバ224のいずれかに対応付けられている。
エントリ情報251a〜251eのそれぞれは、仮想アドレス、物理アドレス、アプリケーション識別子、処理完了フラグ、処理順およびポインタの各項目を有する。
仮想アドレスの項目には、対応するアプリケーションが参照する仮想メモリ領域の先頭メモリアドレスが登録される。仮想アドレスの項目に登録されるアドレスは、対応するアプリケーションが含まれる仮想OSによって参照される仮想メモリ空間上のアドレスである。
仮想アドレスの項目には、対応するアプリケーションが参照する仮想メモリ領域の先頭メモリアドレスが登録される。仮想アドレスの項目に登録されるアドレスは、対応するアプリケーションが含まれる仮想OSによって参照される仮想メモリ空間上のアドレスである。
物理アドレスの項目には、対応する仮想メモリ領域に割り当てられた物理メモリ領域の先頭アドレスが登録される。書き込み処理または読み出し処理の実行に伴って、物理アドレスの項目に登録されるアドレス値が変更される。これにより、仮想メモリ領域に対する物理メモリ領域の割り当てが変更される。
アプリケーション識別子の項目には、対応するアプリケーション、すなわち、NASエンジン212、ブロックドライバ213、ブロックターゲットドライバ223、ブロック割り当て部222a、ブロックドライバ224のいずれかを識別するための識別情報が登録される。
処理完了フラグの項目には、対応するアプリケーションによる、対応する仮想メモリ領域を利用した処理の実行が完了したかを示すフラグ情報が登録される。処理の実行が完了していない場合、処理完了フラグの項目には“0”が設定され、処理の実行が完了すると、処理完了フラグの項目には“1”が設定される。
処理順の項目には、データの受け渡し順を示す番号が登録される。例えば、書き込み処理の場合、NASエンジン212、ブロックドライバ213、ブロックターゲットドライバ223、ブロック割り当て部222a、ブロックドライバ224の順に番号が順に付与される。また、読み出し処理の場合は、その逆順に番号が付与される。なお、データの受け渡し順は、アドレス変換テーブル250上に必ずしも登録されている必要はなく、例えば、メモリ制御部231の処理を実現するためのプログラムコード上に記述されていてもよい。
ポインタの項目には、次のエントリ情報の位置を示す情報が登録される。アドレス変換テーブル250において、エントリ情報251a〜251eは、ポインタの項目に登録される位置情報によってチェーン状に連結される。なお、このようにエントリ情報251a〜251eがチェーン状に連結される構造は、アドレス変換テーブル250の構造の一例であり、他の構造によってアドレス変換テーブル250が実現されてもよい。
以上のようなアドレス変換テーブル250は、実際には、書き込み処理と読み出し処理とでそれぞれ個別に生成され、RAM112に記録される。
図9,図10は、書き込み処理の際のアドレス変換テーブルの更新例を示す図である。図9,図10においては、アドレス変換テーブル250の情報のうち、仮想メモリ領域の仮想アドレス、物理メモリ領域の物理アドレス、および処理完了フラグの対応関係のみが抽出して記載されている。また、図9,図10において、下線が引かれた仮想アドレスの数値は、仮想OS211によって参照される仮想メモリ空間210aにおけるアドレス値を示す。一方、斜字で示された仮想アドレスの数値は、仮想OS221によって参照される仮想メモリ空間220aにおけるアドレス値を示す。
図9,図10は、書き込み処理の際のアドレス変換テーブルの更新例を示す図である。図9,図10においては、アドレス変換テーブル250の情報のうち、仮想メモリ領域の仮想アドレス、物理メモリ領域の物理アドレス、および処理完了フラグの対応関係のみが抽出して記載されている。また、図9,図10において、下線が引かれた仮想アドレスの数値は、仮想OS211によって参照される仮想メモリ空間210aにおけるアドレス値を示す。一方、斜字で示された仮想アドレスの数値は、仮想OS221によって参照される仮想メモリ空間220aにおけるアドレス値を示す。
図9,図10の例では、NASエンジン212およびブロックドライバ213は、仮想メモリ空間210aにおけるアドレス“1”,“2”の領域をそれぞれ参照する。また、ブロックターゲットドライバ223、ブロック割り当て部222aおよびブロックドライバ224は、仮想メモリ空間220aにおけるアドレス“1”,“2”,“3”の領域をそれぞれ参照する。
また、図9の状態では、NASエンジン212およびブロックドライバ213にそれぞれ対応する仮想メモリ領域には、RAM112における物理アドレス“1”,“2”の領域がそれぞれ割り当てられている。また、ブロックターゲットドライバ223、ブロック割り当て部222aおよびブロックドライバ224には、RAM112における物理アドレス“3”,“4”,“5”の領域がそれぞれ割り当てられている。
ハイパーバイザ230のメモリ制御部231によってこのような物理メモリ領域の割り当てが行われた段階では、すべてのアプリケーションに対応する処理完了フラグは“0”とされる。この状態で、各アプリケーションは対応する処理を実行する。また、各アプリケーションは、対応する仮想メモリ領域を利用した処理の実行が完了すると、その旨をメモリ制御部231に通知する。メモリ制御部231は、アプリケーションから処理の完了通知を受けると、当該アプリケーションに対応する処理完了フラグを“1”に更新する。このようにして、すべてのアプリケーションに対応する処理完了フラグが“1”に更新されると、各仮想メモリ領域に対する物理領域の割り当てを変更する。
図10の状態では、物理アドレス“1”が示す物理メモリ領域の割り当て先は、NASエンジン212が参照する仮想メモリ領域から、ブロックドライバ213が参照する仮想メモリ領域へ変更されている。これにより、図9においてNASエンジン212に処理されたデータが、そのデータの物理的な転送が行われることなく、ブロックドライバ213に受け渡される。
同様に、図10の状態では、物理アドレス“2”が示す物理メモリ領域の割り当て先は、ブロックドライバ213が参照する仮想メモリ領域から、ブロックターゲットドライバ223が参照する仮想メモリ領域へ変更されている。また、物理アドレス“3”が示す物理メモリ領域の割り当て先は、ブロックターゲットドライバ223が参照する仮想メモリ領域から、ブロック割り当て部222aが参照する仮想メモリ領域へ変更されている。さらに、物理アドレス“4”が示す物理メモリ領域の割り当て先は、ブロック割り当て部222aが参照する仮想メモリ領域から、ブロックドライバ224が参照する仮想メモリ領域へ変更されている。これにより、図9においてブロックドライバ213、ブロックターゲットドライバ223およびブロック割り当て部222aによってそれぞれ処理されたデータが、それらのデータの物理的な転送が行われることなく、ブロックターゲットドライバ223、ブロック割り当て部222aおよびブロックドライバ224にそれぞれ受け渡される。
なお、図9において物理アドレス“5”が示す物理メモリ領域に格納されていたデータは、ブロックドライバ224の処理が完了した後には不要となる。このため、メモリ制御部231は、図10の状態に遷移する際に、物理アドレス“5”の割り当て先を、NASエンジン212が参照する仮想メモリ領域に変更する。これにより、物理アドレス“5”が示す物理メモリ領域には、NASエンジン212によって処理された新たな書き込みデータが上書きされる。
ところで、上記の図9に示したように、メモリ制御部231は、各仮想メモリ領域に対する物理メモリ領域を割り当てた後、各仮想メモリ領域に対応するアプリケーションからの処理の完了通知を待機する。そして、メモリ制御部231は、アプリケーションから処理の完了通知を受けると、当該アプリケーションに対応する処理完了フラグを“1”に更新する。メモリ制御部231は、すべてのアプリケーションに対応する処理完了フラグが“1”に更新されると、アプリケーション間でのデータの受け渡しが可能になったと判断し、各仮想メモリ領域に対する物理領域の割り当てを変更する。
このように、メモリ制御部231が、各アプリケーションによる処理が完了したかを認識できるようにしたことで、すべての仮想メモリ領域に対する物理メモリ領域の割り当てを一度に、なおかつ循環的に変更することができる。これにより、各アプリケーションによる処理の並列性を保ったまま、アプリケーション間のデータの受け渡しの際の処理負荷を低減できる。
図11は、各アプリケーションがメモリ制御部に対して処理の完了を通知する仕組みの例を示す図である。
ワーキングメモリ151は、複数の仮想マシン上の複数のプロセスによって共通に参照可能な共有メモリ領域として、メモリ制御部231によってRAM112上に確保される。メモリ制御部231による動的アドレス変換により、ワーキングメモリ151に対する仮想メモリアドレスの付け替えが行われ、これによって同一のワーキングメモリ151を複数のプロセスが参照および更新可能になる。
ワーキングメモリ151は、複数の仮想マシン上の複数のプロセスによって共通に参照可能な共有メモリ領域として、メモリ制御部231によってRAM112上に確保される。メモリ制御部231による動的アドレス変換により、ワーキングメモリ151に対する仮想メモリアドレスの付け替えが行われ、これによって同一のワーキングメモリ151を複数のプロセスが参照および更新可能になる。
ROページ152は、リードオンリー属性に設定されたページ(RAM112上のメモリ領域)である。ROページ152は、ワーキングメモリ151とセットで確保される。ワーキングメモリ151をあるプロセスが参照している状態において、そのプロセスがワーキングメモリ151に対応するROページ152に書き込みを行おうとすると、割り込みが発生し、書き込みが要求されたことがメモリ制御部231に通知される。この割り込みは、プロセスがワーキングメモリ151を用いた処理を終了したことをメモリ制御部231に通知するトリガとして使用される。メモリ制御部231は、割り込みの発生を検出すると、ワーキングメモリ151に対する仮想メモリアドレスを付け替える。これにより、複数のプロセスによって共有されるワーキングメモリ151に対する各プロセスからのアクセスが、排他的に行われる。
ホスト装置301からの要求に応じた書き込み処理または読み出し処理が行われる場合、メモリ制御部231は、参照可能にするアプリケーションと同じ数だけ、ワーキングメモリ151とROページ152の組を確保する。すべてのワーキングメモリ151の容量は同じである。メモリ制御部231は、各ワーキングメモリ151に対して、各アプリケーションに対応する仮想メモリ領域をアプリケーション間のデータの受け渡し順にしたがって順次割り当てていく。これにより、図6,図7に示したようなアプリケーション間のデータの受け渡しが行われる。
また、アプリケーションは、割り当てられたワーキングメモリ151を用いた処理を終了すると、そのワーキングメモリ151に対応するROページ152への書き込みを行うとともに、スリープ状態に遷移する。メモリ制御部231は、すべてのアプリケーションからの書き込みに伴う割り込みの発生を検出したとき、すべてのアプリケーションの処理が終了したと判定し、各ワーキングメモリ151に対する仮想アドレスの付け替えを行う。仮想アドレスの付け替え後、メモリ制御部231は、各アプリケーションに対してウェークアップ信号を通知して、新たに割り当てたワーキングメモリ151を用いた処理を開始させる。
このような仕組みにより、すべての仮想メモリ領域に対する物理メモリ領域の割り当てを一度に、なおかつ循環的に変更することができる。したがって、各アプリケーションによる処理の並列性を保ったまま、アプリケーション間のデータの受け渡しの際の処理負荷を低減できる。
次に、ホスト装置301からファイルを指定した書き込みまたは読み出しが要求された場合のCM110の処理について、フローチャートを用いて説明する。
図12は、アプリケーションの処理手順の例を示すフローチャートである。図12の処理は、ホスト装置301からの書き込み要求または読み出し要求を伴う業務が開始される際に、各アプリケーション、すなわち、NASエンジン212、ブロックドライバ213、ブロックターゲットドライバ223、ブロック割り当て部222aおよびブロックドライバ224のそれぞれによって実行される。なお、図12の処理は、書き込み処理と読み出し処理とでそれぞれ個別に実行される。
図12は、アプリケーションの処理手順の例を示すフローチャートである。図12の処理は、ホスト装置301からの書き込み要求または読み出し要求を伴う業務が開始される際に、各アプリケーション、すなわち、NASエンジン212、ブロックドライバ213、ブロックターゲットドライバ223、ブロック割り当て部222aおよびブロックドライバ224のそれぞれによって実行される。なお、図12の処理は、書き込み処理と読み出し処理とでそれぞれ個別に実行される。
[ステップS101]アプリケーションは、メモリ制御部231に対してアタッチを要求する。アタッチとは、複数のワーキングメモリ151からなる共有メモリ領域をアプリケーションが利用可能な状態にすることを言う。
[ステップS102]アプリケーションは、処理の実行を停止するスリープ状態に遷移する。
[ステップS103]アプリケーションは、メモリ制御部231からウェークアップ信号を受信すると、ステップS104以降の処理を実行する。
[ステップS103]アプリケーションは、メモリ制御部231からウェークアップ信号を受信すると、ステップS104以降の処理を実行する。
[ステップS104]アプリケーションは、自身に対応する仮想メモリを利用したデータ処理を実行する。データ処理の内容は、書き込み処理の場合、図4のステップS11〜S15のうちのアプリケーションに対応する処理のうち、次のアプリケーションに対応する仮想メモリ領域へのデータコピーを除く内容である。また、読み出し処理の場合、図5のステップS21〜S25のうちのアプリケーションに対応する処理のうち、次のアプリケーションに対応する仮想メモリ領域へのデータコピーを除く内容である。
[ステップS105]アプリケーションは、ステップS104のデータ処理の実行が完了すると、ホスト装置301からの書き込み要求または読み出し要求を伴う業務を終了するかを判定する。業務を終了する場合、ステップS107の処理が実行され、業務を終了しない場合、ステップS106の処理が実行される。
[ステップS106]アプリケーションは、メモリ制御部231にデータ処理の実行が完了したことを通知する。この通知は、前述のように、仮想メモリに割り当てられたワーキングメモリとセットで確保されたROページへの書き込みをアプリケーションが行い、その書き込みに応じて割り込みが発生することで行われる。
[ステップS107]アプリケーションは、メモリ制御部231に対してデタッチを要求する。デタッチとは、共有メモリ領域をアプリケーションが利用できない状態にすることを言う。
以上の図12の処理において、処理がステップS104に進むたびに、アプリケーションは自身に割り当てられた同一仮想アドレスの仮想メモリ領域にアクセスして処理を行う。しかし、実際には、ステップS104の処理の実行のたびに、アプリケーションがアクセスする物理メモリ領域は変更される。アプリケーションは、このようなアクセス先の物理メモリ領域の変更を意識せずにデータ処理を行う。
図13は、アタッチ要求を受信したときのメモリ制御部の処理手順の例を示す図である。図13の処理は、図12のステップS101でいずれかのアプリケーションがメモリ制御部231にアタッチを要求するたびに実行される。ただし、書き込み処理が行われる際に図13の処理は5回実行され、これとは別に、読み出し処理が行われる際に図13の処理は5回実行される。
[ステップS111]メモリ制御部231は、アプリケーションからアタッチ要求を受信すると、アドレス変換テーブル250が作成されているかを判定する。この処理では、書き込み処理の際には書き込み処理についてのアドレス変換テーブル250が作成されているかが判定され、読み出し処理の際には読み出し処理についてのアドレス変換テーブル250が作成されているかが判定される。
アドレス変換テーブル250が作成されていない場合、ステップS112の処理が実行される。アドレス変換テーブル250が作成されている場合、ステップS113の処理が実行される。
[ステップS112]メモリ制御部231は、アドレス変換テーブル250を作成する。作成されたアドレス変換テーブル250は、例えば、RAM112に保存される。なお、このステップS112では、書き込み処理の際には書き込み処理についてのアドレス変換テーブル250が作成され、読み出し処理の際には読み出し処理についてのアドレス変換テーブル250が作成される。
[ステップS113]メモリ制御部231は、アタッチ要求元のアプリケーションに対応するエントリ情報をアドレス変換テーブル250に追加する。
[ステップS114]メモリ制御部231は、ステップS113で追加したエントリ情報に次のような情報を登録する。メモリ制御部231は、仮想アドレスの項目に、アタッチ要求元のアプリケーションに対応する仮想アドレスを登録する。メモリ制御部231は、物理アドレスの項目に、RAM112上に確保したワーキングメモリ151のうち他の仮想メモリ領域に未割り当てのワーキングメモリ151の先頭アドレスを登録する。メモリ制御部231は、アプリケーション識別子の項目に、アタッチ要求元のアプリケーションを識別する識別情報を登録する。メモリ制御部231は、処理完了フラグの項目に、初期値“0”を登録する。メモリ制御部231は、処理順の項目に、アタッチ要求元のアプリケーションに対応する番号を登録する。メモリ制御部231は、ポインタの項目に、アドレス変換テーブル250に含まれる他のエントリ情報と接続するための情報を登録する。
[ステップS114]メモリ制御部231は、ステップS113で追加したエントリ情報に次のような情報を登録する。メモリ制御部231は、仮想アドレスの項目に、アタッチ要求元のアプリケーションに対応する仮想アドレスを登録する。メモリ制御部231は、物理アドレスの項目に、RAM112上に確保したワーキングメモリ151のうち他の仮想メモリ領域に未割り当てのワーキングメモリ151の先頭アドレスを登録する。メモリ制御部231は、アプリケーション識別子の項目に、アタッチ要求元のアプリケーションを識別する識別情報を登録する。メモリ制御部231は、処理完了フラグの項目に、初期値“0”を登録する。メモリ制御部231は、処理順の項目に、アタッチ要求元のアプリケーションに対応する番号を登録する。メモリ制御部231は、ポインタの項目に、アドレス変換テーブル250に含まれる他のエントリ情報と接続するための情報を登録する。
なお、仮想アドレスおよび処理順の項目には、アタッチ要求元のアプリケーションに対してあらかじめ決められた情報が登録されるが、各項目に登録される情報は書き込み処理の場合と読み出し処理の場合とで異なる。また、書き込み処理の場合と読み出し処理の場合とで、ポインタの項目に登録された情報によって接続されるエントリ情報のグループは別のグループとなる。
以上の手順で、書き込み処理および読み出し処理のそれぞれについて、アドレス変換テーブル250内にすべてのアプリケーションに対応するエントリ情報が登録されると、次の図14の処理が開始される。
図14は、アプリケーションによるデータ処理の実行に伴うメモリ制御部の処理手順の例を示す図である。なお、図14の処理は、書き込み処理と読み出し処理とでそれぞれ個別に実行される。また、書き込み処理の場合と読み出し処理の場合とでそれぞれ別のアドレス変換テーブル250が参照される。
[ステップS121]メモリ制御部231は、すべてのアプリケーションに対してウェークアップ信号を通知する。これにより、各アプリケーションは、図12のステップS104のデータ処理の実行を開始する。
[ステップS122]メモリ制御部231は、アプリケーションからデータ処理完了が通知されるのを待つ。
[ステップS123]メモリ制御部231は、1つのアプリケーションからのデータ処理完了の通知を受信すると、次のステップS124の処理を実行する。
[ステップS123]メモリ制御部231は、1つのアプリケーションからのデータ処理完了の通知を受信すると、次のステップS124の処理を実行する。
[ステップS124]メモリ制御部231は、アドレス変換テーブル250のエントリ情報のうち、データ処理完了の通知の送信元のアプリケーションに対応するエントリ情報を選択する。メモリ制御部231は、選択したエントリ情報における処理完了フラグの項目の値を、“0”から“1”に更新する。
[ステップS125]メモリ制御部231は、すべてのアプリケーションでのデータ処理が完了したかを判定する。アドレス変換テーブル250におけるすべてのエントリ情報において処理完了フラグの項目に“1”が登録されている場合に、すべてのアプリケーションでのデータ処理が完了したと判定される。すべてのアプリケーションでのデータ処理が完了したと判定された場合、ステップS126の処理が実行される。データ処理が完了していないアプリケーションが存在する場合、ステップS122の処理が実行される。
[ステップS126]メモリ制御部231は、すべてのアプリケーションに対応するエントリ情報に登録された物理アドレスを、図6または図7に示したように循環的に付け替える。物理アドレスの付け替えの方向は、エントリ情報内の処理順の方向となる。
[ステップS127]メモリ制御部231は、すべてのアプリケーションに対してウェークアップ信号を通知する。これにより、各アプリケーションは、図12のステップS104のデータ処理の実行を開始する。
[ステップS128]メモリ制御部231は、アドレス変換テーブル250内のすべてのアプリケーションに対応するエントリ情報について、処理完了フラグの項目の値を“1”から“0”に更新する。
なお、ステップS127,S128の処理順は逆でもよい。ステップS127,S128の処理の実行後、ステップS122の処理が実行される。
図15は、デタッチ要求を受信したときのメモリ制御部の処理手順の例を示す図である。図14の処理中に、いずれかのアプリケーションからメモリ制御部231に対してデタッチが要求された場合に、図15の処理が実行される。なお、図15の処理は、書き込み処理と読み出し処理とでそれぞれ個別に実行される。書き込み処理について図15の処理は5回実行され、これとは別に、読み出し処理について図15の処理は5回実行される。
図15は、デタッチ要求を受信したときのメモリ制御部の処理手順の例を示す図である。図14の処理中に、いずれかのアプリケーションからメモリ制御部231に対してデタッチが要求された場合に、図15の処理が実行される。なお、図15の処理は、書き込み処理と読み出し処理とでそれぞれ個別に実行される。書き込み処理について図15の処理は5回実行され、これとは別に、読み出し処理について図15の処理は5回実行される。
[ステップS131]メモリ制御部231は、アプリケーションからデタッチ要求を受信すると、要求元のアプリケーションに対応するエントリ情報をアドレス変換テーブル250から削除する。
[ステップS132]メモリ制御部231は、アドレス変換テーブル250内に他のエントリ情報が残っているかを判定する。他のエントリ情報がある場合、処理が終了され、他のアプリケーションからのデタッチ要求の待ち状態になる。他のエントリ情報がない場合、ステップS133の処理が実行される。
[ステップS133]メモリ制御部231は、アドレス変換テーブル250を削除する。
以上説明した第2の実施の形態では、各アプリケーションによって処理されたデータが次のアプリケーションに受け渡される際に、実体的なデータの移動が発生しない。これにより、プロセッサ111の処理負荷を軽減することができ、その結果、ホスト装置301,302からのアクセス要求に対する応答性能を向上させることができる。
以上説明した第2の実施の形態では、各アプリケーションによって処理されたデータが次のアプリケーションに受け渡される際に、実体的なデータの移動が発生しない。これにより、プロセッサ111の処理負荷を軽減することができ、その結果、ホスト装置301,302からのアクセス要求に対する応答性能を向上させることができる。
また、すべてのアプリケーションのデータ処理が完了したことを契機として、各アプリケーションに対応する仮想メモリ領域に割り当てる物理メモリ領域が一斉に変更される。このような処理により、各アプリケーションによる処理の並列性を保ったまま、アプリケーション間のデータの受け渡しの際の処理負荷を低減できる。
ところで、上記の第2の実施の形態では、メモリ制御部231は、各アプリケーションに対応する仮想メモリ領域に割り当て可能な物理メモリ領域を、あらかじめ固定的に確保する。そして、メモリ制御部231は、仮想メモリ領域に対する物理メモリ領域の割り当てを循環的に変更する。
これに対して、次の図16で説明するように、先頭のアプリケーションに対応する仮想メモリ領域に対しては、最後尾のアプリケーションに対応する仮想メモリ領域に割り当てられていた物理メモリ領域ではなく、新たな物理メモリ領域が割り当てられてもよい。以下、第2の実施の形態をこのように変形した変形例について説明する。
図16は、変形例における物理メモリ領域の割り当て変更動作例を示す図である。図16では、例として読み出し処理の場合を示している。
読み出し処理の開始時の状態では、図7の場合と同様に、メモリ制御部231は、仮想メモリ領域242a〜242eに割り当て可能な物理メモリ領域として、物理メモリ領域142a〜142eを確保する。そして、図16の状態31に示すように、メモリ制御部231は、仮想メモリ領域242a,242b,242c,242d,242eに対して、物理メモリ領域142a,142b,142c,142d,142eをそれぞれ割り当てる。この状態31は、図7の状態21と同様のメモリ割り当て状態となっている。
読み出し処理の開始時の状態では、図7の場合と同様に、メモリ制御部231は、仮想メモリ領域242a〜242eに割り当て可能な物理メモリ領域として、物理メモリ領域142a〜142eを確保する。そして、図16の状態31に示すように、メモリ制御部231は、仮想メモリ領域242a,242b,242c,242d,242eに対して、物理メモリ領域142a,142b,142c,142d,142eをそれぞれ割り当てる。この状態31は、図7の状態21と同様のメモリ割り当て状態となっている。
状態31で各アプリケーションのデータ処理が完了すると、メモリ制御部231は、仮想メモリ領域242a〜242eに対する物理メモリ領域の割り当てを変更する。このとき、メモリ制御部231は、物理メモリ領域142a〜142dの割り当て先については、図7の場合と同様に、データの受け渡し方向にシフトする。すなわち、状態32に示すように、仮想メモリ領域242b,242c,242d,242eに対して、物理メモリ領域142a,142b,142c,142dがそれぞれ割り当てられる。これにより、次のアプリケーションに対してデータが受け渡される。
一方、メモリ制御部231は、先頭のアプリケーションに対応する仮想メモリ領域242aに対しては、物理メモリ領域142eではなく、新たにRAM112上に確保した物理メモリ領域142fを割り当てる。また、状態31で最後尾のアプリケーションに対応する仮想メモリ領域242eに割り当てられていた物理メモリ領域142eについては、他の処理に利用されてデータが上書きされてもよいし、あるいは、記憶されているデータがそのまま他の処理に利用されてもよい。
状態32から状態33に遷移する際も、同様に、メモリ制御部231は、物理メモリ領域142a〜142c,142eの割り当て先については、データの受け渡し方向にシフトする。一方、メモリ制御部231は、仮想メモリ領域242aに対しては新たな物理メモリ領域142gを割り当てる。
以上の図16は、読み出し処理の場合を示したが、書き込み処理の場合も、物理メモリ領域の割り当て変更の方向が逆になること以外は上記と同様の動作が行われる。
上記変形例の処理は、第2の実施の形態での処理を次のように変形することで実現可能である。図14のステップS125においてすべてのアプリケーションによるデータ処理が完了したと判定した場合、ステップS126において、メモリ制御部231は、最後尾を除くアプリケーションに対応する仮想メモリ領域に割り当てられた物理メモリ領域を、次のアプリケーションに対応する仮想メモリ領域に割り当てし直す。これとともに、メモリ制御部231は、新たな物理メモリ領域を確保し、その物理メモリ領域を、先頭のアプリケーションに対応する仮想メモリ領域に割り当てる。メモリ制御部231は、このように仮想メモリ領域と物理メモリ領域との対応関係が変更されるように、アドレス変換テーブル250を更新する。
上記変形例の処理は、第2の実施の形態での処理を次のように変形することで実現可能である。図14のステップS125においてすべてのアプリケーションによるデータ処理が完了したと判定した場合、ステップS126において、メモリ制御部231は、最後尾を除くアプリケーションに対応する仮想メモリ領域に割り当てられた物理メモリ領域を、次のアプリケーションに対応する仮想メモリ領域に割り当てし直す。これとともに、メモリ制御部231は、新たな物理メモリ領域を確保し、その物理メモリ領域を、先頭のアプリケーションに対応する仮想メモリ領域に割り当てる。メモリ制御部231は、このように仮想メモリ領域と物理メモリ領域との対応関係が変更されるように、アドレス変換テーブル250を更新する。
以上の変形例のようなメモリ割り当て動作が行われた場合でも、第2の実施の形態と同様の効果が得られる。第2の実施の形態のようなメモリ割り当て動作を行うか、または、変形例のようなメモリ割り当て動作を行うかは、例えば、アプリケーションの処理内容や、仮想マシン210,220での他の処理との関係などに応じて選択可能である。
なお、上記の各実施の形態に示した装置(情報処理装置1およびCM110)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc-Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
1 情報処理装置
2 記憶部
2a アドレス情報
3 処理部
10,20 仮想マシン
11,21a,21b プロセス
12,22a,22b 仮想メモリ
31〜33 物理メモリ領域
2 記憶部
2a アドレス情報
3 処理部
10,20 仮想マシン
11,21a,21b プロセス
12,22a,22b 仮想メモリ
31〜33 物理メモリ領域
Claims (6)
- 第1の仮想マシンと第2の仮想マシンとが動作し、3以上のプロセスを含む複数のプロセスのそれぞれが前記第1の仮想マシンと前記第2の仮想マシンのいずれかにおいて並列に実行され、前記第1の仮想マシンにおいて前記複数のプロセスのうちの少なくとも1つが実行されるとともに、前記第2の仮想マシンにおいて前記複数のプロセスのうちの他の少なくとも1つが実行される情報処理装置において、
前記複数のプロセスの実行時にそれぞれ参照される複数の仮想メモリのアドレスと、前記複数の仮想メモリのそれぞれに割り当てられる物理メモリ領域のアドレスとの対応関係が登録されたアドレス情報を記憶する記憶部と、
前記複数の仮想メモリのそれぞれに物理メモリ領域が割り当てられた状態において、前記複数のプロセスにあらかじめ付与された順位に基づいて、前記複数の仮想メモリのうち、順位が最後のプロセスに対応する仮想メモリを除く他の仮想メモリのそれぞれに割り当てられた物理メモリ領域の割り当て先が、現在割り当てられている仮想メモリに対応するプロセスの次のプロセスに対応する仮想メモリに変更されるように前記アドレス情報を更新する処理部と、
を有する情報処理装置。 - 前記処理部は、前記複数の仮想メモリのうち、順位が最後のプロセスに対応する仮想メモリを除く他の仮想メモリのそれぞれに割り当てられた物理メモリ領域の割り当て先が、現在割り当てられている仮想メモリに対応するプロセスの次のプロセスに対応する仮想メモリに変更されるとともに、順位が最後のプロセスに対応する仮想メモリに割り当てられた物理メモリ領域の割り当て先が、順位が最初のプロセスに対応する仮想メモリに変更されるように、前記アドレス情報を更新する請求項1記載の情報処理装置。
- 前記処理部は、前記複数のプロセスの実行が完了するかを監視し、前記複数のプロセスのすべての実行が完了したとき、前記複数の仮想メモリのうち、順位が最後のプロセスに対応する仮想メモリを除く他の仮想メモリのそれぞれに割り当てられた物理メモリ領域の割り当て先が、現在割り当てられている仮想メモリに対応するプロセスの次のプロセスに対応する仮想メモリに変更されるように前記アドレス情報を更新する請求項1または2記載の情報処理装置。
- 前記第1の仮想マシンは、ストレージ装置に対する第1のデータ書き込み要求を、前記第1の仮想マシンでのデータアクセス単位である第1のブロック単位で受信して、前記ストレージ装置に対する書き込み処理を実行し、
前記第2の仮想マシンは、前記ストレージ装置に対するファイル単位での第2のデータ書き込み要求を受信し、前記第1の仮想マシンを介して前記ストレージ装置に対する書き込み処理を実行し、
前記複数のプロセスのうち前記第2の仮想マシンにおいて実行されるプロセスの1つは、前記第2のデータ書き込み要求によって書き込みが要求された書き込みデータを前記第1の仮想マシンに受け渡す処理を行うプロセスであり、
前記複数のプロセスのうち前記第1の仮想マシンにおいて実行されるプロセスの1つは、前記第2の仮想マシンから受け渡された前記書き込みデータを、前記第2の仮想マシンでのデータアクセス単位である第2のブロック単位のデータから、前記第1のブロック単位のデータに変換する処理を行うプロセスである、
請求項1乃至3のいずれか1項に記載の情報処理装置。 - 第1の仮想マシンと第2の仮想マシンとが動作し、3以上のプロセスを含む複数のプロセスのそれぞれが前記第1の仮想マシンと前記第2の仮想マシンのいずれかにおいて並列に実行され、前記第1の仮想マシンにおいて前記複数のプロセスのうちの少なくとも1つが実行されるとともに、前記第2の仮想マシンにおいて前記複数のプロセスのうちの他の少なくとも1つが実行される情報処理装置が、
前記複数のプロセスの実行時にそれぞれ参照される複数の仮想メモリのアドレスと、前記複数の仮想メモリのそれぞれに割り当てる物理メモリ領域のアドレスとの対応関係を、記憶部に記憶されたアドレス情報に登録し、
前記複数のプロセスにあらかじめ付与された順位に基づいて、前記複数の仮想メモリのうち、順位が最後のプロセスに対応する仮想メモリを除く他の仮想メモリのそれぞれに割り当てられた物理メモリ領域の割り当て先が、現在割り当てられている仮想メモリに対応するプロセスの次のプロセスに対応する仮想メモリに変更されるように前記アドレス情報を更新する、
メモリ管理方法。 - 第1の仮想マシンと第2の仮想マシンとが動作し、3以上のプロセスを含む複数のプロセスのそれぞれが前記第1の仮想マシンと前記第2の仮想マシンのいずれかにおいて並列に実行され、前記第1の仮想マシンにおいて前記複数のプロセスのうちの少なくとも1つが実行されるとともに、前記第2の仮想マシンにおいて前記複数のプロセスのうちの他の少なくとも1つが実行されるコンピュータに、
前記複数のプロセスの実行時にそれぞれ参照される複数の仮想メモリのアドレスと、前記複数の仮想メモリのそれぞれに割り当てる物理メモリ領域のアドレスとの対応関係を、記憶部に記憶されたアドレス情報に登録し、
前記複数のプロセスにあらかじめ付与された順位に基づいて、前記複数の仮想メモリのうち、順位が最後のプロセスに対応する仮想メモリを除く他の仮想メモリのそれぞれに割り当てられた物理メモリ領域の割り当て先が、現在割り当てられている仮想メモリに対応するプロセスの次のプロセスに対応する仮想メモリに変更されるように前記アドレス情報を更新する、
処理を実行させるメモリ管理プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014255125A JP2016115253A (ja) | 2014-12-17 | 2014-12-17 | 情報処理装置、メモリ管理方法およびメモリ管理プログラム |
US14/932,106 US20160179432A1 (en) | 2014-12-17 | 2015-11-04 | Information processing apparatus and memory management method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014255125A JP2016115253A (ja) | 2014-12-17 | 2014-12-17 | 情報処理装置、メモリ管理方法およびメモリ管理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016115253A true JP2016115253A (ja) | 2016-06-23 |
Family
ID=56129419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014255125A Withdrawn JP2016115253A (ja) | 2014-12-17 | 2014-12-17 | 情報処理装置、メモリ管理方法およびメモリ管理プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20160179432A1 (ja) |
JP (1) | JP2016115253A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018018272A (ja) * | 2016-07-27 | 2018-02-01 | 富士通株式会社 | 制御装置および情報処理システム |
WO2019012958A1 (ja) * | 2017-07-11 | 2019-01-17 | 株式会社Seltech | ハイパーバイザプログラム |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8521966B2 (en) * | 2007-11-16 | 2013-08-27 | Vmware, Inc. | VM inter-process communications |
US9870158B2 (en) * | 2015-11-10 | 2018-01-16 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Rack mountable computer system that includes microarray storage systems |
GB2552831B (en) * | 2016-08-12 | 2019-01-02 | Sony Interactive Entertainment Inc | Memory allocation apparatus and method |
US11204702B2 (en) | 2017-08-15 | 2021-12-21 | Red Hat Israel, Ltd. | Storage domain growth management |
US11609845B2 (en) * | 2019-05-28 | 2023-03-21 | Oracle International Corporation | Configurable memory device connected to a microprocessor |
US11449419B2 (en) * | 2020-08-17 | 2022-09-20 | Micron Technology, Inc. | Disassociating memory units with a host system |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6907600B2 (en) * | 2000-12-27 | 2005-06-14 | Intel Corporation | Virtual translation lookaside buffer |
JP3892829B2 (ja) * | 2003-06-27 | 2007-03-14 | 株式会社東芝 | 情報処理システムおよびメモリ管理方法 |
US7318140B2 (en) * | 2004-06-10 | 2008-01-08 | International Business Machines Corporation | Method and apparatus for dynamic hosting partition page assignment |
US7958506B2 (en) * | 2006-06-22 | 2011-06-07 | Intel Corporation | Time sliced interrupt processing on virtualized platform |
US7801993B2 (en) * | 2007-07-19 | 2010-09-21 | Hitachi, Ltd. | Method and apparatus for storage-service-provider-aware storage system |
US8037279B2 (en) * | 2008-06-12 | 2011-10-11 | Oracle America, Inc. | Method and system for cross-domain data sharing |
US8443166B2 (en) * | 2009-03-06 | 2013-05-14 | Vmware, Inc. | Method for tracking changes in virtual disks |
US9529636B2 (en) * | 2009-03-26 | 2016-12-27 | Microsoft Technology Licensing, Llc | System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine |
US8719069B2 (en) * | 2009-07-23 | 2014-05-06 | Brocade Communications Systems, Inc. | Method and apparatus for providing virtual machine information to a network interface |
US8271450B2 (en) * | 2009-10-01 | 2012-09-18 | Vmware, Inc. | Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory |
US8578126B1 (en) * | 2009-10-29 | 2013-11-05 | Netapp, Inc. | Mapping of logical start addresses to physical start addresses in a system having misalignment between logical and physical data blocks |
US8510265B1 (en) * | 2010-03-31 | 2013-08-13 | Emc Corporation | Configuration utility for a data storage system using a file mapping protocol for access to distributed file systems |
US9323689B2 (en) * | 2010-04-30 | 2016-04-26 | Netapp, Inc. | I/O bandwidth reduction using storage-level common page information |
US8874859B2 (en) * | 2010-12-22 | 2014-10-28 | Vmware, Inc. | Guest file system introspection and defragmentable virtual disk format for space efficiency |
US8799904B2 (en) * | 2011-01-21 | 2014-08-05 | International Business Machines Corporation | Scalable system call stack sampling |
US8819833B2 (en) * | 2011-03-01 | 2014-08-26 | Honeywell International Inc. | Assured pipeline threat detection |
US9489396B2 (en) * | 2011-07-01 | 2016-11-08 | V3 Systems Holdings, Inc. | Intermediation of hypervisor file system and storage device models |
US9285992B2 (en) * | 2011-12-16 | 2016-03-15 | Netapp, Inc. | System and method for optimally creating storage objects in a storage system |
CN104067240A (zh) * | 2012-04-30 | 2014-09-24 | 惠普发展公司,有限责任合伙企业 | 块级存储 |
US20140196038A1 (en) * | 2013-01-08 | 2014-07-10 | Commvault Systems, Inc. | Virtual machine management in a data storage system |
US9501860B2 (en) * | 2014-01-03 | 2016-11-22 | Intel Corporation | Sparse rasterization |
US9354821B2 (en) * | 2014-05-20 | 2016-05-31 | Netapp, Inc. | Bridging storage controllers in clustered deployments |
US9665309B2 (en) * | 2014-06-27 | 2017-05-30 | International Business Machines Corporation | Extending existing storage devices in virtualized environments |
-
2014
- 2014-12-17 JP JP2014255125A patent/JP2016115253A/ja not_active Withdrawn
-
2015
- 2015-11-04 US US14/932,106 patent/US20160179432A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018018272A (ja) * | 2016-07-27 | 2018-02-01 | 富士通株式会社 | 制御装置および情報処理システム |
WO2019012958A1 (ja) * | 2017-07-11 | 2019-01-17 | 株式会社Seltech | ハイパーバイザプログラム |
JPWO2019012958A1 (ja) * | 2017-07-11 | 2020-05-07 | 積水ハウス株式会社 | ハイパーバイザプログラム |
JP7090080B2 (ja) | 2017-07-11 | 2022-06-23 | 積水ハウス株式会社 | ハイパーバイザプログラム |
Also Published As
Publication number | Publication date |
---|---|
US20160179432A1 (en) | 2016-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2016115253A (ja) | 情報処理装置、メモリ管理方法およびメモリ管理プログラム | |
JP5459811B2 (ja) | 仮想ストレージ移行のための方法およびシステム、ならびに仮想マシンモニタ | |
US9448728B2 (en) | Consistent unmapping of application data in presence of concurrent, unquiesced writers and readers | |
JP5860462B2 (ja) | 計算機システム及びデータ移行方法 | |
JP4884198B2 (ja) | ストレージネットワークの性能管理方法、並びに、その方法を用いた計算機システム及び管理計算機 | |
JP5603941B2 (ja) | 計算機システム及びデータ移行方法 | |
US8639898B2 (en) | Storage apparatus and data copy method | |
US20100131728A1 (en) | Computer-readable recording medium storing data migration program, data migration method, and data migration apparatus | |
JP6511795B2 (ja) | ストレージ管理装置、ストレージ管理方法、ストレージ管理プログラムおよびストレージシステム | |
KR101454146B1 (ko) | 스토리지 장치, 제어 장치 및 기록 매체 | |
JP2013531283A (ja) | ストレージの仮想化機能と容量の仮想化機能との両方を有する複数のストレージ装置を含んだストレージシステム | |
US9836223B2 (en) | Changing storage volume ownership using cache memory | |
WO2014174570A1 (ja) | ストレージ管理計算機、ストレージ管理方法、およびストレージシステム | |
EP1637987A2 (en) | Operation environment associating data migration method | |
US9582214B2 (en) | Data access method and data access apparatus for managing initialization of storage areas | |
WO2012147119A1 (en) | Management system and control method for provisioning storage space to writable snapshots satisfying performance requirements | |
JP6028415B2 (ja) | 仮想サーバ環境のデータ移行制御装置、方法、システム | |
WO2018158808A1 (ja) | 情報システム、管理プログラム及び情報システムのプログラム交換方法 | |
US20070271430A1 (en) | Computer systems, management computers and storage system management method | |
US8566541B2 (en) | Storage system storing electronic modules applied to electronic objects common to several computers, and storage control method for the same | |
JP6271769B2 (ja) | 計算機システム、計算機システムにおけるデータの移行方法 | |
US11675545B2 (en) | Distributed storage system and storage control method | |
US11340820B2 (en) | Storage system and data migration method of migrating group of volume and logical resources of the volume | |
JP2005099971A (ja) | 仮想テープ装置の入出力制御方法 | |
JP7113698B2 (ja) | 情報システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171113 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20180605 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180611 |