JP2018010507A - メモリ管理プログラム、メモリ管理方法及びメモリ管理装置 - Google Patents

メモリ管理プログラム、メモリ管理方法及びメモリ管理装置 Download PDF

Info

Publication number
JP2018010507A
JP2018010507A JP2016139246A JP2016139246A JP2018010507A JP 2018010507 A JP2018010507 A JP 2018010507A JP 2016139246 A JP2016139246 A JP 2016139246A JP 2016139246 A JP2016139246 A JP 2016139246A JP 2018010507 A JP2018010507 A JP 2018010507A
Authority
JP
Japan
Prior art keywords
address
area
data
memory
access
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.)
Pending
Application number
JP2016139246A
Other languages
English (en)
Inventor
数村 憲治
Kenji Kazumura
憲治 数村
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 JP2016139246A priority Critical patent/JP2018010507A/ja
Priority to US15/641,466 priority patent/US20180018121A1/en
Publication of JP2018010507A publication Critical patent/JP2018010507A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Memory System (AREA)

Abstract

【課題】ガーベジコレクションによってアプリケーションが停止する時間を短縮する。【解決手段】メモリ管理方法は、メモリの領域に含まれ且つソフトウエアに割り当てられた第1の領域におけるデータのうちソフトウエアのプロセスにアクセスされないデータ以外のデータをメモリの領域のうち第2の領域に移動するデータ移動処理の開始から終了までの間に、第1の領域内の第1のアドレスにおけるデータをアクセス先とするリクエストをソフトウエアのプロセスから受信した場合、第1のアドレスにおけるデータの移動先である第2の領域内の第2のアドレスを、メモリの領域のうち第1の領域内のデータの移動先のアドレスを格納する領域から特定し、リクエストのアクセス先を、第1のアドレスから第2のアドレスに変更する処理を含む。【選択図】図7

Description

本発明は、メモリ管理技術に関する。
メモリに対してガーベジコレクションが行われる場合、データの不整合が発生しないようにするためアプリケーションの処理は停止される。図1を用いて、ガーベジコレクションとアプリケーションの処理との関係について説明する。図1においては、アプリケーションの処理が停止されると、ガーベジコレクションが開始し、オブジェクトのコピーが行われる。図1の例では、生存オブジェクトであるオブジェクトAが古い領域から新しい領域にコピーされる。ガーベジコレクションが終了すると、アプリケーションの処理が再開される。
メモリの容量が数GB(ギガバイト)程度である場合、コピーイングGC(Garbage Collection)を利用することで停止時間を数十ミリ秒から数百ミリ秒程度に抑えることができる。しかし、メモリの容量が数TB(テラバイト)程度である場合には、コピーイングGC等を利用したとしても停止時間が数秒から数分程度になることがある。
或る文献は、ガーベジコレクションにおいてアプリケーションの処理の停止時間を短縮する技術を開示する。具体的には、オブジェクトがコピーされるフェーズにおいて、コピー元のオブジェクトが存在する世代領域を読み出し専用にするための設定が行われる。これにより、アプリケーションによる読み出しのアクセスが停止されることを防ぎ、アプリケーションによる処理が滞ることが抑制される。
但し、この技術を利用したとしても、アクセス時のオーバーヘッド等が原因でアプリケーションの停止時間を十分に短縮できないことがある。
特開2014−044472号公報
本発明の目的は、1つの側面では、ガーベジコレクションによってアプリケーションが停止する時間を短縮するための技術を提供することである。
本発明に係るメモリ管理方法は、メモリの領域に含まれ且つソフトウエアに割り当てられた第1の領域におけるデータのうちソフトウエアのプロセスにアクセスされないデータ以外のデータをメモリの領域のうち第2の領域に移動するデータ移動処理の開始から終了までの間に、第1の領域内の第1のアドレスにおけるデータをアクセス先とするリクエストをソフトウエアのプロセスから受信した場合、第1のアドレスにおけるデータの移動先である第2の領域内の第2のアドレスを、メモリの領域のうち第1の領域内のデータの移動先のアドレスを格納する領域から特定し、リクエストのアクセス先を、第1のアドレスから第2のアドレスに変更する処理を含む。
1つの側面では、ガーベジコレクションによってアプリケーションが停止する時間を短縮できるようになる。
図1は、ガーベジコレクションとアプリケーションの処理との関係について説明するための図である。 図2は、情報処理装置のハードウエア構成図である。 図3は、CPUコアのハードウエア構成図である。 図4は、本実施の形態におけるメモリの使用態様について説明するための図である。 図5Aは、HDDに格納されるプログラムの一例を示す図である。 図5Bは、GCハンドラの機能ブロック図である。 図6は、ガーベジコレクタの処理の処理フローを示す図である。 図7は、ロード命令及びストア命令の発行時に実行される処理の処理フローを示す図である。 図8は、ロード命令及びストア命令に従ったアクセスについて説明するための図である。 図9は、検知処理の処理フローを示す図である。 図10は、アクセス属性値のコピーについて説明するための図である。 図11は、アクセス可能か否かの判定について説明するための図である。 図12は、本実施の形態のガーベジコレクションを具体的に説明するための図である。 図13は、停止時間の短縮について説明するための図である。
図2に、本実施の形態の情報処理装置1のハードウエア構成図を示す。情報処理装置1は、CPU(Central Processing Unit)10と、例えばDIMM(Dual Inline Memory Module)であるメモリ11と、HDD(Hard Disk Drive)12とを有する。CPU10は、複数のCPUコア100を有する。情報処理装置1は、例えば、パーソナルコンピュータ、サーバ或いはスマートフォン等である。HDD12の代わりにSDD(Solid State Drive)等の記憶装置を使用してもよい。
図3に、CPUコア100のハードウエア構成図を示す。CPUコア100は、1又は複数の汎用レジスタ101と、1又は複数のASI(Address Space Identifier)レジスタ102と、メモリ管理ユニット103と、演算ユニット104と、データ保護部105とを有する。汎用レジスタ101には、演算ユニット104の処理に使用されるデータ等が格納される。ASIレジスタ102には、ロード命令及びストア命令の発行者を表すアクセスキーが格納される。メモリ管理ユニット103は、TLB(Translation Lookaside Buffer)1030を有し、メモリ11を管理する。演算ユニット104は、命令を実行する。データ保護部105は、データ管理部1051及び判定部1052を有する。データ保護部105は、例えばCPUコア100の制御装置に設けられるハードウエアモジュールである。なお、CPUコア100は、汎用レジスタ101及びASIレジスタ102以外のレジスタを有してもよい。
データ管理部1051は、メモリ11に格納されたアクセス属性値とロード命令及びストア命令に基づくアクセスキーとを取得する処理等を実行する。判定部1052は、取得されたアクセス属性値とアクセスキーとに基づき、アクセスを許可するか否か判定する処理等を実行する。
図4を用いて、メモリ11の使用態様について説明する。本実施の形態においては、メモリ11が複数のセグメントに分割されて使用される。各セグメントに対しては、アクセス属性値が格納される属性格納領域が設けられる。アクセス属性値は、対応するセグメントがガーベジコレクションの対象であるか否かを表す情報であり、ガーベジコレクタによって管理される。
図5Aに、HDD12に格納されるプログラムの一例を示す。HDD12には、アプリケーションプログラムと、ガーベジコレクタのプログラムと、GCハンドラのプログラムとが格納される。これらのプログラムは、メモリ11にロードされCPU10によって実行されることによって、各種の機能を実現する。具体的には、アプリケーションプログラムがCPU10により実行されることによって以下の説明におけるアプリケーション(ミューテータとも呼ばれる)が実現される。ガーベジコレクタのプログラムがCPU10によって実行されることによって以下の説明におけるガーベジコレクタが実現される。GCハンドラのプログラムがCPU10によって実行されることによって以下の説明におけるGCハンドラが実現される。アプリケーション、ガーベジコレクタ及びGCハンドラは、例えばプロセス或いはスレッドに相当する。なお、アプリケーションのプログラム、ガーベジコレクタのプログラム及びGCハンドラのプログラムは、HDD12以外の記憶装置(例えばROM(Read Only Memory))に格納されてもよい。
図5Bに、GCハンドラの機能ブロック図を示す。図5Bの例では、GCハンドラは、第1処理部1101と、第2処理部1102とを含む。第1処理部1101及び第2処理部1102は、ハードウエア例外の発生時に処理を実行する。
次に、図6乃至図12を用いて、情報処理装置1の動作について説明する。
まず、図6を用いて、ガーベジコレクタの処理について説明する。
ガーベジコレクタは、メモリ11の領域を複数のセグメントに分割する(図6:ステップS1)。ステップS1においては、各セグメントの開始アドレスと終了アドレスとを設定する処理等が行われる。複数のセグメントのサイズは同じであってもよいし、異なっていてもよい。
ガーベジコレクタは、ガーベジコレクションの対象とするセグメント(以下、GC対象セグメントと呼ぶ)を1つ特定する(ステップS3)。
ガーベジコレクタは、GC対象セグメント内のオブジェクトに対してマーキングを実行する(ステップS5)。マーキングとは、参照ポインタを辿ることによって到達可能なオブジェクトに対して、生存オブジェクトであることを表すマークを付す処理である。生存オブジェクトは、アプリケーションから見て今後使用する予定がないオブジェクトである。
ガーベジコレクタは、GC対象セグメントのアクセス属性値として、アプリケーションからのアクセスが不可であり且つガーベジコレクタからのアクセスが可能であることを表す値を、GC対象セグメントの属性格納領域に設定する(ステップS7)。
ガーベジコレクタは、GC対象セグメント内のオブジェクトのうちマークが付されたオブジェクトを、コピー先のセグメントにコピーする(ステップS9)。
ガーベジコレクタは、マークが付された全オブジェクトのコピーが完了したか判定する(ステップS11)。マークが付された全オブジェクトのコピーが完了していない場合(ステップS11:Noルート)、処理はステップS9に戻る。
一方、マークが付された全オブジェクトのコピーが完了した場合(ステップS11:Yesルート)、ガーベジコレクタは以下の処理を実行する。具体的には、ガーベジコレクタは、GC対象セグメントのアクセス属性値として、アプリケーション及びガーベジコレクタからのアクセスが可能であることを表す値を、GC対象セグメントの属性格納領域に設定する(ステップS13)。
ガーベジコレクタは、処理の終了指示(例えば情報処理装置1のシャットダウン指示)があったか判定する(ステップS15)。処理の終了指示がない場合(ステップS15:Noルート)、処理はステップS3に戻る。一方、処理の終了指示があった場合(ステップS15:Yesルート)、処理は終了する。
以上のような処理を実行すれば、GC対象領域に対するアプリケーションからのアクセスを制限することができるが、ガーベジコレクタからのアクセスは許可されるので、通常どおりのガーベジコレクションを実行することできる。なお、以下で説明するように、GC対象領域に対するアプリケーションからのアクセスは完全に禁止されるわけではないので、アプリケーションの処理が停止される時間が長くなることを抑制することができる。
図7乃至図11を用いて、ロード命令及びストア命令の発行時に実行される処理について説明する。
まず、アクセス元(例えば、アプリケーション、ガーベジコレクタ又はGCハンドラ)が、ロード命令又はストア命令を発行する(図7:ステップS21)。ロード命令はメモリ11に格納されているデータを汎用レジスタ101に設定する命令であり、ストア命令は汎用レジスタ101に格納されているデータをメモリ11に設定する命令である。図8に示すように、CPUコア100における演算ユニット104は、発行されたロード命令及びストア命令に従って、メモリ管理ユニット103を介してメモリ11へのアクセスを行う。
ロード命令又はストア命令を受け取ったCPUコア100は、検知処理を実行する(ステップS23)。検知処理については、図9乃至図11を用いて説明する。
まず、データ管理部1051は、命令において指定されたアドレスのセグメントに対応するアクセス属性値をメモリ11の属性格納領域から読み出し、読み出したアクセス属性値をメモリ管理ユニット103のTLB1030の所定領域に書き込む(図9:ステップS41)。ステップS41においては、図10に示すように、メモリ11に格納されているアクセス属性値がTLB1030にコピーされ、後で判定部1052により利用される。
例えば、ロード命令「Load address−A register−X with ASI−1」の場合、address−Aのセグメントに対応する属性格納領域からアクセス属性値が読み出される。なお、このロード命令は、「ASI−1レジスタの値をアクセスキーとしてメモリ11のaddress−Aからデータを読み込みregister−Xにロードする」ことを意味する。ここで「register−X」とは、例えば汎用レジスタ101である。
データ管理部1051は、命令において指定されたASIレジスタ102からアクセスキーを取得する(ステップS43)。
判定部1052は、ステップS41においてTLB1030に書き込まれたアクセス属性値とステップS43において取得されたアクセスキーとに基づき、命令に係るアクセスが可能であるか判定する(ステップS45)。
図11を用いて、ステップS45において実行される処理について説明する。セグメントには、ガーベジコレクションの対象であるか否かによって異なるアクセス属性値が割り当てられる。ここでは、ガーベジコレクションの対象である(すなわち、アプリケーションからのアクセスは不可であるがガーベジコレクタからのアクセスは可である)場合に「10」が割り当てられ、ガーベジコレクションの対象ではない(すなわち、アプリケーション及びガーベジコレクタからのアクセスが可である)場合に「11」が割り当てられる。一方で、アプリケーションからのアクセスにはアクセスキー「01」が使用され、ガーベジコレクタからのアクセスにはアクセスキー「11」が設定される。アクセス属性値とアクセスキーとについてAND演算を実行し、実行結果の2ビットが「00」である場合には、アプリケーションがガーベジコレクションの対象であるセグメントにアクセスしたので、アクセスは許可されない。その場合にはハードウエア例外が発生しGCハンドラが動作を開始する。一方、実行結果の2ビットが「00」ではない場合には、アプリケーションがガーベジコレクションの対象ではないセグメントにアクセスしたか又はアプリケーション以外からのアクセスであるので、アクセスは許可され、ハードウエア例外は発生しない。
命令に係るアクセスが可能である場合(ステップS47:Yesルート)、データ保護部105は、命令に係るアクセスが可能であることを演算ユニット104に通知する。これに応じ、演算ユニット104は、命令に従ったアクセスをメモリ管理ユニット103を介して実行する(ステップS49)。そして処理は呼び出し元に戻り、データ保護部105の処理は終了する。
一方、命令に係るアクセスが可能ではない場合(ステップS47:Noルート)、データ保護部105はハードウエア例外を発生させ、呼び出し元の処理に戻る。
図7の説明に戻り、データ保護部105の判定部1052は、検知処理(ステップS23)においてハードウエア例外が発生した場合に制御をGCハンドラに移す(ステップS25)。これにより、アプリケーションの処理は停止し、GCハンドラが動作を開始する。
GCハンドラの第1処理部1101は、アクセス対象のオブジェクトがガーベジコレクタによってコピー先のセグメントにコピーされたか判定する(ステップS27)。アクセス対象のオブジェクトは、ロード命令及びストア命令において指定されるアドレスによって特定される。オブジェクトのヘッダにはコピーされたか否かを示すフラグが設定されているので、そのフラグが利用される。
アクセス対象のオブジェクトがガーベジコレクタによってコピー先のセグメントにコピーされた場合(ステップS29:Yesルート)、GCハンドラがコピーを実行しなくてもよいので、処理はステップS32に移行する。
一方、アクセス対象のオブジェクトがガーベジコレクタによってコピー先のセグメントにコピーされていない場合(ステップS29:Noルート)、第1処理部1101は、アクセス対象のオブジェクトをコピー先のセグメントにコピーする(ステップS31)。
第1処理部1101は、アクセス対象のオブジェクトのコピー先のアドレスを特定する(ステップS32)。ステップS32においては、例えば、アクセス対象のオブジェクトの領域に予め格納されたアドレスが特定される。或いは、アクセス対象のオブジェクトのアドレスとコピー先のアドレスとを対応付けたテーブルを用意しておき、そのテーブルによってコピー先アドレスを特定してもよい。
第2処理部1102は、アクセス元の参照ポインタ(すなわち、アプリケーションがアクセスに使用する参照ポインタ)を、コピー先のアドレスで更新する(ステップS33)。
第2処理部1102は、制御をアクセス元(ここでは、アプリケーション)に戻す(ステップS35)。これにより、GCハンドラの処理は停止し、アプリケーションの処理の停止が解除される。
そして、アクセス元(ここでは、アプリケーション)は、更新後の参照ポインタを使用してアクセスを行う(ステップS37)。
次に、図12を用いて、本実施の形態のガーベジコレクションを具体的に説明する。図12(a)に示すように、ガーベジコレクションの対象であるセグメントにおける生存オブジェクトに対してマークが付されるフェーズにおいて、オブジェクトを配置する領域がコピー先のセグメントに予約される。マークが付されていないオブジェクトについては、コピーが行われないので領域は予約されない。
図12(b)に示すように、ガーベジコレクションの対象であるセグメントにおける生存オブジェクトは、予約された領域にコピーされる。このとき、生存オブジェクトのコピーは順番に行われるので、コピーが完了した生存オブジェクト121及び122とコピー完了していない生存オブジェクト123とが発生する。
図12(b)の状態において、アプリケーションからのアクセスが発生したとする。すると、図12(c)に示すように、生存オブジェクト121に対するアクセスについては、既に生存オブジェクト121のコピーが完了していることから、GCハンドラはコピーを行わず参照ポインタを更新するので、アプリケーションの停止時間が長くなることを抑制する。生存オブジェクト123に対するアクセスについては、生存オブジェクト123のコピーが完了していないため、GCハンドラがコピーを行った後に参照ポインタを更新する。これにより、不整合が発生することを防ぐことができる。
以上のように、本実施の形態によれば、ガーベジコレクションの対象ではないセグメントに対してアプリケーションがアクセスした場合にはアクセスが許可されるので、アプリケーションを停止することを回避できる。また、たとえガーベジコレクションの対象であるセグメントに対してアプリケーションがアクセスする場合であっても、アクセス先のオブジェクトのコピーが完了している場合には参照ポインタを更新してアプリケーションの処理を再開させるので、停止時間が短縮される。また、アクセス先のオブジェクトのコピーが完了していない場合にはガーベジコレクタによるコピーを待たずにコピーを完了させることができるので、停止時間が短縮される。
さらに、アクセスについての判定はハードウエアモジュールであるデータ保護部105によって行われるので、判定にかかる時間を短縮することができる。
図13を用いて、アプリケーションの処理の停止時間の短縮について説明する。なお、図13には参考としてLTE(Long Term Evolution)の通信速度と5G(5th Generation)の通信速度との比較及びSATA3(Serial ATA 3.0)のデータ転送速度とSAS3(Serial Attached SCSI 3.0)のデータ転送速度との比較が示されている。メモリのサイズが数GBである場合には約100ミリ秒でガーベジコレクションが終了し、メモリのサイズが10GBより大きい場合にはガーベジコレクションの終了までに10000ミリ秒以上かかる。一方で、本実施の形態のガーベジコレクションによれば、メモリのサイズが10GBより大きくても1ミリ秒未満でガーベジコレクションを終了させることができる。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置1のブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明したデータ保持構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
また、データ保護部105の機能を、ソフトウエアによって実装してもよい。すなわち、演算ユニット104に命令を実行させることでデータ保護部105の機能を実現してもよい。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係るメモリ管理方法は、(A)メモリの領域に含まれ且つソフトウエア(例えば実施の形態におけるアプリケーション)に割り当てられた第1の領域におけるデータ(例えば実施の形態におけるオブジェクト)のうちソフトウエアのプロセスにアクセスされないデータ以外のデータをメモリの領域のうち第2の領域に移動するデータ移動処理の開始から終了までの間に、第1の領域内の第1のアドレスにおけるデータをアクセス先とするリクエストをソフトウエアのプロセスから受信した場合、第1のアドレスにおけるデータの移動先である第2の領域内の第2のアドレス(例えば実施の形態におけるコピー先のアドレス)を、メモリの領域のうち第1の領域内のデータの移動先のアドレスを格納する領域から特定し、(B)リクエストのアクセス先を、第1のアドレスから第2のアドレスに変更する処理を含む。
データ移動処理の実行中にデータ移動処理の対象の領域に対してソフトウエアのプロセスからのアクセスが発生した場合においても、第2のアドレスにおけるデータにアクセスさせることができるようになる。すなわち、不整合が発生することを防止すると共に、ソフトウエアのプロセスの処理の停止時間を短縮することができるようになる。
また、本メモリ管理方法は、(C)第1のアドレスにおけるデータが第2のアドレスにコピーされたか判定する処理をさらに含んでもよい。そして、リクエストのアクセス先を第1のアドレスから第2のアドレスに変更する処理において、(b1)第1のアドレスにおけるデータが第2のアドレスにコピーされたと判定された場合、第1のアドレスを含む参照ポインタを、第2のアドレスで更新してもよい。第2のアドレスにデータがコピーされていることを担保できるようになる。
また、本メモリ管理方法は、(D)第1のアドレスにおけるデータが第2のアドレスにコピーされていないと判定された場合、第1のアドレスにおけるデータを第2のアドレスにコピーする処理をさらに含んでもよい。そして、リクエストのアクセス先を第1のアドレスから第2のアドレスに変更する処理において、(b2)第1のアドレスにおけるデータが第2のアドレスにコピーする処理を完了した場合、第1のアドレスを含む参照ポインタを、第2のアドレスで更新してもよい。第2のアドレスにデータが格納されていない場合にはコピーしたうえでソフトウエアのプロセスによるアクセスを再開させることができるので、停止時間を短縮することができるようになる。
第2のアドレスを特定する処理において、(a1)リクエストに含まれ且つアクセス元を示す情報と、メモリに設定され且つ第1の領域がデータ移動処理の対象であるか否かを示す情報とに基づき、データ移動処理の開始から終了までの間にリクエストをソフトウエアのプロセスから受信したか判定してもよい。これにより、検知すべきリクエストをもれなく検知できるようになる。
また、本メモリ管理方法は、(E)メモリの各領域について、当該領域がデータ移動処理の対象であるか否かを示す情報をメモリに設定する処理をさらに含んでもよい。
本実施の形態の第2の態様に係るメモリ管理装置は、(F)メモリ(例えばメモリ11)と、(G)メモリの領域に含まれ且つソフトウエアに割り当てられた第1の領域におけるデータのうちソフトウエアのプロセスにアクセスされないデータ以外のデータをメモリの領域のうち第2の領域に移動するデータ移動処理の開始から終了までの間に、第1の領域内の第1のアドレスにおけるデータをアクセス先とするリクエストをソフトウエアのプロセスから受信した場合、第1のアドレスにおけるデータの移動先である第2の領域内の第2のアドレスを、メモリの領域のうち第1の領域内のデータの移動先のアドレスを格納する領域から特定する特定部(例えば第1処理部1101)と、(H)リクエストのアクセス先を、第1のアドレスから第2のアドレスに変更する変更部(例えば第2処理部1102)とを有する。
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
プロセッサに、
メモリの領域に含まれ且つソフトウエアに割り当てられた第1の領域におけるデータのうち前記ソフトウエアのプロセスにアクセスされないデータ以外のデータを前記メモリの領域のうち第2の領域に移動するデータ移動処理の開始から終了までの間に、前記第1の領域内の第1のアドレスにおけるデータをアクセス先とするリクエストを前記ソフトウエアのプロセスから受信した場合、前記第1のアドレスにおけるデータの移動先である前記第2の領域内の第2のアドレスを、前記メモリの領域のうち前記第1の領域内のデータの移動先のアドレスを格納する領域から特定し、
前記リクエストのアクセス先を、前記第1のアドレスから前記第2のアドレスに変更する、
処理を実行させるメモリ管理プログラム。
(付記2)
前記第1のアドレスにおけるデータが前記第2のアドレスにコピーされたか判定する、
処理を前記プロセッサにさらに実行させ、
前記リクエストのアクセス先を前記第1のアドレスから前記第2のアドレスに変更する処理において、
前記第1のアドレスにおけるデータが前記第2のアドレスにコピーされたと判定された場合、前記第1のアドレスを含む参照ポインタを前記第2のアドレスで更新する、
付記1記載のメモリ管理プログラム。
(付記3)
前記第1のアドレスにおけるデータが前記第2のアドレスにコピーされていないと判定された場合、前記第1のアドレスにおけるデータを前記第2のアドレスにコピーする、
処理を前記プロセッサにさらに実行させ、
前記リクエストのアクセス先を前記第1のアドレスから前記第2のアドレスに変更する処理において、
前記第1のアドレスにおけるデータを前記第2のアドレスにコピーする処理を完了した場合、前記参照ポインタを前記第2のアドレスで更新する、
付記2記載のメモリ管理プログラム。
(付記4)
前記第2のアドレスを特定する処理において、
前記リクエストに含まれ且つアクセス元を示す情報と、前記メモリに設定され且つ前記第1の領域が前記データ移動処理の対象であるか否かを示す情報とに基づき、前記データ移動処理の開始から終了までの間に前記リクエストを前記ソフトウエアのプロセスから受信したか判定する、
付記1乃至3のいずれか1つ記載のメモリ管理プログラム。
(付記5)
前記メモリの各領域について、当該領域が前記データ移動処理の対象であるか否かを示す情報を前記メモリに設定する、
処理を前記プロセッサにさらに実行させる付記4記載のメモリ管理プログラム。
(付記6)
プロセッサが、
メモリの領域に含まれ且つソフトウエアに割り当てられた第1の領域におけるデータのうち前記ソフトウエアのプロセスにアクセスされないデータ以外のデータを前記メモリの領域のうち第2の領域に移動するデータ移動処理の開始から終了までの間に、前記第1の領域内の第1のアドレスにおけるデータをアクセス先とするリクエストを前記ソフトウエアのプロセスから受信した場合、前記第1のアドレスにおけるデータの移動先である前記第2の領域内の第2のアドレスを、前記メモリの領域のうち前記第1の領域内のデータの移動先のアドレスを格納する領域から特定し、
前記リクエストのアクセス先を、前記第1のアドレスから前記第2のアドレスに変更する、
処理を実行するメモリ管理方法。
(付記7)
メモリと、
前記メモリの領域に含まれ且つソフトウエアに割り当てられた第1の領域におけるデータのうち前記ソフトウエアのプロセスにアクセスされないデータ以外のデータを前記メモリの領域のうち第2の領域に移動するデータ移動処理の開始から終了までの間に、前記第1の領域内の第1のアドレスにおけるデータをアクセス先とするリクエストを前記ソフトウエアのプロセスから受信した場合、前記第1のアドレスにおけるデータの移動先である前記第2の領域内の第2のアドレスを、前記メモリの領域のうち前記第1の領域内のデータの移動先のアドレスを格納する領域から特定する特定部と、
前記リクエストのアクセス先を、前記第1のアドレスから前記第2のアドレスに変更する変更部と、
を有するメモリ管理装置。
(付記8)
プロセッサが、
メモリに格納されたデータに対するアクセスの命令から、アクセス元を特定するための第1の情報を取得し、
前記データが格納された領域がガーベジコレクションの対象であるか否かを表す第2の情報を、前記メモリから取得し、
取得した前記第1の情報と前記第2の情報とに基づき、特定のソフトウエアのプロセスからのアクセスであり且つ前記データが前記ガーベジコレクションの対象である領域に格納されているという第1の条件を前記アクセスが満たすか判定し、
前記アクセスが前記第1の条件を満たす場合、前記特定のソフトウエアのプロセスを停止し、
前記アクセスが前記第1の条件を満たさない場合、前記アクセスを許可する、
処理を実行するメモリ管理方法。
(付記9)
前記プロセッサが、
前記アクセスが前記第1の条件を満たす場合、前記ガーベジコレクションの実行プログラムのプロセスによって前記オブジェクトがコピー先にコピーされたか判定し、
前記ガーベジコレクションの実行プログラムのプロセスによって前記オブジェクトが前記コピー先にコピーされた場合、前記アクセスに使用される参照ポインタを前記コピー先のアドレスで更新し、前記特定のソフトウエアのプロセスの停止を解除する、
処理をさらに実行する付記8記載のメモリ管理方法。
(付記10)
前記プロセッサが、
前記ガーベジコレクションの実行プログラムのプロセスによって前記オブジェクトが前記コピー先にコピーされていない場合、前記オブジェクトのコピーを実行し、前記アクセスに使用される参照ポインタを前記コピー先のアドレスで更新し、前記特定のソフトウエアのプロセスの停止を解除する、
処理をさらに実行する付記9記載のメモリ管理方法。
1 情報処理装置 10 CPU
11 メモリ 12 HDD
100 CPUコア 101 汎用レジスタ
102 ASIレジスタ 103 メモリ管理ユニット
1030 TLB 104 演算ユニット
105 データ保護部 1051 データ管理部
1052 判定部
1101 第1処理部 1102 第2処理部

Claims (7)

  1. プロセッサに、
    メモリの領域に含まれ且つソフトウエアに割り当てられた第1の領域におけるデータのうち前記ソフトウエアのプロセスにアクセスされないデータ以外のデータを前記メモリの領域のうち第2の領域に移動するデータ移動処理の開始から終了までの間に、前記第1の領域内の第1のアドレスにおけるデータをアクセス先とするリクエストを前記ソフトウエアのプロセスから受信した場合、前記第1のアドレスにおけるデータの移動先である前記第2の領域内の第2のアドレスを、前記メモリの領域のうち前記第1の領域内のデータの移動先のアドレスを格納する領域から特定し、
    前記リクエストのアクセス先を、前記第1のアドレスから前記第2のアドレスに変更する、
    処理を実行させるメモリ管理プログラム。
  2. 前記第1のアドレスにおけるデータが前記第2のアドレスにコピーされたか判定する、
    処理を前記プロセッサにさらに実行させ、
    前記リクエストのアクセス先を前記第1のアドレスから前記第2のアドレスに変更する処理において、
    前記第1のアドレスにおけるデータが前記第2のアドレスにコピーされたと判定された場合、前記第1のアドレスを含む参照ポインタを前記第2のアドレスで更新する、
    請求項1記載のメモリ管理プログラム。
  3. 前記第1のアドレスにおけるデータが前記第2のアドレスにコピーされていないと判定された場合、前記第1のアドレスにおけるデータを前記第2のアドレスにコピーする、
    処理を前記プロセッサにさらに実行させ、
    前記リクエストのアクセス先を前記第1のアドレスから前記第2のアドレスに変更する処理において、
    前記第1のアドレスにおけるデータを前記第2のアドレスにコピーする処理を完了した場合、前記参照ポインタを前記第2のアドレスで更新する、
    請求項2記載のメモリ管理プログラム。
  4. 前記第2のアドレスを特定する処理において、
    前記リクエストに含まれ且つアクセス元を示す情報と、前記メモリに設定され且つ前記第1の領域が前記データ移動処理の対象であるか否かを示す情報とに基づき、前記データ移動処理の開始から終了までの間に前記リクエストを前記ソフトウエアのプロセスから受信したか判定する、
    請求項1乃至3のいずれか1つ記載のメモリ管理プログラム。
  5. 前記メモリの各領域について、当該領域が前記データ移動処理の対象であるか否かを示す情報を前記メモリに設定する、
    処理を前記プロセッサにさらに実行させる請求項4記載のメモリ管理プログラム。
  6. プロセッサが、
    メモリの領域に含まれ且つソフトウエアに割り当てられた第1の領域におけるデータのうち前記ソフトウエアのプロセスにアクセスされないデータ以外のデータを前記メモリの領域のうち第2の領域に移動するデータ移動処理の開始から終了までの間に、前記第1の領域内の第1のアドレスにおけるデータをアクセス先とするリクエストを前記ソフトウエアのプロセスから受信した場合、前記第1のアドレスにおけるデータの移動先である前記第2の領域内の第2のアドレスを、前記メモリの領域のうち前記第1の領域内のデータの移動先のアドレスを格納する領域から特定し、
    前記リクエストのアクセス先を、前記第1のアドレスから前記第2のアドレスに変更する、
    処理を実行するメモリ管理方法。
  7. メモリと、
    前記メモリの領域に含まれ且つソフトウエアに割り当てられた第1の領域におけるデータのうち前記ソフトウエアのプロセスにアクセスされないデータ以外のデータを前記メモリの領域のうち第2の領域に移動するデータ移動処理の開始から終了までの間に、前記第1の領域内の第1のアドレスにおけるデータをアクセス先とするリクエストを前記ソフトウエアのプロセスから受信した場合、前記第1のアドレスにおけるデータの移動先である前記第2の領域内の第2のアドレスを、前記メモリの領域のうち前記第1の領域内のデータの移動先のアドレスを格納する領域から特定する特定部と、
    前記リクエストのアクセス先を、前記第1のアドレスから前記第2のアドレスに変更する変更部と、
    を有するメモリ管理装置。
JP2016139246A 2016-07-14 2016-07-14 メモリ管理プログラム、メモリ管理方法及びメモリ管理装置 Pending JP2018010507A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016139246A JP2018010507A (ja) 2016-07-14 2016-07-14 メモリ管理プログラム、メモリ管理方法及びメモリ管理装置
US15/641,466 US20180018121A1 (en) 2016-07-14 2017-07-05 Non-transitory computer-readable storage medium, memory management device, and memory managing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016139246A JP2018010507A (ja) 2016-07-14 2016-07-14 メモリ管理プログラム、メモリ管理方法及びメモリ管理装置

Publications (1)

Publication Number Publication Date
JP2018010507A true JP2018010507A (ja) 2018-01-18

Family

ID=60941052

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016139246A Pending JP2018010507A (ja) 2016-07-14 2016-07-14 メモリ管理プログラム、メモリ管理方法及びメモリ管理装置

Country Status (2)

Country Link
US (1) US20180018121A1 (ja)
JP (1) JP2018010507A (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60201443A (ja) * 1984-03-26 1985-10-11 Fujitsu Ltd デ−タ処理装置
JPS6393055A (ja) * 1986-10-07 1988-04-23 Fujitsu Ltd 実時間型ガ−ベジコレクシヨン支援装置
JP2001184254A (ja) * 1999-12-27 2001-07-06 Nec Corp ガーベージコレクション機能を有する情報処理装置およびその方法ならびに記録媒体
US20140059093A1 (en) * 2012-08-24 2014-02-27 Fujitsu Limited Information processing method and apparatus for garbage collection

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004220450A (ja) * 2003-01-16 2004-08-05 Hitachi Ltd ストレージ装置、その導入方法、及びその導入プログラム
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
JP4896500B2 (ja) * 2005-11-14 2012-03-14 株式会社日立製作所 機器停止を伴う仮想ボリューム制御方法
EP2211263A3 (en) * 2009-01-23 2013-01-23 Infortrend Technology, Inc. Method for performing storage virtualization in a storage system architecture
US8122213B2 (en) * 2009-05-05 2012-02-21 Dell Products L.P. System and method for migration of data
US8407438B1 (en) * 2010-08-16 2013-03-26 Symantec Corporation Systems and methods for managing virtual storage disk data
JP5527425B2 (ja) * 2010-11-16 2014-06-18 富士通株式会社 通信装置、負荷分散方法、および記録媒体
US9003149B2 (en) * 2011-05-26 2015-04-07 International Business Machines Corporation Transparent file system migration to a new physical location
EP2702474A1 (en) * 2011-08-04 2014-03-05 Hitachi, Ltd. Data storage system using method for dynamically allocating physical data storage space
US9098200B2 (en) * 2012-02-10 2015-08-04 Hitachi, Ltd. Storage system with virtual volume having data arranged astride storage devices, and volume management method
TWI529719B (zh) * 2013-08-30 2016-04-11 慧榮科技股份有限公司 資料儲存裝置以及快閃記憶體控制方法
WO2015125221A1 (ja) * 2014-02-19 2015-08-27 株式会社日立製作所 ストレージシステム及び移行方法
WO2016050315A1 (en) * 2014-10-02 2016-04-07 Hitachi Data Systems Engineering UK Limited Method and an apparatus, and related computer-program products, for managing access request in multi-tenancy environments
KR20160075229A (ko) * 2014-12-19 2016-06-29 삼성전자주식회사 가비지 컬렉션 동작 방법 및 이를 적용하는 레이드 스토리지 시스템
US20170083339A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Prefetching associated with predicated store instructions
WO2017145272A1 (ja) * 2016-02-24 2017-08-31 株式会社日立製作所 データ移行方法及び計算機システム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60201443A (ja) * 1984-03-26 1985-10-11 Fujitsu Ltd デ−タ処理装置
JPS6393055A (ja) * 1986-10-07 1988-04-23 Fujitsu Ltd 実時間型ガ−ベジコレクシヨン支援装置
JP2001184254A (ja) * 1999-12-27 2001-07-06 Nec Corp ガーベージコレクション機能を有する情報処理装置およびその方法ならびに記録媒体
US20140059093A1 (en) * 2012-08-24 2014-02-27 Fujitsu Limited Information processing method and apparatus for garbage collection
JP2014044472A (ja) * 2012-08-24 2014-03-13 Fujitsu Ltd ガーベジコレクションのための情報処理方法、プログラム及び装置

Also Published As

Publication number Publication date
US20180018121A1 (en) 2018-01-18

Similar Documents

Publication Publication Date Title
US20080235477A1 (en) Coherent data mover
US9058195B2 (en) Virtual machines failover
JP6882662B2 (ja) マイグレーションプログラム、情報処理装置およびマイグレーション方法
US8856761B2 (en) Instruction processing method, instruction processing apparatus, and instruction processing program
US20160154663A1 (en) Virtual machine backup
KR20110048531A (ko) 가상처리장치의 인터럽트 제어
US20100017515A1 (en) Resource migration system and resource migration method
US10452300B2 (en) Storage system, node apparatus, cache control method and program
JP2008033483A (ja) 計算機システム、計算機および計算機動作環境の移動方法
JP2009211368A (ja) キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法
US20140059093A1 (en) Information processing method and apparatus for garbage collection
US20150143055A1 (en) Virtual machine backup
KR20220045211A (ko) 캐패빌리티 기입 어드레스 추적
US20210173789A1 (en) System and method for storing cache location information for cache entry transfer
US20180357129A1 (en) Virtual machine backup
CN110291507B (zh) 用于提供对存储器系统的加速访问的方法和装置
JP5531476B2 (ja) 情報処理装置及び情報処理プログラム
US10001921B2 (en) Data migration method and data migration device
CN107832097B (zh) 数据加载方法及装置
US9535796B2 (en) Method, apparatus and computer for data operation
US10430287B2 (en) Computer
JP2018010507A (ja) メモリ管理プログラム、メモリ管理方法及びメモリ管理装置
US10210097B2 (en) Memory system and method for operating the same
US20150186240A1 (en) Extensible i/o activity logs
CN112748854B (zh) 对快速存储设备的优化访问

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190409

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200310

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20200929