JP6192660B2 - ステージング・エリアを管理するためのコンピュータ実施プロセス、コンピュータ・プログラム製品、装置 - Google Patents

ステージング・エリアを管理するためのコンピュータ実施プロセス、コンピュータ・プログラム製品、装置 Download PDF

Info

Publication number
JP6192660B2
JP6192660B2 JP2014552456A JP2014552456A JP6192660B2 JP 6192660 B2 JP6192660 B2 JP 6192660B2 JP 2014552456 A JP2014552456 A JP 2014552456A JP 2014552456 A JP2014552456 A JP 2014552456A JP 6192660 B2 JP6192660 B2 JP 6192660B2
Authority
JP
Japan
Prior art keywords
staging area
memory
area
computer
program code
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.)
Expired - Fee Related
Application number
JP2014552456A
Other languages
English (en)
Other versions
JP2015505623A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2015505623A publication Critical patent/JP2015505623A/ja
Application granted granted Critical
Publication of JP6192660B2 publication Critical patent/JP6192660B2/ja
Expired - Fee Related 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Radar Systems Or Details Thereof (AREA)

Description

本開示は、一般にはデータ処理システムにおけるメモリ管理に関し、より詳細には、データ処理システムにおいてデータ・ステージングを管理することに関する。
メモリにおけるいくつかの異なる実行層(performing tier)がさらに行き渡るようになるにつれて、コンピュータ・システムにおける基礎をなす物理メモリは、均一さが低下している。その上、クラウド・コンピューティング・テクノロジの出現に伴って、プロセッサおよびメモリに関して最大限のキャパシティまでマシンを利用するための取り組みの中で、仮想化された環境の使用が増大している。
アプリケーション・メモリ・スペースは、典型的には、いくつかの異なる基礎をなす物理メモリの実装形態にわたって広がっており、それらの実装形態はそれぞれ、潜在的に別々のアクセス・スピードを有する。したがって、アクセス頻度を意識した様式でアプリケーション・データを分配することに対する強いニーズがある。最も頻繁にアクセスされる、またはより人気のあるデータを、最も高速な物理メモリ上に置くことは、最適なアプリケーション・パフォーマンスを確かなものにし、電力消費を低減し、最高レベルのハードウェア利用度を可能にする。
この課題に対処するために、いくつかのデータ・アクセス頻度検知方法が開発されてきた。データ・アクセス頻度検知方法を、マネージド・ランタイムの仮想マシンに関連付けられているガベージ・コレクタなどのメモリ管理システムと組み合わせると、結果として、1つのアプリケーションに関連付けられているデータを、階層化されたメモリ環境内にインテリジェントに分配する機能がもたらされる。より良好な分配は、典型的には、アプリケーションの全体的なデータ・アクセス時間を改善する。
しかしながら、完璧に正確なデータ・アクセス頻度検知は、アプリケーション・パフォーマンスに非常に大きなマイナスの影響を及ぼす。したがって、データ・アクセス頻度検知方法は、ランタイム・オーバーヘッドをより低くしておくために、いくらかのレベルの正確さを犠牲にしなければならない。低減された正確さによって、典型的には、非常に頻繁にアクセスされるデータのいくつかの断片が人気(popularity)検知プロセスによって見落とされることになる。少数の非常に人気があるデータ・アイテム(またはオブジェクト)でさえ、より低速な形態のメモリへ移動させると、アプリケーションのパフォーマンスを大幅に低下させる場合がある。
一実施形態によれば、ステージング・エリアを管理するためのコンピュータ実施プロセスは、識別された候補コールド・オブジェクト(candidate cold object)のためのステージング・エリアを作成し、識別された候補オブジェクトをステージング・エリア内へ移動させ、ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握し、特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定する。その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているという判定に応答して、その特定のオブジェクトを通常エリア内へ移動させ、現在の時刻が所定のしきい値を超えているかどうかを判定する。現在の時刻が所定のしきい値を超えているという判定に応答して、このコンピュータ実施プロセスは、残りのオブジェクトをステージング・エリアからコールド・エリアへ移動させる。
別の実施形態によれば、ステージング・エリアを管理するためのコンピュータ・プログラム製品は、その上に格納されているコンピュータ実行可能プログラム・コードを含む、コンピュータで記録可能なタイプのメディアを含む。そのコンピュータ実行可能プログラム・コードは、識別された候補コールド・オブジェクトのためのステージング・エリアを作成するためのコンピュータ実行可能プログラム・コードと、識別された候補オブジェクトをステージング・エリア内へ移動させるためのコンピュータ実行可能プログラム・コードと、ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握するためのコンピュータ実行可能プログラム・コードと、特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定するためのコンピュータ実行可能プログラム・コードと、その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているという判定に応答して、その特定のオブジェクトを通常エリア内へ移動させるためのコンピュータ実行可能プログラム・コードと、現在の時刻が所定のしきい値を超えているかどうかを判定するためのコンピュータ実行可能プログラム・コードと、現在の時刻が所定のしきい値を超えているという判定に応答して、残りのオブジェクトをステージング・エリアからコールド・エリアへ移動させるためのコンピュータ実行可能プログラム・コードとを含む。
別の実施形態によれば、ステージング・エリアを管理するための装置は、通信ファブリックと、通信ファブリックに接続されているメモリであり、コンピュータ実行可能プログラム・コードを含む、メモリと、通信ファブリックに接続されている通信ユニットと、通信ファブリックに接続されている入力/出力ユニットと、通信ファブリックに接続されているディスプレイと、通信ファブリックに接続されているプロセッサ・ユニットとを含む。そのプロセッサ・ユニットは、識別された候補コールド・オブジェクトのためのステージング・エリアを作成することと、識別された候補オブジェクトをステージング・エリア内へ移動させることと、ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握することと、特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定することと、その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているという判定に応答して、その特定のオブジェクトを通常エリア内へ移動させることと、現在の時刻が所定のしきい値を超えているかどうかを判定することと、現在の時刻が所定のしきい値を超えているという判定に応答して、残りのオブジェクトをステージング・エリアからコールド・エリアへ移動させることとを行うように装置に指示するためにコンピュータ実行可能プログラム・コードを実行する。
次いで、本開示のさらに完全な理解のために、添付の図面および詳細な説明と併せて理解しながら、以降の簡単な説明に対する参照を行う。ここでは、同様の参照番号は、同様の部分を表す。
本開示のさまざまな実施形態のために機能することができる例示的なネットワーク・データ処理システムのブロック図である。 本開示のさまざまな実施形態のために機能することができる例示的なデータ処理システムのブロック図である。 本開示のさまざまな実施形態のために機能することができるメモリ・マネージャのブロック図である。 本開示の一実施形態によるメモリ・マネージャによって管理されるメモリ構成のブロック図である。 本開示の一実施形態による、ステージング・エリアを伴うメモリ構成のブロック図である。 本開示の一実施形態による、ステージング・エリアを伴うメモリ構成のブロック図である。 本開示の一実施形態による、ステージング・エリアを伴うメモリ構成のブロック図である。 本開示の例示的な一実施形態によるメモリ・マネージャとともに使用されるメモリ構成のブロック図である。 本開示のさまざまな実施形態による、ステージング・エリアを管理するためのプロセスのフローチャートである。
1つまたは複数の実施形態の例示的な実施態様が以降で提供されているが、開示されているシステムまたは方法あるいはその両方は、任意の数の技術を使用して実施されることが可能である。本開示は、本明細書において例示および説明されている例示的な設計および実施態様を含む、以降で例示されている例示的な実施態様、図面、および技術にいっさい限定されるものではなく、添付の特許請求の範囲の範疇と、それらの均等物の最大範囲との中で変更されることが可能である。
当業者なら理解するであろうが、本開示の態様は、システム、方法、またはコンピュータ・プログラム製品として具体化されることが可能である。したがって、本開示の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアおよびハードウェアの態様を組み合わせている実施形態という形態を取ることができ、それらはすべて、本明細書においては一般に「回路」、「モジュール」、または「システム」と呼ばれることが可能である。さらに、本発明の態様は、その上で具体化されているコンピュータ可読プログラム・コードを有する1つまたは複数のコンピュータ可読メディアにおいて具体化されているコンピュータ・プログラム製品という形態を取ることができる。
1つまたは複数のコンピュータ可読メディアの任意の組合せが利用されることが可能である。そのコンピュータ可読メディアは、コンピュータ可読信号メディアまたはコンピュータ可読ストレージ・メディアであることが可能である。コンピュータ可読ストレージ・メディアは、たとえば、電子式の、磁気式の、光学式の、電磁気式の、赤外線式の、または半導体式のシステム、装置、もしくはデバイス、または上記のものの任意の適切な組合せであることが可能であるが、それらには限定されない。コンピュータ可読ストレージ・メディアのさらに具体的な例(非網羅的なリスト)には、1つもしくは複数のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMもしくはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CDROM)、光学ストレージ・デバイス、もしくは磁気ストレージ・デバイス、または上記のものの任意の適切な組合せが含まれるであろう。本文書の文脈においては、コンピュータ可読ストレージ・メディアは、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを含む、または格納することができる任意の有形のメディアであることが可能である。
コンピュータ可読信号メディアは、その中で、たとえばベースバンド内で、または搬送波の一部として具体化されているコンピュータ可読プログラム・コードを伴う伝搬されるデータ信号を含むことができる。そのような伝搬される信号は、さまざまな形態を取ることができ、それらの形態としては、電磁気、光学、またはそれらの任意の適切な組合せが含まれるが、それらには限定されない。コンピュータ可読信号メディアは、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを通信、伝搬、または移送することができる、コンピュータ可読ストレージ・メディアではない任意のコンピュータ可読メディアであることが可能である。
コンピュータ可読メディア上で具体化されているプログラム・コードは、任意の適切なメディアを使用して送信されることが可能であり、それらのメディアとしては、ワイヤレス、ワイヤ・ライン、光ファイバ・ケーブル、RFなど、または上記のものの任意の適切な組合せが含まれるが、それらには限定されない。
本開示の態様のためのオペレーションを実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++等などのオブジェクト指向プログラミング言語と、「C」プログラミング言語または類似のプログラミング言語などの従来の手続き型プログラミング言語とを含む1つまたは複数のプログラミング言語の任意の組合せで書かれることが可能である。Java(R)およびすべてのJava(R)ベースの商標およびロゴは、米国、その他の国々、またはそれらの両方におけるOracleまたはその関連会社あるいはその両方の商標である。このプログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上で、および部分的にリモート・コンピュータ上で、または全体的にリモート・コンピュータもしくはサーバ上で実行することができる。最後のシナリオにおいては、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されることが可能であり、またはその接続は、(たとえば、インターネット・サービス・プロバイダを使用してインターネットを通じて)外部コンピュータに対して行われることが可能である。
以降では、本発明の実施形態による方法、装置、(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら、本開示の態様について説明する。フローチャート図またはブロック図あるいはその両方のそれぞれのブロック、ならびにフローチャート図またはブロック図あるいはその両方におけるブロックどうしの組合せは、コンピュータ・プログラム命令によって実施されることが可能であるということが理解できるであろう。
これらのコンピュータ・プログラム命令は、マシンを生み出すために、汎用コンピュータ、専用コンピュータ、またはその他のプログラム可能なデータ処理装置のプロセッサに提供されることが可能であり、それによって、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行されるこれらの命令は、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定されている機能/行為を実施するための手段を生み出す。
これらのコンピュータ・プログラム命令は、特定の様式で機能するようにコンピュータまたはその他のプログラム可能なデータ処理装置に指示することができるコンピュータ可読メディア内に格納されることも可能であり、それによって、そのコンピュータ可読メディア内に格納されているそれらの命令は、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定されている機能/行為を実施する命令を含む製品を生み出す。
それらのコンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置上にロードされて、そのコンピュータまたはその他のプログラム可能な装置上で一連の機能ステップを実行させて、コンピュータ実施プロセスを生み出すこともでき、それによって、そのコンピュータまたはその他のプログラム可能な装置上で実行されるそれらの命令は、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定されている機能/行為を実施するためのプロセスを提供する。
次いで、図を参照すると、とりわけ図1〜図2を参照すると、例示的な実施形態が実施されることが可能であるデータ処理環境の例示的な図が提供されている。図1〜図2は、例示的なものにすぎず、さまざまな実施形態が実施されることが可能である環境に関して何らかの限定を主張または暗示することを意図されているものではないということを理解されたい。示されている環境に対する多くの変更が行われることが可能である。
図1は、例示的な実施形態が実施されることが可能であるデータ処理システムのネットワークの絵画図を示している。ネットワーク・データ処理システム100は、例示的な実施形態が実施されることが可能であるコンピュータのネットワークである。ネットワーク・データ処理システム100は、ネットワーク102を含み、ネットワーク102は、ネットワーク・データ処理システム100内でともに接続されているさまざまなデバイスおよびコンピュータの間において通信リンクを提供するために使用されるメディアである。ネットワーク102は、ワイヤ、ワイヤレス通信リンク、または光ファイバ・ケーブルなどの接続を含むことができる。
示されている例においては、サーバ104およびサーバ106は、ストレージ・ユニット108とともにネットワーク102に接続している。加えて、クライアント110、112、および114は、ネットワーク102に接続している。クライアント110、112、および114は、たとえば、パーソナル・コンピュータまたはネットワーク・コンピュータであることが可能である。示されている例においては、サーバ104は、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどのデータをクライアント110、112、および114に提供する。クライアント110、112、および114は、この例においては、サーバ104に対するクライアントである。ネットワーク・データ処理システム100は、図示されていないさらなるサーバ、クライアント、およびその他のデバイスを含むことができる。
示されている例においては、ネットワーク・データ処理システム100は、互いに通信するためにプロトコルのトランスミッション・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)スイートを使用するネットワークおよびゲートウェイの世界規模の集合体に相当するネットワーク102を伴うインターネットである。インターネットの中心には、データおよびメッセージを回送する数千の商業系、政府系、教育系、およびその他のコンピュータ・システムから構成されている主要なノードまたはホスト・コンピュータの間における高速データ通信回線のバックボーンがある。もちろん、ネットワーク・データ処理システム100は、たとえば、イントラネット、ローカル・エリア・ネットワーク(LAN)、またはワイド・エリア・ネットワーク(WAN)など、複数の異なるタイプのネットワークとして実装されることも可能である。図1は、一例として意図されており、さまざまな例示的な実施形態に関するアーキテクチャ上の限定として意図されているものではない。
図2を参照すると、本開示のさまざまな実施形態のために機能することができる例示的なデータ処理システムのブロック図が提示されている。この説明例においては、データ処理システム200は、通信ファブリック202を含み、通信ファブリック202は、プロセッサ・ユニット204、メモリ206、永続ストレージ208、通信ユニット210、入力/出力(I/O)ユニット212、およびディスプレイ214の間における通信を提供する。
プロセッサ・ユニット204は、メモリ206へとロードされることが可能であるソフトウェアのための命令を実行するように機能する。プロセッサ・ユニット204は、特定の実施態様に応じて、1つもしくは複数のプロセッサのセットであることが可能であり、またはマルチプロセッサ・コアであることが可能である。さらに、プロセッサ・ユニット204は、単一のチップ上でメイン・プロセッサがセカンダリ・プロセッサとともに存在する1つまたは複数のヘテロジニアス・プロセッサ・システムを使用して実装されることが可能である。別の説明例としては、プロセッサ・ユニット204は、同じタイプの複数のプロセッサを含む対称型マルチプロセッサ・システムであることが可能である。
メモリ206および永続ストレージ208は、ストレージ・デバイス216の例である。ストレージ・デバイスは、情報を格納することができる任意のハードウェアであり、それらの情報は、たとえば、一時的なまたは永続的なあるいはその両方である、データ、機能的な形態のプログラム・コード、またはその他の適切な情報、あるいはそれらのすべてなどであるが、それらには限定されない。メモリ206は、これらの例においては、たとえば、ランダム・アクセス・メモリ、または任意のその他の適切な揮発性もしくは不揮発性のストレージ・デバイスであることが可能である。永続ストレージ208は、特定の実施態様に応じて、さまざまな形態を取ることができる。たとえば、永続ストレージ208は、1つまたは複数のコンポーネントまたはデバイスを含むことができる。たとえば、永続ストレージ208は、ハード・ドライブ、フラッシュ・メモリ、書き換え可能な光ディスク、書き換え可能な磁気テープ、または上記のものの何らかの組合せであることが可能である。永続ストレージ208によって使用されるメディアは、取り外し可能とすることもできる。たとえば、永続ストレージ208のために、取り外し可能なハード・ドライブが使用されることが可能である。
通信ユニット210は、これらの例においては、その他のデータ処理システムまたはデバイスとの通信を提供する。これらの例においては、通信ユニット210は、ネットワーク・インターフェース・カードである。通信ユニット210は、物理的な通信リンクおよびワイヤレス通信リンクのいずれかまたは両方の使用を通じて通信を提供することができる。
入力/出力ユニット212は、データ処理システム200に接続されることが可能であるその他のデバイスとの間におけるデータの入力および出力を可能にする。たとえば、入力/出力ユニット212は、キーボード、マウス、またはその他の何らかの適切な入力デバイス、あるいはそれらのすべてを通じたユーザ入力のための接続を提供することができる。さらに、入力/出力ユニット212は、出力をプリンタへ送信することができる。ディスプレイ214は、情報をユーザに表示するためのメカニズムを提供する。
オペレーティング・システム、アプリケーション、またはプログラム、あるいはそれらのすべてのための命令は、ストレージ・デバイス216内に配置されることが可能であり、ストレージ・デバイス216は、通信ファブリック202を通じてプロセッサ・ユニット204と通信状態にある。これらの説明例においては、それらの命令は、永続ストレージ208上に機能的な形態で存在する。それらの命令は、プロセッサ・ユニット204による実行のためにメモリ206へとロードされることが可能である。さまざまな実施形態のプロセスは、コンピュータ実施命令を使用してプロセッサ・ユニット204によって実行されることが可能であり、それらのコンピュータ実施命令は、メモリ206などのメモリ内に配置されることが可能である。
これらの命令は、プログラム・コード、コンピュータ使用可能プログラム・コード、またはコンピュータ可読プログラム・コードと呼ばれ、プロセッサ・ユニット204内のプロセッサによって読み取られて実行されることが可能である。さまざまな実施形態におけるプログラム・コードは、メモリ206または永続ストレージ208などのさまざまな物理的なまたは有形のコンピュータ可読ストレージ・メディア上で具体化されることが可能である。
プログラム・コード218は、選択的に取り外し可能であるコンピュータ可読ストレージ・メディア220上に機能的な形態で配置されており、プロセッサ・ユニット204による実行のためにデータ処理システム200へとロードまたは転送されることが可能である。プログラム・コード218およびコンピュータ可読ストレージ・メディア220は、これらの例においてはコンピュータ・プログラム製品222を形成している。一例においては、コンピュータ可読ストレージ・メディア220は、たとえば、永続ストレージ208の一部であるハード・ドライブなどのストレージ・デバイス上への転送のために、永続ストレージ208の一部であるドライブまたはその他のデバイス内に挿入されるまたは置かれる光ディスクまたは磁気ディスクなどの有形の形態であることが可能である。有形の形態においては、コンピュータ可読ストレージ・メディア220は、データ処理システム200に接続されているハード・ドライブ、サム・ドライブ、またはフラッシュ・メモリなどの永続ストレージの形態を取ることもできる。その有形の形態のコンピュータ可読ストレージ・メディア220は、コンピュータ記録可能ストレージ・メディアとも呼ばれる。いくつかの例においては、コンピュータ可読ストレージ・メディア220は、取り外し可能でなくてもよい。
あるいは、プログラム・コード218は、通信ユニット210への通信リンクを通じて、または入力/出力ユニット212への接続を通じて、あるいはその両方を通じてコンピュータ可読ストレージ・メディア220からデータ処理システム200へ転送されることが可能である。その通信リンクまたは接続あるいはその両方は、これらの説明例においては物理的またはワイヤレスであることが可能である。そのコンピュータ可読メディアは、プログラム・コードを含む通信リンクまたはワイヤレス伝送などの無形のメディアの形態を取ることもできる。
いくつかの例示的な実施形態においては、プログラム・コード218は、データ処理システム200内での使用のために別のデバイスまたはデータ処理システムからネットワークを介して永続ストレージ208へダウンロードされることが可能である。たとえば、サーバ・データ処理システムにおいてコンピュータ可読ストレージ・メディア内に格納されているプログラム・コードは、サーバからネットワークを介してデータ処理システム200へダウンロードされることが可能である。プログラム・コード218を提供するデータ処理システムは、サーバ・コンピュータ、クライアント・コンピュータ、または、プログラム・コード218を格納および送信することができるその他の何らかのデバイスであることが可能である。
一例として図2のデータ処理システム200を使用して、ステージング・エリアを管理するためのコンピュータ実施プロセスが提示されている。プロセッサ・ユニット204は、識別された候補オブジェクトのためのステージング・エリアを作成し、ストレージ・デバイス216を使用して、識別された候補オブジェクトをステージング・エリア内へ移動させ、ステージング・エリアを含むストレージ・デバイス216のメモリへのアプリケーション・アクセスを追跡把握し、特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定する。その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているという判定に応答して、プロセッサ・ユニット204は、その特定のオブジェクトを通常エリア内へ移動させ、現在の時刻が所定のしきい値を超えているかどうかを判定する。現在の時刻が所定のしきい値を超えているという判定に応答して、プロセッサ・ユニット204は、残りのオブジェクトをステージング・エリアからコールド・エリアへ移動させる。
開示されているプロセスの一実施形態は、典型的に低いオーバーヘッドのステージング・エリアを提供し、頻繁にアクセスされないように思われるオブジェクトは、一定の時間にわたってそのステージング・エリア内に移転されてから、それらのオブジェクトが真に不人気であるかどうか、および相対的に低速な物理メモリへ移動されるかどうかが決定される。ステージング・エリアを作成することは、データ・オブジェクトのさらなる移動の潜在的な結果を確認するために、稼働しているシステムのデータ分離結果をテストするための機会を可能にする。プロファイリングを通じて、頻繁にアクセスされるとみなされるデータは、ステージング・エリアの外へ再び移動されることが可能であり、そして頻繁にアクセスされないデータは、より低い層のストレージ・レイヤへ移動されることが可能である。
図3を参照すると、本開示のさまざまな実施形態によるメモリ・マネージャのブロック図が提示されている。メモリ・マネージャ300は、ストレージの階層内でストレージ層を作成してその利用を管理する能力を提供する実施形態の一例である。ストレージ階層は、最も高い優先度と、最も低い優先度との間にわたるメモリの複数のタイプおよびスピードを含む。
メモリ・マネージャ300は、ステージング・エリア・コントローラ302、アクセス・パターン・トラッカ304、検知方法306、および構成308を含む機能要素を含んでいる。メモリ・マネージャ300および関連付けられているコンポーネントはすべて、図2のデータ処理システム200、または図1のデータ処理システム100のネットワーク内のデータ処理システムなど、基礎をなすデータ処理システムからのサポートを活用する。メモリ・マネージャ300の機能要素は、メモリ・マネージャ300内の別々の物理的なコンポーネントとして、またはメモリ・マネージャ300内に機能的に組み込まれた論理ユニットとして実装されることが可能である。メモリ・マネージャ300は、きめの粗いページごとのプロセスよりもむしろ、オブジェクトごとのきめ細かいプロセスを使用してオブジェクトのメモリ・ロケーションを管理する能力を提供する。
ステージング・エリア・コントローラ302は、メモリのステージング・エリアを作成および除去すること、ならびにオブジェクトを、ステージング・エリアの中へのおよび外への移動のための候補として識別することを行う能力を提供する。ステージング・エリアは、ステージング・エリア・コントローラ302によって保持されるデータ構造であり、論理的には通常のメモリ・エリアの一部である。ステージング・エリアは、通常のメモリ・エリアのうちで以前に割り当てられた物理的な部分から、または通常のメモリ・エリアに論理的に関連付けられているとみなされている別個の割り当てから作成されることが可能である。
アクセス・パターン・トラッカ304は、データ・オブジェクトのアプリケーション・アクセスに関連付けられている情報を識別して保持するために使用される方法のセットを提供する。ステージング・エリアを含むメモリ内のオブジェクトのアクセス・パターンは、従来の読み取り/書き込みバリア、ページ保護メカニズム、メモリ・キャッシュ/トランスレーション・ルック・アサイド・バッファ(TLB)頻度データ、ハードウェア支援プロファイリング、およびその他の類似した技術を含む選択された方法または方法の組合せを使用して、追跡把握されることが可能である。データ構造内で典型的に保持される情報は、たとえば、メモリ内のそれぞれのオブジェクトのアクセスの結果としてインクリメントされるアクセス・カウントを含むアクセス頻度情報、および最後のアクセスの時刻を含む。
検知方法306は、関連付けられている利用情報に従ってメモリ内のオブジェクトを識別してランク付けするために使用される方法のセットを提供する。たとえば人気検知方法は、方法のセットから選択されること、および通常のメモリ内のオブジェクトのセットを含むオブジェクトに対するアクセス要求に基づいて情報を収集するために使用されることが可能である。人気検知方法は、典型的には、アクセス頻度の形式としてのアクセスの回数に従って、それぞれのオブジェクトをランク付けする。より高くランク付けされているオブジェクトは、より低くランク付けされているオブジェクトよりも多くのデータ・アクセスを有する。最近のアクセスの別の表示を提供するために、最後のアクセスの時刻が使用されることも可能である。
この例においては、人気検知方法だけに完全に依存するよりもむしろ人気検知方法と組み合わせてステージング・エリアを使用することによって、人気検知エラーの典型的な悪影響が低減されることが可能になる。ステージング・エリアは、従来のダイナミック・ランダム・アクセス・メモリ(DRAM)を超えてさらに低速な階層化されたストレージよりもはるかに低いデータ・アクセス・オーバーヘッドを有するように設計されている。より低いオーバーヘッドが意味しているのは、あるオブジェクトがアプリケーションによって頻繁にアクセスされている一方で人気検知方法によって見落とされているときに、そのオブジェクトがステージング・エリア内に置かれている場合には、より低速な物理メモリへ直接移動される場合と比較して、全体的なパフォーマンスは、典型的にはさほど悪影響を受けないということである。
人気検知方法は、人気を検知する上で確立的なまたはサンプリングのアプローチに依存しているが、ステージング・エリアは、すべての実際のオブジェクト・アクセスを検知して、人気のさらにいっそう正確な表示を提供する。人気検知と組み合わせたステージング・エリアの使用はまた、人気検知の自動的な調整を可能にする。ステージング・エリアは、人気検知方法によって見落とされた人気オブジェクトにおけるアクセス・パターンを明らかにすることによって人気検知方法のパラメータをプログラマチックに調整するために使用されることが可能である。
人気検知を伴うステージング・エリアは、人気検知方法にさらなる柔軟性を加える。ステージング・エリアは、人気検知方法がスピードのためにさらなる正確さを犠牲にするように構成されることを可能にする上で効果的であるためには人気検知アルゴリズムがどれぐらい厳格でなければならないかという点で、ある程度の柔軟性を提供する。
構成308は、メモリ・マネージャ300のオペレーションを指示またはコントロールする能力を提供する。構成情報は、ステージング・エリアを作成するために使用されるロケーションに関する値を含むオペレーション情報(たとえば、パス情報、メモリのレンジ)のセット、初期サイズおよび最大サイズを含むステージング・エリアのサイズ、ならびにステージング・エリアをいつクリーンすべきかを示すタイム・ピリオドしきい値を含む。ステージング・エリアは、典型的には、必要とされる場合に動的に作成される。しかしながら、特定の状況においては、静的な専用のステージング・エリアが必要とされる場合がある。たとえば、特定の専門化されたハードウェア・ソリューションを、コールド・エリア・ストレージよりも高速である一方でアクセス・トラッキングも可能にする別個の専用のメモリとして使用することによって、ステージング・エリアとしての排他的な使用のための能力が提供される。専用のメモリ、たとえばソリッドステート・ディスクが、ステージング・エリアとしての使用のために特に初期化されて保持される。
図4を参照すると、本開示のさまざまな実施形態によるメモリ・マネージャによって管理されるメモリ構成のブロック図が提示されている。メモリ400が、論理的なビューにおいて提示されており、その示されているメモリの複数の部分は、同じタイプまたはスピードのメモリを使用した1つの物理的なユニットとして実装される必要はない。メモリ400は、図3のメモリ・マネージャ300によって管理されるメモリの一例である。
メモリ400は、通常エリア402およびコールド・エリア404を含む複数の部分を含んでいる。通常エリア402内に置かれているところが示されているオブジェクト406などのオブジェクトのセットは、メモリ400内に保持されているが、同様に十分にメモリ内にあるその他のロケーションに配置されることも可能である。現在使用されているオブジェクトは、典型的には通常エリア402内に配置され、その一方で、頻繁には使用されないオブジェクトは、コールド・エリア404へ移る傾向がある。
メモリ400は、論理的にはストレージ優先度408に従って配列されている。ストレージ優先度408は、コールド・エリア404の部分から最も遠い通常エリア402の部分に関連付けられている高優先度から、通常エリア402の部分から最も遠いコールド・エリア404の部分に関連付けられている低優先度へのメモリの配列を示している。現在使用されているオブジェクトは、典型的には通常エリア402内に配置され、その一方で、頻繁には使用されないオブジェクトは、コールド・エリア404へ移る傾向がある。
図3のメモリ・マネージャ300のステージング・コントローラ302は、メモリのどのエリアをステージング・エリアへと変換すべきかを判定するためにデータ・アクセス頻度方法によって収集される人気データを使用する。一例においては、メモリ400は、通常のJava(R)ヒープである。どのオブジェクトがホット(人気)かまたはコールド(不人気)かを判定するための十分な時間を人気検知方法が有する前に、通常エリア402の一部分を変換してメモリのその部分を保護する必要はない。
図5を参照すると、本開示のさまざまな実施形態による、ステージング・エリアを伴うメモリ構成のブロック図が提示されている。ステージング・エリア500は、図3のメモリ・マネージャ300によって管理されるメモリの一部分の例である。
図4のメモリ400の前の例を使用して、通常エリア402として前に定義されたメモリの一部分から、ステージング・エリア500が作成される。ステージング・エリア500の作成は、メモリのどのエリアをステージング・エリア500へと変換すべきかを判定するためにデータ・アクセス頻度方法によって収集される人気データを使用して、図3のメモリ・マネージャ300のステージング・コントローラ302によって実行される。一例においては、メモリ400は、通常のJava(R)ヒープであり、このJava(R)ヒープは、ステージング・エリア500へと変換される。別の例においては、ステージング・エリア500は、通常エリア402の一部分から動的に作成されること、または通常エリア402に論理的に関連付けられていながらも別のストレージ・タイプまたはデバイスあるいはその両方の上に物理的に作成されることが可能である。ストレージ・エリア500は、動的に、または構成情報とともに事前の割り当てを使用して静的に作成されることが可能である。
時間が経過して、人気検知方法がデータ・アクセス情報を得て処理するにつれて、オブジェクト・アクセス頻度は、より明らかになる。強化されたマネージド・ランタイムにおける図3のメモリ・マネージャ300は、コールドと思われるオブジェクトどうしをまとめて、通常エリア402の一部であるステージング・エリア500へとグループ化し、メモリを有効/無効にする技術をトラッキング・メカニズムとして使用する一例においては、ステージング・エリア500へのすべてのメモリ・アクセスを無効にする。オブジェクト502およびオブジェクト504、ならびに、以前に通常エリア402内に配置されていたオブジェクトのセットを含むその他のオブジェクトが、ステージング・エリア500内に配置されている。
ステージング・エリアを含むメモリへのアプリケーション・アクセスを無効にすることは、開示されているプロセスを実施する例示的な一実施形態である。開示されているプロセスの実施形態は、トラッキング方法のセットからの選択されたトラッキング方法を使用して、ステージング・エリア内のオブジェクトに対して行われたすべてのアクセスをモニタして追跡把握する。たとえば、特定のメモリ・レンジへのメモリ・アクセスをさらに徹底的に追跡把握するための変更が、オペレーティング・システム・カーネル内に組み込まれることが可能である。ステージング・エリア・メモリを提供するために使用される場合には、ソリッドステート・ディスクとともに、専用のアクセス・トラッキング・ハードウェア/ファームウェア・ソリューションが使用されることも可能である。
図6を参照すると、本開示のさまざまな実施形態による、ステージング・エリアを伴うメモリ構成のブロック図が提示されている。ステージング・エリア500は、図3のメモリ・マネージャ300によって管理されるメモリの一部分の例であり、その部分からのオブジェクトの移転が計画されている。
一例においては、ステージング・エリア500へのメモリ・アクセスが無効にされている場合に、アプリケーションは、その無効にされているステータスにまったく気づかず、通常どおり実行を継続する。オブジェクト502、オブジェクト504、およびオブジェクト600などのコールド・オブジェクトは、その他のオブジェクトよりも頻度は低いものの、依然として使用されているため、アプリケーションは、それらのコールド・オブジェクトに対する読み取りまたは書き込みを試みる。ステージング・エリア500内のオブジェクト504などのコールド・オブジェクトを求めるアプリケーション要求は、この例を使用してメモリ保護違反をトリガーする。
ステージング・エリア500を取り扱う図3のステージング・コントローラ302の信号ハンドラは、そのメモリ保護違反をキャッチし、どのオブジェクトがアクセスされたかを記録し、そのオブジェクトに関連付けられているアクセス頻度カウントを更新し、そのオブジェクトを含むメモリへのアクセスを一時的に許可する。ステージング・エリア500内のすべてのアクセスされたオブジェクトに関してアクセス頻度カウントが保持され、オブジェクト504などのオブジェクトがあまりにも頻繁にアクセスされた場合には、そのオブジェクトが識別されて、ステージング・エリア500から出されて通常エリア402のロケーション602へと移転されるための準備が行われる。別の例においては、ページ保護メカニズム、メモリ・キャッシュ/トランスレーション・ルック・アサイド・バッファ(TLB)頻度データ、またはハードウェア支援プロファイリングが、ステージング・エリア内のオブジェクトに対するアクセスをトリガーして、使用情報の関連付けられている頻度を更新することができる。
図7を参照すると、本開示のさまざまな実施形態による、ステージング・エリアを伴うメモリ構成のブロック図が提示されている。ステージング・エリア500は、図3のメモリ・マネージャ300によって管理されるメモリの一部分の例であり、その部分から、オブジェクトが通常エリアへ移転される。
あまりにも頻繁にアクセスされたオブジェクト504は、ステージング・エリア500から出されて通常エリア402へと移転される。オブジェクト504の移動とは対照的に、たとえば、低アクセス頻度情報に従ったオブジェクトの通常の移動は、通常エリア402の部分から最も遠いコールド・エリア404の部分への移動方向700として示されている。
図8を参照すると、本開示のさまざまな実施形態によるメモリ・マネージャとともに使用されるメモリ構成のブロック図が提示されている。この例においては、図3のメモリ・マネージャ300によって管理されるメモリの一部分のステージング・エリア500は、もはや必要とされない。
通常エリア402の部分から最も遠いコールド・エリア404の部分への図7の移動方向700によって示されているように、低アクセス頻度カウントに従った、オブジェクト502およびオブジェクト600などのオブジェクトの通常の移動が生じている。図7のストレージ・エリア500は削除されている。なぜなら、このレベルのストレージに対する必要性は、もはや存在しないためである。以前に図7のストレージ・エリア500に割り当てられたメモリは、通常エリア402へ戻されている。ストレージ・エリア500が通常エリア402以外のロケーションに配置されている場合には、そのストレージ・エリアは、論理的に除去され、再利用を待つ。
図9を参照すると、本開示のさまざまな実施形態による、ステージング・エリアを管理するためのプロセスのフローチャートが提示されている。この例においては、プロセス900は、図3のメモリ・マネージャ300によって管理されるメモリの一部分におけるステージング・エリアを管理することの一例である。
プロセス900が開始し(ステップ902)、ステージング・エリアのための候補コールド・オブジェクトが存在するかどうかを判定する(ステップ904)。たとえば、アクセスされる頻度がより低いオブジェクトが、パフォーマンスの強度がより低いメモリへの移転のための候補とみなされる人気検知方法を用いて得られたアクセス頻度情報を使用して、候補コールド・オブジェクトが識別されることが可能である。ステージング・エリアのための候補コールド・オブジェクトが存在しないという判定に応答して、プロセス900はループ・バックして、前と同様にステップ902を実行する。
ステージング・エリアのための候補コールド・オブジェクトが存在するという判定に応答して、プロセス900は、ステージング・エリアが存在するかどうかを判定する(ステップ906)。ステージング・エリアが存在しないという判定に応答して、プロセス900は、識別された候補コールド・オブジェクトのためのステージング・エリアを作成する(ステップ908)。ステージング・エリアは、構成ファイルまたはプロパティ・ファイルなど、メモリ・マネージャに関連付けられているデータ構造から得られたデフォルト・サイズを使用して作成されることが可能である。コールド・エリアのサイズ以下の初期サイズが設定されることが可能である。ステージング・エリアは、論理的には、使用中のメモリの通常エリアの一部分、または通常のメモリから物理的に離れたメモリの別の部分であることが可能である。ステージング・エリアは、通常エリアのタイプとは異なるタイプのメモリから割り当てられることも可能である。
ステージング・エリアが存在するという判定に応答して、プロセス900は、識別された候補コールド・オブジェクトをステージング・エリア内へ移動させる(ステップ910)。識別された候補オブジェクトは、通常エリアからステージング・エリア内へ移転される。前述したように、ステージング・エリアは、通常エリアの一部分であることが可能であり、または物理的に別のロケーションおよびデバイスであることが可能である。
プロセス900は、ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握する(ステップ912)。一例においては、プロセス900は、ステージング・エリア内のオブジェクトのためのトラッキング・メカニズムとして、ステージング・エリアを含むメモリへのアプリケーション・アクセスを無効にする。ステージング・エリアのメモリへのアクセスを無効にすることによって、アプリケーションは、ステージング・エリア内のオブジェクトに対する使用およびアクセスを継続することが可能になるが、ステージング・エリア内のオブジェクトを求めるそれぞれのアプリケーション要求上でメモリ・アクセス違反が生じることになる。別の例においては、アプリケーション・アクセスは、ステージング・エリアのコンテンツを使用したいという要望をアクセス・トラッキング・メカニズム(ページ要求など)にアラートする。
プロセス900は、ステージング・エリア内のそれぞれの特定のオブジェクトに関連付けられているアクセス頻度情報を更新する。ステージング・エリアへのアクセスをモニタして追跡把握する別の技術を使用している場合には、さらなる許可は必要とされないことが可能である。別の例においては、プロセス900は、ステージング・エリア内のオブジェクトのアクセス・リストを含むデータ構造を保持し、アクセス頻度情報としてオブジェクトへのアクセスの回数および最後の参照時刻を表すアクセス・カウントなどの使用頻度インジケータをインクリメントすることを含めて、それぞれのさらなるオブジェクトに関するリストを更新する。
プロセス900は、その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定する(ステップ914)。その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているという判定に応答して、プロセス900は、その特定のオブジェクトをステージング・エリアから通常エリア内へ移動させる(ステップ916)。
その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えていないという判定に応答して、プロセス900は、現在の時刻が所定のしきい値を超えているかどうかを判定する(ステップ918)。現在の時刻は、特定のオブジェクトに関する最後のアクセス以降のピリオドまたは持続時間を表す時間値に関する所定の値と比較される。たとえば、現在の時刻がYであり、あるオブジェクトが時刻Xにアクセスされた場合には、その差は時間Zであり、時間Zが所定のしきい値を超えていなければ、そのオブジェクトを保持し、そうでなければ、そのオブジェクトを一掃する。現在の時刻が所定のしきい値を超えていないという判定に応答して、プロセス900は終了する(ステップ928)。
現在の時刻が所定のしきい値を超えているという判定に応答して、プロセス900は、残りのオブジェクトをステージング・エリアからコールド・エリアへ移動させる(ステップ920)。プロセス900は、ステージング・エリアを除去するかどうかを決定する(ステップ922)。ステージング・エリアを除去するという決定に応答して、プロセス900は、ステージングを除去する(ステップ924)。ステージングは、ステージング・エリアの現在の割り当て形態に応じて、物理的にまたは論理的に除去されることが可能である。ステージング・エリアを除去しないという決定に応答して、プロセス900は、その後に終了する(ステップ928)。
メモリへのアクセスを無効にする代替例が使用されている場合には、プロセス900は、ステージング・エリアを含むメモリへのアプリケーション・アクセスが無効にされていたことを認識している。次いで、ステージング・エリアを含むメモリが有効にされる。ステージング・エリアはもはや必要とされておらず、ひいてはステージング・エリアは除去されるため、それまでステージング・エリアとして使用されていたメモリは、通常エリアへ戻される。
したがって、例示的な一実施形態においては、ステージング・エリアを管理するためのコンピュータ実施プロセスが提示されている。このコンピュータ実施プロセスは、識別された候補コールド・オブジェクトのためのステージング・エリアを作成し、識別された候補オブジェクトをステージング・エリア内へ移動させ、ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握し、特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定する。その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているという判定に応答して、その特定のオブジェクトを通常エリア内へ移動させ、現在の時刻が所定のしきい値を超えているかどうかを判定する。現在の時刻が所定のしきい値を超えているという判定に応答して、このコンピュータ実施プロセスは、残りのオブジェクトをステージング・エリアからコールド・エリアへ移動させる。
図におけるフローチャートおよびブロック図は、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、およびオペレーションを示している。この点については、フローチャートまたはブロック図におけるそれぞれのブロックは、指定された論理機能を実施するための1つまたは複数の実行可能な命令を含むコードのモジュール、セグメント、または部分を表すことができる。いくつかの代替実施態様においては、ブロックにおいて示されている機能どうしは、図において示されている順序から外れて生じることが可能であるということにも留意されたい。たとえば、連続して示されている2つのブロックは、実際には、実質的に同時に実行されることが可能であり、またはそれらのブロックは、含まれている機能に応じて、逆の順序で実行されることが可能である場合がある。ブロック図またはフローチャート図あるいはその両方のそれぞれのブロック、ならびにブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能または行為を実行する専用のハードウェアベースのシステム、または専用のハードウェアおよびコンピュータ命令の組合せによって実施されることが可能であるということも認識されるであろう。
添付の特許請求の範囲におけるすべての手段またはステップ+機能の要素の対応する構造、素材、行為、および均等物は、具体的に特許請求されているように、特許請求されているその他の要素と組み合わせて機能を実行するための任意の構造、素材、または行為を含むことを意図されている。本発明の説明は、例示および説明の目的で提示されており、網羅的であること、または開示されている形態の本発明に限定されることを意図されているものではない。当技術分野における標準的な技術者にとっては、本発明の範囲および趣旨から逸脱することなく、多くの変更形態および変形形態が明らかであろう。実施形態は、本発明の原理、および実際の応用を最もよく説明するために、ならびに、当技術分野における他の標準的な技術者が、本発明をさまざまな実施形態に関して、考えられる特定の使用に適しているさまざまな変更形態とともに理解することを可能にするために選ばれ、説明された。
本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェア要素およびソフトウェア要素の両方を含む実施形態という形態を取ることができる。好ましい一実施形態においては、本発明は、ソフトウェアにおいて実施され、そのソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコード、および、当業者によって認識されることが可能であるその他のソフトウェア・メディアを含むが、それらには限定されない。
完全に機能しているデータ処理システムというコンテキストにおいて本発明について説明してきたが、本発明のプロセスは、命令のコンピュータ可読メディアの形態およびさまざまな形態において配布されることが可能であるということ、ならびに本発明は、その配布を実行するために実際に使用される信号伝達メディアの特定のタイプを問わずに等しく適用されるということを当技術分野における標準的な技術者なら理解するであろうということに留意することが重要である。コンピュータ可読メディアの例としては、フロッピー(R)・ディスク、ハード・ディスク・ドライブ、RAM、CD−ROM、DVD−ROMなどの記録可能なタイプのメディアと、たとえば無線周波数および光波伝送などの伝送形態を使用するデジタルおよびアナログ通信リンク、有線またはワイヤレス通信リンクなどの伝送タイプのメディアとが含まれる。コンピュータ可読メディアは、特定のデータ処理システムにおける実際の使用のためにデコードされるコード化されたフォーマットの形態を取ることができる。
プログラム・コードを格納することまたは実行することあるいはその両方を行うのに適しているデータ処理システムは、システム・バスを通じてメモリ要素に直接または間接的に結合されている少なくとも1つのプロセッサを含むであろう。それらのメモリ要素は、プログラム・コードの実際の実行中に採用されるローカル・メモリと、バルク・ストレージと、実行中にコードがバルク・ストレージから取り出されなければならない回数を減らすために少なくとも何らかのプログラム・コードの一時的な格納を提供するキャッシュ・メモリとを含むことができる。
入力/出力またはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイスなどを含むが、それらには限定されない)は、直接または介在するI/Oコントローラを通じてシステムに結合されることが可能である。
データ処理システムが、介在するプライベートまたはパブリック・ネットワークを通じてその他のデータ処理システムまたはリモートのプリンタもしくはストレージ・デバイスに結合されるようになることを可能にするために、ネットワーク・アダプタがシステムに結合されることも可能である。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、現在利用可能なタイプのネットワーク・アダプタのうちのほんの一部である。

Claims (20)

  1. ステージング・エリアを管理するためのコンピュータ実施プロセスであって、
    識別された候補コールド・オブジェクトのための前記ステージング・エリアをメモリの通常エリアに作成するステップと、
    前記識別された候補コールド・オブジェクトを前記ステージング・エリア内へ移動させるステップと、
    前記ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握するステップと、
    前記識別された候補コールド・オブジェクトのうちの特定のオブジェクトに関する使用頻度情報が所定の頻度しきい値を超えているかどうかを判定するステップと、
    前記特定のオブジェクトに関する前記使用頻度情報が所定の頻度しきい値を超えているという判定に応答して、前記特定のオブジェクトを前記ステージング・エリア外のメモリの通常エリア内へ移動させるステップと、
    前記特定のオブジェクトに関する最後のアクセスの時刻から現在の時刻までの時間が所定の時間しきい値を超えているかどうかを判定するステップと、
    前記現在の時刻までの時間が所定の時間しきい値を超えているという判定および前記特定のオブジェクトに関する前記使用頻度情報が所定の頻度しきい値を超えていないという判定に応答して、残りのオブジェクトを前記ステージング・エリアからコールド・エリアへ移動させるステップと
    を含むコンピュータ実施プロセス。
  2. 前記識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するステップが、
    前記ステージング・エリアのための候補コールド・オブジェクトが存在するかどうかを判定するステップと、
    前記ステージング・エリアのための候補コールド・オブジェクトが存在するという判定に応答して、前記ステージング・エリアが存在するかどうかを判定するステップと、
    前記ステージング・エリアが存在しないという判定に応答して、メモリの通常エリアの部分を使用するステップであって、前記メモリが、マネージド・ランタイムによって使用されるメモリを表しており、前記メモリが、前記通常エリアに関連付けられている高パフォーマンス層からコールド・エリアの低パフォーマンス層までを含むパフォーマンス層において配列されており、前記メモリが、別々のタイプのメモリおよび同じタイプのメモリのうちの1つを含む、前記使用するステップと、
    前記ステージング・エリアが存在するという判定に応答して、前記ステージング・エリアを使用するステップと
    をさらに含む、請求項1に記載のコンピュータ実施プロセス。
  3. 前記識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成する前記ステップが、
    従来の読み取り/書き込みバリア、ページ保護メカニズム、メモリ・キャッシュ/トランスレーション・ルック・アサイド・バッファ(TLB)頻度データ、およびハードウェア支援プロファイリングを含む方法のセットから選択された方法または方法の組合せを使用して、オブジェクトのアクセス・パターンを追跡把握するステップであって、トラッキング情報が、前記メモリ内のそれぞれのオブジェクトのアクセスの結果としてインクリメントされるアクセス・カウントを含む前記使用頻度情報、および最後のアクセスの時刻を含む、前記追跡把握するステップと、
    方法のセットから選択された人気検知方法を使用して、通常のメモリ内のオブジェクトのセットを含むそれぞれのオブジェクトに関する前記使用頻度情報を使用して情報を収集するステップと、
    アクセス頻度を形成するために前記使用頻度情報に従ってオブジェクトのそれぞれのオブジェクト・セットをランク付けするステップと
    をさらに含む、請求項1に記載のコンピュータ実施プロセス。
  4. 識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するステップが、
    初期化値を含む構成データ構造を読み取るステップと、
    前記構成データ構造内の初期値によって判定されたサイズの前記ステージング・エリアを作成するステップであって、前記初期値が、オブジェクトの所定の数およびコールド・エリアのサイズから選択された値を表す、前記作成するステップと
    をさらに含む、請求項1に記載のコンピュータ実施プロセス。
  5. 前記識別された候補コールド・オブジェクトを前記ステージング・エリア内へ移動させるステップが、
    前記オブジェクトに関連付けられている情報に最後にアクセスした時刻を更新するステップをさらに含む、請求項1に記載のコンピュータ実施プロセス。
  6. 残りのオブジェクトを前記ステージング・エリアからコールド・エリアへ移動させるステップが、
    前記ステージング・エリアを除去するかどうかを決定するステップと、
    前記ステージング・エリアを除去するという決定に応答して、前記ステージング・エリアを前記メモリから除去するステップと
    をさらに含む、請求項1に記載のコンピュータ実施プロセス。
  7. 前記ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握するステップが、すべての実際のオブジェクト・アクセスを検知するステップをさらに含む、請求項1に記載のコンピュータ実施プロセス。
  8. ステージング・エリアを管理するためのコンピュータ・プログラム製品であって、
    コンピュータ可読メディアにコンピュータ実行可能プログラム・コードが格納され、、前記コンピュータ実行可能プログラム・コードが、
    識別された候補コールド・オブジェクトのための前記ステージング・エリアをメモリの通常エリアに作成するためのコンピュータ実行可能プログラム・コードと、
    前記識別された候補コールド・オブジェクトを前記ステージング・エリア内へ移動させるためのコンピュータ実行可能プログラム・コードと、
    前記ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握するためのコンピュータ実行可能プログラム・コードと、
    前記識別された候補コールド・オブジェクトのうちの特定のオブジェクトに関する使用頻度情報が所定の頻度しきい値を超えているかどうかを判定するためのコンピュータ実行可能プログラム・コードと、
    前記特定のオブジェクトに関する前記使用頻度情報が所定の頻度しきい値を超えているという判定に応答して、前記特定のオブジェクトを前記ステージング・エリア外のメモリの通常エリア内へ移動させるためのコンピュータ実行可能プログラム・コードと、
    前記特定のオブジェクトに関する最後のアクセスの時刻から現在の時刻までの時間が所定の時間しきい値を超えているかどうかを判定するためのコンピュータ実行可能プログラム・コードと、
    前記現在の時刻までの時間が所定の時間しきい値を超えているという判定および前記特定のオブジェクトに関する前記使用頻度情報が所定の頻度しきい値を超えていないという判定に応答して、残りのオブジェクトを前記ステージング・エリアからコールド・エリアへ移動させるためのコンピュータ実行可能プログラム・コードと
    を含む、コンピュータ・プログラム製品。
  9. 前記識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するためのコンピュータ実行可能プログラム・コードが、
    前記ステージング・エリアのための候補コールド・オブジェクトが存在するかどうかを判定するためのコンピュータ実行可能プログラム・コードと、
    前記ステージング・エリアのための候補コールド・オブジェクトが存在するという判定に応答して、前記ステージング・エリアが存在するかどうかを判定するためのコンピュータ実行可能プログラム・コードと、
    前記ステージング・エリアが存在しないという判定に応答して、メモリの通常エリアの部分を使用するためのコンピュータ実行可能プログラム・コードであって、前記メモリが、マネージド・ランタイムによって使用されるメモリを表しており、前記メモリが、前記通常エリアに関連付けられている高パフォーマンス層からコールド・エリアの低パフォーマンス層までを含むパフォーマンス層において配列されており、前記メモリが、別々のタイプのメモリおよび同じタイプのメモリのうちの1つを含む、前記使用するためのコンピュータ実行可能プログラム・コードと、
    前記ステージング・エリアが存在するという判定に応答して、前記ステージング・エリアを使用するためのコンピュータ実行可能プログラム・コードと
    をさらに含む、請求項8に記載のコンピュータ・プログラム製品。
  10. 前記識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するためのコンピュータ実行可能プログラム・コードが、
    従来の読み取り/書き込みバリア、ページ保護メカニズム、メモリ・キャッシュ/トランスレーション・ルック・アサイド・バッファ(TLB)頻度データ、およびハードウェア支援プロファイリングを含む方法のセットから選択された方法または方法の組合せを使用して、オブジェクトのアクセス・パターンを追跡把握するためのコンピュータ実行可能プログラム・コードであって、トラッキング情報が、前記メモリ内のそれぞれのオブジェクトのアクセスの結果としてインクリメントされるアクセス・カウントを含む前記使用頻度情報、および最後のアクセスの時刻を含む、前記追跡把握するためのコンピュータ実行可能プログラム・コードと、
    方法のセットから選択された人気検知方法を使用して、通常のメモリ内のオブジェクトのセットを含むそれぞれのオブジェクトに関する前記使用頻度情報を使用して情報を収集するためのコンピュータ実行可能プログラム・コードと、
    アクセス頻度を形成するために前記使用頻度情報に従ってオブジェクトのそれぞれのオブジェクト・セットをランク付けするためのコンピュータ実行可能プログラム・コードと
    をさらに含む、請求項8に記載のコンピュータ・プログラム製品。
  11. 識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するためのコンピュータ実行可能プログラム・コードが、
    初期化値を含む構成データ構造を読み取るためのコンピュータ実行可能プログラム・コードと、
    前記構成データ構造内の初期値によって判定されたサイズの前記ステージング・エリアを作成するためのコンピュータ実行可能プログラム・コードであって、前記初期値が、オブジェクトの所定の数およびコールド・エリアのサイズから選択された値を表す、前記作成するためのコンピュータ実行可能プログラム・コードと
    をさらに含む、請求項8に記載のコンピュータ・プログラム製品。
  12. 前記識別された候補コールド・オブジェクトを前記ステージング・エリア内へ移動させるためのコンピュータ実行可能プログラム・コードが、
    前記オブジェクトに関連付けられている情報に最後にアクセスした時刻を更新するためのコンピュータ実行可能プログラム・コードをさらに含む、請求項8に記載のコンピュータ・プログラム製品。
  13. 残りのオブジェクトを前記ステージング・エリアからコールド・エリアへ移動させるためのコンピュータ実行可能プログラム・コードが、
    前記ステージング・エリアを除去するかどうかを決定するためのコンピュータ実行可能プログラム・コードと、
    前記ステージング・エリアを除去するという決定に応答して、前記ステージング・エリアを前記メモリから除去するためのコンピュータ実行可能プログラム・コードとをさらに含む、請求項8に記載のコンピュータ・プログラム製品。
  14. 前記ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握するためのコンピュータ実行可能プログラム・コードが、すべての実際のオブジェクト・アクセスを検知するためのコンピュータ実行可能プログラム・コードをさらに含む、請求項8に記載のコンピュータ・プログラム製品。
  15. ステージング・エリアを管理するための装置であって、
    通信ファブリックと、
    前記通信ファブリックに接続されているメモリであり、コンピュータ実行可能プログラム・コードを含む、前記メモリと、
    前記通信ファブリックに接続されている通信ユニットと、
    前記通信ファブリックに接続されている入力/出力ユニットと、
    前記通信ファブリックに接続されているディスプレイと、
    前記通信ファブリックに接続されているプロセッサ・ユニットと
    を含み、前記プロセッサ・ユニットが、
    識別された候補コールド・オブジェクトのための前記ステージング・エリアをメモリの通常エリアに作成することと、
    前記識別された候補コールド・オブジェクトを前記ステージング・エリア内へ移動させることと、
    前記ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握することと、
    前記識別された候補コールド・オブジェクトのうちの特定のオブジェクトに関する使用頻度情報が所定の頻度しきい値を超えているかどうかを判定することと、
    前記特定のオブジェクトに関する前記使用頻度情報が所定の頻度しきい値を超えているという判定に応答して、前記特定のオブジェクトを前記ステージング・エリア外のメモリの通常エリア内へ移動させることと、
    前記特定のオブジェクトに関する最後のアクセスの時刻から現在の時刻までの時間が所定の時間しきい値を超えているかどうかを判定することと、
    前記現在の時刻までの時間が所定の時間しきい値を超えているという判定および前記特定のオブジェクトに関する前記使用頻度情報が所定の頻度しきい値を超えていないという判定に応答して、残りのオブジェクトを前記ステージング・エリアからコールド・エリアへ移動させることと
    を行うように前記装置に指示するために前記コンピュータ実行可能プログラム・コードを実行する、装置。
  16. 前記プロセッサ・ユニットが、前記識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するために前記コンピュータ実行可能プログラム・コードを実行し、
    前記ステージング・エリアのための候補コールド・オブジェクトが存在するかどうかを判定することと、
    前記ステージング・エリアのための候補コールド・オブジェクトが存在するという判定に応答して、前記ステージング・エリアが存在するかどうかを判定することと、
    前記ステージング・エリアが存在しないという判定に応答して、メモリの通常エリアの部分を使用することであって、前記メモリが、マネージド・ランタイムによって使用されるメモリを表しており、前記メモリが、前記通常エリアに関連付けられている高パフォーマンス層からコールド・エリアの低パフォーマンス層までを含むパフォーマンス層において配列されており、前記メモリが、別々のタイプのメモリおよび同じタイプのメモリのうちの1つを含む、前記使用することと、
    前記ステージング・エリアが存在するという判定に応答して、前記ステージング・エリアを使用することと
    を行うように前記装置にさらに指示する、請求項15に記載の装置。
  17. 前記プロセッサ・ユニットが、前記識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するために前記コンピュータ実行可能プログラム・コードを実行し、
    従来の読み取り/書き込みバリア、ページ保護メカニズム、メモリ・キャッシュ/トランスレーション・ルック・アサイド・バッファ頻度データ、およびハードウェア支援プロファイリングを含む方法のセットから選択された方法または方法の組合せを使用して、オブジェクトのアクセス・パターンを追跡把握することであって、前記使用頻度情報が、前記メモリ内のそれぞれのオブジェクトのアクセスの結果としてインクリメントされるアクセス・カウント、および最後のアクセスの時刻を含む、前記追跡把握することと、
    方法のセットから選択された人気検知方法を使用して、通常のメモリ内のオブジェクトのセットを含むそれぞれのオブジェクトに関する前記使用頻度情報を使用して情報を収集することと、
    アクセス頻度を形成するために前記使用頻度情報に従ってオブジェクトのそれぞれのオブジェクト・セットをランク付けすることと
    を行うように前記装置にさらに指示する、請求項15に記載の装置。
  18. 前記プロセッサ・ユニットが、識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するために前記コンピュータ実行可能プログラム・コードを実行し、
    初期化値を含む構成データ構造を読み取ることと、
    前記構成データ構造内の初期値によって判定されたサイズの前記ステージング・エリアを作成することであって、前記初期値が、オブジェクトの所定の数およびコールド・エリアのサイズから選択された値を表す、前記作成することと
    を行うように前記装置にさらに指示する、請求項15に記載の装置。
  19. 前記プロセッサ・ユニットが、前記識別された候補コールド・オブジェクトを前記ステージング・エリア内へ移動させるために前記コンピュータ実行可能プログラム・コードを実行し、
    前記オブジェクトに関連付けられている情報に最後にアクセスした時刻を更新することを行うように前記装置にさらに指示する、請求項15に記載の装置。
  20. 前記プロセッサ・ユニットが、残りのオブジェクトを前記ステージング・エリアからコールド・エリアへ移動させるために前記コンピュータ実行可能プログラム・コードを実行し、
    前記ステージング・エリアを除去するかどうかを決定することと、
    前記ステージング・エリアを除去するという決定に応答して、前記ステージング・エリアを前記メモリから除去することと
    を行うように前記装置にさらに指示する、請求項15に記載の装置。
JP2014552456A 2012-01-23 2013-01-23 ステージング・エリアを管理するためのコンピュータ実施プロセス、コンピュータ・プログラム製品、装置 Expired - Fee Related JP6192660B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/356,010 2012-01-23
US13/356,010 US8972680B2 (en) 2012-01-23 2012-01-23 Data staging area
PCT/CA2013/050042 WO2013110189A1 (en) 2012-01-23 2013-01-23 Data staging area

Publications (2)

Publication Number Publication Date
JP2015505623A JP2015505623A (ja) 2015-02-23
JP6192660B2 true JP6192660B2 (ja) 2017-09-06

Family

ID=48798210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014552456A Expired - Fee Related JP6192660B2 (ja) 2012-01-23 2013-01-23 ステージング・エリアを管理するためのコンピュータ実施プロセス、コンピュータ・プログラム製品、装置

Country Status (6)

Country Link
US (2) US8972680B2 (ja)
JP (1) JP6192660B2 (ja)
CN (1) CN104137093A (ja)
DE (1) DE112013000650B4 (ja)
GB (1) GB2515414B (ja)
WO (1) WO2013110189A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014000274A1 (en) 2012-06-29 2014-01-03 Intel Corporation Methods and systems to identify and migrate threads among system nodes based on system performance metrics
US9727318B2 (en) * 2014-02-18 2017-08-08 Facebook, Inc. Techniques to identify and purge unused code
WO2016122494A1 (en) * 2015-01-28 2016-08-04 Hewlett Packard Enterprise Development Lp Garbage collector
KR102491624B1 (ko) * 2015-07-27 2023-01-25 삼성전자주식회사 데이터 저장 장치의 작동 방법과 상기 데이터 저장 장치를 포함하는 시스템의 작동 방법
US9423962B1 (en) 2015-11-16 2016-08-23 International Business Machines Corporation Intelligent snapshot point-in-time management in object storage
CN105677582B (zh) * 2016-02-24 2018-06-19 东南大学 基于可重构系统配置多模式传输的可控缓存实现系统
US11074267B2 (en) 2017-03-20 2021-07-27 Sap Se Staged approach to automatic data discovery and performance
US10489073B2 (en) * 2017-04-28 2019-11-26 Netapp Inc. Multi-tier write allocation
JP6943125B2 (ja) * 2017-10-04 2021-09-29 トヨタ自動車株式会社 情報処理装置、情報処理方法及びプログラム
CN108984353B (zh) * 2018-06-22 2021-10-29 郑州云海信息技术有限公司 基于Vdbench构造热点数据测试数据分层的方法
US11010410B1 (en) * 2018-10-12 2021-05-18 Facebook, Inc. Processing data groupings belonging to data grouping containers

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4603382A (en) * 1984-02-27 1986-07-29 International Business Machines Corporation Dynamic buffer reallocation
US5155835A (en) 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
US6324620B1 (en) * 1998-07-23 2001-11-27 International Business Machines Corporation Dynamic DASD data management and partitioning based on access frequency utilization and capacity
EP1128267A1 (en) 2000-02-25 2001-08-29 Hewlett-Packard Company, A Delaware Corporation Disk storage system having redundant solid state data storage devices
CA2498154A1 (en) * 2002-09-16 2004-03-25 Tigi Corporation Storage system architectures and multiple caching arrangements
US7124272B1 (en) 2003-04-18 2006-10-17 Symantec Corporation File usage history log for improved placement of files in differential rate memory according to frequency of utilizations and volatility of allocation space
US7421681B2 (en) 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US20060136668A1 (en) * 2004-12-17 2006-06-22 Rudelic John C Allocating code objects between faster and slower memories
US8010764B2 (en) 2005-07-07 2011-08-30 International Business Machines Corporation Method and system for decreasing power consumption in memory arrays having usage-driven power management
US8363519B2 (en) 2006-06-30 2013-01-29 Seagate Technology Llc Hot data zones
US7870128B2 (en) 2006-07-28 2011-01-11 Diskeeper Corporation Assigning data for storage based on speed with which data may be retrieved
US20090132621A1 (en) * 2006-07-28 2009-05-21 Craig Jensen Selecting storage location for file storage based on storage longevity and speed
US8112603B2 (en) 2007-10-19 2012-02-07 International Business Machines Corporation Methods, systems, and computer program products for file relocation on a data storage device
US7836030B2 (en) * 2007-11-13 2010-11-16 International Business Machines Corporation Data library optimization
US7984259B1 (en) 2007-12-17 2011-07-19 Netapp, Inc. Reducing load imbalance in a storage system
US20090228669A1 (en) 2008-03-10 2009-09-10 Microsoft Corporation Storage Device Optimization Using File Characteristics
US8301852B2 (en) * 2008-11-13 2012-10-30 International Business Machines Corporation Virtual storage migration technique to minimize spinning disks
US8612668B2 (en) 2008-11-24 2013-12-17 Juniper Networks, Inc. Storage optimization system based on object size
CN102272742B (zh) * 2009-01-29 2015-08-05 Lsi公司 为卷提供动态存储分级的在线数据放置的写时分配快照机制
DE112009004503T5 (de) 2009-03-10 2012-05-31 Hewlett-Packard Development Co., L.P. Optimierung der zugriffszeit von auf speichern gespeicherten dateien
US20100234469A1 (en) * 2009-03-12 2010-09-16 Medichem, S.A. New Crystals Of A Benzoylbenzeneacetamide Derivative
US8880835B2 (en) * 2009-07-07 2014-11-04 International Business Machines Corporation Adjusting location of tiered storage residence based on usage patterns
US8429346B1 (en) * 2009-12-28 2013-04-23 Emc Corporation Automated data relocation among storage tiers based on storage load
US8321646B2 (en) 2010-04-13 2012-11-27 Dot Hill Systems Corporation Method and apparatus for rebalancing storage components within a storage tier

Also Published As

Publication number Publication date
JP2015505623A (ja) 2015-02-23
GB201414534D0 (en) 2014-10-01
US8972680B2 (en) 2015-03-03
DE112013000650B4 (de) 2023-05-04
US20150169471A1 (en) 2015-06-18
GB2515414A (en) 2014-12-24
US20130191610A1 (en) 2013-07-25
WO2013110189A1 (en) 2013-08-01
GB2515414B (en) 2016-10-05
DE112013000650T5 (de) 2014-11-06
CN104137093A (zh) 2014-11-05
US9152575B2 (en) 2015-10-06

Similar Documents

Publication Publication Date Title
JP6192660B2 (ja) ステージング・エリアを管理するためのコンピュータ実施プロセス、コンピュータ・プログラム製品、装置
US9513817B2 (en) Free space collection in log structured storage systems
US8332367B2 (en) Parallel data redundancy removal
US10318325B2 (en) Host-side cache migration
US20150039837A1 (en) System and method for tiered caching and storage allocation
JP6882662B2 (ja) マイグレーションプログラム、情報処理装置およびマイグレーション方法
US9971527B2 (en) Apparatus and method for managing storage for placing backup data into data blocks based on frequency information
US10915461B2 (en) Multilevel cache eviction management
JP2021018799A (ja) マルウェアについて複数のアーカイブスライスを検査するシステムおよび方法
US20120078858A1 (en) De-Duplicating Data in a Network with Power Management
US20180137059A1 (en) Migrating buffer for direct memory access in a computer system
US9460001B2 (en) Systems and methods for identifying access rate boundaries of workloads
WO2014003707A2 (en) Hardware-based accelerator for managing copy-on-write
US11010091B2 (en) Multi-tier storage
JP2005258789A (ja) ストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法
US10649902B2 (en) Reducing translation latency within a memory management unit using external caching structures
US10055304B2 (en) In-memory continuous data protection
US8688916B2 (en) Storage system and data processing method using cache memory
US11340822B2 (en) Movement of stored data based on occurrences of one or more n-gram strings in the stored data
US10831661B2 (en) Coherent cache with simultaneous data requests in same addressable index
CN109144760A (zh) 用于获取内存状态的方法、装置、系统及介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141209

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170613

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170808

R150 Certificate of patent or registration of utility model

Ref document number: 6192660

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees