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

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

▶ NECソリューションイノベータ株式会社の特許一覧

<>
  • 特開-情報処理装置 図1
  • 特開-情報処理装置 図2
  • 特開-情報処理装置 図3
  • 特開-情報処理装置 図4
  • 特開-情報処理装置 図5
  • 特開-情報処理装置 図6
  • 特開-情報処理装置 図7
  • 特開-情報処理装置 図8
  • 特開-情報処理装置 図9
  • 特開-情報処理装置 図10
  • 特開-情報処理装置 図11
  • 特開-情報処理装置 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024116638
(43)【公開日】2024-08-28
(54)【発明の名称】情報処理装置
(51)【国際特許分類】
   G06F 9/54 20060101AFI20240821BHJP
   G06F 15/173 20060101ALN20240821BHJP
【FI】
G06F9/54 A
G06F15/173 665C
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023022340
(22)【出願日】2023-02-16
(71)【出願人】
【識別番号】000232092
【氏名又は名称】NECソリューションイノベータ株式会社
(74)【代理人】
【識別番号】100124811
【弁理士】
【氏名又は名称】馬場 資博
(74)【代理人】
【識別番号】100088959
【弁理士】
【氏名又は名称】境 廣巳
(74)【代理人】
【識別番号】100097157
【弁理士】
【氏名又は名称】桂木 雄二
(74)【代理人】
【識別番号】100187724
【弁理士】
【氏名又は名称】唐鎌 睦
(72)【発明者】
【氏名】夏 鵬
(72)【発明者】
【氏名】渡辺 裕太
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045BB12
5B045DD01
5B045DD05
5B045DD10
5B045DD11
(57)【要約】
【課題】スワップアウトの有無によって、元のファイルの内容が変化すること。
【解決手段】情報処理装置は、オペレーティングシステムが組み込まれた制御ノードと、制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有する。制御ノードは、スワップアウト先を用意し、計算ノードで動作する第1の計算プロセスから共有マッピングでメモリマップドファイル要求が出されると、計算ノードの物理メモリの第1のメモリ領域を第1の計算プロセスに割り当ててファイルの内容を前記第1のメモリ領域に読み込み、第1の計算プロセスに対するスワップアウト要求が出されると、第1のメモリ領域を解放する前に第1のメモリ領域に記憶されたファイルの内容をスワップアウト先に書き出す。
【選択図】図9
【特許請求の範囲】
【請求項1】
オペレーティングシステムが組み込まれた制御ノードと、前記制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有し、
前記制御ノードは、
スワップアウト先を用意し、
前記計算ノードで動作する第1の計算プロセスから共有マッピングでメモリマップドファイル要求が出されると、前記計算ノードの物理メモリの第1のメモリ領域を前記第1の計算プロセスに割り当ててファイルの内容を前記第1のメモリ領域に読み込み、
前記第1の計算プロセスに対するスワップアウト要求が出されると、前記第1のメモリ領域を解放する前に前記第1のメモリ領域に記憶された前記ファイルの内容を前記スワップアウト先に書き出すように構成されている、
情報処理装置。
【請求項2】
前記制御ノードは、さらに、
前記計算ノードで動作する第2の計算プロセスから共有マッピングでメモリマップドファイル要求が出されると、前記ファイルの内容が前記スワップアウト先に書き出されている場合、前記物理メモリの第2のメモリ領域を前記第2の計算プロセスに割り当てて前記スワップアウト先に書き出されていた前記ファイルの内容を前記第2のメモリ領域へ書き戻すように構成されている、
請求項1に記載の情報処理装置。
【請求項3】
前記制御ノードは、さらに、
前記第1の計算プロセスに対するスワップイン要求が出されると、
前記スワップアウト先に書き出されていた前記ファイルの内容が前記第2のメモリ領域へ書き戻されている場合、前記第2のメモリ領域を前記第1の計算プロセスに割り当てるように構成されている、
請求項2に記載の情報処理装置。
【請求項4】
前記制御ノードは、さらに、
前記第1の計算プロセスに対するスワップイン要求が出されると、
前記スワップアウト先に書き出されていた前記ファイルの内容が前記第2のメモリ領域へ書き戻されていない場合、前記物理メモリの第3のメモリ領域を前記第1の計算プロセスに割り当てて前記スワップアウト先に書き出されていた前記ファイルの内容を前記第3のメモリ領域へ書き戻すように構成されている、
請求項3に記載の情報処理装置。
【請求項5】
前記スワップアウト先は、前記制御ノードの物理メモリである、
請求項1乃至4の何れかに記載の情報処理装置。
【請求項6】
前記スワップアウト先は、前記制御ノードのファイルシステムである、
請求項1乃至4の何れかに記載の情報処理装置。
【請求項7】
前記スワップアウト先は、前記計算ノード毎に設けられている、
請求項1乃至4の何れかに記載の情報処理装置。
【請求項8】
オペレーティングシステムが組み込まれた制御ノードと、前記制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有する情報処理装置が実行する情報処理方法であって、
前記制御ノードは、
スワップアウト先を用意し、
前記計算ノードで動作する第1の計算プロセスから共有マッピングでメモリマップドファイル要求が出されると、前記計算ノードの物理メモリの第1のメモリ領域を前記第1の計算プロセスに割り当ててファイルの内容を前記第1のメモリ領域に読み込み、
前記第1の計算プロセスに対するスワップアウト要求が出されると、前記第1のメモリ領域を解放する前に前記第1のメモリ領域に記憶された前記ファイルの内容を前記スワップアウト先に書き出す
情報処理方法。
【請求項9】
オペレーティングシステムが組み込まれていない計算ノードを制御する機能を有する、オペレーティングシステムが組み込まれた制御ノードであって、
スワップアウト先を用意し、
前記計算ノードで動作する第1の計算プロセスから共有マッピングでメモリマップドファイル要求が出されると、前記計算ノードの物理メモリの第1のメモリ領域を前記第1の計算プロセスに割り当ててファイルの内容を前記第1のメモリ領域に読み込み、
前記第1の計算プロセスに対するスワップアウト要求が出されると、前記第1のメモリ領域を解放する前に前記第1のメモリ領域に記憶された前記ファイルの内容を前記スワップアウト先に書き出すように構成されている、
制御ノード。
【請求項10】
オペレーティングシステムが組み込まれていない計算ノードを制御する機能を有する、オペレーティングシステムが組み込まれた制御ノードに、
スワップアウト先を用意する処理と、
前記計算ノードで動作する第1の計算プロセスから共有マッピングでメモリマップドファイル要求が出されると、前記計算ノードの物理メモリの第1のメモリ領域を前記第1の計算プロセスに割り当ててファイルの内容を前記第1のメモリ領域に読み込む処理と、
前記第1の計算プロセスに対するスワップアウト要求が出されると、前記第1のメモリ領域を解放する前に前記第1のメモリ領域に記憶された前記ファイルの内容を前記スワップアウト先に書き出す処理と、
を行わせるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、制御ノード、および、プログラムに関する。
【背景技術】
【0002】
オペレーティングシステムが組み込まれていないコンピュータ(以下、計算ノードと記す)とオペレーティングシステムが組み込まれているコンピュータ(以下、制御ノードと記す)とで構成される情報処理装置において、制御ノードの制御により、計算ノードでメモリマップドファイル機能を利用可能にした技術が知られている。
【0003】
例えば、特許文献1では、制御ノードは、計算ノードで動作する計算プロセスから共有マッピングでメモリマップドファイル要求が出されると、その計算ノードの物理メモリの一部のメモリ領域をその計算プロセスに割り当て、そのメモリ領域にファイルの内容を読み込むようにしている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第6439887号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、緊急ジョブを実行するために必要な空き領域が計算ノードの物理メモリに存在しない場合、動作(Running)中の計算プロセスをスワップアウトして、その計算プロセスが利用していた物理メモリを解放し、空き領域を確保することが行われる。このスワップアウト時、Linux(登録商標)などで行われているように、物理メモリに読み込まれているファイルの内容をストレージ上の元のファイルに書き戻す構成では、スワップアウトの有無によって、元のファイルの内容が変化するという課題がある。
【0006】
本発明の目的は、上述した課題を解決する情報処理装置を提供することにある。
【課題を解決するための手段】
【0007】
本発明の一形態に係る情報処理装置は、
オペレーティングシステムが組み込まれた制御ノードと、前記制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有し、
前記制御ノードは、
スワップアウト先を用意し、
前記計算ノードで動作する第1の計算プロセスから共有マッピングでメモリマップドファイル要求が出されると、前記計算ノードの物理メモリの第1のメモリ領域を前記第1の計算プロセスに割り当ててファイルの内容を前記第1のメモリ領域に読み込み、
前記第1の計算プロセスに対するスワップアウト要求が出されると、前記第1のメモリ領域を解放する前に前記第1のメモリ領域に記憶された前記ファイルの内容を前記スワップアウト先に書き出すように構成されている。
【0008】
また、本発明の他の形態に係る情報処理方法は、
オペレーティングシステムが組み込まれた制御ノードと、前記制御ノードにより制御される、オペレーティングシステムが組み込まれていない計算ノードとを有する情報処理装置が実行する情報処理方法であって、
前記制御ノードは、
スワップアウト先を用意し、
前記計算ノードで動作する第1の計算プロセスから共有マッピングでメモリマップドファイル要求が出されると、前記計算ノードの物理メモリの第1のメモリ領域を前記第1の計算プロセスに割り当ててファイルの内容を前記第1のメモリ領域に読み込み、
前記第1の計算プロセスに対するスワップアウト要求が出されると、前記第1のメモリ領域を解放する前に前記第1のメモリ領域に記憶された前記ファイルの内容を前記スワップアウト先に書き出す、
ように構成されている。
【0009】
また、本発明の他の形態に係る制御ノードは、
オペレーティングシステムが組み込まれていない計算ノードを制御する機能を有する、オペレーティングシステムが組み込まれた制御ノードであって、
スワップアウト先を用意し、
前記計算ノードで動作する第1の計算プロセスから共有マッピングでメモリマップドファイル要求が出されると、前記計算ノードの物理メモリの第1のメモリ領域を前記第1の計算プロセスに割り当ててファイルの内容を前記第1のメモリ領域に読み込み、
前記第1の計算プロセスに対するスワップアウト要求が出されると、前記第1のメモリ領域を解放する前に前記第1のメモリ領域に記憶された前記ファイルの内容を前記スワップアウト先に書き出すように構成されている。
【0010】
また、本発明の他の形態に係るプログラムは、
オペレーティングシステムが組み込まれていない計算ノードを制御する機能を有する、オペレーティングシステムが組み込まれた制御ノードに、
スワップアウト先を用意する処理と、
前記計算ノードで動作する第1の計算プロセスから共有マッピングでメモリマップドファイル要求が出されると、前記計算ノードの物理メモリの第1のメモリ領域を前記第1の計算プロセスに割り当ててファイルの内容を前記第1のメモリ領域に読み込む処理と、
前記第1の計算プロセスに対するスワップアウト要求が出されると、前記第1のメモリ領域を解放する前に前記第1のメモリ領域に記憶された前記ファイルの内容を前記スワップアウト先に書き出す処理と、
を行わせるように構成されている。
【発明の効果】
【0011】
本発明は上述したような構成を有することにより、スワップアウトの有無によって、元のファイルの内容が変化するのを防止することができる。
【図面の簡単な説明】
【0012】
図1】本発明の第1の実施の形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。
図2】本発明の第1の実施の形態に係る情報処理装置のソフトウェア構成の一例を示すブロック図である。
図3】本発明の第1の実施の形態に係る計算プロセスの状態遷移の一例を示す図である。
図4】本発明の第1の実施の形態に係る制御ノードが情報処理装置の立ち上げ時に実行する処理の一例を表すフローチャートである。
図5】本発明の第1の実施の形態に係る制御ノードが計算プロセスから共有マッピングでメモリマップドファイル要求が出されたときに実行する処理の一例を表すフローチャートである。
図6】本発明の第1の実施の形態に係る制御ノードが計算プロセスに対してスワップアウト要求が出されたときに実行する処理の一例を表すフローチャートである。
図7】本発明の第1の実施の形態に係る制御ノードが計算プロセスに対してスワップイン要求が出されたときに実行する処理の一例を表すフローチャートである。
図8】本発明の第1の実施の形態において計算プロセスが共有マッピングでファイルをマップするときの動作の一例を説明する図である。
図9】本発明の第1の実施の形態において計算プロセスをスワップアウトする動作の一例を説明する図である。
図10】本発明の第1の実施の形態において計算プロセスがスワップアウトされているときに他の計算プロセスが共有マッピングでファイルをマップするときの動作の一例を説明する図である。
図11】本発明の第1の実施の形態において計算プロセスをスワップインする動作の一例を説明する図である。
図12】本発明の第1の実施の形態において計算プロセスからアンマップ(munmap)または同期(msync)のシステムコールが出された場合の動作の一例を説明する図である。
【発明を実施するための形態】
【0013】
[第1の実施の形態]
まず本発明の実施の形態について、理解を容易にするため、本発明の実施の形態が想定する課題とその解決方法について説明する。
【0014】
制御ノードと1以上の計算ノードとで構成される情報処理装置において、制御ノードの制御により、同じ計算ノードで動作する複数の計算プロセスに物理メモリ上の同じメモリ領域を割り当て、そのメモリ領域にストレージ上のファイルの内容を読み込むことにより、複数の計算プロセス間で共有マッピング方式によりファイルを共有することが行われている。このとき、これら複数の計算プロセス間であれば、物理メモリ上のファイルへの書き込みは、即座に他の計算プロセスから見える。一方、互いに物理メモリが独立している異なる複数の計算ノード間の場合、一方の計算ノードの計算プロセスが物理メモリ上のファイルへ書き込んでも、他方の計算ノードの計算プロセスからは見えない。物理メモリ上のファイルへ書き込みを行った計算プロセスが、所定のシステムコールを呼び出し、制御ノードの制御によって物理メモリ上のファイルの内容が制御ノードのストレージ上の元のファイルへ書き戻された時点で、他の計算ノードの計算プロセスからファイルの更新内容が見えるようになる。以上のような振る舞いは、計算プロセスのスワップアウトの有無によって変化しないことが望ましい。しかるに、Linuxでは、プロセスのスワップアウト時、物理メモリ上のファイルの内容をストレージ上の元のファイルに書き戻す。そのため、Linuxと同様にすると、スワップアウトの有無によって、ストレージ上の元のファイルの内容が変化する、という第1の課題がある。
【0015】
本実施の形態では、上記第1の課題を解決するために、ストレージ上のファイルとは別のスワップアウト先を用意し、計算ノードで動作する計算プロセスのスワップアウト時、その計算プロセスが利用する物理メモリ上のファイルの内容をスワップアウト先に書き出す、という第1の解決方法を採用する。これにより、ストレージ上のファイルの内容が計算プロセスのスワップアウトの有無によって変化するのを防止することができる。
【0016】
一方、特許文献1では、共有マッピングで既にマップ済みのメモリ領域があれば、共有する別の計算プロセスに対して新たなメモリ領域を割り当てず、マップ済みのメモリ領域へマップすることが行われている。しかし、上述した第1の解決方法を採用すると、ある計算プロセスをスワップアウトした時点では、マップ済みのメモリ領域はスワップアウトにより解放され、且つストレージ上のファイルはまだ更新されていない。そのため、同じ計算ノードで動作する他の計算プロセスが共有マッピングでメモリマップドファイル要求を出しても、マップ済みのメモリ領域へマップすることができず、またストレージ上のファイルをマップしても最新データが見えない、という第2の課題がある。
【0017】
本実施の形態では、同じ計算ノードで動作する他の計算プロセスから共有マッピングでメモリマップドファイル要求が出されると、共有に係るファイルの内容がスワップアウト先に書き出されている場合、メモリ領域を当該他の計算プロセスに割り当ててスワップアウト先に書き出されていたファイルの内容を当該メモリ領域へ書き戻す、という第2の解決方法を採用する。これにより、スワップアウトを可能にしつつ同一の計算ノード上で動作する複数の計算プロセス間で共有マッピングによりファイルの最新の内容を共有することができる。
【0018】
続いて、本発明の第1の実施の形態について図面を参照して詳細に説明する。
【0019】
図1は、本発明の第1の実施の形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。図1を参照すると、本実施形態の情報処理装置は、制御ノード100と、計算ノード200と、制御ノード100と計算ノード200間を接続するノード間通信手段300とから構成されている。図1の例では、計算ノード200は1つであるが、2つ以上あっても良く、それぞれの計算ノードの構成は同一であってよい。
【0020】
制御ノード100は、物理メモリ120と、プロセッサ170と、データ転送手段140とを含んで構成されている。計算ノード200は、物理メモリ220と、プロセッサ270と、データ転送手段240とを含んで構成されている。制御ノード100と計算ノード200とは、同じコンピュータアーキテクチャを有していても良いし、互いに異なるコンピュータアーキテクチャを有していても良い。物理メモリ120と、プロセッサ170と、データ転送手段140とは、ノード内ではお互いに接続されており、プロセッサ170は、自ノード内の物理メモリ120、データ転送手段140にアクセス可能である。また、物理メモリ220と、プロセッサ270と、データ転送手段240とは、ノード内でお互いに接続されており、プロセッサ270は、自ノード内の物理メモリ220、データ転送手段240にアクセス可能である。また、制御ノード100が計算ノード200の物理メモリ220へアクセスするときは、その計算ノード200との間に設けられたノード間通信手段300を使用する。
【0021】
データ転送手段140、240は、プロセッサ170、270を介さずに物理メモリ120、220に対してアクセスするDMA(Direct Memory Access)エンジン、プロセッサ170、270上のレジスタ等の資源に対してアクセスする対プロセッサ通信機能を有している。
【0022】
計算ノード200のプロセッサ270は、1つ以上のプロセッサコアを含んで構成されている。計算ノード200のプロセッサコアを計算コアと呼ぶ。計算コアは、例えば、汎用レジスタ群と、制御レジスタ群と、例外検出手段と、レジスタ群アクセス手段と、例外通知手段とを有している。プロセッサ270は、並列に命令を実行しており、ある命令がページフォールトを発生させても、その命令から実行を再開させることができなくても良い。
【0023】
汎用レジスタ群は、x86やARMなどの一般的なプロセッサと同様に、プログラムカウンタ(PC)や演算結果を格納するための汎用レジスタ(GPR)などから構成される。これらのレジスタは、プロセッサ270の計算コアでの命令の実行に伴い書き換えられる。また、プロセッサ270の計算コアがロード命令、ストア命令を実行することで、汎用レジスタ群とメモリとの間でデータ転送が行われる。
【0024】
制御レジスタ群は、プロセッサ270の計算コアの実行を制御するためのレジスタである。制御ノード100は、プロセッサ270の計算コアの制御レジスタに対して、ノード間通信手段300及びデータ転送手段140、240を通じて、命令の実行の開始及び実行の停止を指示する。
【0025】
例外検出手段は、命令の実行中に何らかの例外を検出した場合に、制御レジスタ群に実行の停止の指示を行う。同時に、例外検出手段は、例外通知手段に対して、例外通知の依頼を行う(例外発生情報を送信する)。上記の例外とは、ゼロ除算例外などの演算例外、ページフォールトやメモリアクセス境界違反などのメモリアクセス系例外、システムコール呼び出しのためのソフトウェアトラップなどの一般のプロセッサで発生する例外を指す。
【0026】
例外通知手段は、例外検出手段から取得した例外発生情報に基づき、ノード間通信手段300を用いて、制御ノード100に対して、プロセッサ270の計算コアでの例外を通知する。
【0027】
レジスタ群アクセス手段は、制御ノード100から発行された指示に基づいて、汎用レジスタ群及び制御レジスタ群の各レジスタに対して読み出しおよび書き込みを行う。
【0028】
図2は、本実施の形態の情報処理装置のソフトウェア構成の一例を示すブロック図である。図2を参照すると、計算ノード200上では、複数の計算プロセス250、260が動作する。計算プロセス250、260は、計算ノード200上で動作するアプリケーションプログラムの開始等に伴い生成され、その実行の終了に伴って破棄される。
【0029】
計算ノード200では、オペレーティングシステムが動作しない。そのため、オペレーティングシステムが提供するサービスの代替機能を、制御ノード100がノード間通信手段300を介して計算ノード200に対して提供する。
【0030】
一方、制御ノード100は、計算ノード管理手段110と、ファイルシステム130と、オペレーティングシステム180と、複数の代理プロセス150、160とを有する。
【0031】
ファイルシステム130は、ファイル131を保持する。ファイル131は、デバイス番号とiノード番号の組合せなどで構成されたファイル識別情報で特定可能である。ファイルシステム130は、物理メモリ120に保持することもでき、或いは制御ノード100からアクセス可能な内蔵ストレージまたは外部ストレージに保持することもできる。
【0032】
オペレーティングシステム180は、例えば、メモリマップドファイル機能やシステムコールなどのオペレーティングシステムとしての一般的な機能を有している。オペレーティングシステム180は、Linux(登録商標)やWindows(登録商標)などに代表される計算機に用いられるコモディティのオペレーションシステムであって良い。
【0033】
代理プロセス150、160は、計算ノード200上の計算プロセス250、260に対して1対1に対応して生成される。代理プロセス150、160は、対応する計算プロセス250、260が発行するシステムコール要求を、ノード間通信手段300、計算ノード管理手段110を介して受け付ける。そして、代理プロセス150、160は、計算ノード200上に存在するべきオペレーションシステムの代替でシステムコール処理を行う。
【0034】
また代理プロセス150、160は、システムコール要求を代理実行する機能を複数有する。例えば、代理プロセス150、160は、計算プロセス250、260のメモリ更新を行うシステムコールを代理実行する。また、代理プロセス150、160は、計算プロセス250、260のメモリマップドファイル要求を代理実行する。
【0035】
代理プロセス150、160が利用する物理メモリ120の領域と、ファイルシステム130上のファイルとの対応状態を表す情報は、オペレーティングシステム180が保持する。
【0036】
計算ノード管理手段110は、計算ノード200上のプロセッサ270、物理メモリ220などのハードウェア資源の管理を行う。また、計算ノード管理手段110は、一部のリソースに対する代理プロセス150、160からプロセッサ270へのアクセスの仲介なども実施する。例えば、計算ノード管理手段110は、計算プロセス250、260を生成する際のプロセッサ270中の計算コアの割り当て、計算ノード200上のメモリ管理、計算プロセス250、260から代理プロセス150、160に対するシステムコールの仲介などを行う。また、計算ノード管理手段110は、計算プロセス250、260が利用する物理メモリ220の領域と、ファイルシステム130上のファイルとの対応関係を表す情報を管理する。以上のような操作を実現するために、計算ノード管理手段110は、計算ノード200上のプロセッサ270及び物理メモリ220などのハードウェア資源と計算プロセス250、260や代理プロセス150、160などのソフトウェア資源との紐付けを行って、これらを管理する。
【0037】
また、計算ノード管理手段110は、制御ノード100上の物理メモリ120と計算ノード200上の物理メモリ220との同期をとる機能を有する。例えば、計算ノード管理手段110は、計算プロセスがメモリ更新を行うシステムコールを発行したときに、計算ノード200上の物理メモリ220の領域内のデータの更新内容を、制御ノード100上の物理メモリ120上の対応する領域にコピーする。或いは計算ノード管理手段110は、制御ノード100上の物理メモリ120の領域内のデータの更新内容を、計算ノード200上の物理メモリ220上の対応する領域にコピーする。この同期は、計算ノード200のプロセッサ270の動作が停止しているときに行われる。
【0038】
さらに、計算ノード管理手段110は、計算プロセスのスワップアウトの準備を行う。例えば、計算ノード管理手段110は、ファイルシステム130のファイル131と別にスワップアウト先を用意する。スワップアウト先は、制御ノード100の物理メモリ120であってもよいし、制御ノード100のファイルシステム130であってもよい。スワップアウト先は、計算ノード200毎に設けられる。計算ノード管理手段110は、用意したスワップアウト先を管理するためにスワップアウト先の情報(後述するスワップアウト先情報)を生成し、保持する。
【0039】
また、計算ノード管理手段110は、計算プロセスに対するスワップアウトを行う。このスワップアウトでは、計算ノード管理手段110は、計算プロセスにマップされた物理メモリ220のメモリ領域を解放する前にそのメモリ領域に記憶されたファイルの内容をスワップアウト先に書き出す。また、計算ノード管理手段110は、スワップアウトを行った場合、スワップアウトした計算プロセスの識別情報、スワップアウト先における退避先の情報などを含むスワップアウト管理情報を作成して保持する。スワップアウト先における退避先の情報は、例えば、スワップアウト先が物理メモリであればアドレス範囲であってよく、スワップアウト先がファイルシステムであればファイル名などであってよい。また、スワップアウト管理情報は、スワップアウト先中のデータを物理メモリに書き戻して退避先の情報を削除する際、書き戻した物理メモリのアドレスを含めるようにしてもよい。
【0040】
また、計算ノード管理手段110は、計算プロセスに対するスワップインを行う。このスワップインでは、計算ノード管理手段110は、その計算プロセスのスワップアウト時にスワップアウト先に書き出されていたファイルの内容が計算ノード200の物理メモリ220のメモリ領域に書き戻されていた場合、そのメモリ領域をスワップインする計算プロセスに割り当てる。一方、計算ノード管理手段110は、スワップアウト先に書き出されていたファイルの内容が計算ノード200の物理メモリ220に未だ書き戻されていない場合、スワップインする計算プロセスに物理メモリ220のメモリ領域を割り当て、その割り当てたメモリ領域にスワップアウト先に書き出されていたファイルの内容を書き戻す。
【0041】
以上のような制御ノード100は、既製品のPCサーバや、LSIでも良い。またノード間通信手段300は、PCIエクスプレスや、AXIなどのインターコネクトでも良い。また計算ノード200は、PCIエクスプレスのカードでも良いし、制御ノードに接続されたLSIでも良い。計算ノード200は、アクセラレーターや、グラフィックスプロセッシングユニットでも良い。制御ノード100と計算ノード200が一つのLSIに実装されても良い。
【0042】
図3は、計算プロセス250等の計算プロセスの状態遷移の一例を示す図である。図3を参照すると、計算プロセスは、RUNNING、STOP(a)、STOP(o)、STOP(i)、STOP(s)のうちの何れかの状態をとる。ここで、RUNNING、STOPはプロセスのステータス、()内はプロセスのサブステータスを表す。プロセスのサブステータスには、a:アクティブ状態(スワップアウト可能状態、スワップイン完了状態、プロセス再開可能状態)、o:スワップアウト処理中状態、s:スワップアウト完了状態、i:スワップイン処理中状態がある。それぞれの状態は、図3中に記載するイベント1~10を契機に別の状態へ遷移する。
【0043】
次に、本実施の形態に係る情報処理装置の動作を説明する。
【0044】
図4は、制御ノード100が情報処理装置の立ち上げ時に実行する処理の一例を表すフローチャートである。図4を参照すると、計算ノード管理手段110は、スワップアウトの準備を行う(ステップS1)。このスワップアウトの準備では、計算ノード管理手段110は、メモリマップドファイルと別のスワップアウト先を用意する。具体的には、計算ノード管理手段110は、所定の起動方法、例えば、図示しないコンソール等の入力手段から入力されるユーザ入力や、起動時設定ファイルなどから読み出したデータに従って、制御ノード100の物理メモリ120またはファイルシステム130にスワップアウト先を確保する。但し、起動方法はコンソールなどの入力手段や起動時設定ファイルなどからの読み出しに限らず、他の方法でもよい。確保したスワップアウト先の情報は、計算ノード管理手段110でスワップアウト先情報として管理される。スワップアウト先情報は、例えば、スワップアウト先が物理メモリ120およびファイルシステム130の何れであるかを示す情報、物理メモリ120の場合にはそのアドレス、ファイルシステム130の場合にはファイルのパスなどが含まれる。
【0045】
図5は、制御ノード100が計算プロセスから共有マッピングでメモリマップドファイル要求が出されたときに実行する処理の一例を表すフローチャートである。図5を参照すると、先ず、制御ノード100は、メモリマップドファイル要求で指定されたファイルに係るファイル管理情報を見つける(ステップS11)。計算ノード200ごとに、その計算ノード200で動作する計算プロセスで利用されているファイルについては、計算プロセスの識別子やファイル識別子などを含む情報(後述するファイル管理情報)が例えば計算ノード管理手段110で管理される。制御ノード100は、メモリマップドファイル要求で指定されたファイルに係るファイル管理情報が計算ノード管理手段110にあったか否かを判定し(ステップS12)、その判定結果に応じて処理を分岐する。
【0046】
計算ノード200の何れの計算プロセスにも利用されていないファイルのファイル管理情報は計算ノード管理手段110に存在しない(ステップS12でNo)。その場合、制御ノード100は、ステップS13へ処理を進める。一方、計算ノード200の何れかの計算プロセスで利用されているファイルのファイル管理情報は計算ノード管理手段110に存在する(ステップS12でYes)。その場合、制御ノード100は、ステップS16へ処理を進める。
【0047】
ステップS13では、制御ノード100は、共有マッピングでメモリマップドファイル要求されたファイルのファイル管理情報を生成し、計算ノード管理手段110で保持する。次に、制御ノード100は、計算ノード200の物理メモリ220からメモリ領域を確保し、メモリマップドファイル要求元の計算プロセスにマップする(ステップS14)。次に、制御ノード100は、ファイルの内容をファイルシステム130から読み出し、上記確保されたメモリ領域に読み込む(ステップS15)。これによって、計算プロセスは、メモリ領域上のファイルをアクセス可能となる。そして、制御ノード100は、図5の処理を終了する。
【0048】
他方、ステップS16では、制御ノード100は、スワップアウト管理情報を見つける。前述したように、共有マッピングでメモリマップドファイル要求を出した計算プロセスがスワップアウトされた場合、スワップアウト管理情報が作成され、計算ノード管理手段110に保持される。このスワップアウト管理情報は、スワップアウトされた計算プロセスの識別情報、共有マッピングでメモリマップドファイル要求されたファイルの識別情報、スワップアウト先における退避先の情報などを含む。また、後述するように、スワップアウトされた計算プロセスがスワップインされた場合、計算ノード管理手段110に保持されたスワップアウト管理情報が削除される。従って、制御ノード100は、退避先の情報などを含むスワップアウト管理情報があったか否かを判定し(ステップS17)、その判定結果に応じて処理を分岐する。
【0049】
退避先の情報などを含むスワップアウト管理情報がある場合(ステップS17でYes)、制御ノード100は、要求されたファイルは物理メモリ220に存在せず、スワップアウト先に存在することになるため、ステップS19へ処理を進める。一方、退避先の情報などを含むスワップアウト管理情報がない場合(ステップS17でNo)、制御ノード100は、要求されたファイルは物理メモリ220に存在することになるため、ステップS18へ処理を進める。
【0050】
ステップS18では、制御ノード100は、ファイルが読み込まれている計算ノードの物理メモリ220のメモリ領域を、メモリマップドファイル要求元の計算プロセスにマップする。これにより、物理メモリ220上のファイルが同一の計算ノードの複数の計算プロセスで共有されることになる。そして、制御ノード100は図5の処理を終了する。
【0051】
他方、ステップS19では、制御ノード100は、計算ノード200の物理メモリ220のメモリ領域を確保し、メモリマップドファイル要求元の計算プロセスにマップする。次に、制御ノード100は、スワップアウト管理情報に含まれるスワップアウト先における退避先の情報に従って、スワップアウト先情報で特定されるスワップアウト先から要求されたファイルの内容を読み出して、要求元の計算プロセスにマップしたメモリ領域に書き戻す。これにより、要求元の計算プロセスは、当該ファイルを物理メモリ220上でアクセスすることができるようになる。次に、制御ノード100は、ファイルをスワップアウト先から物理メモリに書き戻したため、スワップアウト管理情報に含まれるスワップアウト先における退避先の情報を削除する(ステップS21)。退避先の情報が削除されたスワップアウト管理情報は、依然として、計算ノード管理手段110で保持されたままである。そして、制御ノード100は、図5の処理を終了する。
【0052】
図6は、計算プロセスに対してスワップアウト要求が出されたときに制御ノードが実行する処理の一例を表すフローチャートである。スワップアウト要求は、例えば図示しないコンソールを通じてユーザから入力される。スワップアウト要求には、スワップアウトの対象とするプロセスの識別子が含まれる。
【0053】
図6を参照すると、制御ノード100は、スワップアウト要求を受信すると(ステップS31)、スワップアウト要求で指定されたスワップアウト対象の計算プロセスの状態がスワップアウト可能な状態か否かを判定する(ステップS32)。制御ノード100は、計算プロセスがスワップアウト可能な状態でなければ(ステップS32でNo)、要求元にスワップアウトできない旨を応答する(ステップS33)。そして、制御ノード100は、図6に示される処理を終了する。このとき、スワップアウト要求で指定されたスワップアウト対象の計算プロセスは終了しない。
【0054】
一方、計算プロセスがスワップアウト可能な状態であれば(ステップS32でYes)、制御ノード100は、スワップアウト要求で指定されたスワップアウト対象の計算プロセスの状態を、スワップアウト処理中状態に変更する(ステップS34)。次に、制御ノード100は、計算ノードのメモリが事前に定義されたスワップアウト可能な種類か否かを判定する(ステップS35)。共有マッピングのメモリマップドファイルなどをマップしたメモリは全てスワップアウト可能である。一部のメモリ、例えば、Sysy Sharedなどはスワップアウト不可能である。制御ノード100は、計算ノードのメモリがスワップアウト不可能な種類であれば(ステップS35でNo)、計算プロセスの状態をスワップアウト完了状態に変更する(ステップS39)。そして、制御ノード100は、図6に示す処理を終了する。
【0055】
また、制御ノード100は、計算ノードのメモリがスワップアウト可能な種類であれば(ステップS35でYes)、スワップアウト管理情報を作成する(ステップS36)。このスワップアウト管理情報は、スワップアウトされる計算プロセスの識別情報、共有マッピングでメモリマップドファイル要求されたファイルの識別情報、スワップアウト先における退避先の情報などを含む。次に、制御ノード100は、スワップアウト対象の計算プロセスにマップされている物理メモリ220のメモリ領域上のデータを、スワップアウト先情報で特定されるスワップアウト先における退避先へ書き出す(ステップS37)。次に、制御ノード100は、スワップアウト対象の計算プロセスにマップされている物理メモリ220のメモリ領域を解放する(ステップS38)。次に、制御ノード100は、スワップアウトした計算プロセスの状態をスワップアウト完了状態に変更し(ステップS39)、図6に示す処理を終了する。
【0056】
図7は、計算プロセスに対してスワップイン要求が出されたときに制御ノード100が実行する処理の一例を表すフローチャートである。スワップイン要求は、例えば図示しないコンソールを通じてユーザから入力される。スワップイン要求には、スワップインの対象とするプロセスの識別子が含まれる。
【0057】
図7を参照すると、制御ノード100は、スワップイン要求を受信すると(ステップS41)、スワップイン要求で指定されたスワップイン対象の計算プロセスの状態がスワップイン可能な状態か否かを判定する(ステップS42)。制御ノード100は、計算プロセスがスワップイン可能な状態でなければ(ステップS42でNo)、要求元にスワップインできない旨を応答する(ステップS43)。そして、制御ノード100は、図7に示される処理を終了する。このとき、スワップイン要求で指定されたスワップイン対象の計算プロセスは終了しない。
【0058】
一方、計算プロセスがスワップイン可能な状態であれば(ステップS42でYes)、制御ノード100は、当該計算プロセスの状態をスワップイン処理中状態に変更する(ステップS44)。次に、制御ノード100は、当該計算プロセスに係るスワップアウト管理情報を読み込む(ステップS45)。次に、制御ノード100は、計算ノード200の物理メモリ220からメモリ領域を確保し、当該計算プロセスにマップする(ステップS46)。このステップS46では、制御ノード100は、スワップアウト管理情報に退避先の情報があれば、スワップアウト先に退避したデータ量に応じたサイズのメモリ領域を物理メモリ220から確保して計算プロセスにマップする。一方、スワップアウト管理情報に退避先の情報がなければ、書き戻し先のメモリ領域を計算プロセスに確保してマップする。次に、制御ノード100は、上記読み込んだスワップアウト管理情報に退避先の情報があるか否かを判定する(ステップS47)。退避先の情報があれば、スワップアウト先に退避されていたデータを当該計算プロセスのメモリ領域へ書き戻し(ステップS48)、当該計算プロセスのページ管理情報を再設定する(ステップS49)。また、退避先の情報がなければ、制御ノード100は、ステップS48をスキップし、当該計算プロセスのページ管理情報を再設定する(ステップS49)。
【0059】
次に、制御ノード100は、当該計算プロセスのスワップアウト管理情報を削除する(ステップS50)。次に、制御ノード100は、当該計算プロセスの状態を再開可能状態に変更し(ステップS51)、図7に示す処理を終了する。
【0060】
続いて、図8図12を参照して、本実施の形態の動作を説明する。ここで、図8は、計算プロセス250が共有マッピングでファイル131をマップするときの動作の一例を説明する図である。図9は、計算プロセス250をスワップアウトする動作の一例を説明する図である。図10は、計算プロセス250がスワップアウトされているときに計算プロセス260が共有マッピングでファイル131をマップするときの動作の一例を説明する図である。図11は、計算プロセス250をスワップインする動作の一例を説明する図である。図12は、計算プロセス250または計算プロセス260からアンマップ(munmap)または同期(msync)のシステムコールが出された場合の動作の一例を説明する図である。
【0061】
先ず、図8および図5を参照して、計算プロセス250が共有マッピングでファイル131をマップするときの動作の一例を説明する。図8に示される例では、スワップアウト先129が制御ノード100の物理メモリ120に確保され、それに対応するスワップアウト先情報1101が計算ノード管理手段110に保存されている。しかし、スワップアウト先は物理メモリ120でなく、ファイルシステム130に確保されていてもよい。また、計算プロセス250が共有マッピングでメモリマップドファイル要求を出した時点では、ファイル131のファイル管理情報は計算ノード管理手段110に存在していないものとする。
【0062】
計算プロセス250が共有マッピングでファイル131のマップを要求すると、制御ノード100は、メモリマップドファイル要求で指定されたファイルに係るファイル管理情報が計算ノード管理手段110に存在しないため(ステップS12でNo)。ステップS13へ処理を進める。次に、制御ノード100は、ファイル131のファイル管理情報1102を生成し、計算ノード管理手段110で保持する。ファイル管理情報1102は、例えば、ファイル131の識別子、計算プロセス250の識別子、マッピング種別などを含む。
【0063】
次に、制御ノード100は、計算ノード200の物理メモリ220からメモリ領域221を確保し、計算プロセス250にマップする(ステップS14)。次に、制御ノード100は、ファイル131の内容をファイルシステム130から読み出し、メモリ領域221に読み込む(ステップS15)。これによって、計算プロセス250は、メモリ領域221上のファイル131をアクセス可能となる。このときの動作の詳細を制御ノード100の物理メモリ120や代理プロセス150との関連で説明すると例えば以下のようになる。
【0064】
先ず、代理プロセス150の仮想アドレス空間上の領域151にファイル131をマップする。これは、オペレーティングシステム180の一般的な機能を用いて行う。その結果、制御ノード100の物理メモリ120上にメモリ領域121が確保され、ファイル131の内容がファイルシステム130から読み込まれる。次に、計算ノード200の物理メモリ220にメモリ領域221を確保し、計算プロセス250の仮想アドレス空間の領域251にメモリ領域221をマップするようにページ管理情報を設定する。次に、代理プロセス150の仮想アドレス空間の領域151にマップされているファイル131の内容を、計算プロセス250の仮想アドレス空間上の領域251へコピーする。以上が、上記ステップS14、S15の動作の詳細である。
【0065】
次に、図9および図6を参照して、計算プロセス250をスワップアウトする動作の一例を説明する。ここで、スワップアウト要求が出された時点で計算プロセス250はスワップアウト可能状態にあるとする。また、計算プロセス250にマップされている物理メモリ220のメモリ領域はメモリ領域221のみとする。
【0066】
制御ノード100は、計算プロセス250のスワップアウト要求を受信すると(ステップS31)、計算プロセス250をスワップアウト処理中状態に変更する(ステップS34)。次に、制御ノード100は、計算プロセス250にマップされているメモリ領域221はスワップアウト可能な種類であるため(ステップS35でYes)、スワップアウト管理情報1103を作成する(ステップS36)。スワップアウト管理情報1103は、計算プロセス250の識別子、これから使用するスワップアウト先129における退避先122の情報などを含む。次に、制御ノード100は、計算プロセス250にマップされているメモリ領域221上のデータを、スワップアウト先129における退避先122へ書き出す(ステップS37)。次に、制御ノード100は、計算プロセス250にマップされているメモリ領域221を解放する(ステップS38)。次に、制御ノード100は、スワップアウトした計算プロセス250の状態をスワップアウト完了状態に変更し(ステップS39)、図6に示す処理を終了する。
【0067】
次に、図10および図5を参照して、計算プロセス250がスワップアウトされているときに計算プロセス260が共有マッピングでファイル131をマップするときの動作の一例を説明する。
【0068】
制御ノード100は、計算プロセス260が共有マッピングでメモリマップドファイル要求を出すと、ファイル131に係るファイル管理情報1102および退避先の情報を含むスワップアウト管理情報1103があるので(ステップS12、S17で共にYes)、ステップS19へ処理を進める。ステップS19では、制御ノード100は、計算ノード200の物理メモリ220にメモリ領域222を確保し、計算プロセス260にマップする。次に、制御ノード100は、スワップアウト管理情報1103に含まれるスワップアウト先における退避先の情報に従って、スワップアウト先129の退避先122からファイル131の内容を読み出して、計算プロセス260にマップしたメモリ領域222に書き戻す。これにより、計算プロセス260は、ファイル131をメモリ領域222上でアクセスすることができるようになる。次に、制御ノード100は、ファイル131をスワップアウト先129から物理メモリ220に書き戻したため、スワップアウト管理情報1103に含まれるスワップアウト先129における退避先の情報を削除する(ステップS21)。そして、制御ノード100は、図5の処理を終了する。
【0069】
次に、図11および図7を参照して、図10に示した状態で計算プロセス250をスワップインする動作の一例を説明する。なお、スワップイン要求が出された時点で計算プロセス250はスワップイン可能状態であるとする。
【0070】
制御ノード100は、計算プロセス250のスワップイン要求を受信すると(ステップS41)、計算プロセスの状態がスワップイン可能な状態なので(ステップS42でYes)、計算プロセス250の状態をスワップイン処理中状態に変更する(ステップS44)。次に、制御ノード100は、計算プロセス250に係るスワップアウト管理情報1103を読み込む(ステップS45)。次に、制御ノード100は、計算ノード200の物理メモリ220からメモリ領域を確保し、計算プロセス250にマップする(ステップS46)。このステップS46では、制御ノード100は、スワップアウト管理情報1103に退避先の情報があれば、スワップアウト先に退避したデータ量に応じたサイズのメモリ領域を物理メモリ220から確保して計算プロセス250にマップするが、この例では退避先の情報がないので、書き戻し先のメモリ領域を計算プロセス250に確保してマップする。次に、制御ノード100は、スワップアウト管理情報に退避先の情報があるか否かを判定する(ステップS47)。この例では退避先の情報がないので、ステップS48をスキップし、計算プロセス250の仮想空間の領域251がメモリ領域222にマップされるように計算プロセス250のページ管理情報を再設定する(ステップS49)。次に、制御ノード100は、計算プロセス250のスワップアウト管理情報1103を削除し(ステップS50)、計算プロセス250の状態を再開可能状態に変更し(ステップS51)、図7に示す処理を終了する。
【0071】
次に、図12を参照して、共有マッピングでファイル131を共有する計算プロセス250、260の何れか一方から、アンマップ(munmap)または同期(msync)のシステムコールが出された場合の動作の一例を説明する。
【0072】
制御ノード100は、計算プロセス250または計算プロセス260からファイル131の上記システムコールが出されると、ファイル131がマップされている物理メモリ220のメモリ領域222からファイル131の内容を読み出して、物理メモリ120の対応するメモリ領域121に上書きする。次に、制御ノード100は、メモリ領域121上のファイル131の内容をファイルシステム130のファイル131に書き戻す。これによって、計算プロセス250および計算プロセス260がメモリ領域222上のファイル131に対して行った更新内容がファイルシステム130のファイル131に反映されることになる。この時点で、計算プロセス250および計算プロセス260が動作している計算ノード200以外の他の計算ノードが制御ノード100に接続されている場合、当該他の計算ノードで動作する計算プロセスにファイル131の更新内容が見えることになる。
【0073】
以上説明したように本実施の形態では、制御ノード100は、計算ノード200で動作する計算プロセス250に対するスワップアウト要求が出されると、計算プロセス250にマップしていた物理メモリ220のメモリ領域221を解放する前にメモリ領域221にマップされたファイル131の内容を、元のファイル131と別のスワップアウト先129に書き出すように構成されている。そのため、スワップアウトの有無によって、ファイルシステム130上のファイル131の内容が変化するのを防止できる。
【0074】
また、本実施の形態では、制御ノード100は、計算プロセス250がスワップアウトされているときに同じ計算ノード200で動作する他の計算プロセス260から共有マッピングでメモリマップドファイル要求が出されると、物理メモリ220のメモリ領域222を計算プロセス260に割り当て、スワップアウト先129に書き出されていたファイル131の内容をメモリ領域222へ書き戻すように構成されている。そのため、同一の計算ノード200上で動作する複数の計算プロセス間で共有マッピングによりファイルの最新の内容を共有することができる。
【0075】
以上、上記各実施形態を参照して本発明を説明したが、本発明は、上述した実施形態に限定されるものではない。本発明の構成や詳細には、本発明の範囲内で当業者が理解しうる様々な変更をすることができる。
例えば、情報処理装置は、CPU(Central Processing Unit)の代わりに、GPU(Graphic Processing Unit)、DSP(Digital Signal Processor)、MPU(Micro Processing Unit)、FPU(Floating number Processing Unit)、PPU((Physics Processing Unit)、TPU(Tensor Processing Unit)、量子プロセッサ、マイクロコントローラ、又は、これらの組み合わせなどを用いることができる。
【産業上の利用可能性】
【0076】
本発明は、制御ノードと1または複数の計算ノードとがノード間通信手段で接続された情報処理装置に適用でき、特にHPC(High Performance Computing)向けの並列計算機に利用できる。
【符号の説明】
【0077】
100 制御ノード
110 計算ノード管理手段
120 物理メモリ
130 ファイルシステム
131 ファイル
140 データ転送手段
150、160 代理プロセス
170 プロセッサ
180 オペレーティングシステム
200 計算ノード
220 物理メモリ
240 データ転送手段
250、260 計算プロセス
270 プロセッサ
1101 スワップアウト先情報
1102 ファイル管理情報
1103 スワップアウト管理情報
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12