JP6439887B1 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP6439887B1
JP6439887B1 JP2018020624A JP2018020624A JP6439887B1 JP 6439887 B1 JP6439887 B1 JP 6439887B1 JP 2018020624 A JP2018020624 A JP 2018020624A JP 2018020624 A JP2018020624 A JP 2018020624A JP 6439887 B1 JP6439887 B1 JP 6439887B1
Authority
JP
Japan
Prior art keywords
memory
file
node
calculation
calculation process
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018020624A
Other languages
English (en)
Other versions
JP2019139404A (ja
Inventor
裕太 渡辺
裕太 渡辺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2018020624A priority Critical patent/JP6439887B1/ja
Application granted granted Critical
Publication of JP6439887B1 publication Critical patent/JP6439887B1/ja
Publication of JP2019139404A publication Critical patent/JP2019139404A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Advance Control (AREA)

Abstract

【課題】制御ノードと計算ノードとを有する情報処理装置において、計算ノードで動作する複数のプロセス間でメモリ共有の可否を制御する方法の実現が望まれていること。【解決手段】情報処理装置は、第1のメモリを有しオペレーティングシステムが組み込まれた制御ノードと、第2のメモリを有し、制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有し、第1のメモリと第2のメモリとには、ファイルの内容を記憶する第1のメモリ領域がそれぞれ形成されている。制御ノードは、計算ノードで動作する第1の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、第1の計算プロセスと計算ノードで上記第1のメモリ領域を利用している第2の計算プロセスとで第2のメモリの第1のメモリ領域を共有させるか否かを決定する。【選択図】図8

Description

本発明は、情報処理装置、情報処理方法、制御ノード、およびプログラムに関する。
メモリマップドファイル機能は、ファイルを仮想アドレス空間上の領域にマッピングさせる機能である。プロセスごとに固有の内容を保持するプライベートマッピングと、プロセス間で内容を共有する共有マッピングとがある。メモリマップドファイル機能を利用すると、システムコールを使ってファイルの内容を読み書きする必要はなく、メモリアクセス命令でファイルの内容を読み書きできる。
メモリマップドファイル機能は、通常、オペレーティングシステムの一つの機能として提供される。従って、オペレーティングシステムが組み込まれていないコンピュータ単体では、メモリマップドファイル機能を利用することは困難である。
他方、オペレーティングシステムが組み込まれていないコンピュータとオペレーティングシステムが組み込まれているコンピュータとで構成されるマルチプロセッサシステムにおいて、オペレーティングシステムが組み込まれているコンピュータの制御により、オペレーティングシステムが組み込まれていないコンピュータでメモリマップドファイル機能を利用可能にした技術が特許文献1で提案されている。
特許文献1に記載される技術では、第1のメモリを有しオペレーティングシステムが組み込まれたコンピュータ(以下、制御ノードと記す)と、第2のメモリを有し、制御ノードにより制御される、オペレーティングシステムが組み込まれていないコンピュータ(以下、計算ノードと記す)とを有する情報処理装置において、第1のメモリと第2のメモリとには、双方のメモリ間でデータの内容を同期する共有メモリ領域がそれぞれ形成されており、制御ノードは、計算ノードの動作が停止しているときに、第1のメモリと第2のメモリとにそれぞれ形成されている共有メモリ領域内のデータの同期を行うように構成されている。これによって、制御ノードで動作するプロセスと計算ノードで動作するプロセスとが同じファイルをメモリマップドファイル機能の共有マッピングという形態でアクセスすることを可能にしている。
特許第5949977号公報
前述したように、特許文献1に記載する技術を使用することにより、計算ノードで動作するプロセスは、ファイルをメモリマップドファイル機能の共有マッピングという形態でアクセスすることができる。しかしながら、特許文献1には、第2のメモリを計算ノードで動作する複数のプロセスで共有する方法については説明されていない。また、メモリマップドファイルには、メモリを複数のプロセスで共有する共有マッピングと、複数のプロセスが別々のメモリをアクセスするプライベートマッピングという異なる形態が存在する。しかし、特許文献1には、プライベートマッピングについては説明されていない。そのため、制御ノードと計算ノードとを有する情報処理装置において、計算ノードで動作する複数のプロセス間でメモリ共有の可否を制御する方法の実現が望まれている。
本発明の目的は、上述した課題、即ち、制御ノードと計算ノードとを有する情報処理装置において、計算ノードで動作する複数のプロセス間でメモリ共有の可否を制御する方法の実現が望まれている、という課題を解決する情報処理装置を提供することにある。
本発明の一形態に係る情報処理装置は、
第1のメモリを有しオペレーティングシステムが組み込まれた制御ノードと、第2のメモリを有し、前記制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有し、
前記第1のメモリと前記第2のメモリとには、ファイルの内容を記憶する第1のメモリ領域がそれぞれ形成されており、
前記制御ノードは、前記計算ノードで動作する第1の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、前記第1の計算プロセスと前記計算ノードで前記第1のメモリ領域を利用している第2の計算プロセスとで前記第2のメモリの前記第1のメモリ領域を共有させるか否かを決定するように構成されている。
また本発明の他の形態に係る情報処理方法は、
第1のメモリを有しオペレーティングシステムが組み込まれた制御ノードと、第2のメモリを有し、前記制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有し、前記第1のメモリと前記第2のメモリとには、ファイルの内容を記憶する第1のメモリ領域がそれぞれ形成された情報処理処置が実行する情報処理方法であって、
前記制御ノードは、前記計算ノードで動作する第1の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、前記第1の計算プロセスと前記計算ノードで前記第1のメモリ領域を利用している第2の計算プロセスとで前記第2のメモリの前記第1のメモリ領域を共有させるか否かを決定する。
また本発明の他の形態に係る制御ノードは、
オペレーティングシステムが組み込まれていない計算ノードを制御する機能を有する、オペレーティングシステムが組み込まれた制御ノードであって、
第1のメモリを有し、
前記第1のメモリには、前記計算ノードが有する第2のメモリの第1のメモリ領域に記憶されたファイルと同じファイルの内容を記憶する第1のメモリ領域が形成されており、
前記計算ノードで動作する第1の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、前記第1の計算プロセスと前記計算ノードで前記第1のメモリ領域を利用している第2の計算プロセスとで前記第2のメモリの前記第1のメモリ領域を共有させるか否かを決定する判定手段を有する。
また本発明の他の形態に係るプログラムは、
第1のメモリを有し、前記第1のメモリには、オペレーティングシステムが組み込まれていない計算ノードが有する第2のメモリの第1のメモリ領域に記憶されたファイルと同じファイルの内容を記憶する第1のメモリ領域が形成されている、前記計算ノードを制御する機能を有する、オペレーティングシステムが組み込まれた制御ノードを、
前記計算ノードで動作する第1の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、前記第1の計算プロセスと前記計算ノードで前記第1のメモリ領域を利用している第2の計算プロセスとで前記第2のメモリの前記第1のメモリ領域を共有させるか否かを決定する判定手段として機能させる。
本発明は、上述した構成を有することにより、制御ノードと計算ノードとを有する情報処理装置において、計算ノードで動作する複数のプロセス間でメモリ共有の可否を制御することができる。
本発明の第1の実施形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。 本発明の第1の実施形態の情報処理装置のソフトウェア構成の一例を示すブロック図である。 本発明の第1の実施形態で使用する、計算ノードの物理メモリ共有要否の判定基準の一例を示す図である。 本発明の第1の実施形態の計算ノードにおける計算プロセスが実行する処理の一例を表すフローチャートである。 本発明の第1の実施形態の制御ノードにおける代理プロセスと計算ノード管理手段とが実行する処理の一例を表すフローチャートである。 本発明の第1の実施形態において共有マッピングでファイルをマップするときの動作を説明する図である。 本発明の第1の実施形態において読み込み専用のプライベートマッピングでファイルをマップするときの動作を説明する図である。 本発明の第1の実施形態において読み書き可能なプライベートマッピングでファイルをマップするときの動作を説明する図である。 本発明の第2の実施形態に係る情報処理装置のブロック図である。
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図1は、本発明の第1の実施形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。図1を参照すると、本実施形態の情報処理装置は、制御ノード100と、計算ノード200と、制御ノード100と計算ノード200間を接続するノード間通信手段300とから構成されている。図1の例では、計算ノード200は1つであるが、2つ以上あっても良い。
制御ノード100は、物理メモリ120と、プロセッサ180と、データ転送手段190とを含んで構成されている。計算ノード200は、物理メモリ220と、プロセッサ280と、データ転送手段290とを含んで構成されている。制御ノード100と計算ノード200とは、同じコンピュータアーキテクチャを有していても良いし、互いに異なるコンピュータアーキテクチャを有していても良い。物理メモリ120、220と、プロセッサ180、280と、データ転送手段190、290とは、ノード内ではお互いに接続されており、プロセッサ180、280は、自ノード内の物理メモリ120、220、データ転送手段190、290にアクセス可能である。また、本実施形態の情報処理装置は、制御ノード100が計算ノード200の物理メモリ220へアクセスするときは、ノード間通信手段300を使用する。
データ転送手段190、290は、プロセッサ180、280を介さずに物理メモリ120、220に対してアクセスするDMA(Direct Memory Access)エンジン、プロセッサ180、280上のレジスタ等の資源に対してアクセスする対プロセッサ通信機能を有している。
計算ノード200のプロセッサ280は、1つ以上のプロセッサコアを含んで構成されている。計算ノード200のプロセッサコアを計算コアと呼ぶ。計算コアは、例えば、汎用レジスタ群と、制御レジスタ群と、例外検出手段と、レジスタ群アクセス手段と、例外通知手段とを有している。プロセッサ280は、並列に命令を実行しており、ある命令がページフォールトを発生させても、その命令から実行を再開させることができなくても良い。
汎用レジスタ群は、x86やARMなどの一般的なプロセッサと同様に、プログラムカウンタ(PC)や演算結果を格納するための汎用レジスタ(GPR)などから構成される。これらのレジスタは、プロセッサ280の計算コアでの命令の実行に伴い書き換えられる。また、プロセッサ280の計算コアがロード命令、ストア命令を実行することで、汎用レジスタ群とメモリとの間でデータ転送が行われる。
制御レジスタ群は、プロセッサ280の計算コアの実行を制御するためのレジスタである。制御ノード100は、プロセッサ280の計算コアの制御レジスタに対して、ノード間通信手段300及びデータ転送手段190、290を通じて、命令の実行の開始及び実行の停止を指示する。
例外検出手段は、命令の実行中に何らかの例外を検出した場合に、制御レジスタ群に実行の停止の指示を行う。同時に、例外検出手段は、例外通知手段に対して、例外通知の依頼を行う(例外発生情報を送信する)。上記の例外とは、ゼロ除算例外などの演算例外、ページフォールトやメモリアクセス境界違反などのメモリアクセス系例外、システムコール呼び出しのためのソフトウェアトラップなどの一般のプロセッサで発生する例外を指す。
例外通知手段は、例外検出手段から取得した例外発生情報に基づき、ノード間通信手段300を用いて、制御ノード100に対して、プロセッサ280の計算コアでの例外を通知する。
レジスタ群アクセス手段は、制御ノード100から発行された指示に基づいて、汎用レジスタ群及び制御レジスタ群の各レジスタに対して読み出し・書き込みを行う。
図2は、本実施形態の情報処理装置のソフトウェア構成の一例を示すブロック図である。図2を参照すると、計算ノード200上では、複数の計算プロセス240、250、260が動作する。計算プロセス240、250、260は、計算ノード200上で動作するアプリケーションプログラムの開始等に伴い生成され、その実行の終了に伴って破棄される。
計算ノード200では、オペレーティングシステムが動作しない。そのため、オペレーティングシステムが提供するサービスの代替機能を、制御ノード100がノード間通信手段300を介して計算ノード200に対して提供する。
一方、制御ノード100は、計算ノード管理手段110と、ファイルシステム130と、複数の代理プロセス140、150、160と、オペレーティングシステム170とを有する。
ファイルシステム130は、ファイル131、132を保持する。ファイル131、132は、デバイス番号とiノード番号の組合せなどで構成されたファイル識別情報で特定可能である。ファイルシステム130は、物理メモリ120に保持することもでき、或いは制御ノード100からアクセス可能な外部ストレージに保持することもできる。
オペレーティングシステム170は、例えば、メモリマップドファイル機能やシステムコールなどのオペレーティングシステムとしての一般的な機能を有している。オペレーティングシステム170は、Linux(登録商標)やWindows(登録商標)などに代表される計算機に用いられるコモディティのオペレーションシステムであって良い。
代理プロセス140、150、160は、計算ノード200上の計算プロセス240、250、260に対して1対1に対応して生成される。代理プロセス140、150、160は、対応する計算プロセス240、250、260が発行するシステムコール要求を、ノード間通信手段300、計算ノード管理手段110を介して受け付ける。そして、代理プロセス140、150、160は、計算ノード200上に存在するべきオペレーションシステムの代替でシステムコール処理を行う。
また代理プロセス140、150、160は、システムコール要求を代理実行する機能を複数有する。例えば、代理プロセス140、150、160は、計算プロセス240、250、260のメモリ更新を行うシステムコールを代理実行する。また、代理プロセス140、150、160は、計算プロセス240、250、260のメモリマップドファイル要求を代理実行する。
代理プロセス140、150、160が利用する物理メモリ120の領域と、ファイルシステム130上のファイルとの対応状態を表す情報は、オペレーティングシステム170が保持する。
計算ノード管理手段110は、計算ノード200上のプロセッサ280、物理メモリ220などのハードウェア資源の管理を行う。また、計算ノード管理手段110は、一部のリソースに対する代理プロセス140、150、160からプロセッサ280へのアクセスの仲介なども実施する。例えば、計算ノード管理手段110は、計算プロセス240、250、260を生成する際のプロセッサ280中の計算コアの割り当て、計算ノード200上のメモリ管理、計算プロセス240、250、260から代理プロセス140、150、160に対するシステムコールの仲介などを行う。また、計算ノード管理手段110は、計算プロセス240、250、260が利用する物理メモリ220の領域と、ファイルシステム130上のファイルとの対応関係を表す情報を管理する。以上のような操作を実現するために、計算ノード管理手段110は、計算ノード200上のプロセッサ280及び物理メモリ220などのハードウェア資源と計算プロセス240、250、260や代理プロセス140、150、160などのソフトウェア資源との紐付けを行って、これらを管理する。
また、計算ノード管理手段110は、制御ノード100上の物理メモリ120と計算ノード200上の物理メモリとの同期をとる機能を有する。例えば、計算ノード管理手段110は、計算ノード200上の物理メモリ220の領域内のデータの更新内容を、制御ノード100上の物理メモリ120上の対応する領域にコピーする。或いは計算ノード管理手段110は、制御ノード100上の物理メモリ120の領域内のデータの更新内容を、計算ノード200上の物理メモリ220上の対応する領域にコピーする。この同期は、例えば特許文献1に記載されるように、計算ノード200のプロセッサ280の動作が停止しているときに行われる。
さらに、計算ノード管理手段110は、図2に示すように、計算ノードの物理メモリ共有要否判定手段(以下、単に判定手段と記す)111を有している。判定手段111は、計算プロセス240、250、260がメモリマップドファイルを要求した際に、計算ノード200の物理メモリ220の共有要否を、ファイル識別情報、ファイル更新日時、マッピング種別などの情報に基づいて判定するように構成されている。
図3は、計算ノードの物理メモリ共有要否の判定基準の一例を示す。判定手段111は、計算ノード200の物理メモリ220上に既に存在するファイルのファイル識別情報と同じファイル識別情報を有するファイルのメモリマップドファイル要求が発生した場合、図3に示す判定基準に基づいて計算ノードの物理メモリ共有の要否を判定する。図3に示す判定基準では、マッピング種別が共有マッピングの場合、読み込み専用であるか、読み書き可能であるかを問わず、共有が必要である。また、マッピング種別がプライベートマッピングの場合、読み書き可能であれば、共有が不要である。また、読み込み専用のプライベートマッピングであれば、当該ファイルの更新日時に変化がない場合(つまり更新日時が同じ場合)は、共有が必要である(従って、更新日時が相違する場合、共有は不要である)。
判定手段111は、発生したメモリマップドファイル要求を解析することにより、メモリマップドファイルを要求されたファイルのファイル識別情報、マッピング種別を取得することができる。また判定手段111は、計算ノード200の物理メモリ220上に既に存在するメモリマップドファイルのファイル識別情報、ファイル更新日時、およびそのメモリ領域は、例えば計算ノード管理手段110におけるメモリ管理情報やiノードから取得することができる。
以上のような制御ノード100は、既製品のPCサーバや、LSIでも良い。またノード間通信手段300は、PCIエクスプレスや、AXIなどのインターコネクトでも良い。また計算ノード200は、PCIエクスプレスのカードでも良いし、制御ノードに接続されたLSIでも良い。計算ノード200は、アクセラレーターや、グラフィックスプロセッシングユニットでも良い。制御ノード100と計算ノード200が一つのLSIに実装されても良い。
次に本実施形態の情報処理装置の動作を説明する。
図4は、計算ノード200における計算プロセスが実行する処理の一例を表すフローチャートである。図5は、制御ノード100における代理プロセスと計算ノード管理手段とが実行する処理の一例を表すフローチャートである。図5の各処理は、代理プロセスが行っても良いし、計算ノード管理手段が行っても良い。但し、物理メモリの共有要否の判定514は、計算ノードの物理メモリ共有要否判定手段111が行う。
<共有マッピング>
図6は、共有マッピングでファイルをマップするときの動作の一例を説明する図である。以下、図1〜図6を参照して、共有マッピングでファイルをマップするときの動作を説明する。
計算プロセス240が共有マッピングでファイル131のマップを要求すると(501)、プロセッサ280が計算プロセス240の実行を停止する(502)。この場合は、代理プロセス140と計算ノード管理手段110とによって図5に示した処理が行われる。まず、上記要求を受信すると(511)、代理プロセス140の仮想アドレス空間上の領域141にファイル131をマップする(512)。これは、オペレーティングシステム170の一般的な機能を用いて行う。その結果、制御ノード100の物理メモリ120上に物理メモリ121が確保され、ファイル131の内容が読み込まれる。次に、ファイル131の内容が計算ノードの物理メモリ220上に存在するか否かを判定する(513)。初めてファイル131をマップする場合は、存在しない。そのため、計算ノード200の物理メモリ220上に物理メモリ221を確保し(515)、計算プロセス240の仮想アドレス空間241に物理メモリ221をマップする(516)。次に、代理プロセス140の仮想アドレス空間の領域141にマップされているファイル131の内容を、計算プロセス240の仮想アドレス空間上の領域241へコピーし(517)、計算プロセス240の実行再開を指示する(519)。すると、計算ノード200で計算プロセス240が実行再開される(503)。
続けて、計算プロセス250が共有マッピングでのファイル131のマップを要求すると(501)、プロセッサ280が計算プロセス250の実行を停止する(502)。この場合は、代理プロセス150と計算ノード管理手段110とによって図5に示した処理が行われる。まず、上記要求を受信すると(511)、代理プロセス150の仮想アドレス空間上の領域151にファイル131をマップする(512)。その結果、物理メモリ121が代理プロセス150の仮想アドレス空間上の領域151にもマップされる。次に、ファイル131の内容が計算ノード200の物理メモリ220上に存在するか否かを判定する(513)。すでにファイル131をマップした計算プロセス240が存在するので、ファイル131の内容が物理メモリ220上の物理メモリ221に存在する。次に、物理メモリ221の共有要否の判定を図3に基づいて行う(514)。共有マッピングの場合は、読み込み専用であるか、読み書き可能であるかを問わず、常に共有が必要と判定する。そのため、計算プロセス250の仮想アドレス空間上の領域251に物理メモリ221をマップし(518)、計算プロセス250の実行再開を指示する(519)。すると、計算ノード200で計算プロセス250が実行再開される(503)。この結果、計算プロセス240と計算プロセス250が物理メモリ221を共有するため、メモリマップドファイルを共有メモリとしてプロセス間通信に使用することができる。
<読み込み専用プライベートマッピング>
図7は、読み込み専用のプライベートマッピングでファイルをマップするときの動作の一例を説明する図である。以下、図1〜図5、図7を参照して、読み込み専用のプライベートマッピングでファイルをマップするときの動作を説明する。
計算プロセス240が読み込み専用のプライベートマッピングでのファイル131のマップを要求すると(501)、プロセッサ280が計算プロセス240の実行を停止する(502)。この場合は、代理プロセス140と計算ノード管理手段110とが図5の処理を行う。まず、上記要求を受信すると(511)、代理プロセス140の仮想アドレス空間上の領域142にファイル131をマップする(512)。これは、オペレーティングシステム170の一般的な機能を用いて行う。その結果、制御ノード100の物理メモリ120上に物理メモリ122が確保され、ファイル131の内容が読み込まれる。次に、ファイル131の内容が計算ノード200の物理メモリ220上に存在するか否かを判定する(513)。初めてファイル131をマップする場合は、存在しない。そのため、計算ノード200の物理メモリ220上に物理メモリ222を確保し(515)、計算プロセス240の仮想アドレス空間上の領域242に物理メモリ222をマップする(516)。次に、代理プロセス140の仮想アドレス空間上の領域142にマップされているファイル131の内容を、計算プロセス240の仮想アドレス空間上の領域242へコピーし(517)、計算プロセス240の実行再開を指示する(519)。すると、計算ノード200で計算プロセス240が実行再開される(503)。
続けて、計算プロセス250が読み込み専用のプライベートマッピングでのファイル131のマップを要求すると(501)、プロセッサ280が計算プロセス250の実行を停止する(502)。この場合は、代理プロセス150と計算ノード管理手段110とが図5の処理を行う。まず、上記要求を受信すると(511)、代理プロセス150の仮想アドレス空間上の領域152にファイル131をマップする(510)。その結果、物理メモリ122が代理プロセス150の仮想アドレス空間上の領域152にもマップされる。次に、ファイル131の内容が計算ノード200の物理メモリ220上に存在するか否かを判定する(513)。すでにファイル131をマップした計算プロセス240が存在するので、ファイル131の内容が物理メモリ223に存在する。次に、物理メモリ223の共有要否の判定を図3に基づいて行う(514)。読み込み専用のプライベートマッピングの場合、ファイルが同一で、かつ、ファイルの更新日時が同一であれば、共有が必要と判定する。そのため、計算プロセス250の仮想アドレス空間上の領域252に物理メモリ222をマップし(518)、計算プロセス250の実行再開を指示する(519)。すると、計算ノード200で計算プロセス250が実行再開される(503)。この結果、計算プロセス240と計算プロセス250とが物理メモリ222を共有することで、省メモリを実現できる。
さらに、制御ノード100または計算ノード200のプロセスによって、ファイル131が更新された場合を考える。この場合、オペレーティングシステム170の機能によって、新たに物理メモリ123が割り当てられ、更新内容が保持される(コピーオンライト)。
その後、計算プロセス260が読み込み専用のプライベートマッピングでのファイル131のマップを要求すると(501)、プロセッサ280が計算プロセス260の実行を停止する(502)。この場合は、代理プロセス160と計算ノード管理手段110が図5の処理を行う。まず、上記要求を受信すると(511)、代理プロセス160の仮想アドレス空間上の領域162にファイル131をマップする(510)。その結果、物理メモリ123が代理プロセス160の仮想アドレス空間上の領域162にマップされる。次に、ファイル131の内容が計算ノード200の物理メモリ220上に存在するか判定する(513)。すでにファイル131をマップした計算プロセス240が存在するので、ファイル131の内容が物理メモリ220に存在する。次に、物理メモリの共有要否の判定を図3に基づいて行う(514)。読み込み専用のプライベートマッピングの場合、ファイルが同一であっても、ファイルの更新日時が異なれば、共有が不要と判定する。そのため、計算ノード200の物理メモリ220から物理メモリ223を確保し(515)、計算プロセス260の仮想アドレス空間上の領域262に物理メモリ223をマップする(516)。次に、代理プロセス160の仮想アドレス空間上の領域162にマップされているファイル131の内容を、計算プロセス260の仮想アドレス空間上の領域262へコピーし(517)、計算プロセス260の実行再開を指示する(519)。すると、計算ノード200で計算プロセス260が実行再開される(503)。この結果、計算プロセス260は、ファイル131の更新された内容を参照することができる。
<読み書き可能なプライベートマッピング>
図8は、読み書き可能なプライベートマッピングでファイルをマップするときの動作の一例を説明する図である。以下、図1〜図5、図8を参照して、読み書き可能なプライベートマッピングでファイルをマップするときの動作を説明する。
計算プロセス240が読み書き可能なプライベートマッピングでのファイル131のマップを要求すると(501)、プロセッサ280が計算プロセス240の実行を停止する(502)。この場合は、代理プロセス140と計算ノード管理手段110とが図5の処理を行う。まず、要求を受信すると(511)、代理プロセス140の仮想アドレス空間上の領域143にファイル131をマップする(510)。これは、オペレーティングシステム170の一般的な機能を用いて行う。その結果、制御ノード100の物理メモリ120から物理メモリ124が確保され、ファイル131の内容が読み込まれる。次に、ファイル131の内容が計算ノード200の物理メモリ220上に存在するか否かを判定する(513)。初めてファイル131をマップする場合は、存在しない。そのため、計算ノード200の物理メモリ220から物理メモリ224を確保し(515)、計算プロセス240の仮想アドレス空間上の領域243に物理メモリ224をマップする(516)。代理プロセス140の仮想アドレス空間上の領域143にマップされているファイル131の内容を、計算プロセス240の仮想アドレス空間上の領域243へコピーし(517)、計算プロセス240の実行再開を指示する(519)。すると、計算ノード200で計算プロセス240が実行再開される(503)。
続けて、計算プロセス250が読み書き可能なプライベートマッピングでのファイル131のマップを要求すると(501)、プロセッサ280が計算プロセス250の実行を停止する(502)。計算プロセス250がファイル131のマップを要求した場合は、代理プロセス150と計算ノード管理手段110とが図5の処理を行う。まず、上記要求を受信すると(511)、代理プロセス150の仮想アドレス空間上の領域153にファイル131をマップする(510)。その結果、物理メモリ124が代理プロセス150の仮想アドレス空間上の領域153にもマップされる。次に、ファイル131の内容が計算ノード200の物理メモリ220上に存在するか否かを判定する(513)。すでにファイル131をマップした計算プロセス240が存在するので、ファイル131の内容が物理メモリ220に存在する。次に、物理メモリの共有要否の判定を図3に基づいて行う(514)。読み書き可能なプライベートマッピングの場合、常に共有不要と判定する。そのため、計算ノード200の物理メモリ225を確保し(515)、計算プロセス250の仮想アドレス空間上の領域253に物理メモリ225をマップする(516)。次に、代理プロセス150の仮想アドレス空間上の領域153にマップされているファイルの内容を、計算プロセス250の仮想アドレス空間上の領域253へコピーし(517)、計算プロセス250の実行再開を指示する(519)。すると、計算ノード200で計算プロセス250が実行再開される(503)。この結果、計算プロセス250は、ファイル131の内容をプロセス固有のデータとしてメモリマップドファイル上に保持することができる。
さらに、制御ノード100または計算ノード200のプロセスによって、ファイル131が更新された場合を考える。この場合、オペレーティングシステム170の機能によって、新たに物理メモリ125が割り当てられ、更新内容が保持される(コピーオンライト)。
その後、計算プロセス260が読み書き可能なプライベートマッピングでのファイル131のマップを要求すると(501)、プロセッサ280が計算プロセス260の実行を停止する(502)。この場合は、代理プロセス160と計算ノード管理手段110とが図5の処理を行う。まず、上記要求を受信すると(511)、代理プロセス160の仮想アドレス空間上の領域163にファイル131をマップする(510)。その結果、物理メモリ125が代理プロセス160の仮想アドレス空間上の領域163にマップされる。次に、ファイル131の内容が計算ノード200の物理メモリ220上に存在するか否かを判定する(513)。すでにファイル131をマップした計算プロセス240が存在するので、ファイル131の内容が物理メモリに存在する。次に、物理メモリの共有要否の判定を図3に基づいて行う(514)。読み書き可能なプライベートマッピングの場合、常に共有が不要と判定する。そのため、計算ノード200の物理メモリ226を確保し(515)、計算プロセス260の仮想アドレス空間上の領域263に物理メモリ226をマップする(516)。次に、代理プロセス160の仮想アドレス空間上の領域163にマップされているファイルの内容を、計算プロセス260の仮想アドレス空間上の領域263へコピーし(517)、計算プロセス260の実行再開を指示する(519)。すると、計算ノード200で計算プロセス260が実行再開される(503)。この結果、計算プロセス260は、ファイル131の内容をプロセス固有のデータとしてメモリマップドファイル上に保持することができる。
以上のように構成され動作する本実施形態によれば、以下のような効果が奏される。
主記憶を共有しない、制御ノードと計算ノードから構成されるマルチプロセッサシステムにおいて、制御ノードのファイルシステム上にあるファイルを、計算ノード上で動作する計算プロセスの仮想メモリ空間にマップし、メモリアクセス命令でファイルの内容を読み書きできる。
共有マッピングで同一ファイルをマップすると、計算ノード上で動作する複数プロセス間で物理メモリを共有し、共有メモリとしてプロセス間通信に使用できる。
読み込み専用のプライベートマッピングで同一ファイルをマップした場合、ファイルの更新日時に変化がなければ、計算ノード上で動作する複数プロセス間で物理メモリを共有し、メモリを効率的に利用できる。例えば、同一の入力データを複数のプロセスが参照する場合に、メモリを効率的に利用できる。
読み込み専用のプライベートマッピングで同一ファイルをマップした場合でも、ファイルの更新日時に変化があれば、新たに物理メモリを確保し、最新のファイルの内容を読み込める。例えば、実行ファイルのテキスト領域は読み取り専用のプライベートマッピングでマップされるため、実行ファイルをビルドし直して、実行すると、最新の実行ファイルを実行できる。
読み書き可能なプライベートマッピングの場合は、同一のファイルをプロセス毎に固有なデータとして保持できる。例えば、実行ファイルのデータ領域は読み書き可能なプライベートマッピングでマップされるため、プロセス毎に固有なデータを保持して計算することができる。
ページフォールトが発生した命令から実行を再開できない計算ノードでも、このようなメモリマップドファイルが実現できる。
計算ノードでオペレーティングシステムが動作していなくても、このようなメモリマップドファイルが実現できる。
これらの結果、計算ノード上で動作するプロセスが、あたかも制御ノード上で動作するプロセスと同様に、メモリマップドファイルを扱うことができ、プログラム開発の生産性や移植性が高まる。
[第2の実施形態]
図9は、本発明の第2の実施形態に係る情報処理装置のブロック図である。図9を参照すると、本実施形態の情報処理装置は、制御ノード1000と計算ノード2000とを含んで構成される。
制御ノード1000は、メモリ1001、代理プロセス1003、および、ファイル1006を有し、オペレーティングシステムが組み込まれたコンピュータである。計算ノード2000は、メモリ2001、計算プロセス2003を有し、オペレーティングシステムが組み込まれていないコンピュータである。計算ノード2000は、制御ノード1000により制御されるようになっている。
メモリ1001とメモリ2001とには、ファイル1006の内容を記憶するメモリ領域1002、2002がそれぞれ形成されている。また、計算ノード2000で動作する計算プロセス2003の仮想アドレス空間2004にメモリ領域2002がマッピングされている。また、制御ノード1000で動作する、計算プロセス2003に対応する代理プロセス1003の仮想アドレス空間1004にメモリ領域1002がマッピングされている。これにより、計算プロセス2003は、仮想アドレス空間2004をアクセスすることにより、ファイル1006の内容をアクセスすることができるようになっている。
以上の構成は特許文献1に記載される構成と同じである。本実施形態では、制御ノード1000は、判定手段1005を有している。判定手段1005は、計算ノード2000で動作する計算プロセス2007からファイル識別情報およびマッピング種別を指定してファイル1006のマッピング要求が出されると、ファイル識別情報とマッピング種別とに基づいて、計算プロセス2003と計算プロセス2007とでメモリ領域2002を共有させるか否かを決定するように構成されている。
このように構成された本実施形態の情報処理装置は、以下のように動作する。即ち、計算プロセス2003に既にファイル1006がマップされている状況で、計算ノード2000で動作する計算プロセス2007からファイル識別情報およびマッピング種別を指定してファイル1006のマッピング要求が出されると、制御ノード1000の判定手段1005は、ファイル識別情報とマッピング種別とに基づいて、計算プロセス2003と計算プロセス2007とでメモリ領域2002を共有させるか否かを決定する。このように、制御ノード1000は、制御を行う計算ノードで動作する複数のプロセス間でメモリ共有の可否を制御することができる。その結果、メモリを複数の計算プロセスで共有する共有マッピング、複数の計算プロセスが別々のメモリをアクセスするプライベートマッピングという異なる形態のメモリマップドファイル機能を実現することができる。
本発明は、制御ノードと1または複数の計算ノードとがノード間通信手段で接続された情報処理装置に適用でき、特にHPC(High Performance Computing)向けの並列計算機に利用できる。
100…制御ノード
110…計算ノード管理手段
111…計算ノードの物理メモリ共有要否判定手段
120…物理メモリ
130…ファイルシステム
131…ファイル
132…ファイル
140…代理プロセス
150…代理プロセス
160…代理プロセス
170…オペレーティングシステム
180…プロセッサ
190…データ転送手段
200…計算ノード
220…物理メモリ
240…計算プロセス
250…計算プロセス
260…計算プロセス
280…プロセッサ
290…データ転送手段
300…ノード間通信手段
1000…制御ノード
1001…メモリ
1002…メモリ領域
1003…代理プロセス
1004…仮想アドレス空間
1005…判定手段
1006…ファイル
2000…計算ノード
2001…メモリ
2002…メモリ領域
2003…計算プロセス
2004…仮想アドレス空間
2007…計算プロセス

Claims (9)

  1. 第1のメモリを有しオペレーティングシステムが組み込まれた制御ノードと、第2のメモリを有し、前記制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有し、
    前記第1のメモリと前記第2のメモリとには、ファイルの内容を記憶する第1のメモリ領域がそれぞれ形成されており、
    前記制御ノードは、前記計算ノードで動作する第1の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、前記第1の計算プロセスと前記計算ノードで前記第1のメモリ領域を利用している第2の計算プロセスとで前記第2のメモリの前記第1のメモリ領域を共有させるか否かを決定するように構成された
    情報処理装置。
  2. 前記制御ノードは、前記共有させるか否かの決定では、前記ファイルの更新日時、読み込み専用か否か、読み書き可能か否かのうちの少なくとも一つをさらに考慮して前記共有させるか否かの決定を行う、
    請求項1に記載の情報処理装置。
  3. 前記制御ノードは、前記決定で共有させると決定した場合、前記制御ノードで動作する、前記第1の計算プロセスに対応する代理プロセスの仮想アドレス空間に前記第1のメモリに形成された前記第1のメモリ領域をマッピングし、前記第1の計算プロセスの仮想アドレス空間に前記第2のメモリに形成された前記第1のメモリ領域をマッピングする、
    請求項1または2に記載の情報処理装置。
  4. 前記制御ノードは、前記決定で共有させないと決定した場合、前記制御ノードで動作する、前記第1の計算プロセスに対応する代理プロセスの仮想アドレス空間に前記第1のメモリに形成された前記第1のメモリ領域をマッピングし、前記第2のメモリに、前記ファイルの内容を記憶する第2のメモリ領域を形成し、前記第1の計算プロセスの仮想アドレス空間に前記第2のメモリ領域をマッピングし、前記第1の計算プロセスに対応する前記代理プロセスの仮想アドレス空間から前記ファイルの内容を前記第1の計算プロセスの仮想アドレス空間にコピーする、
    請求項1乃至3の何れかに記載の情報処理装置。
  5. 前記制御ノードは、前記ファイルが更新されると、前記第1のメモリに前記ファイルの更新内容を格納する第3のメモリ領域を生成する
    請求項1乃至4の何れかに記載の情報処理装置。
  6. 前記制御ノードは、前記ファイルの更新後に、前記決定で共有させないと決定した場合、前記制御ノードで動作する、前記第1の計算プロセスに対応する代理プロセスの仮想アドレス空間に前記第1のメモリに形成された前記第3のメモリ領域をマッピングし、前記第2のメモリに、前記ファイルの内容を記憶する第3のメモリ領域を形成し、前記第1の計算プロセスの仮想アドレス空間に前記第2のメモリの前記第3のメモリ領域をマッピングし、前記第1の計算プロセスに対応する前記代理プロセスの仮想アドレス空間から前記ファイルの更新内容を前記第1の計算プロセスの仮想アドレス空間にコピーする、
    請求項5に記載の情報処理装置。
  7. 第1のメモリを有しオペレーティングシステムが組み込まれた制御ノードと、第2のメモリを有し、前記制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有し、前記第1のメモリと前記第2のメモリとには、ファイルの内容を記憶する第1のメモリ領域がそれぞれ形成された情報処理処置が実行する情報処理方法であって、
    前記制御ノードは、前記計算ノードで動作する第1の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とファイル更新日時とマッピング種別とに基づいて、前記第1の計算プロセスと前記計算ノードで前記第1のメモリ領域を利用している第2の計算プロセスとで前記第2のメモリの前記第1のメモリ領域を共有させるか否かを決定する
    情報処理方法。
  8. オペレーティングシステムが組み込まれていない計算ノードを制御する機能を有する、オペレーティングシステムが組み込まれた制御ノードであって、
    第1のメモリを有し、
    前記第1のメモリには、前記計算ノードが有する第2のメモリの第1のメモリ領域に記憶されたファイルと同じファイルの内容を記憶する第1のメモリ領域が形成されており、
    前記計算ノードで動作する第1の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、前記第1の計算プロセスと前記計算ノードで前記第1のメモリ領域を利用している第2の計算プロセスとで前記第2のメモリの前記第1のメモリ領域を共有させるか否かを決定する判定手段を有する
    制御ノード。
  9. 第1のメモリを有し、前記第1のメモリには、オペレーティングシステムが組み込まれていない計算ノードが有する第2のメモリの第1のメモリ領域に記憶されたファイルと同じファイルの内容を記憶する第1のメモリ領域が形成されている、前記計算ノードを制御する機能を有する、オペレーティングシステムが組み込まれた制御ノードを、
    前記計算ノードで動作する第1の計算プロセスからメモリマップドファイル要求が出されると、ファイル識別情報とマッピング種別とに基づいて、前記第1の計算プロセスと前記計算ノードで前記第1のメモリ領域を利用している第2の計算プロセスとで前記第2のメモリの前記第1のメモリ領域を共有させるか否かを決定する判定手段として機能させるためのプログラム。
JP2018020624A 2018-02-08 2018-02-08 情報処理装置 Active JP6439887B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018020624A JP6439887B1 (ja) 2018-02-08 2018-02-08 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018020624A JP6439887B1 (ja) 2018-02-08 2018-02-08 情報処理装置

Publications (2)

Publication Number Publication Date
JP6439887B1 true JP6439887B1 (ja) 2018-12-19
JP2019139404A JP2019139404A (ja) 2019-08-22

Family

ID=64668574

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018020624A Active JP6439887B1 (ja) 2018-02-08 2018-02-08 情報処理装置

Country Status (1)

Country Link
JP (1) JP6439887B1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002157133A (ja) * 2000-11-21 2002-05-31 Hitachi Ltd 計算機システム
JP2016152001A (ja) * 2015-02-19 2016-08-22 日本電気株式会社 情報処理装置、情報処理方法、メインプロセッサコア、プログラム、情報処理方法、サブプロセッサコア

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002157133A (ja) * 2000-11-21 2002-05-31 Hitachi Ltd 計算機システム
JP2016152001A (ja) * 2015-02-19 2016-08-22 日本電気株式会社 情報処理装置、情報処理方法、メインプロセッサコア、プログラム、情報処理方法、サブプロセッサコア

Also Published As

Publication number Publication date
JP2019139404A (ja) 2019-08-22

Similar Documents

Publication Publication Date Title
US10846145B2 (en) Enabling live migration of virtual machines with passthrough PCI devices
US9003149B2 (en) Transparent file system migration to a new physical location
TWI254861B (en) Data processing system, method, and computer readable medium for sharing input/output facilities of a logical partition with another logical partition
US20130060988A1 (en) Method for symmetric live migration of virtual machines
JP3659062B2 (ja) 計算機システム
US8826273B1 (en) Synchronously logging to disk for main-memory database systems through record and replay
US8151275B2 (en) Accessing copy information of MMIO register by guest OS in both active and inactive state of a designated logical processor corresponding to the guest OS
US9122765B1 (en) Efficient overcommitment of main-memory based virtual database system to disk
WO2014090008A1 (zh) 一种任务处理的方法和虚拟机
WO2019061352A1 (zh) 数据加载方法及装置
JP2008033483A (ja) 計算機システム、計算機および計算機動作環境の移動方法
US11003585B2 (en) Determining affinity domain information based on virtual memory address
US10241829B2 (en) Information processing device, information processing method, recording medium, calculation processing device, calculation processing method
US11256530B2 (en) Targeted page migration for guest virtual machine
JP2009157684A (ja) 仮想化プログラム、シミュレーション装置、仮想化方法
US10565135B2 (en) Information processing device, information processing method, main processor core, program, information processing method, and sub processor core
US11263122B2 (en) Implementing fine grain data coherency of a shared memory region
Chakrabarti et al. Intel® software guard extensions (Intel® SGX) architecture for oversubscription of secure memory in a virtualized environment
JP2005122334A (ja) メモリダンプ方法、メモリダンプ用プログラム及び仮想計算機システム
US11907589B2 (en) Unified host memory for coprocessors
JP6439887B1 (ja) 情報処理装置
TWI452468B (zh) 虛擬機器記憶體的分享方法與電腦系統
JP2024116638A (ja) 情報処理装置
US10051087B2 (en) Dynamic cache-efficient event suppression for network function virtualization
US11086660B2 (en) Server virtual address space

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180921

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181023

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181105

R150 Certificate of patent or registration of utility model

Ref document number: 6439887

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150