JP2013033412A - メモリ管理方法、プログラム及びシステム - Google Patents

メモリ管理方法、プログラム及びシステム Download PDF

Info

Publication number
JP2013033412A
JP2013033412A JP2011169705A JP2011169705A JP2013033412A JP 2013033412 A JP2013033412 A JP 2013033412A JP 2011169705 A JP2011169705 A JP 2011169705A JP 2011169705 A JP2011169705 A JP 2011169705A JP 2013033412 A JP2013033412 A JP 2013033412A
Authority
JP
Japan
Prior art keywords
data
memory
access
computer
write
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.)
Withdrawn
Application number
JP2011169705A
Other languages
English (en)
Inventor
Kiyokuni Kawachiya
清久仁 河内谷
Kazunori Ogata
一則 緒方
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
Priority to JP2011169705A priority Critical patent/JP2013033412A/ja
Priority to US13/564,958 priority patent/US9003146B2/en
Publication of JP2013033412A publication Critical patent/JP2013033412A/ja
Withdrawn legal-status Critical Current

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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】 コンピュータのメモリ上にあるデータに対する、読み取りや書き込みなどの特性を、低いオーバーヘッドで検出する技法を提供すること。
【解決手段】 メモリ分別プロファイラは、対象プロセスのページを間欠的に、すなわち、定期的または一時的にアクセス禁止、または書き込み禁止にする。このとき、メモリ分別プロファイラは、対象アドレスのページフォールト・ハンドラの機能を果たす。ページフォールトを検出すると、そのアドレスとアクセス種別を対象プロセスに通知し、ページを元の状態に戻す。このとき、読み出しアクセスだった場合は、ページをまず、読み出しのみ(書き込み禁止)に変更してもよい。対象プロセスは、通知された情報から、データを、(ある時点以降は)全くアクセスされない(N)、読み出しアクセスのみしか行われない(R)、読み書き両方が行われる(W)に分別する。調査結果に基づき、対象プロセスのメモリ割り当て機構が、RやWのデータをそれぞれ別ページに再配置し、測定を継続する。
【選択図】 図6

Description

この発明は、コンピュータにおけるメモリ管理技法に関し、より詳しくは、コンピュータの物理メモリの使用効率を向上させるための技法に関するものである。
コンピュータの主記憶として、物理メモリの使用はほとんど必須であるが、一方で、物理メモリのサイズは有限であるため、従来より、仮想メモリへのページ・アウトなどの技法を駆使して、物理メモリの使用効率を向上が図られている。
近年増加しつつあるクラウド・コンピューティングにおいては、仮想化により、複数のゲスト環境が一台のマシン上で動作する仕組みが採用されており、すると、物理メモリの使用効率を向上させる要望も一層増大している。
物理メモリを管理するためには、メモリの各アドレスにどのようなデータがあるかをシステム的に把握する必要がある。
たとえば、本願発明者らが開発したJava(R) VM用メモリ解析ツールMarusa(2008年5月12日提出のIBMプロフェッショナル論文http://www-06.ibm.com/ibm/jp/provision/no59/pdf/59_paper3.pdfを参照されたい)は、JVM(Java(R) Virtual Machine,Java(R)仮想マシン)のデータ構造毎のメモリ使用状況と、OSのプロセス・メモリ管理情報を組み合わせて、JVMの各アドレスにどういうデータがあるかを突き止める機能を提供する。但しMarusaは、各々のデータがどのようにアクセスされているかの情報は与えない。
特開平6−89222号公報は、ページ管理機構と経時管理機構を有するコンピュータ・システムにおいて、物理メモリからスワップ・アウトすべきページを最適に選択できるようにするために、経時管理機構が経時管理サイクル毎に、各ページのアクセス状態を表すアクセス/非アクセス表示フラッグを評価し、各ページのアクセス履歴を記録するマルチビットのSPベクトル生成し、レポジトリに収納することを開示する。しかし、この技法は、ページ内にある各データのアクセスを判別する目的には使えない。
特開2006−18705号公報は、メモリ領域やアプリケーションに割り当てられたメモリ領域でのメモリアクセスをトレースする技法に関し、プログラムに割り当てるメモリ領域を獲得し、獲得したメモリ領域を検査対象メモリ領域としてMMUによりアクセス禁止状態にし、その検査対象メモリ領域に対応するトレースデータ域を確保し、検査対象メモリ領域に対するアクセスが発生すると、MMUによりアクセス例外が発生し、トレース処理部において,アクセス例外が発生した検査対象メモリ領域に対応するトレースデータ域に、採取したトレース情報を記録することを開示する。この技法は、アクセス例外を検出するために、調べたいデータが存在する領域を常時アクセス禁止にするので、処理が重くなるという問題がある。
特開2010−15223号公報は、長い期間アクセスされないオブジェクトの存在により、ガベージコレクション・プロセスの動作があってもアクセス速度の低下がないようにするために、コンピュータでガベージコレクションが動作する際、仮想メモリ空間に存在し、予め規定された長い期間アクセスされないオブジェクトを隔離するため、予め規定された長い期間アクセスされないオブジェクトを非アクセスオブジェクトとして検出する第1のステップと、非アクセスオブジェクトを検出した後所定の期間が経過すると新たに確保した仮想メモリ領域に前記非アクセスオブジェクトを移動する第2のステップと、新たに確保した仮想メモリ領域に移動した後さらに所定の期間が経過すると当該新たに確保した仮想メモリ領域をアクセス不可領域としてガベージコレクションが当該アクセス不可領域にアクセスしないようにする第3のステップとを実行することを開示する。この技法では、検出されるのは、データにアクセスがあったかどうかだけである。
Memalyze (http://www.uninformed.org/?v=7&a=1&t=pdf)というツールは、指定領域の全てのメモリアクセスを漏れなく捕まえるために、ページング機構を使用することを開示する。しかし、このツールは、特開2006−18705号公報に記述されている技術と同様に、処理としてはかなり重くなる。
特開平6−89222号公報 特開2006−18705号公報 特開2010−15223号公報
Java(R) VM用メモリ解析ツールMarusa(2008年5月12日提出のIBMプロフェッショナル論文 http://www-06.ibm.com/ibm/jp/provision/no59/pdf/59_paper3.pdf) Memalyze (http://www.uninformed.org/?v=7&a=1&t=pdf)
この発明の目的は、コンピュータのメモリ上にあるデータに対する、読み取りや書き込みなどの特性を、低いオーバーヘッドで検出する技法を提供することにある。
この発明の他の目的は、検出されたデータの特性に基づき、メモリ上でデータを再配置して最適化する技法を提供することにある。
この発明は、上記課題を解決するために、以下のような機能をもつメモリ分別プロファイラを提供する。メモリ分別プロファイラは、対象プロセスにアタッチされて動作する。
すなわち、メモリ分別プロファイラは、対象プロセスのページを間欠的に、すなわち、定期的または一時的にアクセス禁止、または書き込み禁止にする。この処理は、調査したいメモリ領域にのみ行えばよい。
メモリ分別プロファイラは、対象アドレスのページフォールト・ハンドラの機能を果たす。すなわち、ページフォールトを検出すると、そのアドレスとアクセス種別を対象プロセスに通知し、ページを元の状態に戻す。このとき、読み出しアクセスだった場合は、ページをまず、読み出しのみ(書き込み禁止)に変更してもよい。
対象プロセスは、通知された情報から、当該アドレスに存在するデータを判別し、データを以下の3種類に分別する。
N (ある時点以降は)全くアクセスされない
R 読み出しアクセスのみしか行われない
W 読み書き両方が行われる
調査結果に基づき、対象プロセスのメモリ割り当て機構が、RやWのデータをそれぞれ別ページに再配置(追い出す)し、測定を継続する。なお、この再配置は、対象プロセスのメモリ割り当て機構でなく、ガベージ・コレクション(GC)のプロセスが動的に行ってもよいし、次回起動時にそれまでの調査結果から静的に行ってもよい。
この発明によれば、メモリ分別プロファイラは、対象プロセスのページを間欠的に、すなわち、定期的または一時的にのみアクセス禁止、または書き込み禁止にするので、処理の低いオーバーヘッドで、アクセスされるデータを分別することが可能となる。
また、分別の結果に基づきデータを再配置することで、WやRのデータを調査対象から外せるので、プロファイラの精度向上をはかることができる。また、アクセス禁止にする領域も減らせるので測定オーバーヘッドを低減することができる。
本発明を実施するためのハードウェアの一例のブロック図である。 機能構成のレイヤを示す図である。 メモリ分別プロファイラの処理のフローチャートを示す図である。 ページ・フォールト時の処理のフローチャートを示す図である。 データ再配置処理のフローチャートを示す図である。 データ再配置処理がデータを再配置する様子を図式的に示す図である。
以下、図面に従って、本発明の実施例を説明する。これらの実施例は、本発明の好適な態様を説明するためのものであり、発明の範囲をここで示すものに限定する意図はないことを理解されたい。また、以下の図を通して、特に断わらない限り、同一符号は、同一の対象を指すものとする。
図1を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ・ハードウェアのブロック図が示されている。図1において、システム・バス102には、CPU104と、主記憶(RAM)106と、ハードディスク・ドライブ(HDD)108と、キーボード110と、マウス112と、ディスプレイ114が接続されている。CPU104は、好適には、32ビットまたは64ビットのアーキテクチャに基づくものであり、例えば、インテル社のPentium(商標)4、インテル社のCore(商標) 2 DUO、AMD社のAthlon(商標)などを使用することができる。主記憶106は、好適には、2GB以上の容量、より好ましくは、4GB以上の容量をもつものである。
ハードディスク・ドライブ108には、オペレーティング・システムが、格納されている。オペレーティング・システムは、Linux(商標)、マイクロソフト社のWindows(商標) 7、Windows XP(商標)、Windows(商標)2003サーバ、アップルコンピュータのMac OS(商標)などの、CPU104に適合する任意のものでよい。
ハードディスク・ドライブ108にはまた、Apacheなどの、Webサーバとしてシステムを動作させるためのプログラムが保存され、システムの起動時に、主記憶106にロードされる。
ハードディスク・ドライブ108にはさらに、Java(R)仮想マシン(VM)を実現するためのJava(R) Runtime Environmentプログラムが保存され、システムの起動時に、主記憶106にロードされる。
ハードディスク・ドライブ108にはさらに、本発明の機能を実現するメモリ分別プロファイラ204(図2)が実行可能形式のファイルとして保存されている。メモリ分別プロファイラ204は、C、C++などの既存のプログラミング言語処理系により、CPU104に適合する実行可能形式のコードを生成し得るコンパイラによって作成することができる。メモリ分別プロファイラ204は、使用時には主記憶106にロードされる。
キーボード110及びマウス112は、オペレーティング・システムが提供するグラフィック・ユーザ・インターフェースに従い、ディスプレイ114に表示されたアイコン、タスクバー、テキストボックスなどのグラフィック・オブジェクトを操作するために使用される。
ディスプレイ114は、これには限定されないが、好適には、1024×768以上の解像度をもち、32ビットtrue colorのLCDモニタである。ディスプレイ114は例えば、後述するメモリ上でデータ再配置処理の進捗状況を示すために使用される。
通信インターフェース116は、好適には、イーサネット(R)プロトコルにより、ネットワークと接続されている。通信インターフェース116は、クライアント・コンピュータ(図示しない)からApacheが提供する機能により、TCP/IPなどの通信プロトコルに従い、処理リクエストを受け取り、あるいは処理結果を、クライアント・コンピュータ(図示しない)に返す。
図2は、本発明を用いてJVMが使用するデータの分別を行う場合の、プログラムまたはプロセスの階層を示す図である。図1に示すハードウェアの上で、オペレーティング・システム202が動作し、オペレーティング・システム202上ではメモリ分別プロファイラ204が動作する。オペレーティング・システム202ではJava(R)仮想マシン(JVM)206が動作し、メモリ分別プロファイラ204の機能をJVM206が呼ぶので、階層としては、メモリ分別プロファイラ204上にJVM206が位置するように図示されている。
アプリケーション・プログラム208は、Java(R)バイト・コードから構成され、JVM206上で動作する。そして、必要に応じてJVM206を介して、メモリ分別プロファイラ204の機能を呼び出す。なお、図示しないが、ハードディスク・ドライブ108にはJITコンパイラが格納され、アプリケーション・プログラム208は、JITコンパイラによってオペレーティング・システム202に直接実行されるバイナリ・コードに変換されてもよい。この場合は、JITコンパイラによってコンパイルされたバイナリ・コードが直接、メモリ分別プロファイラ204の機能を呼び出すことになる。
なお、メモリ分別プロファイラ204は、Java(R) Virtual Machine Tool Interface (JVMTI) エージェントなどの形で実現してもよい。あるいは、オペレーティング・システム202の機能の一部として、メモリ分別プロファイラ204の機能を実装することもできる。
さらには、クラウド環境などで使われる仮想マシンモニタに、メモリ分別プロファイラ204の機能を実装することもできる。
次に、図3〜図5のフローチャートを参照して、本発明の処理について説明する。図3は、JVM206が、メモリ上の所定の領域にあるデータ(オブジェクトやクラスデータなど)のアクセス状態を測定する処理を示す。
JVM206が、メモリ分別プロファイラ204を呼び出し測定開始を指示すると、メモリ分別プロファイラ204は、ステップ302で、ページ・フォールト・ハンドラを設定する。ページ・フォールト・ハンドラは、メモリ分別プロファイラ204の機能の一部であり、好適にはオペレーティング・システム202の機能を利用する。
ステップ304で、メモリ分別プロファイラ204は、JVM206によって指定されたメモリ領域のページをアクセス禁止または書き込み禁止にする。アクセス禁止と書き込み禁止のどちらにするかは、調べたいデータの状態による。メモリ分別プロファイラ204は、メモリ領域のアクセス禁止を行うために、好適には、オペレーティング・システム202の機能を呼び出す。例えば、Linux(R)なら、mprotectというシステム・コールが用意されている。int mprotect(const void *addr, size_t len, int prot)という書式で、addrの開始アドレスから、lenの長さの領域(ページ単位)に、protで設定したアクセスを設定する。prodには、アクセス不可(PROT_NONE)、読み取り可(PROT_READ)、読み書き可(PROT_READ|PROT_WRITE)などを設定可能である。このようなシステム・コールをもたないオペレーティング・システムの場合、別途オペレーティング・システムの拡張モジュール、デバイスドライバなどを用意することになる。
ステップ306で、メモリ分別プロファイラ204は、一定時間待つ。その時間設定は、アプリケーション・プログラム208を実行するJVM206がメモリにアクセスする頻度などに応じて適宜決められる。ステップ306の間に、アクセス禁止されたメモリ領域のページにあるデータに対してアクセスがあるか、書き込み禁止されたメモリ領域のページにあるデータに対して書き込みがあると、ページ・フォールトが起きる。ページ・フォールトが起きたときの処理は、図4のフローチャートを参照して後で説明する。なお、JVM206は、どのデータがどのメモリのアドレスの範囲にあるかの情報をテーブルなどの形で維持しているので、ページ・フォールトがあったときのメモリのアクセス・アドレスを知ることで、どのデータがアクセスされているかを知ることができる。
ステップ308では、メモリ分別プロファイラ204は、測定終了かどうか判断する。測定終了の判断は、測定対象プログラムであるJVM206からの指示や、測定開始からの時間あるいは、データへのアクセス回数などによって行われる。まだ測定終了の条件を満たしていないなら、ステップ304に戻る。これにより、本発明の特徴の一つである、定期的にページをアクセス禁止にすることが達成される。
ステップ308で測定終了の条件を満たしたと判断すると、メモリ分別プロファイラ204は、ステップ310でページのアクセス設定を、アクセス禁止または書き込み禁止から元に戻し、ステップ312でページ・フォールト・ハンドラを解除し、測定終了となる。
次に図4のフローチャートを参照して、ページ・フォールトが起きたときの処理について説明する。ページ・フォールトが起きると、メモリ分別プロファイラ204は、ステップ402で、ページ・フォールトしたアドレスがページのアクセス設定を変更している領域内かどうか判断し、もしそうなら、ステップ404で、メモリ分別プロファイラ204は、読み出しアクセスかどうか判断する。
読み出しアクセスなのか、書き込みアクセスなのかを判別するには次のようにする。
まず、CPU、メモリ・コントローラ、オペレーティング・システムなどの機能により、ページ・フォールトが読み出しなのか書き込みなのか分かる場合がある。この場合は、その機能を利用する。
そのような機能が使えない場合は、ページ・フォールトを引き起こした命令を調べることで、読み出しアクセスなのか、書き込みアクセスなのかを判別する。
あるいは、ページを先ずアクセス禁止にしておき、ページ・フォールトが起きた場合はそのアドレスに、読み出しアクセスがあったと判断し、ページを「読み出しのみ」に変更して続行する。そうして、そのアドレスでさらにページ・フォールトが起きた場合は、そのアドレスに書き込みがあったと判断し、ページを読み書き可能に変更して続行する。これによって、読み出しアクセスであったのか、書き込みアクセスであったのかが判別できる。
こうして、ステップ404で、読み出しアクセスであると判断されると、メモリ分別プロファイラ204は、ステップ406で、ページ・フォールトしたアドレスのデータに「W」マークがなければ「R」マークを付ける。このようなマークは実際上、上述した、どのデータがどのメモリのアドレスの範囲にあるかのテーブルに書くことができる。なお、この処理は調査対象プログラムであるJVM206を呼び返して行ってもよい。そして、ステップ408で、ページを書き込み禁止に変更して処理を終わる。
一方、ステップ404で、書き込みアクセスであると判断されると、メモリ分別プロファイラ204は、ステップ410で、ページ・フォールトしたアドレスのデータに「W」マークを付ける。この処理も、調査対象プログラムであるJVM206を呼び返し、JVM206に行わせてもよい。そして、ステップ412で、ページを書き込み禁止に変更して処理を終わる。
ステップ402に戻って、ページ・フォールトしたアドレスがページのアクセス設定を変更している領域内でないと判断されると、メモリ分別プロファイラ204は特別な処理を行わず処理を終える。その結果、ステップ414で、ページ・フォールトのデフォルト処理を行うルーチンが実行される。
図5は、データ再配置処理のフローチャートを示す図である。データ再配置処理を行うルーチンは、典型的には、測定対象プログラムであるJVM206中に実装される。
図5において、ステップ502では、データ再配置処理は、メモリ分別プロファイラ204の測定が行われていれば一旦終了させる。ステップ504では、データ再配置処理は、「W」の付いたデータ、「R」の付いたデータ、マークのないデータ(N)をそれぞれ個別のメモリ領域に再配置する。ステップ506では、データ再配置処理は、NとRのメモリ領域について、メモリ分別プロファイラ204により測定を再開する。そして、Nの領域はアクセス禁止、Rの領域は書き込み禁止にする。
ページ・フォールトの度毎に図5のデータ再配置処理を行うと処理が重くなるので、好適には、メモリ分別プロファイラ204にはデータ分別機能だけを行わせ、データ分別がある程度進んだきっかけで、図5のデータ再配置処理を行う。そのきっかけとは例えば、ガベージ・コレクションが行われたとき、あるいは、アプリケーション・プログラム208が次に起動されたとき、などである。
図6は、メモリ分別プロファイラ204によってデータが分別され、その結果に基づきデータ再配置処理がデータを再配置する様子を図式的に示す図である。
図6(a)は、メモリのページ602〜610に、データ1〜9が配置されている様子を示す。そこで測定対象のプログラム(これまでの例ではJVM206)は、プログラムの初期化が終わったある時点でメモリ分別プロファイラ204を呼び出してページ602〜610を定期的にアクセス禁止にし、データ1〜9に「R」や「W」のラベルを付けていく。これはそれぞれ、そのデータに対して読み出し,書き込みのアクセスがあったことをあらわしている。ある程度ラベルが付けられた段階のあるきっかけで、図6(b)に示すように、データ再配置処理が、「R」が付いたデータと、「W」が付いたデータをそれぞれ、ページ608とページ610に再配置する。
ここで、メモリ分別プロファイラ204は、ページ602〜606は定期的にアクセス禁止にし、ページ608は定期的に書き込み禁止にする。書き込みがあるとして分別済みのデータがあるページ610は、ページのアクセス変更は不要である。このように、素性が判明したデータを別ページへと再配置することで、アクセス禁止にする領域を減らし、測定の効率を上げることができる。
このような処理を続けた結果が図6(c)である。結果的にページ602〜604には、全くアクセスされなかったデータが残り、ページ606〜608には「R」のラベルのデータ(すなわち、読み出しのみが行われたデータ)が配置され、ページ610には、「W」のラベルが付いたデータ(すなわち、書き込みが行われたデータ)が配置される。この結果、ページ602〜604はページアウトの候補となり、ページ606〜608はCopy−on−Write機構などを利用したプロセス間共有の候補となる。
次に本発明の処理の適用例をいくつか示す。
その1つの適用例は、Java(R)ヒープ内のオブジェクトの動的再配置であり、以下の処理を行う。
(1) Java(R)ヒープのページをN (NoAccess)、R (ReadOnly)、W (ReadWrite)に3分割する、最初は全部Nとしておく。
(2) Nのページを定期的・一時的にアクセス禁止、Rのページは書き込み禁止にし、ReadやWriteのあったオブジェクトを記録する。
(3) ガベージ・コレクション(GC)の際に、上で記録したオブジェクトはそれぞれRやWのページへ再配置する。その他のオブジェクトはNのページに残す。ただし、GC中はヒープのページはアクセス可能になっているとする。
(2)〜(3)を繰り返すことで、アクセスのあるオブジェクトをどんどんRやWのページへ追い出し、濃縮していく。
この手順により、Nのページには最終的に「アクセスされないオブジェクト」だけが残り、ページアウトがされやすくなる。また、Rのページには「読み出しのみのオブジェクト」が集まるので、その内容を解析することで、JVM間のヒープ共有などの基礎データにすることができる。
次に、別の適用例として、Java(R) VM内のクラスデータの静的再配置がある。この場合は以下の処理が行われる。
(1) Java(R) VM のクラス領域に対して本発明の処理を適用する。クラスデータ用のページをN、R、Wに分けておく。最初は全部Nに配置する。
(2) アプリケーション初期化後にページを定期的・一時的にアクセス禁止にすることで、ReadやWriteが行われるクラスデータを見つけ、それぞれ「R」や「W」として記録する。
(3) 次回起動時に、前回までの記録でRやWとなっていたクラスデータはそれぞれRやWのページに配置するようにする(静的再配置)。なお、クラスデータがオブジェクトのように動的に再配置できれば、実行中にこの作業を行うこともできるが、ここではできないという前提の実施例を示している。
(4) 起動のたびに(2)〜(3)を繰り返し、RやWの情報を正確にするとともに、初期化後もアクセスのあるクラスデータをどんどん別ページに集めていく。
この手順により、アプリケーションの初期化後はアクセスされないクラスデータのページアウトが促進される。また、読み出しのみのクラスデータを解析することで、JVM間のクラスデータ共有を促進できる。
以上、本発明の実施例を説明したが、この発明は、特定のハードウェア及びオペレーティング・システムあるいはアプリケーション・プログラムに限定されないことに留意されたい。すなわち、メモリ領域を選択的にアクセス不可にできる任意のハードウェア及びオペレーティング・システム上で、データをメモリ上で動的もしくは静的に再配置可能な任意のアプリケーションに対して実施可能である。例えば、クラウド環境で使用される大規模環境のシステム上でも適用可能である。あるいは、スタンドアロンの環境で動作する場合にも適用可能である。
104 CPU
106 主記憶
108 ハードディスク・ドライブ
202 オペレーティング・システム
204 メモリ分別プロファイラ
206 JVM
208 アプリケーション・プログラム

Claims (17)

  1. コンピュータの処理により、該コンピュータのメモリ上のデータを管理する方法であって、
    前記コンピュータの処理により、前記メモリ上の指定した領域を一時的または間欠的にアクセス禁止にするステップと、
    前記コンピュータの処理により、前記アクセス禁止にした前記メモリ領域にあるデータに対する、任意のプロセスからの読み取りアクセスの結果としてページ・フォールトが起きることに応答して、前記データに読み取りデータであることを示すマークを付けるステップを有する、
    メモリ管理方法。
  2. 前記読み取りデータであることを示すマークを付けるステップの後に、前記コンピュータの処理により、前記メモリ上の指定した領域を書き込み禁止にするステップをさらに有する、請求項1に記載のメモリ管理方法。
  3. 前記書込み禁止にした前記メモリ領域にあるデータに対する、任意のプロセスからの書き込みアクセスの結果としてページ・フォールトが起きることに応答して、前記コンピュータの処理により、前記データに書き込みデータであることを示すマークを付けるステップをさらに有する、請求項2に記載のメモリ管理方法。
  4. 前記コンピュータの処理により、前記読み取りデータであることを示すマークを付けたデータと、前記書き込みデータであることを示すマークを付けたデータとを、それぞれ、個別のメモリ区画に移動するステップをさらに有する、請求項3に記載のメモリ管理方法。
  5. 前記個別のメモリ区画に移動するステップは、ガベージ・コレクションまたは、前記ページ・フォールトの原因のアクセスを行ったプロセスの再起動時に実行される、請求項4に記載のメモリ管理方法。
  6. コンピュータの処理により、該コンピュータのメモリ上のデータを管理する方法であって、
    前記コンピュータの処理により、前記メモリ上の指定した領域を一時的または間欠的に書込み禁止にするステップと、
    前記コンピュータの処理により、前記アクセス禁止にした前記メモリ領域にあるデータに対する、任意のプロセスからの書き込みアクセスの結果としてページ・フォールトが起きることに応答して、前記データに書き込みデータであることを示すマークを付けるステップを有する、
    メモリ管理方法。
  7. 前記コンピュータの処理により、前記書き込みデータであることを示すマークを付けたデータを、個別のメモリ区画に移動するステップをさらに有する、請求項6に記載のメモリ管理方法。
  8. コンピュータの処理により、該コンピュータのメモリ上のデータを管理する方法であって、
    前記コンピュータに、
    前記メモリ上の指定した領域を一時的または間欠的にアクセス禁止にするステップと、
    前記アクセス禁止にした前記メモリ領域にあるデータに対する、任意のプロセスからの読み取りアクセスの結果としてページ・フォールトが起きることに応答して、前記データに読み取りデータであることを示すマークを付けるステップを実行させる、
    メモリ管理プログラム。
  9. 前記読み取りデータであることを示すマークを付けるステップの後に、前記メモリ上の指定した領域を書き込み禁止にするステップをさらに有する、請求項8に記載のメモリ管理プログラム。
  10. 前記書込み禁止にした前記メモリ領域にあるデータに対する、任意のプロセスからの書き込みアクセスの結果としてページ・フォールトが起きることに応答して、前記データに書き込みデータであることを示すマークを付けるステップをさらに有する、請求項9に記載のメモリ管理プログラム。
  11. 前記読み取りデータであることを示すマークを付けたデータと、前記書き込みデータであることを示すマークを付けたデータとを、それぞれ、個別のメモリ区画に移動するステップをさらに有する、請求項10に記載のメモリ管理プログラム。
  12. 前記個別のメモリ区画に移動するステップは、ガベージ・コレクションまたは、前記ページ・フォールトの原因のアクセスを行ったプロセスの再起動時に実行される、請求項11に記載のメモリ管理プログラム。
  13. コンピュータの処理により、該コンピュータのメモリ上のデータを管理する方法であって、
    前記メモリ上の指定した領域を一時的または間欠的にアクセス禁止にする手段と、
    前記アクセス禁止にした前記メモリ領域にあるデータに対する、任意のプロセスからの読み取りアクセスの結果としてページ・フォールトが起きることに応答して、前記データに読み取りデータであることを示すマークを付ける手段を有する、
    メモリ管理システム。
  14. 前記読み取りデータであることを示すマークを付けるステップの後に、前記メモリ上の指定した領域を書き込み禁止にする手段をさらに有する、請求項13に記載のメモリ管理システム。
  15. 前記書込み禁止にした前記メモリ領域にあるデータに対する、任意のプロセスからの書き込みアクセスの結果としてページ・フォールトが起きることに応答して、前記データに書き込みデータであることを示すマークを付ける手段をさらに有する、請求項14に記載のメモリ管理システム。
  16. 前記読み取りデータであることを示すマークを付けたデータと、前記書き込みデータであることを示すマークを付けたデータとを、それぞれ、個別のメモリ区画に移動する手段をさらに有する、請求項15に記載のメモリ管理システム。
  17. 前記個別のメモリ区画に移動するステップは、ガベージ・コレクションまたは、前記ページ・フォールトの原因のアクセスを行ったプロセスの再起動時に実行される、請求項16に記載のメモリ管理システム。
JP2011169705A 2011-08-03 2011-08-03 メモリ管理方法、プログラム及びシステム Withdrawn JP2013033412A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011169705A JP2013033412A (ja) 2011-08-03 2011-08-03 メモリ管理方法、プログラム及びシステム
US13/564,958 US9003146B2 (en) 2011-08-03 2012-08-02 Managing memory of a computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011169705A JP2013033412A (ja) 2011-08-03 2011-08-03 メモリ管理方法、プログラム及びシステム

Publications (1)

Publication Number Publication Date
JP2013033412A true JP2013033412A (ja) 2013-02-14

Family

ID=47627720

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011169705A Withdrawn JP2013033412A (ja) 2011-08-03 2011-08-03 メモリ管理方法、プログラム及びシステム

Country Status (2)

Country Link
US (1) US9003146B2 (ja)
JP (1) JP2013033412A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10649814B2 (en) 2017-07-18 2020-05-12 Fujitsu Limited Device, method, and medium for executing a computing process within an accessed monitoring region

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519591B2 (en) * 2013-06-22 2016-12-13 Microsoft Technology Licensing, Llc Latch-free, log-structured storage for multiple access methods
US10496311B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10496292B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10725685B2 (en) 2017-01-19 2020-07-28 International Business Machines Corporation Load logical and shift guarded instruction
US11733873B2 (en) 2017-12-01 2023-08-22 Micron Technology, Inc. Wear leveling in solid state drives
US10846955B2 (en) 2018-03-16 2020-11-24 Micron Technology, Inc. Black box data recorder for autonomous driving vehicle
US11094148B2 (en) 2018-06-18 2021-08-17 Micron Technology, Inc. Downloading system memory data in response to event detection
US11782605B2 (en) * 2018-11-29 2023-10-10 Micron Technology, Inc. Wear leveling for non-volatile memory using data write counters

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW212840B (en) 1992-04-22 1993-09-11 Ibm Multi-bit vector for page aging
US7165255B2 (en) * 2001-03-15 2007-01-16 Sun Microsystems, Inc. Method and apparatus for managing surplus memory in multitasking system
US7412572B1 (en) * 2004-03-17 2008-08-12 Sun Microsystems, Inc. Multiple-location read, single-location write operations using transient blocking synchronization support
JP2006018705A (ja) 2004-07-05 2006-01-19 Fujitsu Ltd メモリアクセストレースシステムおよびメモリアクセストレース方法
JP2010015223A (ja) 2008-07-01 2010-01-21 Internatl Business Mach Corp <Ibm> メモリ領域中のオブジェクトを隔離するための方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10649814B2 (en) 2017-07-18 2020-05-12 Fujitsu Limited Device, method, and medium for executing a computing process within an accessed monitoring region

Also Published As

Publication number Publication date
US9003146B2 (en) 2015-04-07
US20130036282A1 (en) 2013-02-07

Similar Documents

Publication Publication Date Title
JP2013033412A (ja) メモリ管理方法、プログラム及びシステム
US7313734B2 (en) Method and system for instruction tracing with enhanced interrupt avoidance
US7574587B2 (en) Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US8191049B2 (en) Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US7114036B2 (en) Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected
US6158024A (en) Method and apparatus for structured memory analysis of data processing systems and applications
Zhao et al. Umbra: Efficient and scalable memory shadowing
US8566795B2 (en) Selectively obtaining call stack information based on criteria
US7093081B2 (en) Method and apparatus for identifying false cache line sharing
US10241894B2 (en) Data-scoped dynamic data race detection
US20090210630A1 (en) Method and Apparatus for Prefetching Data from a Data Structure
US8307375B2 (en) Compensating for instrumentation overhead using sequences of events
US20050155022A1 (en) Method and apparatus for counting instruction execution and data accesses to identify hot spots
US10599541B2 (en) Efficient breakpoint detection via caches
US8887139B2 (en) Virtual system and method of analyzing operation of virtual system
US20090083716A1 (en) Profiling method and program
US20230342282A1 (en) Memory page markings as logging cues for processor-based execution tracing
Gralka et al. Visual exploration of memory traces and call stacks
US20210157647A1 (en) Numa system and method of migrating pages in the system
Movall et al. Linux Physical Memory Analysis.
US8261245B2 (en) Method and system for associating profiler data with a reference clock
JP2011165093A (ja) メモリアクセス調査装置、メモリアクセス調査方法、及びプログラム
Kim et al. Code-based cache partitioning for improving hardware cache performance
Daoud et al. Dynamic trace-based sampling algorithm for memory usage tracking of enterprise applications
US20230161678A1 (en) Classification of different types of cache misses

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20141007