以下、図面を参照しながら発明を実施するための形態を説明する。
プロセスやタスクにメモリ内の記憶領域を新たに割り当てるために要する処理時間は、プロセスやタスクを実行するために要求されるメモリの領域サイズに対応するページの数と、割り当てのために初期化処理を要するメモリの領域サイズとに依存し得る。メモリの記憶領域がラージページを用いて管理されるケースでは、割り当てに必要とされるページ数は、ノーマルページを用いて管理されるケースと比較して減少し得る。一方、要求された領域サイズに対応した記憶領域を割り当てるために初期化が必要となるメモリの領域サイズは、ノーマルページが用いられるケースと変わらない。この結果、メモリ内の記憶領域がラージページを用いて管理されるケースでは、1ページに対応する記憶領域をプロセスやタスクに新たに割り当てるために要する処理時間の中で、メモリの記憶領域の初期化処理に要する時間が支配的な時間となり得る。
また、記憶領域の初期化処理が記憶領域の割り当て時に割り当て対象のページ単位で実行されるならば、1回のメモリの割り当て処理に要する時間は、ノーマルページが用いられるケースと比較してラージページが用いられるケースでは長くなる。
上記のような理由から、メモリ内の記憶領域がラージページを用いて管理されるケースでは、記憶領域の初期化処理を含むメモリの割り当て処理に要する時間の長さによっては、複数の計算ノードを含む並列計算機システム全体の性能或いは挙動に好ましくない影響を与え得る。
例えば、ある計算ノードにおいてメモリの割り当て時に行われる初期化処理の時間は、計算機システム内の計算ノード間の通信時間と比較して同等以上の長さになり得る。このような場合に、複数計算ノードがMessage Passing Interface(MPI)等のApplication Programming Interface(API)によって一斉に通信すると、一部の計算ノード間の中継動作においてメモリの初期化待ちによる遅延が発生する。この遅延発生の影響は、全計算ノードに波及し、全体の処理に遅延が生じる。
また、上述の計算ノード間通信といったプロセス間通信を含む処理では、通信の相手側のプロセスが応答するまでのタイムアウト時間は、最悪のケースを想定して設定され得る。そこで、タイムアウト時間は、上述のようなメモリの初期化待ち時間を加味して長く設定される必要が生じ得る。
以下で詳述するように、実施形態に従った情報処理装置は、メモリ内の記憶領域を複数の異なるページサイズのページを用いて管理する。例えば、実施形態に従った情報処理装置は、各ページの管理情報を用いて、各々のページに対応するメモリ内の記憶領域の初期化状態(ゼロクリア状態)を管理する。また、実施形態に従った情報処理装置は、各ページの管理情報を用いて、各々のページに対応するメモリ内の記憶領域の初期化処理を実行する。こうした初期化状態の管理および初期化処理の実行によって、メモリ内の記憶領域の割り当て時に行われる記憶領域の初期化処理に要する時間を削減し、要求される領域サイズに応じた記憶領域の割り当て処理を高速化する。なお、以下の説明において、用語「ゼロクリア」とは、初期化を指す。
図1は、実施形態に従った情報処理装置を含む例示的な計算機システムの機能構成図である。
図1に示すように、計算機システム1は、アプリケーション実行用計算機11−1〜11−3およびジョブ管理用計算機12を含む。計算機システム1は、ジョブ管理用計算機12を通じて利用者端末装置2と接続する。そして、計算機システム1は、利用者端末装置2のアプリケーションプログラム処理部2Aから指示されたアプリケーションプログラム、ソースコード、および実行バイナリ等を実行する。以下の説明では、用語「アプリケーションプログラム」とは、特段の記載がない限り、利用者端末装置2からの指示に従って計算機システム1により実行されるアプリケーションプログラム、ソースコード、および実行バイナリ等を便宜的に指す。
ジョブ管理用計算機12は、ジョブスケジューラ処理部12Aを含む。ジョブスケジューラ処理部12Aは、利用者端末装置2から指示されたアプリケーションプログラムのジョブを任意のアプリケーション実行用計算機11−1〜11−3に実行させるスケジュールを管理する。
アプリケーション実行用計算機11−1〜11−3は、ジョブ管理用計算機12により指示されたアプリケーションプログラムのジョブをそれぞれ実行する。アプリケーション実行用計算機11−1〜11−3は、計算機システム1の計算ノードであり、実施形態に従った情報処理装置の一例である。図1には、3つのアプリケーション実行用計算機11−1〜11−3が示されているが、計算機システム1に含まれるアプリケーション実行用計算機の数は、任意の数であってよい。以下の説明においてアプリケーション実行用計算機11−1〜11−3を特に区別しない場合には、アプリケーション実行用計算機11と記載する。
アプリケーション実行用計算機11は、ジョブ管理部110、プロセス実行部120−1および120−2、ならびにOperating System(OS)処理部130を含む。図1には、2つのプロセス実行部120−1および120−2が示されているが、アプリケーション実行用計算機11に含まれるプロセス実行部の数は、任意の数であってよい。以下の説明においてプロセス実行部120−1および120−2を特に区別しない場合には、プロセス実行部120と記載する。
ジョブ管理部110は、ジョブスケジューラ処理部12A、プロセス実行部120、およびOS処理部130と接続する。ジョブ管理部110は、アプリケーションプログラムのジョブを実行するスケジューリング、ジョブの実行状態の監視、およびジョブの実行状態の報告といった当該アプリケーション実行用計算機11内で実行されるジョブ全体をジョブスケジューラ処理部12Aと連携して管理する。ジョブスケジューラ処理部12Aとジョブ管理部110とは、計算機システム1のジョブスケジューリングシステムを構成する。
プロセス実行部120は、ジョブ管理部110により指示されたアプリケーションプログラムのプロセスをOS処理部130により割り当てられたメモリの記憶領域を用いて実行する。また、プロセス実行部120は、ジョブ管理部110により指示されたアプリケーションプログラムのプロセスをOS処理部130により指示されたスケジュールに従って実行する。
OS処理部130は、アプリケーション実行用計算機11に実装されたOSを実行する。OS処理部130は、プロセススケジューラ処理部131、ページ割り当て処理部132、ゼロクリア処理部133、および空きページ格納部134を含む。
プロセススケジューラ処理部131は、ジョブ管理部110、プロセス実行部120、およびゼロクリア処理部133と接続する。プロセススケジューラ処理部131は、ジョブ管理部110と連携して、プロセス実行部120によるアプリケーションプログラムのプロセスの実行と、ゼロクリア処理部133による空きページのゼロクリア処理の実行とのスケジュールを管理する。
ページ割り当て処理部132は、プロセス実行部120と接続する。ページ割り当て処理部132は、メモリ内の記憶領域の割り当て要求をプロセス実行部120から受信する。なお、記憶領域の割り当て要求は、プロセスの実行に必要なメモリの領域サイズを要求することで行われるように構成されてよく、プロセスの実行に必要なページサイズを要求することで行われるように構成されてよい。ページ割り当て処理部132は、プロセス実行部120から要求されたメモリの領域サイズに応じたページサイズの空きページ、またはプロセス実行部120から要求されたページサイズに応じた空きページを空きページ格納部134から探索する。ページ割り当て処理部132は、探索された空きページがゼロクリア処理済みであるか否かを判定し、判定の結果、ゼロクリア処理されていないページである場合には、探索された空きページに対応する記憶領域をゼロクリア処理する。ページ割り当て処理部132は、ゼロクリア済みの記憶領域をプロセス実行部120に渡す。
ゼロクリア処理部133は、プロセススケジューラ処理部131および空きページ格納部134と接続する。ゼロクリア処理部133は、プロセススケジューラ処理部131によるスケジュールに従って、空きページ格納部134内の空きページを取得する。ゼロクリア処理部133は、取得された空きページに対応するメモリ内の記憶領域がゼロクリア処理済であるか否かを判定する。判定の結果、取得された空きページに対応する記憶領域がゼロクリア未処理の記憶領域である場合には、ゼロクリア処理部133は、ゼロクリア未処理の記憶領域をゼロクリア処理する。
空きページ格納部134では、プロセス実行部120によるアプリケーションプログラムのプロセスの実行等に使用されていないメモリ内の記憶領域に対応する空きページが管理される。空きページ格納部134は、物理メモリ1341、ページ構造体群1342、および空きページ管理リスト1343を含む。
物理メモリ1341は、複数の異なるページサイズのページに分割されて管理される物理的なメモリであり、ページの実体である。なお、特段の記載がない限り、用語「メモリ」と用語「物理メモリ」とは同義である。
ページ構造体群1342は、ページに関する情報を管理するページ構造体の集合である。ページ構造体は、管理対象の複数サイズのページの内の最小のページサイズのページ単位、すなわち、ノーマルページ単位で設定される。ノーマルページは、例えば、4 Kbytesまたは8 Kbytesのサイズのページである。ノーマルページ単位で設定された各ページ構造体は、メモリ内の所定アドレスの記憶領域にそれぞれ対応する。
各ページ構造体には、対応するノーマルページまたは対応するノーマルページ1ページ分を含むラージページに関する情報が記録される。すなわち、ノーマルページに関する情報は、対応するページ構造体に記録され、ラージページに関する情報は、ラージページを分割したノーマルページ1ページ毎の対応するページ構造体の内の少なくとも1つに記録される。図2は、実施形態に従った例示的なページ構造体の概略図である。
図2に示すように、実施形態に従ったページ構造体1342Aは、ゼロクリア状態ビットA1、ゼロクリア状態ロックビットA2、ゼロクリア処理制御ビットA3、および空きページビットA4を含む。ページ構造体1342Aは、次の空きページのページ構造体へのポインタA5および前の空きページのページ構造体へのポインタA6を含む。ページ構造体1342Aは、ゼロクリア状態サイズA7を含む。
ゼロクリア状態ビットA1は、当該ページ構造体1342Aに対応するページ(対応するノーマルページまたは対応するノーマルページ1ページ分を含むラージページ)がゼロクリア処理済みのページであるか否かを示すビットである。ゼロクリア状態ロックビットA2は、当該ページ構造体1342Aに対応するページに対するゼロクリア処理をゼロクリア処理部133が排他的に実行するためのフラグが立てられるビットである。ゼロクリア処理制御ビットA3は、当該ページ構造体1342Aに対応するページに対するゼロクリア処理部133によるゼロクリア処理動作の可否を制御するビットである。空きページビットA4は、当該ページ構造体1342Aに対応するページが空きページであるか否かを示すビットである。これらの各フラグA1〜A4は、例えば1 bitであり、フラグ全体で64 bit以下であり得る。
次の空きページのページ構造体へのポインタA5および前の空きページのページ構造体へのポインタA6は、空きページ管理リスト1343内において当該ページ管理構造体1342Aが接続する隣接の空きページのページ管理構造体1342Aへのポインタである。次の空きページのページ構造体へのポインタA5および前の空きページのページ構造体へのポインタA6は、例えば、64 bitであり得る。
ゼロクリア状態サイズA7は、当該ページに対応する記憶領域内の連続したゼロクリア状態の長さを表すビットである。すなわち、ゼロクリア状態サイズA7は、当該ページ構造体1342Aに対応するページ(対応するノーマルページまたは対応するノーマルページ1ページ分を含むラージページ)の連続したゼロクリア済みの領域サイズを示すビットである。ゼロクリア状態サイズA7は、ノーマルページのページサイズの2のべき乗で表現され、例えば、8 bitであり得る。
実施形態に従った情報処理装置では、ページ構造体1342A内の情報が用いられることによって、ページ割り当て処理部132により実行される記憶領域の割り当て処理と、ゼロクリア処理部133により実行される記憶領域のゼロクリア処理とが制御される。例えば、ゼロクリア状態ロックビットA2およびゼロクリア処理制御ビットA3が用いられることによって、ページ割り当て処理部132およびゼロクリア処理部133による処理が同じ空きページ(同じ空きページに対応する記憶領域)に対して同時に実行されないように制御される。また、空きページに対応するメモリ内の記憶領域の中で、ゼロクリア処理が未実施の記憶領域、すなわち、ゼロクリア処理の実行対象となる記憶領域は、ゼロクリア状態ビットA1、空きページビットA4、およびゼロクリア状態サイズA7が用いられることによって識別される。
空きページ管理リスト1343は、プロセス実行部120によるアプリケーションプログラムのプロセスの実行等に用いられていない未使用の記憶領域に対応する空きページを管理するリストである。ページ割り当て処理部132およびゼロクリア処理部133は、空きページ管理リスト1343を参照することによって空きページおよびその空きページに対応する記憶領域を探索する。図3は、実施形態に従った空きページ管理リストの例図である。
図3に示すように、8 Kbytes、16 Kbytes、32 Kbytes、および64 Kbytesといったページサイズを表すエントリが空きページ管理リスト1343の先頭列に付され、異なるページサイズを有する空きページは、対応するページサイズのエントリと結び付けられて管理される。図3に示す一例では、ノーマルページのサイズは、8 Kbytesであり、ラージページのページサイズは、16 Kbytes、32 Kbytes、および64 Kbytesである。図3中の矢印で表されるように、エントリ毎の空きページは、対応するページ管理構造体1342Aの前述したポインタA5およびA6によって相互に結び付けられる。なお、図3は、実施形態に従った空きページ管理リスト1343の一例にすぎないことに留意すべきである。すなわち、ノーマルページのサイズは、8 Kbytes以外の任意のページサイズであってよい。また、ラージページのページサイズは、16 Kbytes、32 Kbytes、および64 Kbytes以外のページサイズであってよい。異なるページサイズを有するラージページの種類は、3つの種類に限定されず、任意の種類であってよい。
図4は、実施形態に従った情報処理装置を含む例示的な計算機システムのハードウェア構成図である。
図4に示すように、計算機システム3は、アプリケーション実行用計算機31−1〜31−5、ジョブ管理用計算機32、およびノード間接続ネットワーク33を含む。計算機システム3は、ジョブ管理用計算機32を通じてコンピュータといった利用者端末装置4と接続する。なお、図4には、5つのアプリケーション実行用計算機31−1〜31−5が示されているが、計算機システム3に含まれるアプリケーション実行用計算機の数は、任意の数であってよい。以下の説明においてアプリケーション実行用計算機31−1〜131−5を特に区別しない場合にはアプリケーション実行用計算機31と記載する。
ジョブ管理用計算機32は、コンピュータといった情報処理装置であり、ジョブ管理用計算機12に対応する。ジョブ管理用計算機12内のジョブスケジューラ処理部12Aは、例えば、ジョブ管理用計算機32内のCentral Processing Unit(CPU)である。
アプリケーション実行用計算機31は、コンピュータといった情報処理装置であり、実施形態に従った情報処理装置の一例であるアプリケーション実行用計算機11に対応する。各アプリケーション実行用計算機31は、計算機システム3の計算ノードである。
図4に示すように、アプリケーション実行用計算機31は、CPUコア(Central Processing Unit Core)310−1〜310−4、一次(Level 1、L1)キャッシュ320−1〜320−4、二次(Level 2、L2)キャッシュ330、メインメモリ340、ストレージ350、記憶媒体用ドライブ360、インターコネクト370、およびバス380を含む。図4には、4つのCPUコア310−1〜310−4と、4つのCPUコア310−1〜310−4に対応する4つの一次キャッシュ320−1〜320−4が示されている。しかしながら、アプリケーション実行用計算機31に含まれるCPUコアおよびそのCPUコアに対応する一次キャッシュの数は、任意の数であってよい。以下の説明において、CPUコア310−1〜310−4を区別しない場合には、CPUコア310と記載する。一次キャッシュ320−1〜320−4を区別しない場合には、一次キャッシュ320と記載する。
CPUコア310は、プロセッサの中核であり、演算処理を行う論理回路である。各CPUコア310は、高速にアクセス可能な対応する一次キャッシュ320と接続し、複数のCPUコア310により共有される二次キャッシュ330と接続する。CPUコア310、一次キャッシュ320、および二次キャッシュ330は、マルチプロセッサを構成する。CPUコア310、一次キャッシュ320、および二次キャッシュ330は、ジョブ管理部110、プロセス実行部120、プロセススケジューラ処理部131、ページ割り当て処理部132、およびゼロクリア処理部133に対応する。
メインメモリ340は、実行中のプログラムや処理中のデータを一時的に記憶し、CPUコア310が直接アクセス可能な主記憶装置である。メインメモリ340は、例えば、Random Access Memory(RAM)である。メインメモリ340は、空きページ格納部134に対応する。
ストレージ350は、例えば、ハードディスクドライブ(Hard Disk Drive、HDD)である。ストレージ350には、OS等のプログラムやデータが格納される。
記録媒体用ドライブ360は、記録媒体に記録されたデータを読み込み、および/またはアプリケーション実行用計算機31内で処理されたデータを記録媒体へ書き込むための装置である。記録媒体は、例えば、Compact Disk Read Only Memory(CD−ROM)、Digital Versatile Disk(DVD)、Universal Serial Bus(USB)メモリ、およびフラッシュメモリ等である。
インターコネクト370は、ノード間接続ネットワーク33を介して他のノード31およびジョブ管理用計算機32と接続する通信装置である。
バス380は、CPUコア310、一次キャッシュ320、および二次キャッシュ330を含むマルチプロセッサ、メインメモリ340、ストレージ350、記録媒体用ドライブ360、ならびにインターコネクト370を相互に接続する。バス380は、CPUコア310、一次キャッシュ320、および二次キャッシュ330を含むマルチプロセッサと、メインメモリ340とを接続するメモリバスを含む。
ノード間接続ネットワーク33は、ジョブ管理用計算機32とアプリケーション実行用計算機31との間、およびアプリケーション実行用計算機31間を接続するケーブルおよびスイッチである。
まず、ゼロクリア処理部133により実行されるゼロクリア処理について説明する。ゼロクリア処理とは、空きページに対応するメモリ内の記憶領域に対する初期化処理を指す。図5は、ゼロクリア処理部により実行されるゼロクリア処理フローの例図である。
ゼロクリア処理部133は、プロセススケジューラ処理部131からの指示に従ってゼロクリア処理を開始すると(ステップS1001)、空きページ管理リスト1343を参照して、ゼロクリア処理されていない空きページを探索する(ステップS1002)。具体的には、ゼロクリア処理部133は、空きページ管理リスト1343中の空きページに対応するページ構造体1342Aのゼロクリア状態ビットA1を参照することによって、ゼロクリア処理されていない空きページを探索する。
探索の結果、ゼロクリア処理されていない空きページがなかった場合(ステップS1003で“NO”)、ゼロクリア処理部133は、一連のゼロクリア処理を終了する。そして、ゼロクリア処理部133は、ゼロクリア処理の実行をプロセススケジューラ処理部131により新たに指示されるまで待機する(ステップS1004)。
探索の結果、ゼロクリア処理されていない空きページがある場合(ステップS1003で“YES”)、ゼロクリア処理部133は、探索された空きページの内の1つの空きページを選択する。図3を参照しながら前述したように、空きページ管理リスト1343では、異なるページサイズ毎に空きページが管理される。したがって、ゼロクリア処理部133により選択される空きページは、ノーマルページ、ノーマルページ同士が結合されたラージページ、またはラージページページ同士が更に結合されたより大きなページサイズのラージページであり得る。
ゼロクリア処理部133は、選択された空きページ全体に対するロックを試みる(ステップS1006)。具体的には、ゼロクリア処理部133は、選択された空きページに対応するページ構造体1342Aのゼロクリア状態ロックビットA2に、ゼロクリア処理の排他的実行を示すロックフラグを立てることを試みる。ステップS1006の処理が実行されることによって、同一の空きページがゼロクリア処理部133およびページ割り当て処理部132による処理対象になることを抑制できる。
選択された空きページ全体に対するロックに失敗した場合(ステップS1007で“NO”)、ゼロクリア処理部133は、ステップS1002の処理に戻って、ゼロクリア処理されていない空きページを再び探索する。
選択された空きページ全体に対するロックに成功した場合(ステップS1007で“YES”)、ゼロクリア処理部133は、選択された空きページの割り当てを待っているリクエストがある否かを判定する(ステップS1008)。具体的には、ゼロクリア処理部133は、選択された空きページに対応するページ構造体1342Aのゼロクリア処理制御ビットA3を参照することにより、選択された空きページをページ割り当て処理部132が割り当て対象のページとしていないか否かを判定する。ステップS1008の処理においてゼロクリア処理制御ビットA3のフラグが定期的に確認されることによって、ゼロクリア処理部133によるゼロクリア処理よりもページ割り当て処理部132による割り当て処理が優先されるように制御される。したがって、ページ割り当て処理部132にメモリの割り当てを要求したプロセス実行部120によるアプリケーションプログラムのプロセス実行がゼロクリア処理部133による処理により停滞することが抑制できる。
判定の結果、選択された空きページの割り当てを待っているリクエストがある、すなわち、ゼロクリア処理停止フラグがゼロクリア処理制御ビットA3に立っている場合(ステップS1008で“NO”)、ゼロクリア処理部133は、選択された空きページに対するロックを解除する(ステップS1009)。そして、ゼロクリア処理部133は、ステップS1002の処理に戻って、ゼロクリア処理されていない空きページを再び探索する。
判定の結果、選択された空きページの割り当てを待っているリクエストがない、すなわち、ゼロクリア処理停止フラグがゼロクリア処理制御ビットA3に立っていない場合(ステップS1008で“YES”)、ゼロクリア処理部133は、ステップS1010の処理を実行する。すなわち、ゼロクリア処理部133は、選択されたページの内、ゼロクリア処理されていないノーマルページ1ページ分に対応する物理メモリ1341内の記憶領域をゼロクリア処理する(ステップS1010)。
ゼロクリア処理部133は、新たにゼロクリア処理された状態を選択されたページに対応するページ構造体1342Aに反映させる(ステップS1011)。具体的には、ゼロクリア処理部133は、対応するページ構造体1342Aのゼロクリア状態ビットA1にゼロクリア処理済みであることを示すフラグを立てる。また、ゼロクリア処理部133は、対応するページ構造体1342Aのゼロクリア状態サイズA7に、新たにゼロクリア処理された領域サイズを加算する。
例えば、選択された空きページがラージページである場合、ゼロクリア処理部133は、選択された空きページ内の先頭のノーマルページ1ページ分に対応するページ構造体1342Aに対して、ゼロクリア処理済みであることを示すフラグを立て、ゼロクリア処理された領域サイズを加算する。また、ゼロクリア処理部133は、新たにゼロクリア処理された当該ノーマルページ1ページ分に対応するページ構造体1342Aに対して、ゼロクリア処理済みであることを示すフラグを立て、ゼロクリア処理された領域サイズを加算し得る。
ノーマルページ1ページ分に対応する物理メモリ1341内の記憶領域のゼロクリア処理が完了すると、ゼロクリア処理部133は、選択されたページ全体のゼロクリア処理が完了したか否かを判定する(ステップS1012)。具体的には、ゼロクリア処理部133は、選択された空きページ内の先頭のノーマルページ1ページ分に対応するページ構造体1342Aのゼロクリア状態サイズA7が選択された空きページのページサイズと一致するか否かを判定する。
選択されたページ全体のゼロクリア処理が完了していないと判定される場合(ステップS1012で“NO”)、ゼロクリア処理部133は、ステップS1008の処理に戻って、選択された空きページの割り当てを待っているリクエストがあるか否かを判定する。
選択されたページ全体のゼロクリア処理が完了したと判定される場合(ステップS1012で“YES”)、ゼロクリア処理部133は、選択された空きページに対するロックを解除する(ステップS1009)。具体的には、ゼロクリア処理部133は、ステップS1006の処理によりロックフラグを立てたゼロクリア状態ロックビットA2に、ゼロクリア処理部133によるゼロクリア処理の排他的実行の停止を示すロック解除フラグを立てる。そして、ゼロクリア処理部133は、ステップS1002の処理に戻って、ゼロクリア処理されていない空きページを再び探索する。こうして、空きページ管理リスト1343内にゼロクリア処理されていない空きページがなくなるまで一連のゼロクリア処理が実行される。
このように、メモリ内の記憶領域の割り当て処理時に実行されるゼロクリア処理とは別に上述のような一連のゼロクリア処理が実行されることによって、メモリ内の記憶領域の割り当て処理時に必要なメモリのゼロクリア処理を削減できる。この結果、複数のページサイズを用いて管理されるメモリ内の記憶領域の中から、要求されたプロセスやタスクに応じた適切な領域サイズの初期化済みの記憶領域を高速に割り当てることができる。また、上述のような一連のゼロクリア処理よりも記憶領域の割り当て処理が優先的に実行されるように制御されることによって、プロセスやタスクの実行に必要な記憶領域の割り当て処理を遅延させずに、空きページに対応する記憶領域のゼロクリア処理を実行できる。
次に、ページ割り当て処理部132により実行される処理について説明する。ページ割り当て処理部132により実行される処理は、メモリの割り当て処理とメモリの解除処理とに大別できる。
まず、ページ割り当て処理部132により実行されるメモリの割り当て処理について説明する。メモリの割り当て処理とは、複数の異なるページサイズのページを用いて管理されるメモリ内の記憶領域の中から、プロセス実行部120から要求されたメモリの領域サイズまたはページサイズに応じてゼロクリア処理済みの記憶領域を割り当てる処理である。図6は、ページ割り当て処理部により実行されるメモリの割り当て処理フローの例図である。
ページ割り当て処理部132は、プロセスやタスクの実行に必要なメモリ内の記憶領域の割り当て要求をプロセス実行部120から受信し、一連のメモリの割り当て処理を開始する(ステップS2001)。なお、記憶領域の割り当て要求は、必要なメモリの領域サイズを要求することで行われるように構成されてよく、必要なページサイズを要求することで行われるように構成されてよい。ページ割り当て処理部132は、プロセス実行部120から要求されたメモリの領域サイズ以上のページサイズを有する空きページ、またはプロセス実行部120から要求されたページサイズ以上のページサイズを有する空きページを空きページ管理リスト1343を参照して探索する(ステップS2002)。
探索の結果、プロセス実行部120から要求された領域サイズまたはページサイズ以上の空きページがなかった場合(ステップS2002で“NO”)、ページ割り当て処理部132は、要求された領域サイズを有する未使用の記憶領域が枯渇していると判断し、メモリの割り当てエラーをプロセス実行部120へ送信し、一連のメモリの割り当て処理を終了する(ステップS2003)。
探索の結果、プロセス実行部120から要求された領域サイズまたはページサイズ以上の空きページがある場合(ステップS2002で“YES”)、ページ割り当て処理部132は、探索された空きページの内の1つの空きページを割り当て対象ページとして決定する。図3を参照しながら前述したように、空きページ管理リスト1343では、異なるページサイズ毎に空きページが管理される。したがって、ページ割り当て処理部132により決定される空きページは、ノーマルページ、ノーマルページ同士が結合されたラージページ、またはラージページページ同士が更に結合されたより大きなページサイズのラージページであり得る。
例えば、ページ割り当て処理部132は、空きページ管理リスト1343の中から、プロセス実行部120から要求された領域サイズまたはページサイズ以上のページサイズを有する空きページの内で、ページサイズが最も小さい空きページを選択する。仮に、選択された空きページのページサイズがプロセス実行部120から要求された領域サイズまたはページサイズの2倍以上である場合には、ページ割り当て処理部132は、選択された空きページがノーマルページでない限り、選択された空きページを2つの空きページに分割する。そして、ページ割り当て処理部132は、分割された一方の空きページを割り当て候補ページとして選択し、分割された他方の空きページを分割後のページサイズで管理されるように空きページ管理リスト1343に戻す。仮に、割り当て候補ページとして選択された空きページのページサイズがプロセス実行部120から要求された領域サイズまたはページサイズの2倍以上である場合には、ページ割り当て処理部132は、選択された空きページを2つの空きページに再分割する。そして、ページ割り当て処理部132は、再分割された一方の空きページを新たな割り当て候補ページとして選択し、再分割された他方の空きページを再分割後のページサイズで管理されるように空きページ管理リスト1343に戻す。このように、選択された空きページのサイズがプロセス実行部120から要求された領域サイズまたはページサイズの2倍未満になるまで、ページ割り当て処理部132は、上述のような分割処理を繰り返す。そして、選択された空きページのページサイズがプロセス実行部120から要求された領域サイズの2倍未満になると、ページ割り当て処理部132は、選択された空きページを割り当て対象ページとして決定する。
上述のような空きページの分割処理が行われる場合には、ページ割り当て処理部132は、ゼロクリア状態に関する管理情報といった、分割された空きページに関する管理情報の更新処理を実行する。図7は、分割処理に伴う管理情報の更新処理フローの例図である。
ページ割り当て処理部132は、空きページの分割処理に伴う管理情報の更新処理を開始すると(ステップS3001)、空きページ管理リスト1343により管理されている当該空きページに対応するページ構造体1342Aのゼロクリア状態サイズA7を取得する(ステップS3002)。例えば、処理対象の空きページがラージページである場合、ページ割り当て処理部132は、ラージページ内の先頭のノーマルページ1ページ分に対応するページ構造体1342Aのゼロクリア状態サイズA7を取得する。
ページ割り当て処理部132は、取得されたゼロクリア状態サイズA7により示されるゼロクリア処理済の領域サイズと、空きページ管理リスト1343により管理されている当該空きページのページサイズとを比較する(ステップS3003)。
比較の結果、両者のサイズが一致する場合(ステップS3003で“YES”)、ページ割り当て処理部132は、取得されたゼロクリア状態サイズA7が示すゼロクリア処理済みの領域サイズを2等分する。そして、ページ割り当て処理部132は、分割処理により当該空きページが分割された2つの空きページに対応する各々のページ構造体1342Aのゼロクリア状態サイズA7に、2等分された領域サイズを書き込む(ステップS3004)。
比較の結果、両者のサイズが一致しない場合(ステップS3003で“NO”)、ページ割り当て処理部132は、分割された2つの空きページに対応する各々のページ構造体1342Aに既に記録されているゼロクリア状態サイズA7を書き換えずに、分割された2つの空きページの各々の管理情報としてそのゼロクリア状態サイズA7を保持する(ステップS3005)。
ステップS3004の処理またはステップS3005の処理が実行されると、ページ割り当て処理部132は、一連の管理情報の更新処理を終了する(ステップS3006)。なお、割り当て候補ページとして選択されたラージページが再分割される場合には、ページ割り当て処理部132は、一連の管理情報の更新処理を再度実行する。
ステップS3004の処理およびステップS3005の処理に対する理解を助けるために、図8および図9を用いて分割処理に伴う管理情報の更新処理を説明する。
図8は、分割処理に伴う管理情報の更新処理についての第1の説明図である。図8には、16 KbytesのページサイズのラージページAが8 Kbytesの2つのノーマルページBおよびCに分割されるケースが例示的に示されている。
図8に示した一例では、ラージページAに対応するメモリ内の記憶領域は、全てゼロクリア処理されており、ラージページAの管理情報領域には、“ゼロクリア状態=16 Kbytesについてゼロクリア済”と記録される。具体的には、ラージページAの管理情報領域の内、“ゼロクリア状態=ゼロクリア済”という情報は、ラージページA内の先頭のノーマルページ1ページ分、すなわち、ラージページA内の前半のノーマルページ1ページ分に対応するページ構造体1342Aのゼロクリア状態ビットA1に記録される。また、“ゼロクリア状態=16 Kbytes”という情報は、ラージページA内の前半のノーマルページ1ページ分に対応するページ構造体1342Aのゼロクリア状態サイズA7に記録される。このように、ラージページAに関する管理情報は、ラージページA内の前半のノーマルページ1ページ分に対応するページ構造体1342Aによって記録される。このように、実施形態に従ったページに関する管理情報の記録方法を用いれば、ラージページ内のノーマルページ1ページ毎の全てのページ構造体を参照しなくても、ラージページの管理情報を検索および更新できるため、管理情報の検索および更新の処理を簡略化および高速化できる。また、ページサイズの大きさに依存せずに、管理情報の更新を伴うページの分割処理を実行できる。
図8に示したラージページAでは、ラージページAのページサイズ(16 Kbytes)とラージページAのゼロクリア処理済の領域サイズ(16 Kbytes)とが一致する。そこで、ラージページAが2つのノーマルページBおよびCに分割処理されるケースでは、図7のステップS3004の処理によって、ラージページAの管理情報領域に記録されたゼロクリア状態の領域サイズ、すなわち16 Kbytesが2等分される。そして、図8に示すように、2等分処理後の“ゼロクリア状態=8 Kbytesについてゼロクリア済”という情報が、分割されたノーマルページBおよびCに関する管理情報としてそれぞれの管理情報領域内に記録される。具体的には、“ゼロクリア状態=ゼロクリア済”という情報は、ノーマルページBおよびCに対応する各々のページ構造体1342Aのゼロクリア状態ビットA1に記録される。また、“ゼロクリア状態=8 Kbytes”という情報は、ノーマルページBおよびCに対応する各々のページ構造体1342Aのゼロクリア状態サイズA7に記録される。
図9は、分割処理に伴う管理情報の更新処理についての第2の説明図である。図9には、16 KbytesのページサイズのラージページDが8 Kbytesの2つのノーマルページEおよびFに分割されるケースが例示的に示されている。
図9に示した一例では、ラージページDのページサイズの内の前半のノーマルページ1ページ分の記憶領域は、ゼロクリア処理されており、後半のノーマルページ1ページ分の記憶領域は、ゼロクリア処理されていない。そこで、ラージページDの管理情報領域には、前半のノーマルページ1ページ分について“ゼロクリア状態=8 Kbytesについてゼロクリア済”と記録され、後半のノーマルページ1ページ分について“ゼロクリア状態=8 Kbytesについてゼロクリア未実施”と記録される。具体的には、“ゼロクリア状態=8 Kbytesについてゼロクリア済”という情報は、ラージページD内の前半のノーマルページ1ページ分に対応するページ構造体1342Aのゼロクリア状態ビットA1およびゼロクリア状態サイズA7に記録される。また、“ゼロクリア状態=8 Kbytesについてゼロクリア未実施”という情報は、ラージページD内の後半のノーマルページ1ページ分に対応するページ構造体1342Aのゼロクリア状態ビットA1およびゼロクリア状態サイズA7に記録される。このように、ラージページDに関する管理情報は、前半および後半のノーマルページ1ページ分に分割されて記録および管理される。
図9に示したラージページDでは、ラージページDのページサイズ(16 Kbytes)とラージページDのゼロクリア処理済の領域サイズ(8 Kbytes)とが一致しない。そこで、図7のステップS3005の処理によって、ラージページDの管理情報の内、前半のノーマルページ1ページ分についての“ゼロクリア状態=8 Kbytesについてゼロクリア済”という情報は、ラージページDの前半のノーマルページ1ページ分に対応するノーマルページEの管理情報として引き続き保持される。また、ラージページDの管理情報の内、後半のノーマルページ1ページ分についての“ゼロクリア状態=8 Kbytesについてゼロクリア未実施”という情報は、ラージページDの後半のノーマルページ1ページ分に対応するノーマルページFの管理情報として引き続き保持される。具体的には、“ゼロクリア状態=8 Kbytesについてゼロクリア済”という情報は、ノーマルページEに対応するページ構造体1342Aのゼロクリア状態ビットA1およびゼロクリア状態サイズA7により引き続き保持される。また、“ゼロクリア状態=8 Kbytesについてゼロクリア未実施”という情報は、ノーマルページFに対応するページ構造体1342Aのゼロクリア状態ビットA1およびゼロクリア状態サイズA7により引き続き保持される。
上述したようなページの分割処理および管理情報の更新処理を含む図6のステップS2004の処理によって、割り当て対象の空きページが決定される。ページ割り当て処理部132は、決定された割り当て対象の空きページに対するゼロクリア処理を停止するようにゼロクリア処理部133に要求する(ステップS2005)。具体的には、ページ割り当て処理部132は、割り当て対象の空きページに対応するページ構造体1342Aのゼロクリア処理制御ビットA3にゼロクリア処理の停止フラグを立てる。ステップS2005の処理によって、割り当て対象の空きページに対応する記憶領域がゼロクリア処理部133によるゼロクリア処理中であったとしても、ゼロクリア処理部133によるゼロクリア処理よりもページ割り当て処理部132による割り当て処理が優先されるように制御される。したがって、メモリ内の記憶領域の割り当てをページ割り当て処理部132に要求したプロセス実行部120によるアプリケーションプログラムのプロセスの実行がゼロクリア処理部133による処理により停滞することが抑制できる。
ページ割り当て処理部132は、割り当て対象の空きページに対するゼロクリア処理部133によるゼロクリア処理が停止するのを待ち合わせる(ステップS2006)。具体的には、ページ割り当て処理部132は、割り当て対象の空きページに対応するページ構造体1342Aのゼロクリア状態ロックビットA2を参照する。そして、仮に、参照されたゼロクリア状態ロックビットA2にロックフラグが立っていた場合には、ページ割り当て処理部132は、ロックフラグからロック解除フラグへゼロクリア状態ロックビットA2が変更されるのを待ち合わせる。ロックフラグとは、ゼロクリア処理部133によるゼロクリア処理の排他的実行を示すフラグである。ロック解除フラグとは、ゼロクリア処理部133によるゼロクリア処理の排他的実行の停止を示すフラグである。
割り当て対象の空きページに対するゼロクリア処理部133によるゼロクリア処理が停止されると、ページ割り当て処理部132は、割り当て対象の空きページに対応するページ構造体1342Aのゼロクリア状態ビットA1およびゼロクリア状態サイズA7を読み込む。そして、ページ割り当て処理部132は、読み込まれたゼロクリア状態ビットA1およびゼロクリア状態サイズA7を用いて、割り当て対象の空きページの中でゼロクリア処理が未実施の記憶領域がないか否かを探索する。具体的には、ページ割り当て処理部132は、読み込まれたゼロクリア状態ビットA1にゼロクリア処理済を示すフラグが立っているか否かを判定する。また、ページ割り当て処理部132は、割り当て対象の空きページのページサイズと、読み込まれたゼロクリア状態サイズA7とが一致するか否かを判定する。ゼロクリア状態ビットA1にゼロクリア処理済を示すフラグが立っていない場合、および割り当て対象の空きページのページサイズと読み込まれたゼロクリア状態サイズA7とが一致しない場合には、ページ割り当て処理部132は、ゼロクリア処理が未実施の記憶領域があると判定する。そして、ページ割り当て処理部132は、判定されたゼロクリア処理が未実施の記憶領域をゼロクリア処理する(ステップS2007)。
割り当て対象の空きページに対応する全ての記憶領域がゼロクリア処理されると、ページ割り当て処理部132は、割り当て対象の空きページに対応するゼロクリア処理済みの記憶領域を、割り当てを要求したプロセス実行部120へ渡す(ステップS2008)。そして、ページ割り当て処理部132は、一連のメモリの割り当て処理を終了する(ステップS2009)。
次に、ページ割り当て処理部132により実行されるメモリの解放処理について説明する。メモリの解放処理とは、プロセス実行部120によるプロセスやタスクの実行等の後に解放されたメモリ内の記憶領域を、管理対象とされる複数の異なるページサイズの内の所定のページサイズの空きページに対応する記憶領域として解放する処理である。
ページ割り当て処理部132は、プロセス実行部120によるプロセスやタスクの実行等に割り当てられたメモリ内の記憶領域が解放されると、メモリの解放処理を開始する。ページ割り当て処理部132は、解放された記憶領域に対応するページをゼロクリア未実施の空きページとしてマークする。具体的には、ページ割り当て処理部132は、解放された空きページに対応するページ構造体1342Aのゼロクリア状態ビットA1にゼロクリア処理が未実施であることを示すフラグを立てる。ページ割り当て処理部132は、空きページビットA4に空きページであることを示すフラグを立てる。ページ割り当て処理部132は、ゼロクリア状態サイズA7にゼロクリア実施済みの領域サイズがないことを示す値“0”を書き込む。
ページ割り当て処理部132は、ゼロクリア未実施の空きページとしてマークされたページを空きページ管理リスト1343に格納する。具体的には、ページ割り当て処理部132は、以下のような処理を実行する。
図3等を参照しながら前述したように、アプリケーション実行用計算機11を一例とする実施形態に従った情報処理装置では、複数の異なるページサイズを有するページを用いてメモリ内の記憶領域が管理される。そこで、空きページ管理リスト1343中には、格納対象の空きページのバディが存在し得る。バディとは、当該ページよりも大きなページサイズを有するページとして当該ページと結合されるページを指す。バディシステムでは、所定の結合規則に従って、当該ページの結合相手となるバディは予め決められる。ページ割り当て処理部132は、格納対象の空きページのページサイズに対応するエントリを参照して、格納対象の空きページのバディが空きページ管理リスト1343中に存在しないか否かを確認する。
確認の結果、格納対象の空きページのバディが存在しない場合、ページ割り当て処理部132は、格納対象の空きページに対応するページ構造体1342AのポインタA5およびA6に所定の値を書き込み、格納対象の空きページを空きページ管理リスト1343に格納する。確認の結果、格納対象の空きページのバディが存在する場合、ページ割り当て処理部132は、格納対象の空きページと格納対象の空きページのバディとの結合処理を実行する。
ページ割り当て処理部132は、結合処理されたページのバディが空きページ管理リスト1343中に存在しないか否かを確認する。確認の結果、結合処理されたページのバディが存在しない場合、ページ割り当て処理部132は、結合処理されたページに対応するページ構造体1342AのポインタA5およびA6に所定の値を書き込み、結合処理されたページを空きページ管理リスト1343に格納する。確認の結果、結合処理されたページのバディが存在する場合、ページ割り当て処理部132は、結合処理されたページと結合処理されたページのバディとの結合処理を実行する。そして、空きページ管理リスト1343中にバディが存在しないと確認されるまで、ページ割り当て処理部132は、上述のような結合処理を繰り返す。
上述のような結合処理が実行される場合、ページ割り当て処理部132は、結合される2つのページに関する管理情報が失われないように、結合される2つのページに関する管理情報を結合後のページに関する管理情報に反映させる。図10は、結合処理に伴う管理情報の更新処理フローの例図である。
ページ割り当て処理部132は、空きページの結合処理に伴う管理情報の更新処理を開始すると(ステップS4001)、結合対象の前半の空きページ(第1の空きページ)に関する管理情報を取得する(S4002)。また、ページ割り当て処理部132は、結合対象の後半の空きページ(第2の空きページ)に関する管理情報を取得する(S4002)。前半および後半の空きページの内、一方の空きページは、新たに解放された記憶領域に対応するページ、或いは新たに解放された記憶領域に対応するページと空きページ管理リスト1343中のそのバディとが結合された結合後のページである。また、他方の空きページは、前半の空きページのバディであり、空きページ管理リスト1343中に存在する。ステップS4002およびS4003の処理により取得される管理情報は、前半および後半の空きページに対応する各々のページ構造体1342Aのゼロクリア状態ビットA1およびゼロクリア状態サイズA7である。
ページ割り当て処理部132は、取得された管理情報を基に、前半の空きページのゼロクリア状態と後半の空きページのゼロクリア状態とが一致するか否かを判定する(ステップS4004)。具体的には、ページ割り当て処理部132は、前半の空きページのゼロクリア状態ビットA1と後半の空きページのゼロクリア状態ビットA1とが一致し、且つ、前半の空きページのページサイズと前半の空きページのゼロクリア状態サイズA7とが一致し、後半の空きページのページサイズと後半の空きページのゼロクリア状態サイズA7とが一致するか否かを判定する。
判定の結果、前半の空きページのゼロクリア状態と後半の空きページのゼロクリア状態とが一致すると判定される場合(ステップS4004で“YES”)、ページ割り当て処理部132は、結合後のページに関する管理情報として、前半および後半の空きページに関する管理情報を纏めて記載する(ステップS4005)。具体的には、ページ割り当て処理部132は、結合後のページがゼロクリア処理済か否かを示す情報として、前半の空きページに対応するページ構造体1342Aのゼロクリア状態ビットA1を保持する。また、ページ割り当て処理部132は、結合後のページのゼロクリア済みの領域サイズを示す情報として、前半の空きページに対応するページ構造体1342Aのゼロクリア状態サイズA7に、前半および後半の空きページのゼロクリア状態サイズA7の合計値を書き込む。
判定の結果、前半の空きページのゼロクリア状態と後半の空きページのゼロクリア状態とが一致しないと判定される場合(ステップS4004で“NO”)、ページ割り当て処理部132は、結合後のページに関する管理情報として、前半および後半の空きページに関する管理情報を保持する(ステップS4006)。具体的には、ページ割り当て処理部132は、結合後のページがゼロクリア処理済か否かを示す情報として、前半および後半の空きページに対応する各々のページ構造体1342Aのゼロクリア状態ビットA1を保持する。また、ページ割り当て処理部132は、結合後のページのゼロクリア済みの領域サイズを示す情報として、前半および後半の空きページに対応する各々のページ構造体1342Aのゼロクリア状態サイズA7を保持する。
ステップS4005の処理またはステップS4006の処理が実行されると、ページ割り当て処理部132は、一連の管理情報の更新処理を終了する(ステップS4007)。なお、結合後のページと結合後のページのバディが更に結合される場合には、ページ割り当て処理部132は、一連の管理情報の更新処理を再度実行する。
ステップS4005の処理およびステップS4006の処理に対する理解を助けるために、図11〜図13を用いて結合処理に伴う管理情報の更新処理を説明する。
図11は、結合処理に伴う管理情報の更新処理についての第1の説明図である。図11には、8 Kbytesの2つのノーマルページGおよびHが16 KbytesのページサイズのラージページIに結合されるケースが例示的に示されている。
図11に示した一例では、ノーマルページGおよびHに対応するメモリ内の記憶領域は、全てゼロクリア処理されており、ノーマルページGおよびHの各々の管理情報領域には、“ゼロクリア状態=8 Kbytesについてゼロクリア済”と記録される。具体的には、ノーマルページGおよびHの各管理情報領域の内、“ゼロクリア状態=ゼロクリア済”という情報は、ノーマルページGおよびHに対応する各々のページ構造体1342Aのゼロクリア状態ビットA1に記録される。また、“ゼロクリア状態=8 Kbytes”という情報は、ノーマルページGおよびHに対応する各々のページ構造体1342Aのゼロクリア状態サイズA7に記録される。
図11に示したノーマルページGおよびHでは、ノーマルページGのゼロクリア状態ビットA1とノーマルページHのゼロクリア状態ビットA1とが一致する。また、ノーマルページGのページサイズとノーマルページGのゼロクリア状態サイズA7とが一致する。ノーマルページHのページサイズとノーマルページHのゼロクリア状態サイズA7とが一致する。そこで、ノーマルページGおよびHがラージページIに結合処理されるケースでは、図10のステップS4005の処理によって、ノーマルページGの管理情報領域に記録されたゼロクリア処理済みという情報がラージページIの管理情報領域に保持される。また、ノーマルページGおよびHのゼロクリア処理済の領域サイズの合計値がラージページIの管理情報領域に保持される。具体的には、ラージページIの“ゼロクリア状態=ゼロクリア済”という情報は、ラージページIの前半のノーマルページ1ページ分に対応するページ構造体1342Aのゼロクリア状態ビットA1に記録される。また、ラージページIの“ゼロクリア状態=16 Kbytes”という情報は、ラージページIの前半のノーマルページ1ページ分に対応するページ構造体1342Aのゼロクリア状態サイズA7に記録される。
このように、ラージページに関する管理情報は、ラージページ内のノーマルページ1ページ毎の全てのページ構造体に記録される必要はない。また、ラージページに関する管理情報は、ラージページ内のノーマルページ1ページ毎の全てのページ構造体を参照しなくても取得できる。したがって、実施形態に従ったページに関する管理情報の更新処理によれば、ページに関する管理情報の検索処理および更新処理を簡略化および高速化できる。
図12は、結合処理に伴う管理情報の更新処理についての第2の説明図である。図12には、8 Kbytesの2つのノーマルページJおよびKが16 KbytesのページサイズのラージページLに結合されるケースが例示的に示されている。
図12に示した一例では、ノーマルページJに対応するメモリ内の記憶領域は、ゼロクリア処理されており、ノーマルページKに対応するメモリ内の記憶領域は、ゼロクリア処理されていない。そこで、ノーマルページJの管理情報領域には、“ゼロクリア状態=8 Kbytesについてゼロクリア済”と記録され、ノーマルページKの管理情報領域には、“ゼロクリア状態=8 Kbytesについてゼロクリア未実施”と記録される。具体的には、ノーマルページJの“ゼロクリア状態=8 Kbytesについてゼロクリア済”という情報は、ノーマルページJに対応するページ構造体1342Aのゼロクリア状態ビットA1およびゼロクリア状態サイズA7に記録される。また、ノーマルページKの“ゼロクリア状態=8 Kbytesについてゼロクリア未実施”という情報は、ノーマルページKに対応するページ構造体1342Aのゼロクリア状態ビットA1およびゼロクリア状態サイズA7に記録される。
図12に示した2つのノーマルページJおよびKでは、ノーマルページJのゼロクリア状態ビットA1とノーマルページKのゼロクリア状態ビットA1とが一致しない。また、ノーマルページKのページサイズとノーマルページKのゼロクリア状態サイズA7とが一致しない。そこで、図10のステップS4006の処理によって、ノーマルページJの“ゼロクリア状態=8 Kbytesについてゼロクリア済”という情報が、結合されたラージページLの管理情報領域に引き続き保持される。また、ノーマルページKの“ゼロクリア状態=8 Kbytesについてゼロクリア未実施”という情報が、結合されたラージページLの管理情報領域に引き続き保持される。具体的には、ノーマルページJの“ゼロクリア状態=8 Kbytesについてゼロクリア済”という情報は、ラージページLの前半のノーマルページ1ページ分に対応するページ構造体1342Aのゼロクリア状態ビットA1およびゼロクリア状態サイズA7により引き続き保持される。また、ノーマルページKの“ゼロクリア状態=8 Kbytesについてゼロクリア未実施”という情報は、ラージページLの後半のノーマルページ1ページ分に対応するページ構造体1342Aのゼロクリア状態ビットA1およびゼロクリア状態サイズA7により引き続き保持される。
図13は、結合処理に伴う管理情報の更新処理についての第3の説明図である。図13には、図12に示したラージページLと図11に示したラージページIとが更に結合処理されたラージページMが例示的に示されている。
図12に示されるように、ラージページLの管理情報領域には、前半のノーマルページページ1ページ分に関する管理情報として“ゼロクリア状態=8 Kbytesについてゼロクリア済”と記録される。また、ラージページLの管理情報領域には、後半のノーマルページページ1ページ分に関する管理情報として“ゼロクリア状態=8 Kbytesについてゼロクリア済”と記録される。図11に示されるように、ラージページIの管理情報領域には、“ゼロクリア状態=16 Kbytesについてゼロクリア済”と記録される。このため、ラージページLのゼロクリア状態とラージページIのゼロクリア状態とが一致しない。すなわち、ラージページLのゼロクリア状態ビットA1とノーマルページIのゼロクリア状態ビットA1とが一致しない。また、ラージページLのページサイズとノーマルページLのゼロクリア状態サイズA7とが一致しない。そこで、図13に示すように、図10のステップS4006の処理によって、ラージページMの管理情報領域には、ラージページLおよびIのゼロクリア状態に関する情報が引き続き保持される。
このように、ラージページ同士が結合されたケースにおいても、結合後のラージページに関する管理情報は、結合後のラージページ内のノーマルページ1ページ毎の全てのページ構造体に記録される必要はない。また、結合後のラージページに関する管理情報は、結合後のラージページ内のノーマルページ1ページ毎の全てのページ構造体を参照しなくても取得できる。したがって、実施形態に従ったページに関する管理情報の更新処理によれば、ページに関する管理情報の検索処理および更新処理を簡略化および高速化できる。また、ページサイズの大きさに依存せずに、管理情報の更新を伴うページの結合処理を実行できる。
以上の説明から理解し得るように、アプリケーション実行用計算機11を一例とする実施形態に従った情報処理装置は、異なるページサイズを各々有する各ページの管理情報を用いて、各ページに対応するメモリ内の記憶領域の初期化状態を管理する。そして、実施形態に従った情報処理装置は、当該空きページに対応する記憶領域の内、管理情報により示される初期化未実施の領域に対して初期化処理を実行する。したがって、割り当て対象のページに対応する全ての記憶領域が常に初期化処理される場合と比べて、記憶領域の割り当て時に初期化処理が必要な領域サイズを少なくできるので、初期化処理を伴う割り当て処理全体の処理時間を短縮できる。すなわち、メモリ取得要求側から指定されたサイズに応じた初期化済みの記憶領域の割り当て処理を高速化できる。
また、実施形態に従った情報処理装置は、メモリ内の記憶領域の割り当て処理とは別に、空きページに対応するメモリ内の記憶領域の初期化処理を実行し得る。したがって、記憶領域の割り当て時に初期化処理が必要な領域サイズを少なくできるので、初期化処理を伴う割り当て処理全体の処理時間を短縮できる。すなわち、メモリ取得要求側から指定されたサイズに応じた初期化済みの記憶領域の割り当て処理を高速化できる。
なお、メモリの割り当て処理およびメモリの初期化処理を含む上述した実施形態に従った情報処理装置により実行される各種処理は、例示であり、必要に応じて変更可能であることに留意すべきである。例えば、上述では、ページの結合処理は、メモリの解放処理時に実行される一例を説明したが、必要に応じて、メモリの割り当て処理時に実行されるように変更してもよい。
上述したように、実施形態に従った情報処理装置では、メモリの割り当てを必要とするジョブの遅延を抑制するために、メモリの割り当て処理は、メモリの割り当て処理とは非同期で実行されるメモリの初期化処理に優先して実行される。さらに、実施形態に従った情報処理装置では、ジョブの性能に影響を与えないように、非同期のゼロクリア処理が実行されるように制御し得る。
ジョブスケジューラ処理部12Aおよびジョブ管理部110と連携して、プロセススケジューラ処理部131がゼロクリア処理部133にゼロクリア処理を実行させるタイミングには、次の2つのタイミングがある。すなわち、ジョブスケジューラ処理部12Aおよびジョブ管理部110といったジョブスケジューリングシステムを介して指示されたアプリケーションプログラムの全てのジョブが当該アプリケーション実行用計算機11内において完了された第1のタイミングである。また、当該アプリケーション実行用計算機11内において、スケジューリングシステムを介して指示されたアプリケーションプログラムのジョブと並行して初期化処理が実行される第2のタイミングである。以下では、図4に示したアプリケーション実行用計算機31を一例として、第1および第2のタイミングにおけるゼロクリア処理の制御方法について説明する。
まず、第1のタイミングについて説明する。図14は、第1のタイミングにおけるゼロクリア処理の説明図である。なお、説明を明確にするために、図14では、図4に示したアプリケーション実行用計算機31の一部の構成要素の図示が省略されている。
ジョブスケジューリングシステムを介して指示されたアプリケーションプログラムの全てのジョブが完了された第1のタイミングでは、当該アプリケーション実行用計算機31内には、ゼロクリア処理の実行よりも優先されるジョブが存在しない。そこで、第1のタイミングでは、メインメモリ340に対するゼロクリア処理が短時間で完了するように、アプリケーション実行用計算機31内のプロセッサ資源がゼロクリア処理の実行に用いられる。例えば、図14に示すように、4つのCPUコア310の内の2つのCPUコア310にゼロクリア処理を実行させることで、メインメモリ340に対するゼロクリア処理を短時間で完了させる。第1のタイミングでは、ゼロクリア処理を実行するCPUコア310は、二次キャッシュ330やバス380中のメモリバスを独占的に使用できる。
次に、第2のタイミングについて説明する。図15は、第2のタイミングにおけるゼロクリア処理の説明図である。図15には、アプリケーション実行用計算機31に含まれる4つのCPUコア310の内、3つのCPUコア310にジョブが割り当てられるときに、ジョブが割り当てられていない1つのCPUコア310にゼロクリア処理を実行させる一例が示されている。なお、説明を明確にするために、図15では、図4に示したアプリケーション実行用計算機31の一部の構成要素の図示が省略されている。
指示されたアプリケーションプログラムのジョブの実行と並列してゼロクリア処理が実行される第2のタイミングでは、二次キャッシュ330やバス380内のメモリバスは、ジョブを実行するCPUコア310とゼロクリア処理を実行するCPUコア310とに共有される。二次キャッシュ330やメモリバスの帯域には、限りがあるため、二次キャッシュ330やメモリバスの帯域がゼロクリア処理の実行に割り当てられると、ジョブのメモリアクセス性能が劣化し、ジョブの実行遅延が生じ得る。そこで、第2のタイミングでは、以下で説明する2つの方法の内の少なくとも1つの方法を用いてゼロクリア処理が実行されるように制御される。
まず第1の制御方法では、ゼロクリア処理時におけるストア命令において、ゼロクリア処理を実行するCPUコア310は、キャッシュの利用を抑止する命令を使用する。具体的には、ゼロクリア処理を実行するCPUコア310は、二次キャッシュ330をバイパスしてメモリバスに直接アクセス可能なCPU命令を使用してメインメモリ340にアクセスする。第1の制御方法では、ジョブを実行するCPUコア310とゼロクリア処理を実行するCPUコア310との間で二次キャッシュ330が共有されないため、ジョブの性能への影響を小さくできる。
第2の制御方法では、Remote Direct Memory Access(RDMA)機能をインターコネクト370に実装させる。また、計算機システム3に含まれる複数の計算ノード(アプリケーション実行用計算機)31の中の任意の計算ノード31のメインメモリ340内にゼロクリア処理済みの記憶領域を予め設定する。そして、ゼロクリア処理を実行する当該計算ノード31は、インターコネクト370を介して、任意の計算ノード31内のゼロクリア処理済みの記憶領域を当該計算ノード31内のメインメモリ340上にRDMA転送させることにより、メインメモリ340内の所定領域のゼロクリア処理を実行する。図15に示すようにインターコネクト370がメモリバスに接続されている場合には、インターコネクト370は、二次キャッシュ330を介さずにメインメモリ340に直接アクセスできる。したがって、第2の制御方法では、ジョブを実行するCPUコア310とゼロクリア処理を実行するCPUコア310との間で二次キャッシュ330の競合を起こさずにゼロクリア処理を実施できるので、ジョブの性能への影響を小さくできる。
以上の説明のように、ページ割り当て処理部132およびゼロクリア処理部133を含む実施形態に従った上述の各種処理を実行する構成要素は、CPUコア310、一次キャッシュ320、および二次キャッシュ330を含むハードウェア構成要素によって実現できる。さらに、実施形態に従った上述の各種処理を実行する構成要素は、実施形態に従ったメモリの割り当て処理やメモリの初期化処理を含む上述の各種処理手順を規律した制御プログラムを実行するコンピュータによって実現することもできる。例えば、上述の各種処理手順を規律した制御プログラムは、磁気ディスク、光ディスク、および光磁気ディスク等の記録媒体に記録される。記録媒体に記録された制御プログラムは、記録媒体用ドライブ360を介してストレージ350に格納される。そして、CPUコア310、一次キャッシュ320、および二次キャッシュ330を含むプロセッサは、ストレージ350に格納された制御プログラムをメインメモリ340に読み込んで、制御プログラムを実行する。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理し、前記メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納する空きページ格納部と、
前記未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを前記空きページ格納部から選択し、選択された前記空きページに関する管理情報を用いて前記空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行するページ割り当て処理部と
を含む、情報処理装置。
(付記2)
前記空きページ格納部は、前記複数の異なるページサイズの内で最小のページサイズを有するノーマルページ単位で設定されたページ構造体を含み、
第1および第2のノーマルページが初期化処理済みの空きページである場合には、前記ページ割り当て処理部は、前記第1および前記第2のノーマルページが結合されたラージページに関する管理情報を前記第1のノーマルページに対応する前記ページ構造体に記録し、
前記第1および第2のノーマルページの何れかが初期化処理が未実施の空きページである場合には、前記ページ割り当て処理部は、前記ラージページに関する管理情報を前記第1および第2のノーマルページに対応する各々の前記ページ構造体に記録する、
付記1に記載の情報処理装置。
(付記3)
ラージページのページサイズと前記ラージページの管理情報により示される初期化処理済みの領域サイズとが一致する場合、前記ページ割り当て処理部は、前記ラージページが分割された第3および第4のノーマルページに対応する各々の前記ページ構造体に前記初期化済みの領域サイズを2等分したサイズを記録し、
前記ラージページのページサイズと前記初期化処理済みの領域サイズとが一致しない場合、前記ページ割り当て処理部は、前記ラージページ内の前半ページに対応する前記ページ構造体の情報を前記第3のノーマルページに対応する前記ページ構造体の情報として保存し、前記ラージページ内の後半ページに対応する前記ページ構造体の情報を前記第4のノーマルページに対応する前記ページ構造体の情報として保存する、
付記2に記載の情報処理装置。
(付記4)
前記ページ割り当て処理部により実行される前記初期化処理を含む記憶領域の割り当て処理とは異なるタイミングで、前記空きページ格納部に格納された前記空きページに対応する記憶領域に対する非同期の初期化処理を前記空きページに関する前記管理情報を用いて実行するゼロクリア処理部を更に含む、付記1〜3の何れか一項に記載の情報処理装置。
(付記5)
前記ゼロクリア処理部は、前記空きページ格納部から選択された前記空きページが前記ページ割り当て処理部が割り当て処理の対象とするページであるか否かを判定し、選択された前記空きページが前記ページ割り当て処理部が割り当て処理の対象とするページである場合には、前記空きページに対する前記非同期の初期化処理を停止する、付記4に記載の情報処理装置。
(付記6)
前記空きページに関する管理情報は、前記空きページに対する前記ゼロクリア処理部による前記非同期の初期化処理の実行を制御する制御フラグを含み、
前記空きページが前記割り当て処理の対象のページと決定された場合に、前記ページ割り当て処理部は、前記制御フラグに前記ゼロクリア処理部による前記非同期の初期化処理を停止させる停止フラグを立てる、
付記4または5に記載の情報処理装置。
(付記7)
前記ゼロクリア処理部は、前記空きページ内のノーマルページ1ページ分に対して初期化処理を実行した後に、前記制御フラグに前記停止フラグが立っていないか否かを確認する、付記6に記載の情報処理装置。
(付記8)
前記ゼロクリア処理部が前記非同期の初期化処理を実行するタイミングを制御するプロセススケジューラ処理部を更に含み、
前記プロセススケジューラ処理部は、前記ページ割り当て処理部により割り当てられた初期化処理済の記憶領域を用いて実行されるジョブが完了している第1のタイミングで前記ゼロクリア処理部に前記非同期の初期化処理を実行させる、
付記4〜7の何れか一項に記載の情報処理装置。
(付記9)
前記ページ割り当て処理部により割り当てられた記憶領域を用いたジョブが実行中である第2のタイミングにおいて、前記プロセススケジューラ処理部は、前記ジョブを実行するプロセス実行部と共有されるキャッシュまたは前記ゼロクリア処理部と前記メモリとの間のメモリバスを使用せずに前記ゼロクリア処理部に前記非同期の初期化処理を実行させる、付記8に記載の情報処理装置。
(付記10)
メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理する空きページ格納部に、前記メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納し、
前記未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを前記空きページ格納部から選択し、
選択された前記空きページに関する管理情報を用いて前記空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行する、
情報処理装置の制御方法。
(付記11)
前記空きページ格納部には、前記複数の異なるページサイズの内で最小のページサイズを有するノーマルページ単位で設定されたページ構造体が含まれ、
第1および第2のノーマルページが初期化処理済みの空きページである場合には、前記第1および前記第2のノーマルページが結合されたラージページに関する管理情報を前記第1のノーマルページに対応する前記ページ構造体に記録し、
前記第1および第2のノーマルページの何れかが初期化処理が未実施の空きページである場合には、前記ラージページに関する管理情報を前記第1および第2のノーマルページに対応する各々の前記ページ構造体に記録する、
付記10に記載の情報処理装置の制御方法。
(付記12)
ラージページのページサイズと前記ラージページの管理情報により示される初期化処理済みの領域サイズとが一致する場合に、前記ラージページが分割された第3および第4のノーマルページに対応する各々の前記ページ構造体に前記初期化済みの領域サイズを2等分したサイズを記録し、
前記ラージページのページサイズと前記初期化処理済みの領域サイズとが一致しない場合に、前記ラージページ内の前半ページに対応する前記ページ構造体の情報を前記第3のノーマルページに対応する前記ページ構造体の情報として保存し、前記ラージページ内の後半ページに対応する前記ページ構造体の情報を前記第4のノーマルページに対応する前記ページ構造体の情報として保存する、
付記11に記載の情報処理装置の制御方法。
(付記13)
前記初期化処理を含む記憶領域の割り当て処理とは異なるタイミングで、前記空きページ格納部に格納された前記空きページに対応する記憶領域に対する非同期の初期化処理を前記空きページに関する前記管理情報を用いて実行する、
付記10〜12の何れか一項に記載の情報処理装置の制御方法。
(付記14)
前記空きページ格納部から選択された前記空きページが前記割り当て処理の対象とするページであるか否かを判定し、
前記空きページが割り当て処理の対象とするページである場合には、前記空きページに対する前記非同期の初期化処理を停止する、
付記13に記載の情報処理装置の制御方法。
(付記15)
前記空きページに関する管理情報には、前記空きページに対する前記非同期の初期化処理の実行を制御する制御フラグが含まれ、
前記空きページが前記割り当て処理の対象のページと決定された場合に、前記制御フラグに前記非同期の初期化処理を停止させる停止フラグを立てる、
付記13または14に記載の情報処理装置の制御方法。
(付記16)
前記空きページ内のノーマルページ1ページ分に対して前記非同期の初期化処理を実行した後に、前記制御フラグに前記停止フラグが立っていないか否かを確認する、付記15に記載の情報処理装置の制御方法。
(付記17)
前記非同期の初期化処理を実行するタイミングを制御し、
前記割り当て処理により割り当てられた初期化処理済の記憶領域を用いて実行されるジョブが完了している第1のタイミングで前記非同期の初期化処理を実行させる、
付記13〜16の何れか一項に記載の情報処理装置の制御方法。
(付記18)
前記割り当て処理により割り当てられた記憶領域を用いたジョブが実行中である第2のタイミングにおいて、前記ジョブの実行と共有されるキャッシュまたは前記メモリへのメモリバスを使用せずに前記非同期の初期化処理を実行する、
付記17に記載の情報処理装置の制御方法。
(付記19)
メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理する空きページ格納部に、前記メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納し、
前記未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを前記空きページ格納部から選択し、
選択された前記空きページに関する管理情報を用いて前記空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行する、
処理をコンピュータに実行させる制御プログラム。
(付記20)
前記空きページ格納部には、前記複数の異なるページサイズの内で最小のページサイズを有するノーマルページ単位で設定されたページ構造体が含まれ、
第1および第2のノーマルページが初期化処理済みの空きページである場合には、前記第1および前記第2のノーマルページが結合されたラージページに関する管理情報を前記第1のノーマルページに対応する前記ページ構造体に記録し、
前記第1および第2のノーマルページの何れかが初期化処理が未実施の空きページである場合には、前記ラージページに関する管理情報を前記第1および第2のノーマルページに対応する各々の前記ページ構造体に記録する、
付記19に記載の制御プログラム。
(付記21)
ラージページのページサイズと前記ラージページの管理情報により示される初期化処理済みの領域サイズとが一致する場合に、前記ラージページが分割された第3および第4のノーマルページに対応する各々の前記ページ構造体に前記初期化済みの領域サイズを2等分したサイズを記録し、
前記ラージページのページサイズと前記初期化処理済みの領域サイズとが一致しない場合に、前記ラージページ内の前半ページに対応する前記ページ構造体の情報を前記第3のノーマルページに対応する前記ページ構造体の情報として保存し、前記ラージページ内の後半ページに対応する前記ページ構造体の情報を前記第4のノーマルページに対応する前記ページ構造体の情報として保存する、
付記20に記載の制御プログラム。
(付記22)
前記初期化処理を含む記憶領域の割り当て処理とは異なるタイミングで、前記空きページ格納部に格納された前記空きページに対応する記憶領域に対する非同期の初期化処理を前記空きページに関する前記管理情報を用いて実行する、
付記19〜21の何れか一項に記載の制御プログラム。
(付記23)
前記空きページ格納部から選択された前記空きページが前記割り当て処理の対象とするページであるか否かを判定し、
前記空きページが割り当て処理の対象とするページである場合には、前記空きページに対する前記非同期の初期化処理を停止する、
付記22に記載の制御プログラム。
(付記24)
前記空きページに関する管理情報には、前記空きページに対する前記非同期の初期化処理の実行を制御する制御フラグが含まれ、
前記空きページが前記割り当て処理の対象のページと決定された場合に、前記制御フラグに前記非同期の初期化処理を停止させる停止フラグを立てる、
付記22または23に記載の制御プログラム。
(付記25)
前記空きページ内のノーマルページ1ページ分に対して前記非同期の初期化処理を実行した後に、前記制御フラグに前記停止フラグが立っていないか否かを確認する、付記24に記載の制御プログラム。
(付記26)
前記非同期の初期化処理を実行するタイミングを制御し、
前記割り当て処理により割り当てられた初期化処理済の記憶領域を用いて実行されるジョブが完了している第1のタイミングで前記非同期の初期化処理を実行させる、
付記22〜25の何れか一項に記載の制御プログラム。
(付記27)
前記割り当て処理により割り当てられた記憶領域を用いたジョブが実行中である第2のタイミングにおいて、前記ジョブの実行と共有されるキャッシュまたは前記メモリへのメモリバスを使用せずに前記非同期の初期化処理を実行する、
付記26に記載の制御プログラム。