JP6244949B2 - 情報処理装置、制御方法、および制御プログラム - Google Patents

情報処理装置、制御方法、および制御プログラム Download PDF

Info

Publication number
JP6244949B2
JP6244949B2 JP2014017240A JP2014017240A JP6244949B2 JP 6244949 B2 JP6244949 B2 JP 6244949B2 JP 2014017240 A JP2014017240 A JP 2014017240A JP 2014017240 A JP2014017240 A JP 2014017240A JP 6244949 B2 JP6244949 B2 JP 6244949B2
Authority
JP
Japan
Prior art keywords
page
processing unit
empty
size
zero clear
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
JP2014017240A
Other languages
English (en)
Other versions
JP2015143943A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014017240A priority Critical patent/JP6244949B2/ja
Priority to FR1463490A priority patent/FR3017222A1/fr
Priority to US14/590,037 priority patent/US9489295B2/en
Publication of JP2015143943A publication Critical patent/JP2015143943A/ja
Application granted granted Critical
Publication of JP6244949B2 publication Critical patent/JP6244949B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management

Description

本発明は、情報処理装置、情報処理装置の制御方法、および情報処理装置の制御プログラムに関する。
コンピュータに実装されるOperating System(OS)を実行するプロセッサは、そのOSの配下で動作する新たなプロセスやタスクを実行するために使用されるメモリの記憶領域として、以前のプロセスやタスクの実行後に解放された記憶領域を再び割り当てる。こうした記憶領域の再割り当てが実行される前には、再割り当て対象の記憶領域内に残された以前のプロセスやタスクの情報が漏洩することを防ぐために、記憶領域の再初期化が実行される。ただし、OSのカーネル内部でのメモリの割り当てでは必ずしも初期化が必要でないケースがあることや、解放された記憶領域が事前に初期化されたとしてもコンピュータの電源オフまでの期間といった所定の有効期間内に新たなプロセスの実行に利用されないケースがある。そこで、不必要に初期化が実行されることを抑制するために、記憶領域の再初期化は、記憶領域の再割り当てが必要になった時点で実行され得る。
プロセッサにより実行されるOSにおいて、メモリ内の記憶領域は、ページと称される単位、すなわち、連続した所定の記憶領域のサイズ(領域サイズ)単位で分割して管理される。OSにより管理されるページの大きさは、4 Kbytesや8 Kbytesであり得る。また、近年、OS或いはOSの配下で動作するプロセスやタスクの種類によっては、4 Kbytesや8 Kbytesといった通常サイズよりも大きなサイズのページ、例えば、Mbytes単位のサイズのページが用いられ得る。以下の説明では、4 Kbytesや8 Kbytesといった通常サイズのページを便宜的にノーマルページと呼び、通常サイズよりも大きなサイズのページをラージページと便宜的に呼ぶ。メモリ内の記憶領域がラージページにより管理される場合、同じ大きさのメモリを利用するために必要なページ数は、ノーマルページが用いられるケースと比較して少なくなるため、ページの管理コストは小さくなる。このため、メモリ内の記憶領域の管理にラージページが用いられると、Translation Look aside Buffer(TLB、アドレス変換バッファ)ミスといった不具合を削減し得、アプリケーションの性能を向上し得る。
しかしながら、メモリ内の記憶領域の管理に単一サイズのラージページが用いられると、有効に利用できるメモリ量が減少し得る。例えば、メモリ内の記憶領域が4 Mbytesのラージページにより管理されるケースにおいて64 Kbytesのプログラムが実行されると、プログラムは64 Kbytesしかないにもかかわらず、1ページ分の4 Mbytesの記憶領域がプログラムの実行に割り当てられる必要が生じる。
そこで、複数の異なるサイズのページが用途に応じて利用できれば、メモリをより有効に利用できる。サイズの異なる複数のメモリブロックを効率的に管理する方法としては、バディシステム(Buddy System)があり、Linuxカーネル等で採用されている。バディシステムでは、複数の連続したページがより大きなサイズのページに結合され、大きなサイズのページが複数の小さなサイズのページに分割されるようにページサイズが可変に制御される。このようなページの結合および分割が実行されることによって、実行されるプロセスやタスクに応じて適切な領域サイズの記憶領域が割り当てられる。
なお、以下のようなページ割り当てシステムが知られている。すなわち、ページで管理されているメモリについて、アプリケーションからのページ取得要求時、アプリケーションからのページ解放時、もしくは、ページを確保しているアプリケーションからのページに対するデータ設定時に、データの流出を防ぐ必要がある安全でないページが検出される。そして、検出された安全でないページのみに対して初期化が行われる。
また、以下のようなメモリ割り当て方式が知られている。システム負荷監視機構は、計算機システムの負荷状況を監視し、システム負荷が低いと判断すると、ページゼロクリア機構を起動させる。ページゼロクリア機構は、次に要求された際に割り当てる予定のページをフリーページプールから取り出して、その内容をゼロクリアし、そのページをゼロクリアページプールへ移し替える。ページアロケート機構は、ゼロクリアされたページが要求されていると判断した場合には、ページゼロクリア機構が用意したゼロクリア済みページプールから取り出したページを要求者に返す。
さらに、以下のようなマイクロプロセッサシステムが知られている。すなわち、マイクロプロセッサは、メモリの初期化すべき先頭アドレスとサイズを指定する。DMAコンローラは、先頭アドレスおよびサイズにより指定されたメモリの初期化すべき全てのアドレスに初期化データを転送してメモリの初期化を行う。DMA転送によりメモリの初期化が行われる場合、初期化データレジスタから出力された初期化データは、ビット幅拡張回路においてビット幅が拡張され、データバスを介してメモリへ転送される。
特開2006−48436号公報 特開平11−3271号公報 特開2006−215991号公報
発明が解決しようとする課題の1つは、メモリ内の記憶領域を複数の異なるサイズのページを用いて管理する情報処理装置において、メモリ取得要求側から指定されたサイズに応じた初期化済みの記憶領域の割り当て処理を高速化することである。
一実施形態に従った情報処理装置は、空きページ格納部およびページ割り当て処理部を含む。空きページ格納部は、メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理し、メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納する。ページ割り当て処理部は、未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを空きページ格納部から選択し、選択された空きページに関する管理情報を用いて空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行する。
一実施形態に従った情報処理装置によれば、メモリ取得要求側から指定されたサイズに応じた初期化済みの記憶領域の割り当て処理を高速化できる。
実施形態に従った情報処理装置を含む例示的な計算機システムの機能構成図である。 実施形態に従った例示的なページ構造体の概略図である。 実施形態に従った空きページ管理リストの例図である。 実施形態に従った情報処理装置を含む例示的な計算機システムのハードウェア構成図である。 ゼロクリア処理部により実行されるゼロクリア処理フローの例図である。 ページ割り当て処理部により実行されるメモリの割り当て処理フローの例図である。 分割処理に伴う管理情報の更新処理フローの例図である。 分割処理に伴う管理情報の更新処理についての第1の説明図である。 分割処理に伴う管理情報の更新処理についての第2の説明図である。 結合処理に伴う管理情報の更新処理フローの例図である。 結合処理に伴う管理情報の更新処理についての第1の説明図である。 結合処理に伴う管理情報の更新処理についての第2の説明図である。 結合処理に伴う管理情報の更新処理についての第3の説明図である。 第1のタイミングにおけるゼロクリア処理の説明図である。 第2のタイミングにおけるゼロクリア処理の説明図である。
以下、図面を参照しながら発明を実施するための形態を説明する。
プロセスやタスクにメモリ内の記憶領域を新たに割り当てるために要する処理時間は、プロセスやタスクを実行するために要求されるメモリの領域サイズに対応するページの数と、割り当てのために初期化処理を要するメモリの領域サイズとに依存し得る。メモリの記憶領域がラージページを用いて管理されるケースでは、割り当てに必要とされるページ数は、ノーマルページを用いて管理されるケースと比較して減少し得る。一方、要求された領域サイズに対応した記憶領域を割り当てるために初期化が必要となるメモリの領域サイズは、ノーマルページが用いられるケースと変わらない。この結果、メモリ内の記憶領域がラージページを用いて管理されるケースでは、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に記載の制御プログラム。
1、3 計算機システム
2、4 利用者端末装置
2A アプリケーションプログラム処理部
11、31 アプリケーション実行用計算機(計算ノード)
110 ジョブ管理部
120 プロセス実行部
130 OS処理部
131 プロセススケジューラ処理部
132 ページ割り当て処理部
133 ゼロクリア処理部
134 空きページ格納部
1341 物理メモリ
1342 ページ構造体群
1342A ページ構造体
A1 ゼロクリア状態ビット
A2 ゼロクリア状態ロックビット
A3 ゼロクリア処理制御ビット
A4 空きページビット
A5 次の空きページのページ構造体へのポインタ
A6 前の空きページのページ構造体へのポインタ
A7 ゼロクリア状態サイズ
1343 空きページ管理リスト
12、32 ジョブ管理用計算機
12A ジョブスケジューラ処理部
310 CPUコア
320 一次(L1)キャッシュ
330 二次(L2)キャッシュ
340 メインメモリ
350 ストレージ
360 記録媒体用ドライブ
370 インターコネクト
380 バス
33 ノード間接続ネットワーク

Claims (10)

  1. メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理し、前記メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納する空きページ格納部と、
    前記未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを前記空きページ格納部から選択し、選択された前記空きページに関する管理情報を用いて前記空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行するページ割り当て処理部と
    を含む、情報処理装置であって、
    前記空きページ格納部は、前記複数の異なるページサイズの内で最小のページサイズを有するノーマルページ単位で設定されたページ構造体を含み、
    第1および第2のノーマルページが初期化処理済みの空きページである場合には、前記ページ割り当て処理部は、前記第1および前記第2のノーマルページが結合されたラージページに関する管理情報を前記第1のノーマルページに対応する前記ページ構造体に記録し、
    前記第1および第2のノーマルページの何れかが初期化処理が未実施の空きページである場合には、前記ページ割り当て処理部は、前記ラージページに関する管理情報を前記第1および第2のノーマルページに対応する各々の前記ページ構造体に記録する、
    ことを特徴とする情報処理装置。
  2. ラージページのページサイズと前記ラージページの管理情報により示される初期化処理済みの領域サイズとが一致する場合、前記ページ割り当て処理部は、前記ラージページが分割された第3および第4のノーマルページに対応する各々の前記ページ構造体に前記初期化済みの領域サイズを2等分したサイズを記録し、
    前記ラージページのページサイズと前記初期化処理済みの領域サイズとが一致しない場合、前記ページ割り当て処理部は、前記ラージページ内の前半ページに対応する前記ページ構造体の情報を前記第3のノーマルページに対応する前記ページ構造体の情報として保存し、前記ラージページ内の後半ページに対応する前記ページ構造体の情報を前記第4のノーマルページに対応する前記ページ構造体の情報として保存する、
    請求項に記載の情報処理装置。
  3. 前記ページ割り当て処理部により実行される前記初期化処理を含む記憶領域の割り当て処理とは異なるタイミングで、前記空きページ格納部に格納された前記空きページに対応する記憶領域に対する非同期の初期化処理を前記空きページに関する前記管理情報を用いて実行するゼロクリア処理部を更に含む、請求項1または2に記載の情報処理装置。
  4. 前記ゼロクリア処理部は、前記空きページ格納部から選択された前記空きページが前記ページ割り当て処理部が割り当て処理の対象とするページであるか否かを判定し、選択された前記空きページが前記ページ割り当て処理部が割り当て処理の対象とするページである場合には、前記空きページに対する前記非同期の初期化処理を停止する、請求項に記載の情報処理装置。
  5. 前記空きページに関する管理情報は、前記空きページに対する前記ゼロクリア処理部による前記非同期の初期化処理の実行を制御する制御フラグを含み、
    前記空きページが前記割り当て処理の対象のページと決定された場合に、前記ページ割り当て処理部は、前記制御フラグに前記ゼロクリア処理部による前記非同期の初期化処理を停止させる停止フラグを立てる、
    請求項またはに記載の情報処理装置。
  6. 前記ゼロクリア処理部は、前記空きページ内のノーマルページ1ページ分に対して前記非同期の初期化処理を実行した後に、前記制御フラグに前記停止フラグが立っていないか否かを確認する、請求項に記載の情報処理装置。
  7. 前記ゼロクリア処理部が前記非同期の初期化処理を実行するタイミングを制御するプロセススケジューラ処理部を更に含み、
    前記プロセススケジューラ処理部は、前記ページ割り当て処理部により割り当てられた初期化処理済の記憶領域を用いて実行されるジョブが完了している第1のタイミングで前記ゼロクリア処理部に前記非同期の初期化処理を実行させる、
    請求項の何れか一項に記載の情報処理装置。
  8. 前記ページ割り当て処理部により割り当てられた記憶領域を用いたジョブが実行中である第2のタイミングにおいて、前記プロセススケジューラ処理部は、前記ジョブを実行するプロセス実行部と共有されるキャッシュを使用せずに前記ゼロクリア処理部に前記非同期の初期化処理を実行させる、請求項に記載の情報処理装置。
  9. メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理する空きページ格納部に、前記メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納し、
    前記未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを前記空きページ格納部から選択し、
    選択された前記空きページに関する管理情報を用いて前記空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行する、
    情報処理装置の制御方法であって、
    前記空きページ格納部は、前記複数の異なるページサイズの内で最小のページサイズを有するノーマルページ単位で設定されたページ構造体を含み、
    第1および第2のノーマルページが初期化処理済みの空きページである場合には、前記第1および前記第2のノーマルページが結合されたラージページに関する管理情報を前記第1のノーマルページに対応する前記ページ構造体に記録し、
    前記第1および第2のノーマルページの何れかが初期化処理が未実施の空きページである場合には、前記ラージページに関する管理情報を前記第1および第2のノーマルページに対応する各々の前記ページ構造体に記録する、
    ことを特徴とする情報処理装置の制御方法
  10. メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理する空きページ格納部に、前記メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納し、
    前記未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを前記空きページ格納部から選択し、
    選択された前記空きページに関する管理情報を用いて前記空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行する、
    処理をコンピュータに実行させる制御プログラムであって、
    前記空きページ格納部は、前記複数の異なるページサイズの内で最小のページサイズを有するノーマルページ単位で設定されたページ構造体を含み、
    第1および第2のノーマルページが初期化処理済みの空きページである場合には、前記第1および前記第2のノーマルページが結合されたラージページに関する管理情報を前記第1のノーマルページに対応する前記ページ構造体に記録し、
    前記第1および第2のノーマルページの何れかが初期化処理が未実施の空きページである場合には、前記ラージページに関する管理情報を前記第1および第2のノーマルページに対応する各々の前記ページ構造体に記録する、
    処理を前記コンピュータに実行させる制御プログラム
JP2014017240A 2014-01-31 2014-01-31 情報処理装置、制御方法、および制御プログラム Active JP6244949B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014017240A JP6244949B2 (ja) 2014-01-31 2014-01-31 情報処理装置、制御方法、および制御プログラム
FR1463490A FR3017222A1 (fr) 2014-01-31 2014-12-31 Appareil, procede et programme de traitement d'informations
US14/590,037 US9489295B2 (en) 2014-01-31 2015-01-06 Information processing apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014017240A JP6244949B2 (ja) 2014-01-31 2014-01-31 情報処理装置、制御方法、および制御プログラム

Publications (2)

Publication Number Publication Date
JP2015143943A JP2015143943A (ja) 2015-08-06
JP6244949B2 true JP6244949B2 (ja) 2017-12-13

Family

ID=53674396

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014017240A Active JP6244949B2 (ja) 2014-01-31 2014-01-31 情報処理装置、制御方法、および制御プログラム

Country Status (3)

Country Link
US (1) US9489295B2 (ja)
JP (1) JP6244949B2 (ja)
FR (1) FR3017222A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016048502A (ja) * 2014-08-28 2016-04-07 富士通株式会社 情報処理装置及びメモリアクセス処理方法
KR102586628B1 (ko) * 2015-06-05 2023-10-11 삼성전자 주식회사 전자 장치 및 전자 장치의 메모리 관리 방법
US9870171B2 (en) * 2015-06-25 2018-01-16 International Business Machines Corporation Affinity-aware parallel zeroing of memory for initialization of large pages in non-uniform memory access (NUMA) servers
CN107220093B (zh) * 2017-06-20 2021-01-01 北京金山安全软件有限公司 一种进程处理方法及装置
JP7007557B2 (ja) * 2017-08-24 2022-01-24 富士通株式会社 情報処理装置、プロセス管理方法およびプロセス管理プログラム
JP7147531B2 (ja) * 2018-12-12 2022-10-05 日本電気株式会社 情報処理装置、メモリ初期化制御方法及びプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3061001B2 (ja) * 1997-06-12 2000-07-10 日本電気株式会社 計算機システムにおけるメモリ割り当て方式
US6182089B1 (en) * 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
US6658437B1 (en) * 2000-06-05 2003-12-02 International Business Machines Corporation System and method for data space allocation using optimized bit representation
JP2006048437A (ja) * 2004-08-05 2006-02-16 Matsushita Electric Ind Co Ltd メモリ割り当て方式
JP2006048436A (ja) 2004-08-05 2006-02-16 Matsushita Electric Ind Co Ltd メモリ割り当て方式
JP2006215991A (ja) 2005-02-07 2006-08-17 Fujitsu Ltd Dmaコントローラ
US7716448B2 (en) * 2007-02-28 2010-05-11 Red Hat, Inc. Page oriented memory management
WO2012107988A1 (ja) * 2011-02-07 2012-08-16 富士通株式会社 メモリ管理プログラム、メモリ管理方法及び情報処理装置
US9286201B2 (en) * 2013-09-25 2016-03-15 Globalfoundries Inc. Method and system for automatic space organization in tier2 solid state drive (SSD) cache in databases for multi page support

Also Published As

Publication number Publication date
US9489295B2 (en) 2016-11-08
JP2015143943A (ja) 2015-08-06
FR3017222A1 (fr) 2015-08-07
US20150220447A1 (en) 2015-08-06

Similar Documents

Publication Publication Date Title
JP6244949B2 (ja) 情報処理装置、制御方法、および制御プログラム
CN105740164B (zh) 支持缓存一致性的多核处理器、读写方法、装置及设备
US9063786B2 (en) Preferential CPU utilization for tasks
JP7280508B2 (ja) 情報処理装置、情報処理方法および仮想マシン接続管理プログラム
TW201107974A (en) Cache coherent support for flash in a memory hierarchy
US20130073783A1 (en) Hybrid data storage management taking into account input/output (i/o) priority
KR20130018742A (ko) 가비지 콜렉션을 위한 gpu 서포트
US9448934B2 (en) Affinity group access to global data
JP2015504541A (ja) マルチプロセッサ・コンピューティング・システムにおけるメモリ・アクセスを動的に最適化する方法、プログラム、及びコンピューティング・システム
JP2009512948A (ja) ストレージサーバにおけるスループットを増加させる方法および装置
JP2017227969A (ja) 制御プログラム、システム、及び方法
US20220066928A1 (en) Pooled memory controller for thin-provisioning disaggregated memory
US10826848B2 (en) Balanced, opportunistic multicore I/O scheduling from non-SMP applications
US11157191B2 (en) Intra-device notational data movement system
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
US20130013871A1 (en) Information processing system and data processing method
US10664393B2 (en) Storage control apparatus for managing pages of cache and computer-readable storage medium storing program
US20220382672A1 (en) Paging in thin-provisioned disaggregated memory
KR101303079B1 (ko) 멀티-코어 기반의 가상화 환경에서 캐쉬 일관성을 제어하는 장치 및 방법
US10437471B2 (en) Method and system for allocating and managing storage in a raid storage system
CN113176950B (zh) 报文处理方法、装置、设备及计算机可读存储介质
JP7384102B2 (ja) ベクトルプロセッサ、演算方法及びプログラム
JP5338452B2 (ja) メモリ管理システム、メモリ管理方法及びプログラム
CN117311638A (zh) 缓存管理方法、缓存管理装置、处理器
US9298622B2 (en) Affinity group access to global data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161004

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170718

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170904

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: 20171017

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171030

R150 Certificate of patent or registration of utility model

Ref document number: 6244949

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150