JP3772996B2 - 実際ワーキング・セット決定システム - Google Patents
実際ワーキング・セット決定システム Download PDFInfo
- Publication number
- JP3772996B2 JP3772996B2 JP00650896A JP650896A JP3772996B2 JP 3772996 B2 JP3772996 B2 JP 3772996B2 JP 00650896 A JP00650896 A JP 00650896A JP 650896 A JP650896 A JP 650896A JP 3772996 B2 JP3772996 B2 JP 3772996B2
- Authority
- JP
- Japan
- Prior art keywords
- page
- memory
- data
- working set
- transactions
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3428—Benchmarking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/805—Real-time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/87—Monitoring of transactions
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/953—Organization of data
- Y10S707/955—Object-oriented
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、一般的にはマルチタスク環境における仮想メモリの管理に関するもので、特に、プロセスのワーキング・セットに必要なRAMを減少させるシステムおよび方法に関するものである。
【0002】
【従来の技術】
長年にわたってシステムRAMの要求量は指数的に増大してきた。例えば、初期のPDP−11ミニコンピュータは、わずか64KB(キロ・バイト)のRAMでUnixを実行した。初期のワークステーションの中には、ハードウエア上最大2MB(メガ・バイト)に限定されるものもあった。今日では、最新のデスクトップ・ソフトウェアを実行させるとき、16MBをもつエントリ・レベルのワークステーションでさえ遅く見えることがある。
【0003】
従来行われてきたメモリ対策の1つは、メモリ使用調整を不要のものとして退け、RAMを単に増設するというものである。結局、RAM価格は下落し続けるが、システム価格もまた下落し続ける。RAMの必要性の相対的比率の増大を所与とすれば、RAM価格が減少し、システム価格が減少しても、RAMはシステム費用の主要部分を占めることに変わりはない。加えて、今日の競争環境において、あるソフトウェアが一層多くのRAMを必要とし、その結果、他のソフトウエアより高価なシステムを必要とすれば、そのソフトウエアの営業担当者はその販売に苦労することとなる。
【0004】
従来技術の解決策は、主として仮想メモリのページング・アルゴリズムを改善することに焦点を集めてきた。その例のいくつかを、Gupta、Franklin両氏著の IEEE, Transactions on Computers C-27-706-712 (1978)、Levy、Lipman両氏著のComputer 15:35-41 (1982)および Loreti、Deitel両氏著のOperating Systems, Addison-Wesley, Reading, MA (1981)で参照することができる。これらの従来技術の改良は、大きいプログラムを一層効率的に実行させることを可能にしている点において重要ではあるが、それらはメモリ使用の継続的増加を考慮に入れてない。従って、最も先進的ページング・アルゴリズムをもってしても、プロセスが増大し続けるにつれ、システムRAM要求は増加し続ける。
【0005】
【発明が解決しようとする課題】
しかしながら、RAMを増設しても、この追加RAMの多くが付加機能によって消費される一方で、その多くが貧弱なプログラミング実施の結果としてただ浪費されている。種々の技術を使用して、浪費されたRAMの返還をめざしメモリ調整の努力が払われたが、明確な成功は得られてない。この不成功は、従来技術のシステムにおけるメモリ調整機構が、特定のプロセスのワーキング・セットの構成内容に関し十分な洞察を行う能力に欠けていることによる。従って、ある1つのプロセスによって頻繁に利用されるRAMの量を減少させることによって浪費されるRAMの回収をメモリ調整機構が可能にするシステムが必要とされている。
【0006】
【課題を解決するための手段】
本発明によって、プロセスのデータ構造利用度に関する情報を提供する対話型情報記録および処理ツールが提供される。この情報は、プロセスの動的に割当てられるメモリのワーキング・セット(すなわちメモリ上の作業領域)を減少させるために使われる。本発明が提供する「実際ワーキング・セット」(Actual Working Setの頭文字をとって以下AWSと呼称する場合もある)決定機構は、システムを改良するアプローチでなく、所与のプロセスが効率的に動作するようにプロセス自体を改善するために必要な情報をメモリ調整機構に与えることによって仮想メモリ問題へ対処するというアプローチをとる。
【0007】
本発明は、どの部分が頻繁に使用されるか、すなわち、プロセスの仮想メモリ(Virtual Memoryの頭文字をとって以下VMと呼称する場合もある)のワーキング・セット(仮想メモリ・ワーキング・セットVirtual Memory Woroking Setをその頭文字をとって以下VWSと呼称する場合もある)と呼ばれる動的に割当てられるページが実際にどれほど使われるかを決定する。プロセスが頻繁に使用する実際のメモリは、プロセスの実際ワーキング・セット(AWS)と呼ばれる。
【0008】
本発明は、所与のベンチマークを実行して、動的に割当てられるメモリの実際ワーキング・セットを決定する。AWS決定機構の基本的アプローチは、対象とされるプロセスが厳しいスラッシュ状態(すなわち、頻繁なページ・フォールトのためプロセスの実行が極度に停滞する状態)のとき、どのデータ構造がページ・フォールトをひき起こすかを観察することである。本発明には、データ記録機構およびデータ分析機構が含まれる。データ記録機構は、最も正確な結果が得られるように一貫したベンチマークが行われることを保証し、目標プロセスに関するヒープ・ページ・フォールトの数と細分性を増加させてプロセッサのページ・フォールト・メカニズムが関連データ構造のアクセス回数を通算することを可能にし、すべてのヒープ・ページ・フォールトおよびトランザクションを記録する。
【0009】
データ分析機構は、ベンチマーク実行の間データ記録機構によって記録された大量のデータを効率的に処理する対話型情報処理ツールである。データ分析機構は、また、ユーザが処理されたデータを対話モードで活用し、プロセスのヒープAWSを精密に分析することを可能にする。データ分析機構は、ヒープ・メモリの各ブロックを特定のC言語データ構造に関係づける。ベンチマークが完了し、上述の情報が記録され、関係づけられた後、該情報の処理ステップが実行され、対象とされたプロセスのヒープAWSが決定される。
【0010】
【発明の実施の形態】
I. はじめに
本発明は、プロセスのデータ構造の活用度に関する情報を提供する対話型記録ツールおよび処理ツールを提供する。この情報は、動的に割当てられるプロセスのメモリのワーキング・セットを減少させるために使われる。本発明の実施形態について、以下、システム概要、仮想メモリおよびワーキング・セット理論の簡単な考察、動的割当てプロセスのメモリの実際ワーキング・セットの認定、最後に、事例研究の順に説明する。
【0011】
II. システムの概要
図1は、本発明の好ましい実施形態であるコンピュータ・システム100を示すブロック図である。図1は、UNIXシステム・カーネルであり、種々のモジュールとその相互関係を示す。特に、図1は、UNIXシステム・カーネル108の2つの主要コンポーネントである、ファイル・サブシステム102およびプロセス制御サブシステム104を示す。いくつかのモジュールが他のモジュールの内部動作と相互に作用するので実際のカーネルはモデルと異なるが、図1は、UNIXシステムの論理的側面を観察するのに役立つ。
【0012】
図1は、コンピュータ・システム100の3つのレベル、すなわち,ユーザ・レベル106、カーネル・レベル108およびハードウェア・レベル110を示す。システム呼び出しインターフェース112およびライブラリ・インターフェース114は、アプリケーション・プログラム116とカーネル108の間の境界を表す。システム呼び出しは、Cプログラムにおける通常の関数呼び出しと同様であり、ライブラリはオペレーティング・システムに入るために必要とされるプリミティブへこれらの関数呼出しを対応づける。しかし、アセンブリ言語プログラムが、システム呼び出しライブラリなしで直接システム呼び出しを起動するために使われることもある。プログラムは、しばしば標準入出力ライブラリのような他のライブラリを使用してシステム呼び出しの一層高度な使用を行う。ライブラリは、コンパイル時にプログラムにリンクされ、アプリケーション・プログラムの一部となる。
【0013】
図1では、システム呼び出しのセットは、ファイル・サブシステム102と対話するものとプロセス制御サブシステム104と対話するものに区分されている。ファイル・サブシステム102は、ファイルを管理し、ファイル空間を割り当て、空き空間を管理し、ファイルへのアクセスを制御し、ユーザに代わってデータを取り出す。プロセスは、従来技術において既知のシステム呼び出しの特定のセットを介してファイル・サブシステム102と対話する。
【0014】
ファイル・サブシステム102は、カーネル・レベル108と補助メモリとして図示されている補助記憶装置138との間のデータの流れを制御するバッファ・キャッシュ118を使用して、ファイル・データにアクセスする。バッファ・キャッシュ118は、ブロックI/Oデバイス・ドライバ124と対話して、カーネル108との間でのデータ転送を始動させる。デバイス・ドライバは、周辺装置の動作を制御するカーネル・モジュールである。ブロックI/0装置124は、ランダム・アクセス記憶装置であるか、または、そうでない場合、デバイス・ドライバによって、システム100の残りの装置にとってランダム・アクセス記憶装置であるように見えるようにされる。例えば、テープ駆動装置は、カーネル108がランダム・アクセス記憶装置としてテープ装置を読み取ることを可能にする。ファイル・サブシステム102は、また、バッファ・キャッシュ118の干渉なしに「生の」I/0デバイス・ドライバと直接対話する。生のデバイスは、しばしば文字デバイス・ドライバ122と呼ばれ、ブロック・デバイス・ドライバ124以外のすべてのデバイスを含む。ほとんどのブロック装置124は、また、文字デバイス・インターフェースを提供し、カーネル108をバッファ・キャッシュ118へバイパスさせることを可能にする。これは、ブロック装置への「生のI/0」と呼ばれる。文字デバイス122とブロックI/O装置124を合わせたものがデバイス・ドライバ120を構成する。
【0015】
プロセス制御サブシステム104は、プロセス間通信130、メモリ管理134、およびプロセス同期/スケジューリング132に対して責任を持つ。ファイル・サブシステム102およびプロセス制御サブシステム104は、実行のためメモリにファイルをロードするとき、相互に対話し、プロセス制御サブシステム104は、実行する前にメモリに実行可能ファイルを読み込む。プロセス制御サブシステム104は、プロセスを制御するため既知のシステム呼び出しを実行する。
【0016】
メモリ管理モジュール134は、メモリの割り当てを制御する。システムがすべてのプロセスのために十分な物理メモリを有していないならば、カーネル108は、すべてのプロセスが公正な機会を得るように、主メモリ136と補助メモリ138の間でそれらプロセスを移動させる。一般的に、メモリを管理するため、スワップと要求ページングという2つの方策がある。スワップ・プロセスは、プロセスに対するメモリの割り当てを「スケジュール」して、CPUスケジューラの動作に影響を及ぼすので、スケジューラ132と呼ばれることがある。
【0017】
スケジューラ・モジュール132は、CPUをプロセスに割り当てる。スケジューラ・モジュール132は、資源を待つ間プロセスが自発的にCPUを放棄するまで、または、プロセスの最近の実行時間がある時間量を越える時カーネルがプロセスに対し優先実行を開始するまで、プロセスを順番に実行させるようにスケジュールする。次に、スケジューラ132は、実行させる最優先順位を持つプロセスを選択する。元のプロセスが、実行可能な最優先順位を持つプロセスである場合再び実行する。プロセス間通信130には、事象の非同期信号からプロセス間の同期メッセージ伝送におよぶいくつかの形態がある。
【0018】
最後に、ハードウェア制御140は、割込みを処理し、ハードウェア・レベルと通信する機能を果たす。ハードウェア・レベル110は、プロセッサ142、システム・メモリまたは主メモリ136およびシステム・バス144を備える。主メモリ136は、好ましくは、ランダム・アクセス・メモリ(すなわちRAM)である。プロセッサ142の適切な形態の1つは、既知のIBM社製RISCSystem/6000コンピュータ・ファミリである。好ましくは、プロセッサ142は、ヒューレット・パッカード社PA‐RISCSystemである。しかしながら、本発明の範囲と精神を逸脱することなく、その他のコンピュータを代替的に使用することは可能である。
【0019】
ハードウェア・レベル110には、I/Oバス146に接続した、補助記憶装置138、ディスプレイ装置148、およびキーボードまたはマウス等のユーザ・インタフェース装置150を含む数多くの周辺装置がさらに含まれる。補助記憶装置138は、例えば、ハードディスク・ドライブやフロッピーディスク・ドライブを含む。加えて、ユーザ・インタフェース150へのユーザ入力を記録し、ディスプレイ装置148に表示し、次に、I/Oバス146を経由して直接再生するため記録/再生装置152が使われる。プロセスの実行中に、ディスクまたはターミナルのような装置は、CPUへの割り込みを行うかもしれない。そのような場合、カーネルは割り込みを処理した後割り込まれたプロセスの実行を再開する。割り込みは、専用プロセスによって処理されることはなく、現在実行中のプロセスの範囲に呼び出されているカーネルの特殊機能によって処理される。
【0020】
カーネル108の適切な形態は、米国ニュージャージー州マレイ・ヒル所在のAT&T Bell Laboratoriesによって開発されたAT&T Unix System V、および米国カリフォルニア州バークレイ所在のカリフォルニア大学バークレイ校によって開発されたBerkeley Software Distribution (BSD) Unix systemなどのような既知の、一般に使用されているUnixシステムである。特定のアプリケーションまたは機械のために構成されたこれらUnixシステムのバリエーションも使用可能である。そのような構成には、米国コロラド州フォート・コリンズ所在のヒューレット・パッカード社が開発した、本発明の好ましい実施形態であるHP‐UXUnixオペレーティング・システムが含まれる。
【0021】
III. 仮想記憶装置と従来のワーキング・セット・モデル
コンピュータ・システム100は、仮想メモリ・システムである。図2は、物理的メモリと仮想メモリの間の関係を図示する。図2では、主メモリ136における物理メモリは、物理的ページ202として図示されている。仮想メモリ(VM)システムは、主メモリ136が実際より大きい数の物理的ページ202を保持する容量を持つかのような錯覚をコンピュータ・プロセスに与える。従って、コンピュータ・システム100において動作するあらゆるプロセスは、システムに実装された主メモリ136の物理的メモリ(RAM)量136より非常に大きい仮想アドレス空間204を持つことができる。VMシステムは、複雑な形態でこの錯覚を与える。
【0022】
仮想および物理両アドレス空間は、ページと呼ばれる小さい構成要素206に分割される。ページ206のサイズは、典型的には、2−3KBである。各ページは、実際には、RAM(主メモリ136)または補助記憶装置138のようなスワップ空間206に置かれる。メモリ・マネージャ134は、各仮想ページ208とその実際の位置の間のマッピング(すなわち対応関係)を維持する。このマッピングの一部は、CPU142内の特別なメモリ管理ハードウェアに記憶される。各仮想メモリのアクセスは、このメモリ管理ハードウェアを経由する。メモリ位置のページがRAM136に位置づけられていれば、物理的メモリ202の正確な物理アドレスが、メモリ・アクセスのために使われる。仮想メモリ位置のページがスワップ空間206に位置するならば、メモリ・アクセスが起きる前に、ページをRAM136にロードするためページ・フォールトが発生する。
【0023】
RAM136がいっぱいのときは、あるページがRAMに呼び込まれる前に別のページがスワップ空間206に送り出されなければならない。現在メモリにあるページが「ページ・アウト」または「スワップ・アウト」される。メモリ管理モジュール134は、スワップ・アウトすべきページ210を公平な方法で決定するようにつとめる。一般的に、上述のページ活動を実行する時間は、プロセッサ142の処理速度に比較して長い。正確な時間は、スワップ・ディスクとコンピュータの相対的速度のような種々の因子に依存するが、ページ処理の時間が長いため、あるプロセスがページ・フォールトに遭遇すると当該ページのRAM136への書き込みが終了するまでそのプロセスは中断される。
【0024】
例えば、コンピュータ・システム100が64KBの物理メモリ202のRAM136を持ち、各ページのサイズが4KBであるとすると、システムは16個のページからなる物理メモリ202を持つこととなる。あるプロセスが128KBの仮想メモリを利用する場合、それは32個のページからなる仮想メモリを持つ。プロセスが17番目のページの中のアドレスをアクセスしようとする時点でプロセスの最初の16個のページがRAM136にロードされているとすれば、メモリ管理モジュール134は、17番目のページのアクセスに関してページ・フォールトを発生させる。スワップ空間206から17番目のページをページ・インさせるため、RAM136にある最初の16個のページの1つがスワップ空間206へスワップ・アウトされなければならない。
【0025】
プロセスが同一の16個のページ内に大部分のメモリ・アクセスを保持していれば、ページ・フォールトはほとんど発生せず、従って処理速度はすぐれている。しかし、プロセスがラウンドロビン方式(すなわち巡回方式)で32個のページすべてをアクセスするならば、それは殆どの時間中断される。このような事態が発生すると、プロセスはスラッシュ(thrash)状態であるといわれる。殆どの活動的プロセスが過剰なページングに遭遇すると、システムはスラッシュ状態であるといわれる。「活動的」プロセスがほとんどの時間中断されるので、ほどんど進展は見られない。
【0026】
好ましい実施形態のHP−UXオペレーティング・システムのような最近のマルチタスク・オペレーティング・システムは複雑な仮想メモリ管理システムを使用する。第1に、カーネルは、いくつかのプロセスを同時にタイム・スライスすることを試みるので、コンピュータのRAMのすべてを1つのプロセスに割り当てることはない。RAMは、複数のプロセスに使われる仮想ページを含む。第2に、最近のカーネルは、ページ・フォールトの数を減らすため高度のアルゴリズムを使う。例えば、HP−UXカーネルは、特定のページ・フォールトが発生すると、直後にアクセスされる場合に備えて周辺のページを同時にページ・インすべきか否かを判断する。カーネルは、また、スワップすべきページ(例えば再度すぐに呼び込まれる可能性のないページ)を決定するため種々の基準を保持する。カーネルは、プロセスのワーキング・セットに使われているメモリをけっしてページ・アウトしない。
【0027】
P. J. Denning氏によって"Communications of the ACM 11:323-333 (1968)"および"IEEE Transactions on Software Engineering SE-6:64-84 (1980)"で紹介されているワーキング・セット・モデルは、マルチ・オペレーティング・システムにおけるVM動作を理解するのに役立つ。ワーキング・セット・モデルを支持する基本的概念は、プロセスがその(複数)ページのサブセットを頻繁にアクセスすることである。これらのページは、プロセスのワーキング・セット(すなわち実働セット)と呼ばれる。ワーキング・セットのページは、プロセスがスラッシュ状態にならないようにメモリに常駐したままでいなければならない。
【0028】
ある1つのプロセスのワーキング・セットは、時間の経過とともに変化する傾向がある。例えば、起動時におけるプロセスのワーキング・セットは、安定状態のワーキング・セットより非常に大きくまた非常に異なっていることがある。また、メニュ選択型プログラムのワーキング・セットは、ユーザが異なるメニュ項目を選択するにつれて変化する可能性がある。
【0029】
すべてのプロセスの仮想メモリのサイズが使用可能RAMの範囲内でまかなえる場合は、プロセスが最初のページをアクセスするときにのみページ・フォールトは発生する。そのような場合ではシステム処理能力はスラッシュに苦しむことはない。スラッシシュ状態は、すべての活動プロセスのワーキング・セットの総和が使用可能RAMを越えるとき発生する。そのような状況では、1つのプロセスのワーキング・セットのページ・インを行うために、別のプロセスのワーキング・セットがページ・アウトされなければならない。
【0030】
プロセスがスラッシュ状態であることをカーネルが検出すると、カーネルは劇的対応策を開始する。例えば、カーネルは全体のプロセスをスワップ・アウトして残りの1つまたは複数のプロセスのために使用可能なページの数を増加させることがある。当然のことながら、スワップ・アウトされたプロセスが最後に再び実行される場合、それらのワーキング・セットのページのすべては呼び込まれなければならず、そのためその他のプロセスはスワップ・アウトされる。上述のように、システム処理能力を向上させスラッシシュの発生確率とその悪影響を減少させるため、VMページング・アルゴリズムに対し種々の改善が提案されてきた。しかしながら、上述のように、これらの改善は、メモリ使用の継続的な増加を考慮に入れていない。
【0031】
IV. 実際ワーキング・セット(AWS)の決定
A.本発明のワーキング・セット・モデル
上記説明において、「ワーキング・セット」という用語は、特に仮想メモリ・システム・ページ204を指すものとして使われた。これは、伝統的に仮想メモリの改善に焦点が当てられてきたことによる。伝統的改善は、メモリ管理モジュール134によって実行されるページング機能に集中している。これは、おそらく、常駐プロセスがオペレーティング・システムの作成者以外の製造業者によって作成されることによる。しかし、本発明のシステムおよび方法は、メモリ管理モジュール134を改善するというよりもむしろプロセス自体を改善し、それによって所与のプロセスが一層効率的に動作することを意図する。この異なる見解とアプローチを実現するため、当業界において使われる伝統的な定義を検討しなければならない。
【0032】
図3を参照すれば、非ワーキング・セット・メモリを調整してもシステム処理能力は改善されないことは十分理解されるであろう。例えば、上記で説明した例および図3を参照して、プロセスのサイズ全体は32個のページのままで、ワーキング・セットが17個のページ(例えば、ページ1−17)であると仮定し、システム・メモリ136はなお16個のページだけを備えているとすれば、従来技術のワーキング・セット・モデルに従えば、コンピュータ・システム100はスラッシュする。ワーキング・セットにない8個のページ(例えばページ25ないし32)を追い出すというメモリ調整努力は、なお、システム100をスラッシュさせる。これは、排除されるページのいずれもワーキング・セットにないためである。このように、プロセスの1/4がページ・アウトされても、システム100はなおスラッシュする。その代わり、ワーキング・セット・ページの1つ(例えばページ17)がワーキング・セットから除かれれば、コンピュータはもはやスラッシュしない。
【0033】
本発明に従うプロセスのワーキング・セットの定義を図4を参照しながらここで説明する。メモリ管理モジュール134の観点からすれば、全体ページ402が、そのプロセスのワーキング・セットであるが、プログラムはそのページの一部を使用しているだけかもしれない。従って、本発明においては、頻繁に使用され、または動的に割当てられるページを、プロセスの仮想メモリ(VM)ワーキング・セット(VWS、Virtual Working Set)と呼ぶ。プロセスが頻繁に使用する実際のメモリをプロセスの実際ワーキング・セット(Actual Working Setの頭文字をとって以下AWSと呼称する場合もある)406と呼ぶ。典型的にはメモリ調整はCおよびFortranのような高級言語を利用して実行されるので、AWS406は、プロシージャおよびデータ構造を用いて表現される。VWS(伝統的なワーキング・セット)404はページとして表現される。すなわち、データ構造またはコードは、特定ページの小さい部分406を利用する。
【0034】
ほとんどの状況において、AWS406は、VWS404より常に小さい。これは、細分性が相違しているからである。AWS406の細分性は、バイト単位で測られ、一方VWS404は、各ページのサイズ(典型的には2、3KB)で常に測られる。本発明は、サイズにおけるこの相違を活用して、仮想メモリ・ワーキング・セット404のどの部分が実際ワーキング・セット406に含まれるかを決定する。
【0035】
図3に関連した上述の例を参照して、VWS404は17ページであって、そのうちプログラム・コードが1ページ(例えば最初のページ)を占め、プログラムは2つのセットの変数に常時アクセスすると仮定する。さらに、第1の変数セットは2番目のページの約1/2を占め、第2の変数セットは、16個のエレメントからなる結合リストであると仮定する。なお、上記リストにおいて、各エレメントのサイズは24バイトであり、エレメントのそれぞれは、上記第2のページの後半から始まって別のページに記録されていると仮定する。
【0036】
この特定のケースにおいて、本発明は、AWS406として実際に使われるVWS404の部分だけを考慮する。この例において頻繁にアクセスされる特定のデータ構造は相対的に非常に小さい。AWS404もそれに応じて小さい。この情報によって、プログラマは結合リストが2番目のページ内にだけ収納されるようにプログラムを慎重に設計することができるであろう。そのようなケースでは、VWS404は、17ページではなくわずか2ページとなる。これはAWS406のサイズに一層近くなる。
【0037】
B.本発明の好ましいメモリ調整
メモリ調整は、当該プロセスのVWSを減少させるプロセスであるとみなされる。スラッシュの原因となるプロセスに対してメモリ調整が行われれば、スラッシュは減じられるか、除去される。典型的には、メモリ調整は、以下のタイプのタスクの1つまたは複数を実行するものとして一般的に説明される。すなわち、(1)局地性の改善、(2)ヒープ断片化の減少 、(3)メモリ漏洩の除去、(4)コードおよびデータ構造のサイズの減少、(5)メモリの再使用、および(6)ワーキング・セット増大のスケジュール化、である。
【0038】
局地性の改善に関しては、相対的に小さく、かつ異なるページにまたがって存在する項目への頻繁なアクセスは、VWSを(上述のように)不必要に増大させる。可能な限り項目を隣接して割り当てることによって、(サイズ的にAWSへ近似した)より小さいVWSとなり、ページ・フォールトの発生が少なくなる。この規則は、データにもコードにもあてはまる。例えば、頻繁に使われるプロシージャをグループ化すれば、コードのAWSを減らすことができる。(HP−UXと連係するコンパイラなど)コンパイラによっては、コードに関してこの作業を自動的に行う。
【0039】
ヒープ断片化は、未使用の穴を累積して放置する形態でメモリを割り当て解放する場合に発生する。断片化はAWSの局地性を減らし、そのため不必要にVWSを増大させる。メモリ漏洩は、割当てられたメモリがもはや使われないのにかかわらず解放されない場合に発生する。メモリ漏洩も、AWSの局地性を減らし、そのため不必要にVWSを増大させる。
【0040】
コードおよびデータ構造のサイズを減らす目的は、AWSおよびVWSを縮小することである。例えば、ある構造が、いくつかのブーリアン値の各々に関し複数の32ビット・フィールドを含むとすれば、その代わりに、1ビットのフィールドからなるグループを使用することができる。16ビット整数フィールドを32ビット整数の代わりにあてることができる場合が多い。使用頻度の少ないコード/データを頻繁に使われるコード/データの中から引き出すことができる場合が多い(例えば、XサーバのWindowOptRec)。
【0041】
メモリの再使用は、システム処理能力を向上させる。例えば、プロシージャが起動される毎に、1つまたは複数の一時的項目を割り当て、使用し、次に、解放すると仮定する。一旦項目を割り当て、将来の使用に備えて周囲に保持することによって、ヒープ断片化は減少する(このため他のヒープ・データ構造に対する局地性を改善することができる)。
【0042】
ワーキング・セット増大のスケジュール化は、また、システム処理能力を向上させる。例えば、プロセスのVWSは、起動時に大きいことが多い。同時にいくつかのプロセスを起動させることは、一時的なスラッシング状態の誘因となる。プロセスの起動を同期化させることによって、ワーキング・セットの大きさの総和がスラッシュを引き起こす程の大きさにはならないであろう。これはシステム・レベルの例ではあるが、同様の例をコードについても観察することができる。
【0043】
上述の諸改善を効果的に成し遂げるため、本発明は、プロセスのプログラムの開発に用いたものと同じ高級言語プロシージャおよびデータ構造で表される当該プロセスのAWSを決定する。上述のように、本発明は、データ記録およびデータ分析機構を実行する。図5は、本発明の好ましい実施形態のブロック図である。図5に示されるように、本発明のAWS決定機構500は、データ記録機構502およびデータ分析機構504を含む。
【0044】
V. 実際ワーキング・セット(AWS)
上述のように、本発明は、所与のベンチマーク(測定基準)に関して、動的に割当てられたメモリの実際ワーキング・セットを決定する。本発明の好ましい実施形態は、Unix環境におかれる。従って、動的に割当てられたメモリは、プロセスのヒープ(すなわち、process's heap)と呼称される。
【0045】
AWS決定機構500の基本アプローチは、対象とされたプロセスがスラッシュ状態になるときどのデータ構造がページ・フォールトを引き起こすかを注意深く観察することである。この観察によって、ある1つのプロセスによって頻繁に使われるデータ構造を決定することが可能となる。図5は、本発明のAWS決定機構500のブロック図である。図5に示されるように、本発明のAWS決定機構500は、データ記録機構502およびデータ分析機構504を含む。AWS決定機構500は、Cプログラミング言語の文脈で特に説明されるが、いかなるプログラム言語にも適用することができる。
【0046】
A. データ記録機構502
データ記録機構502は、データ分析機構504による後の分析のため、ベンチマーク実行の間のデータを記録する。図6は、本発明のデータ記録機構502によって実行されるデータ記録プロセスの概略流れ図を示す。図6に示されるように、データ記録プロセスは、以下のステップを含む。
【0047】
データ記録プロセス600は、データ記録処理の開始(ステップ602)から始まる。詳細は後述するが、データ記録プロセス600は、ユーザによって起動されるベンチマーク実行の一部として起動される。
【0048】
一旦起動されると、最初のステップで、一貫性のあるベンチマークが達成されることを確認する機能が実行される。最も正確な結果を得るため、データ記録機構502は、複数のベンチマークの実行を必要とし、連続したベンチマークの間、同じ動作を実行する同一セットのプロセスが首尾一貫繰り返し実行されなければならない。従って、ステップ604の間に、ユーザとの対話型アプローチが活用され、各ベンチマークに関するプロセスおよび関連パラメータをユーザが選択することを可能にする。ベンチマークの繰返しが多くなればなるほど、各ベンチマークの結果を比較するデータ分析機構504の正確性は増加する。
【0049】
ステップ606において、目標プロセスに対するヒープ・ページ・フォールトの数および細分性が最大にされる。細分性とは、ページ当たりのデータ構造の数を指す。これによって、本発明は、プロセッサのページ・フォールトのメカニズムを活用して、関連データ構造がアクセスされる度数を通算することができる。ヒープ・ページ・フォールトの増加を達成する本発明の好ましい方法およびその代替方法の詳細は後述する。一旦目標プロセスが選択され、繰り返し可能なベンチマークが保証されると、ベンチマークが起動される(ステップ608)。
【0050】
ステップ610において、時間順に配列され、タイムスタンプを記されたすべてのヒープ・ページ・フォールトを記録するリストが作成され、補助記憶装置138に記憶される。このリストは、データ分析機構504による将来の使用のため各ページ・フォールトに関するすべての関連情報を含む。
【0051】
ステップ612において、時間順に配列され、タイムスタンプを記されたすべてのヒープ・トランザクションを記録するリストが作成される。本発明の好ましい実施形態のUnix環境において、このリストは、malloc(), calloc(), realloc()および free()に対する呼び出しなどのトランザクションを含む。このリストは、割り当てられたサイズ、割り当てられたアドレス、解放されたアドレスおよびプロシージャ呼出しトレースを含む各トランザクションについてのすべての関連情報を含む。上記ステップの各々の詳細を以下に記述する。
【0052】
1. 首尾一貫したベンチマークの実行
ステップ604に関連して記述したように、すべてのメモリ調整プロジェクトの進行を客観的に測定するために、首尾一貫した、繰り返し可能なベンチマークが必要である。本発明のベンチマークは、従来型のベンチマークとは相違する。多くのベンチマークは、1つまたは2つのプロセスを扱う。一方、ステップ604において作成されるベンチマークは、同じプロセス間順序で同じ動作を常に実行する複数のプロセスを伴う。これは、実行毎のページ・フォールトの変化を最小にする。
【0053】
好ましい実施例の1つでは、記録されたユーザ・セッションがベンチマークの役目を果たす。記録/再生装置152が、ディスプレイ装置148およびユーザ・インタフェース150におけるユーザ入力を記録する。次に、再生ツールが非常に正確にセッションを再生する。すべてのユーザ入力およびXサーバ事象は、クライアントの動作を能動的に監視し、入力をただ受動的にXサーバーへ送り出すことのないように、再生装置152で再生するのに必要な十分な時間をとらなければならない。ページ・フォールトを最大にする必要性は、要求再生環境および貧弱な記録環境に関して生じる。従って、ページ・フォールト発生が少ないときベンチマーク記録が行われ、ページ・フォールト発生が多いとき再生が行われなければならない。しかし、ベンチマーク・システムが厳しいスラッシュ状態のときセッションを厳密に再生する記録/再生機構152は、可能な限り迅速にセッションを再生し、ユーザ入力における間隔を圧縮し、プロセス間動作の順序を維持するように構成される。
【0054】
2. ページ・フォールトの最大化
ページ・フォールトの数および細分性を最大にすることは、AWS決定機構500の正確性を増加させ、観察されたページ・フォールトに基づいてその決定が行われるようにさせる。観察されるページ・フォールトが少ない場合、データ分析機構504によって処理されるために生成されるデータは少ない。本発明の好ましい実施形態においては、ページ・フォールトは、データ構造のアクセスの頻度を測定するメカニズムとして使用される。記憶されるべきページ・フォールト情報を評価する現存するカーネルがあるので、ページ・フォールトが選ばれた。
【0055】
上述の通り、1ページを占める単一のデータ構造が存在する場合最良の結果が達成されるが、多くのケースにおいては、複数のデータ構造が同一のページを占有する。そのようなページが一度だけフォールトを発生すると、ただ1つの構造だけが観察され、残りは隠れてしまう。ページのスワップ・イン、スワップ・アウトが多くなればなるほど、これらの隠れた構造を観察できる確率は高まる。例えば、頻繁にアクセスされるデータ構造の2つのタイプAおよびBがともにメモリ全体にわたって拡散している(すなわち局所性が小さい)と仮定する。さらに、特定のベンチマークについて、これらのデータ構造が同一セットのページを占めていると仮定する。ページ・フォールトが最大化されていないならば、ベンチマークのアクセス様態に基づいて異なるシナリオが生じる可能性がある。例えば、両タイプの構造は、その共有ページに関して、フォールトを分割するであろう。明きらかに、その2つのうちの1つがフォールトのすべてを消費する。もう一つの可能性は、もう一方の構造がフォールトのすべてを消費することである。これらのシナリオはデータ構造のタイプを隠蔽し、そのため、その発生をデータ記録機構502が記録することが妨げられる。
【0056】
本発明の好ましい実施形態では、1つの構造だけが各ページを占める。これらのページが常にその使用後直ちにスワップ・アウトされるならば、これらの構造が受け取るフォールトの数は、それらが使用される頻度を示す。例えば、2つの構造CおよびDを仮定し、軽度のページングの間CおよびDそれぞれが1回だけのページ・フォールトを受け取り、重度のページングの間Cが2回のページ・フォールトを、Dが20回のページ・フォールトを受け取るとする。明らかに、DはCよりいっそう頻繁に使用されている。
【0057】
いくつかのアプローチによって、ベンチマーク実行508の間のページ・フォールトの数および細分性を増加させることができる。最も簡単なものは、システムRAM136の量を減らすことである。これを実行する最も単純な方法は、システムの電源を切断し、SIMMを取り出すことである。しかし、これは時間浪費的であり、ページ・フォールトの最適量に見合う細分性をたぶん生み出さないであろう。ページ・フォールトの最適数は、相対的に正確なAWS決定を行なうことができる程度のものではあるが、ベンチマークが受容不可能なほど長く行われるほど多数ではない。本発明の好ましいアプローチの1つは、カーネル108がアクセスするようにプログラムされるRAM136の量を、ユーザが、相対的に小さい増分値で指定することを許容する拡張カーネル108を使用することである。この点は、当業者の理解の範囲内にあるものとみなされる。
【0058】
もう一つのアプローチは、メモリ管理モジュール134の事前ページ機能を取り外すことである。例えば、カーネル108は、フォールトを受けるページの周囲のページを、すぐに使用されるという予測のもと、取り込む場合がある。事前ページング機能は、通常動作の間はすぐれた機能であるが、ベンチマーク実行の間はそうではない。これは、事前ページング機能の目的がデータ構造アクセスを効果的に隠すことであるが、この点がまさに本発明のプロセスに対して相反するものであることによる。この点も当業者の理解の範囲内にあるものと考えられる。
【0059】
本発明のもう1つの好ましい実施形態において、複数の方法が使用され、それによりデータ記録機構502が非常に精度の高い結果を達成する。この好ましいアプローチの第1の部分は、特定のプロセスを対象とする特別のカーネルを使用することである。すべてのプロセスの処理速度を遅くするシステムRAM減少の方法に代わって、上記特別のカーネルが、CPUメモリ管理モジュール134にただ1つのヒープ・ページを配置する。これを行うため、RAMにあるプロセスのページのすべてにキーを付け、RAMには単一のページしかないと信じ込ませるようにメモリ管理モジュール134を修正する。対象とされたプロセスは、それが異なるヒープ・ページをアクセスする度毎にフォールトを発生させる。殆どの隠れたデータ構造が見い出されるだけでなく、各データ構造使用の観察頻度も相対的に正確である。処理能力を最大にするため、カーネルは、プロセスのヒープ・ページをRAMに置き、各ページ・フォールトを非常に迅速に処理するように構成される。この点も当業者の理解の範囲内にあるものと考えられる。
【0060】
本発明の好ましいアプローチの第2の部分は、これもまた独立して利用されるものであるが、ページ・フォールトを特定のデータ構造に対応させるものである。例えば、本発明の好ましい実施形態が実施されるUnix環境において、2つのデータ構造が同じページを共有しないようにmallocライブラリが修正される。このようなmallocの変更は、当業者の理解の範囲内にあるものと考えられる。上述の拡張カーネルと連係して使われるとき、データ記録機構502の正確度はほぼ完全になる。
【0061】
3. ページ・フォールトの記録
上述の通り、データ記録機構は,プロセスが厳しいスラッシュ状態のときページ・フォールトを観察する。各ページ・フォールトについて、データ記録機構502は、すべてのヒープ・ページ・フォールトについての情報を、時間順の、タイムスタンプ付きリストに記録する。図7に示すように、以下の情報が、ステップ610で記録される。第1に、ページ・フォールト702を引き起こしたアドレスが記録される。これは、ページ・フォールトが起きたときにアクセスされていたアドレスである。本発明は、データ構造を記録して、分析する。しかし、本発明がプログラム・コードに対するものであるとすれば、通算されるプログラムが記憶されるであろう。加えて、プログラム・カウンタ値704およびページ・フォールト702が記憶されるであろう。これは、ページ・フォールトを起こしたプロシージャのアドレスである。
【0062】
好ましい実施形態において、カーネル108はHP−UXカーネルである。HP−UXカーネルは、特別測定情報バッファに上述の情報を提供する。それに加えて、データ記録ツールは、既にカーネル108に存在していた。カーネル108のこの既存の記録機構に対する変更は必要であったが、これは当業者の理解の範囲内にあるものと考えられる。この記録ツールが相対的に小さく目立つものでない点に留意する必要がある。
【0063】
4. ヒープ・トランザクションの記録
上述のように、ステップ610において、時間順に配列され、タイムスタンプを押されたヒープ・トランザクションのリストが作成される。上述の通り、カーネル108の好ましい実施形態は、Unixカーネルである。ステップ610において、データ記録機構502は、Cプログラミング言語の動的割り当てライブラリに対する呼び出しの各々に関するすべての情報を記録する。これは、malloc(), calloc(), realloc()および free()に対する呼び出しを含む。しかし、当業者に明らかなように、本発明は、所望の高水準言語の動的割り当てライブラリに対する呼び出しを記録するように構成することができる。
【0064】
図8に示すように、各ヒープ・トランザクションについて記録される情報は以下を含む。ヒープ・トランザクション情報は、割当て/解放状態802を含む。この状態は、メモリが割り当てられたか、あるいは解放されたかを示す。ヒープ・トランザクション情報は、また、割り当てられたブロックのサイズ804を含む。ヒープ・トランザクション情報には、また、割当て/解放アドレス806が含まれる。最後に、プロシージャ呼出しトレース・データ810が記録される。これは、各トレース行毎に以下の情報を含む。プロシージャ名812、あるプロシージャを別のものと区別するプロシージャの開始点からのオフセット814、およびプロシージャの原始ファイル816である。
【0065】
第1に困難な点は、i)プロシージャ・トランザクション・トレースを迅速にかつ正確に決定すること、および ii)トランザクション別情報を迅速にかつ正確に記録する形式を設計することであった。Xサーバの起動(すなわちクライアントは何も実行されてない)に関する情報を記録する最初の試みは、約17Mバイトを記録するのに約30分を要した。最初の試みは、全トレースに関して全面的なASCIIストリングを作成する一般的HP−UXトレース・ユーティリティを使用したが、それが大部分の時間と空間を占有した。
【0066】
本発明の好ましい実施形態では、プロセッサ142はヒューレット・パッカードのPA−RISCシステムであり、カーネル108はHP−UX Unixオペレーティング・システムである。HP−UXに関し正確なトレースを作成することは、PA−RISCの共有ライブラリのため、困難である。従って、好ましい実施形態においては、アドレスのアレイを戻す特製ユーティリティが使われる。プログラムのシンボル・テーブルにあるプロシージャ名とこれらのアドレスの関連づけは、後処理まで延期された(これはベンチマーク実行の間、効果的で邪魔になるようなものではないことが判明した)。最終的な記録形式は、冗長でないバイナリ形式であった。最終的な解は、2のオーダーでメモリ空間を効率的に使用し、上記最初の試みより3のオーダーで処理時間を効率化した。
【0067】
次に、ほとんどのプログラムが使用するmalloc()のバージョンを含んだlibc共有ライブラリを修正することが重要であった。ヒープ・トランザクション情報にタイムスタンプを押すことは、ヒープ・データをカーネル108に渡すことによって成し遂げられる。カーネルはデータにタイムスタンプを押し、それを上述の特別測定値インターフェース・バッファ中でページ・フォールト・データとマージする。これによって、1つのデータ記録ツールですべての情報を記録することができる。
【0068】
B. データ分析機構504
データ分析機構504は、ベンチマークの間データ記録機構502によって記録された大量のデータを効率的に処理する対話型情報処理ツールである。データ分析機構504は、また、ユーザが、処理されたデータを対話型で活用して、プロセスのヒープAWSに対する詳細な分析を行うことを可能にする。図9は、データ分析機構504によって実行される主プロセスの流れ図である。
【0069】
1. ヒープトランザクションのCデータ構造タイプへの関係づけ
上述の情報が各ヒープ・トランザクションについてデータ記録機構502によって記録されると、データ分析機構504は、ヒープ・メモリの各ブロックを特定のCデータ構造タイプに関係づける(ステップ904)。詳細は後述するが、この関係づけは、記録された情報を一組の規則と比較することによって達成される。ステップ904の関係づけを、サンプルXサーバにおけるサンプルのデータ構造タイプを用いて説明する。サンプルXサーバは、装置従属型ドライバを持つワークステーション・ユーザに対するサーバのサンプルである。サンプルXサーバは、米国マサチューセッツ州ケンブリッジ所在のX Consortium社から入手できる。
【0070】
図10は、ウィンドウ構造を作成するためのプロシージャ呼出しトレースを示す。サンプルXサーバの中の最も重要なデータ構造タイプの1つは、WindowRec構造(または単にウインドウ構造)である。構造のサイズは、多数画面のXサーバにおいて可変的であるが、単に2つの独特なプロシージャ呼出しだけがトレース・ウインドウ構造を作成するために使われる。図10に示される通り、その2つは、ルート・ウインドウを作成するためのプロシージャ呼出しトレース1002、およびクライアント・ウインドウを作成するためのプロシージャ呼出しトレース1004である。しばしば、各Cデータ構造タイプは、本例で示されるものより単純な1つの独特な割り当てトレースだけを持つことがある点に留意する必要がある。
【0071】
プロシージャ呼出しトレース1002は、図10において左側の列に示されている。ルート・ウィンドウを作成するため以下のプロシージャ呼出しが行われた。Malloc()プロシージャ呼び出し1006は、Xalloc()プロシージャ呼出し1008によって呼び出された。Xalloc()プロシージャ呼び出し1008は、AllocateWindow()プロシージャ呼出し1010によって呼び出された。AllocateWindow()プロシージャ呼び出し1010は、CreateRootWindow()プロシージャ呼出し1012によって呼び出された。CreateRootWindow()プロシージャ呼び出し1012は、Main()プロシージャ呼出し1014によって呼び出された。
【0072】
プロシージャ呼出しトレース1004は、図10において右側の列に示されている。クライアント・ウィンドウを作成するため以下のプロシージャ呼出しが行われた。Malloc()プロシージャ呼び出し1016は、Xalloc()プロシージャ呼出し1018によって呼び出された。Xalloc()プロシージャ呼び出し1018は、AllocateWindow()プロシージャ呼出し1020によって呼び出された。AllocateWindow()プロシージャ呼び出し1020は、CreateWindow()プロシージャ呼出し1022によって呼び出された。CreateWindow()プロシージャ呼び出し1022は、ProCreateWindow()プロシージャ呼出し1026によって呼び出された。ProCreateWindow()プロシージャ呼び出し1026は、Main()プロシージャ呼出し1024によって呼び出された。
【0073】
図10を参照して明らかなように、各トレースの中の最初の3つのプロシージャは同一である。すなわち、プロシージャ呼出し1006、1008および1010は、それぞれプロシージャ呼出し1016、1018および1020と同一である。これは異常ではない。実際、最初の2つと最後の2つプロシージャは、ほとんどのXサーバ・データ構造タイプについてしばしば同一である。従って、トレースの真ん中のプロシージャに一般的に関心が払われる。この例では、AllocateWindow()が両方のトレースにある。AllocateWindow()は、Xalloc()の呼び出しを1回だけ行うので、トレースにおけるAllocateWindow()をもつヒープ・トランザクションはウインドウ構造である。
【0074】
本発明において、Cデータ構造タイプを識別する好ましい方法は、1つまたは複数の規則を有する。規則は、データ構造タイプの割り当て/解放トランザクションの様相を示す仕様である。規則は、当業界でよく知られているもので、「正規表現(regular expresions)」に類似している。規則のセットには、名前(典型的には構造タイプ名)が与えられる。これらの規則が各ヒープ・トランザクションと比較される。それらは、どのトランザクションがどのCデータ構造タイプに対応するかを決定するためにデータ分析機構504が使う選択基準である。ある規則があるトランザクションと一致すると、対応するヒープ・ブロックが識別される。データ分析機構504は、規則メモリ506および規則エディタ508を通して、このアプローチを対話型形態で実行する。
【0075】
本発明の好ましい実施形態において使われる規則によって、各データ構造を1回以上識別することができる。データ構造タイプ名の階層を持つことが役に立つ場合がある。例えば、ピックスマップ(すなわちpixmap)が、サンプルXサーバにおいて(例えば補助記憶、タイル、点描など)様々な目的のために使われる。従って、ある1つのセットの規則がすべてのピックスマップを識別することができ、その他のセット規則がピックスマップの特定タイプを識別することができる。
【0076】
大量の構造タイプをもつプログラムについては、規則作成は時間浪費的である。規則作成を容易にするため、データ分析機構504は規則管理モジュール506を使用して、ユーザが規則のセットを対話型で管理することを可能にする。更に、規則エディタ508には、ユーザが対話型で規則を作成し編集できるダイアログが含まれる。規則作成および管理を容易にするため、規則管理モジュール506および規則エディタ508のその他の既知の機能が利用される。例えば、規則の各部分は、ワイルドカードとすることができる(ワイルドカード機能についての詳細は後述する)。これは、各規則の能力を増加させ、規則作成時間を減少させる。加えて、規則ファイルは、データ分析セッションの間規則を維持するように読み取られ書き込まれる。規則エディタ508を使用して数多くの方法でヒープ・トランザクションを検討することができる。例えば、ユーザは、検討するトランザクションの初期値にセットされている初期値を用いて規則エディタの使用を開始することができる。
【0077】
図10で示されるウインドウ構造のサンプルを使用して、各割り当てトランザクションについてのトレースには、AllocateWindow()プロシージャが含まれた。更に、AllocateWindow()プロシージャ1010,1020は、ウインドウを作成するためXalloc()1008,1018に対してただ1回の呼び出しを行った。従って、ウインドウ構造を識別する明白な規則は、そのトレースがAllocateWindowという語を含むトランザクションである。トランザクションの他のいかなる部分もこの規則の中で指定されず、すべての値は、ある規則のワイルドカードとされた部分のすべてと一致するものとみなされる点注意する必要がある。
【0078】
好ましい実施形態において、いくつかの識別されない構造が多くのページ・フォールトを引き起こす場合、メニュ選択機能が、規則エディタ・ダイアログを画面表示し、そこに構造割り当てトランザクションの値にセットされた初期値を表示する。初期規則値は、(例えばもっと一般化するため)編集し、(実際のCデータ構造タイプ名のような)名前を与えることができる。規則が保存されるとき、すべての一致するメモリ・ブロックを識別するため、その規則はすべてのトランザクションと比較される。ユーザは、そのタイプのあらゆるデータ構造について情報を調べることができる。
【0079】
2. 情報処理
ベンチマークが完了し、上述の情報が記録され互いに関連づけられた後、情報処理ステップが実行され、そこで、対象とされたプロセスのヒープAWSのおよその決定が行われる。以下に、記録され関連づけされた情報を処理するための一般的アルゴリズムを記述する。最初に、ステップ906において、トランザクション・データは、データ分析に適する形式になるように処理される。ステップ906のトランザクション処理は、図11を参照してさらに詳細に後述する。次に、一般にページ・フォールト処理と呼ばれる一連の機能がステップ908で実行される。ステップ908において、ページ・フォールトデータが読み込まれヒープ・トランザクション・データと関連づけらる。対応するデータ構造とページ・フォールトの間の結合が設定される。この詳細は図12を参照して後述する。
【0080】
a. トランザクション処理(ステップ906)
ヒープ・トランザクション・データに対して実行される処理を図11を参照して説明する。最初に、ステップ1104において、対象とされるプロセスのシンボル・テーブルが、(ハッシュ・テーブルのような)便宜的データ構造に読み込まれる。次に、ヒープ・トランザクション・データが読み取られ処理される。
【0081】
次に、ステップ1106において、各ヒープ・トランザクションは、割り当てまたは解放トランザクションとして識別される。各割り当てトランザクションの割り当てアドレスはハッシュされる。これは、割り当てそして解放するトランザクションと突き合わせるステップ908に関連するソフトウェアを単純化する。トランザクションの一致するセットが見つけられると、それらは交差リンクされる。
【0082】
ステップ1108において、トレースの各行は、プロシージャ名、ファイル名およびプロシージャの範囲内のオフセットに変換される。トレースの各行が単にアドレスとして記録されているため、プロシージャ名は必要である。オフセットは、プロシージャの開始点からのバイト数である。トレースの各行は複数回観察されることができるので、各行はハッシュ・テーブルに入れられる。このハッシュ・テーブルは、トレース行それぞれ毎に32ビットのキーの値を生成する。これは、データ分析機構504が記憶するデータをデータ分析機構が更に処理を行う(ステップ1206)時間を減少させる。ステップ1108において、各トレースは、トレース行キーのアレイとして記憶される。トレース行と同様に、各トレースもまた、ハッシュ・テーブルに入れられ、独特のトレースのため独特のキーの値が生成される。各トランザクションは、そのトレースに関しユニークなキーを記憶する。
【0083】
b. ページ・フォールト処理(ステップ908)
図9を参照して述べたように、トランザクション・データが処理され、データ分析に適した形式にされた後、ページ・フォールトがステップ908で発生するかもしれない。図12は、ステップ909でページ・フォールト処理を行う際に実行されるステップの流れ図である。図12を参照して、本発明の好ましいページ・フォールト処理を説明する。
【0084】
ステップ1204において、各解放トランザクションは、その対応する割り当てトランザクションと突き合わせられる。これは、ヒープ・ブロックが割り当てられた時間間隔を識別する。割り当てトランザクションと合致する解放トランザクションが記録されていなければ、対応するメモリ・ブロックは、潜在的なメモリ漏洩である。
【0085】
次に、ページ・フォールトを起こしたCデータ構造と、ページ・フォールトの各々が関連づけられる。最初に、ステップ1206において、データ構造タイプが、規則を使用して、関連づけられたヒープ・メモリ・ブロックと突き合わせられる。次に、ステップ1208において、ページ・フォールトのアドレスが、時間を越えてすべての対応するメモリ・ブロックと突き合わせられる。1つ以上の一致があれば、ステップ1210において、タイムスタンプの比較を行って、どのデータ構造がページ・フォールトを起こしたかを決定する。このように、ヒープ情報と各フォールトを起こしたアドレスとの比較を、特定のデータ構造と一致するまで行う。ページ・フォールト・プロセスは、ブロック1212で終了する。
【0086】
例えば、特定のフォールトがベンチマーク実行の13分で発生すると仮定する。フォールトを起こしたアドレス(Ox4OOab340)は、ヒープ・トランザクションの3つの異なるペアのアドレス範囲内にある。タイムスタンプを比較した後、どのペアがページ・フォールトに対応するかが明らかになる。この新たな相互参照情報のすべてが、AWSに関する詳細を得るために分析されることができる。
【0087】
c. ユーザの分析
ステップ908でページ・フォールト処理が完了すると、データは多くの異なる形態で分析されることができる。データは、度数分布を用いて分析するため(例えばページ・フォールト数や構造のサイズで)ソートすることができる。各度数分布図の行が選択され、付加情報が要求される。局地性をを示すため、選択されたデータ構造のサイズと配置を視覚的に示す「メモリマップ」グラフを表示することもできる。
【0088】
d. 規則の突き合わせ
規則は、作成されるかあるいは規則ファイルから読み取られるときは必ず、トランザクションと突き合わせられる。トランザクション・データベースの構造は、規則突き合わせを容易に行えるように構成される。
【0089】
第1に、規則の各行は、トランザクション・データベースの各トレース行と比較される。一致が見つかれば、ユニークなキーが記録される(注:ワイルドカードのため、ある規則行は、複数のトレース行と一致する場合がある)。どの規則行も一致するトランザクションを見つけれない場合、規則全体がこのトランザクションと合致しないので、この規則に関する処理は停止する。
【0090】
規則行が一致したあと、トレース規則が、トランザクション・データベースのユニークなトレースの各々と比較される。一致するトレース毎に、ユニークなキーが記録される。次に、トランザクション(複数)自体が、全体の規則と比較される(トレースの比較は、単純な32ビットキーの整数比較である)。規則と一致トランザクションの間の交差結合が確立され、それによってデータ分析の対話型データ分析の処理能力が向上する。
【0091】
上述の通り、本発明の好ましい実施形態において、プロセスのデータ構造が記録され分析される。しかし、当業者に明らかなように、本発明のAWS決定機構500は、プロセスのコードや大局変数のようなプロセスのその他の特性を記録しそして分析するように構成することも可能である。
【0092】
本発明の好ましい実施形態において、データ分析機構504は、ベンチマーク実行が完了し、データ記録機構が必要な情報を記憶した後その機能を実行する。しかし、当業者に明らかなように、データ分析機構504は、別のプロセッサに配置され、データ記録機構502とリアルタイムで動作することもできよう。例えば、コンピュータ・システム100がネットワークに接続するような実施形態において、データ記録機構502によって記録されるデータは、ネットワークを介してコンピュータ・システム100と通信する記憶装置に記憶されることもできる。また、コンピュータ・システム100がネットワークに接続しているとき、データ分析機構504が別のコンピュータ・システムに配置され、ベンチマーク実行の完了後データ分析機能を実行することもできる。
【0093】
上記の説明において、C言語およびHP−UX Unix環境を参照して本発明を記述した。しかし、当業者に明らかなように、本発明は、Fortranのようないかなる高水準プログラミング言語に関しても動作することができる。それに加えて、本発明は、Windows/NT、VMS、Open VMS、T/20などいかなるオペレーティング・システムにおいても動作することができる。データ記録機構502およびデータ分析機構504を含むAWS決定機構500は、(実行時に)主メモリ136に駐在しプロセッサ142のようなコンピュータ・システム100のプロセッサによって実行されるコンピュータ・プログラムおよび/またはライブラリを好ましくは意味する。データ記録機構502によって記録されるデータは、補助記憶装置138に記憶することもできる。また、AWS決定機構500に関連するコンピュータ・プログラム/ライブラリは、フロッピーディスクまたは他の取り外し可能記憶媒体に記憶される場合もある。
【0094】
本発明は、ハードウエア、ソフトウエアまたはそれらを組み合わせた形態のいずれでも実施することができる点理解されるべきであろう。そのような実施形態では、種々の構成要素とステップが、本発明の機能を実行するためハードウェアやソフトウェアで実施される。現存または将来開発されるコンピュータ・ソフトウェア言語およびハードウェア・コンポーネントのいずれも本発明の実施形態において使用することができる。
【0095】
VI. 事例研究(AWS決定機構を使用したHP Xサーバのメモリ調整)
HP Xサーバのメモリ調整を行うAWS決定機構500の実施例を以下説明する。事例研究で使用するサンプルXサーバは、上記引用のX ConsortiumのXサーバ(リリース5)である。X Consortiumのスタッフによって、本発明を使用することなく、若干の事前メモリ調整が行われた。その作業にもかかわらず、なお改善の余地があった。
【0096】
A. ウインドウ局地性
ウィンドウ関連構造に関し3つのタイプの改善が行われた。第1に、ウィンドウ・ツリーの局地性が、汎用目的ライブラリ呼び出しのChunkAllocの使用によって改善された。第2に、ウィンドウ・プライベート構造のサイズが減らされた。最後に、Window0ptRecデータ構造の局地性が再びChunkAllocを使用して改善された。
【0097】
前述のように、各ウィンドウ構造は個別に割り当てられる。ウィンドウ(複数)は、その階層(すなわちツリー)関係に従って互いに結合される。ウィンドウ・ツリーは、比較的頻繁に変化する。直感的に見れば、構造の相互の局地性は小さく、そのためXサーバのVWSを増加させ、不必要なページ・フォールトを発生させる。AWS決定機構500は、この直観を確認した。データ記録機構ベンチマークは、ウインドウ構造が(AWSにおいて)頻繁にアクセスされ、(VWSを増加させる)貧弱な局地性を持つことを明らかにした。ChunkAllocと呼ばれるライブラリを使用してウインドウをグループで割り当てるようにXサーバが変更された。
【0098】
B. サイズの減少
新たに改善された局地性に加えて、AWS決定機構500は、ウィンドウ構造がかなり大きいことを示した。これは、各ページに適合するウィンドウが相対的に少ないことを意味した。従って、各ウィンドウ・ツリーの探索に、多数のページのアクセスを要した。HP Xサーバは、最近その処理能力の大幅な改善が行われた。DDXコードの完全に新しい世代が開発された。しかし、新しいDDXコードは、前世代からのプライベート構造をなお使用していた。それらの古いプライベート構造からはただ2、3のフィールドだけが使われ、各ウインドウについて相当のメモリが無駄に使われていた。プライベート構造の再構成の後、さらに新たにされたDDXコードは、ウィンドウ当たり200未満バイトを使用した。ChunkAllocと組み合わせたとき、ウィンドウは局地的でかつ小さくなり、従って、ページ・フォールトは少なくなった。
【0099】
C. WindowOpt局地性
コアX11プロトコルは、各ウィンドウに関する数多くの属性を指定する。R4を使用した検討の間、ほとんどのウィンドウが属性のいくつかを使用していないことが指摘された。このため、Consortiumスタッフはウィンドウ構造を分割した。彼らは、あるウインドウがあまり使用されない属性を使用する場合割り当てられる新しい構造WindowOptを作成した。AWS決定機構500は、(少なくとも特定のベンチマークのため)ウインドウの相当の割合がWindowOpt構造を使用することを容認した。AWS決定機構500は、また、主ウィンドウ構造の場合と同様に、局地性の問題を明らかにした。従って、ChunkAllocライブラリを使用して局地性を改善した。
【0100】
D. 資源の局地性
X11のクライアント/サーバ特性を所与とすれば、クライアントは、サーバ内部のデータ構造を直接参照しない。その代わり、クライアントは、資源識別子を使用して、それらの構造(すなわち資源)にはたらきかける。サーバは、資源識別子といくつかの内部データ構造の間の対応関係を含む資源データベースを維持する。データベースの中の各資源毎に、小さい16バイトのデータ構造が割り当てられる。AWS決定機構500は、これらの小さい構造が頻繁に処理され、多くのページ・フォールトを発生させたことを明らかにした。これらの構造のメモリ・マップを参照することが明確な局地性問題を示した。再び、ChunkAllocを使用した。局地性が増加し、ページ・フォールトが減少した。
【0101】
E. フォント
本発明の使用により、ビットマップ・フォントを開くコードが非常に浪費的であることが明らかにされた。1つのビットマップ・フォント(ファイル)が開かれる毎に、1つの大きい構造(約80KB)と多くの小さい構造が割り当てられ、使われ、次に解放された。各ビットマップ・フォントが開かれる時間の間に他の動作が発生したため、これらの一時的構造はヒープを断片化し、他のAWS構造の局地性を減少させた。ビットマップ・フォント・コードが実行しようとしたことを調査の結果、データ構造は偶然大きかったことが明らかになった。それは、80KBでなく2−3KBあれば十分であった。小さいユーティリティ・ライブラリを作成して、比較的大きく比較的常駐するメモリの一時的構造を小さく割り当てるようにした。これによって、断片化が更に減少した。非一時的フォント構造についてこれと同じライブラリを使うことによってさらに局地性が改善された。
【0102】
VII. 結論
本発明が好ましい実施形態を参照して例示され説明されたが、本発明の精神と範囲を逸脱することなく、その詳細および形式を種々変更することが可能である点は当業者によって理解されるであろう。
【0103】
本発明には、例として次のような実施様態が含まれる。
(1)仮想メモリ・コンピュータ・システムにおいてプロセスの実際ワーキング・セットを決定するためのシステムであって、一貫性のある複数のベンチマークの実行を通して、動的に割り当てられたトランザクションおよび仮想メモリのページ・フォールトに関する情報を記録するデータ記録機構と、上記データ記録機構に接続し、動的に割り当てられたメモリのブロックの各々を特定の高水準言語データ構造に関連づけるデータ分析機構と、を備えるシステム。
(2)上記データ記録機構が、時間順に配列され、タイプスタンプを付されたページ・フォールトのリストおよび時間順に配列され、タイプスタンプを付されたページ・トランザクションのリストをコンパイルする手段を有し、上記データ分析機構が上記ページ・フォールトのリストとページ・トランザクションのリストを関係づける手段を有し、上記ページ・トランザクションを1組の規則と比較することによってページ・トランザクションがデータ構造タイプと関連づけられ、上記規則の各々が、上記データ構造タイプの1つについて、割り当てそして解放する一連のトランザクションを定義し、更に、上記データ分析機構が、割り当てトランザクションおよび解放トランザクションを識別するためのトランザクション処理手段と、上記ページ・フォールトのリストとページ・トランザクションのリストを関係づけ、ページ・フォールトと関連高水準データ構造の間の結合を形成するためのフォールト処理手段とを有する、上記(1)に記載のシステム。
(3)上記フォールト処理手段が、上記高水準データ構造に、上記フォールトの各々を発生させたコード・プロシージャを関係づける手段を含む、上記(1)に記載のシステム。
(4)仮想メモリ・コンピュータ・システムが、オペレーティング・システム・カーネルおよび物理メモリを含み、上記オペレーティング・システム・カーネルがプロセスの仮想ページの1ページだけを上記物理メモリに保持し、それによって、上記1ページの仮想ページ以外の仮想ページがアクセスされる毎にフォールトを発生させる、上記(1)に記載のシステム。
(5)上記データ分析機構が、上記1組の規則を対話型で処理する規則管理モジュールと、規則を対話型で作成し編集する規則エディタを有する、上記(1)に記載のシステム。
【0104】
(6)メモリ調整機能を強化するため、仮想メモリ・システムにおいて動的に割り当てられたデータ構造を持つプロセスの実際ワーキング・セットを決定する方法であって、プロセスに関し高率のページ・フォールトを誘発するステップと、当該プロセスについて反復可能なベンチマークを実行するステップと、時間順に配列され、タイプスタンプを付されたページ・フォールトのリストおよび時間順に配列され、タイプスタンプを付されたページ・トランザクションのリストのコンパイルを含むプロセス情報を記録するステップと、ヒープ・メモリのブロックを上記データ構造に関係づけるため上記プロセス情報データを分析するステップと、を含み、上記プロセス情報データを分析するステップが、各々が上記データ構造タイプの1つについて割り当てそして解放する一連のトランザクションを定義しする1組の規則と上記ページ・トランザクションを比較することによってページ・トランザクションがデータ構造タイプと関連づけられように、上記プロセス情報を関係づけるステップと、プロセスの実際ワーキング・セットを決定するため上記プロセスおよび上記関係づけられた情報を処理するステップとを含み、更に、上記プロセスおよび上記関係づけられた情報を処理する上記ステップには、割り当てトランザクションおよび解放トランザクションを識別することを含むトランザクション処理と、上記ページ・フォールトのリストとページ・トランザクションのリストを関連づけ、ヒープ・メモリの上記ブロックとデータ構造の間の結合を形成することを含むフォールト処理とが含まれる、実際ワーキング・セットを決定する方法。
(7)仮想メモリ・システムが、複数の仮想メモリ・ページを持ち、上記高率フォールトを誘発するステップが、上記仮想ページの各々に対してただ1つのデータ構造を持つことによって実行される、上記(6)の方法。
(8)仮想メモリ・システムが、オペレーティング・システム・カーネルと物理メモリを含み、上記高率フォールトを誘発するステップが、上記オペレーティング・システム・カーネルによってプロセスの仮想ページ1ページだけが上記物理メモリに保持されることによって実行され、それにより、上記1ページの仮想ページ以外の仮想ページがアクセスされる毎にフォールトが発生する、上記(6)に記載の方法。
(9)上記ページ・トランザクションのリストが、メモリのブロックが割り当てられているか、また上記ブロックが解放されているかを示すメモリ状態データ、ブロック・サイズ・データ、ブロック・アドレス・データ、タイムスタンプ、およびプロシージャ名、プロシージャ・オフセットならびにプロシージャ原始ファイル名を含むプロシージャ呼出しトレース・データを含む、上記(6)に記載の方法。
【0105】
(10)上記フォールトを処理するステップが、データ構造に、上記フォールトの各々を発生させたコード・プロシージャを関係づけるステップを含む、上記(6)に記載の方法。
(11)上記ページ・フォールトのリストが、ページ・フォールト・アドレスおよびページ・フォールト・タイムスタンプを含む、上記(6)に記載の方法。
(12)上記プロセス情報が、プロセスの大域変数に関連するデータを含み、上記フォールト処理ステップが、上記大域変数に対するアクセスを上記ページ・フォールに関係づけるステップを含む、上記(6)に記載の方法。
(13)上記プロセス情報が、プロセスのプログラムコード・プロシージャに関連するデータを含み、上記フォールト処理ステップが、上記プロシージャに対する呼び出しを上記ページ・フォールに関係づけるステップを含む、上記(6)に記載の方法。
(14)上記プロセス情報が、プロセスの静的に割り当てられたオブジェクトに関連するデータを含み、上記フォールト処理ステップが、上記オブジェクトに対するアクセスを上記ページ・フォールに関係づけるステップを含む、上記(6)に記載の方法。
(15)上記トランザクションを処理するステップが、ハッシュ・テーブルにプロセスのシンボル・テーブルを読み込むことを含む、上記(6)に記載の方法。
(16)上記フォールト処理ステップで結合されたデータを画面表示するステップを含む、上記(6)に記載の方法。
(17)上記フォールト処理ステップが、上記割り当てトランザクションの各々を上記解放トランザクションの1つと突き合わせるステップと、上記ページ・フォールトの各々をデータ構造の1つに関係づけるステップとを含む、上記(6)に記載の方法。
(18)上記フォールト処理ステップが、上記解放トランザクションの1つが上記割り当てトランザクションの1つと合致しない場合、潜在的メモリ漏洩を示すステップを含む。上記(6)に記載の方法。
【0106】
【発明の効果】
本発明のAWS決定機構によって、プロセスに動的に割り当てられるメモリ・ワーキング・セットについて、実際に頻繁に使用される部分を特定することが可能となり、その分析結果を活用してプロセスのメモリ調整を行うことによって、マルチタスク仮想メモリ環境におけるシステム処理能力の向上を図ることができる。
【図面の簡単な説明】
【図1】本発明が実施される好ましいコンピュータ環境を示すブロック図である。
【図2】物理メモリと仮想メモリの間の関係を示すブロック図である。
【図3】システムRAMおよび補助メモリに仮想メモリが記憶される形態をとる仮想メモリ・システムの例を示す図である。
【図4】プロセスの仮想ワーキング・セット(VWS)および実際ワーキング・セット(AWS)を示すブロック図である。
【図5】本発明の実際ワーキング・セット決定機構の処理ステップを示すブロック図である。
【図6】本発明ののデータ記録機構によって実行されるデータ記録プロセスの流れ図である。
【図7】典型的なベンチマーク実行の間記録されるページ・フォールト・データのテーブルを示す図である。
【図8】典型的なベンチマーク実行の間記録されるヒープ・トランザクション・データのテーブルを示す図である。
【図9】本発明のデータ分析機構によって実行されるデータ分析プロセスの概要を示す流れ図である。
【図10】ウィンドウ構造を作成するためのプロシージャ呼出しトレースのテーブルを示す図である。
【図11】本発明のデータ分析機構によって実行されるトランザクション処理の流れ図である。
【図12】本発明のデータ分析機構によって実行されるページ・フォールト処理の流れ図である。
【符号の説明】
100 コンピュータ・システム
106 ユーザ・アプリケーション・レベル
108 カーネル・レベル
110 ハードウエア・レベル
136 主メモリ
138 補助メモリ、または補助記憶装置
202 物理メモリ
204 仮想メモリ
206 スワップ空間
210、402 ページ
404 仮想メモリ・ワーキング・セット(VWS)
406 実際ワーキング・セット(AWS)
Claims (4)
- 仮想メモリ・コンピュータ・システムにおいてプロセスの実際ワーキング・セットを決定するシステムであって、
一貫性のある複数のベンチマークの実行を通して、動的に割り当てられたトランザクションおよび仮想メモリのページ・フォールトに関する情報を記録するように構成されており、時間順に配列されタイプスタンプを付されたページ・フォールトのリストおよび時間順に配列されタイプスタンプを付されたページ・トランザクションのリストをコンパイルする手段を含む、データ記録機構と、
前記データ記録機構に接続され、動的に割り当てられたメモリのブロックの各々を特定の高水準言語データ構造に関連付けるように構成されたデータ分析機構であって、前記ページ・フォールトのリストとページ・トランザクションのリストを関係付ける手段を含み、前記ページ・トランザクションと1組の規則とを比較することによって該ページ・トランザクションがデータ構造タイプと関連付けられ、前記規則の各々は前記データ構造タイプの1つについて一連の割り当てトランザクションおよび解放トランザクションを定義する、データ分析機構と、
割り当てトランザクションおよび解放トランザクションを識別するトランザクション処理手段と、
前記ページ・フォールトのリストとページ・トランザクションのリストを関係付け、ページ・フォールトと関連高水準データ構造の間の結合を形成するフォールト処理手段と、
を備える実際ワーキングセット決定システム。 - 仮想メモリ・コンピュータ・システムにおいてプロセスの実際ワーキング・セットを決定するシステムであって、
一貫性のある複数のベンチマークの実行を通して、動的に割り当てられたトランザクションおよび仮想メモリのページ・フォールトに関する情報を記録するように構成されたデータ記録機構と、
前記データ記録機構に接続され、動的に割り当てられたメモリのブロックの各々を特定の高水準言語データ構造に関連付けるように構成されており、前記高水準データ構造に、前記フォールトの各々を発生させたコード・プロシージャを関係付ける手段を含む、データ分析機構と、
を備える実際ワーキングセット決定システム。 - 仮想メモリ・コンピュータ・システムにおいてプロセスの実際ワーキング・セットを決定するシステムであって、
一貫性のある複数のベンチマークの実行を通して、動的に割り当てられたトランザクションおよび仮想メモリのページ・フォールトに関する情報を記録するように構成されたデータ記録機構と、
前記データ記録機構に接続され、動的に割り当てられたメモリのブロックの各々を特定の高水準言語データ構造に関連付けるように構成されたデータ分析機構と、を備え、
前記仮想メモリ・コンピュータ・システムはオペレーティング・システム・カーネルと物理メモリを含み、該オペレーティング・システム・カーネルはプロセスの1つの仮想ページだけを前記物理メモリに保持し、これによって、該1つの仮想ページ以外の仮想ページにアクセスが試みられる度にフォールトを発生させる、実際ワーキングセット決定システム。 - 仮想メモリ・コンピュータ・システムにおいてプロセスの実際ワーキング・セットを決定するシステムであって、
一貫性のある複数のベンチマークの実行を通して、動的に割り当てられたトランザクションおよび仮想メモリのページ・フォールトに関する情報を記録するように構成されたデータ記録機構と、
前記データ記録機構に接続され、動的に割り当てられたメモリのブロックの各々を特定の高水準言語データ構造に関連付けるように構成されており、1組の規則を対話型で管理する規則管理モジュールと規則を対話型で作成し編集する規則エディタとを含む、データ分析機構と、
を備える実際ワーキングセット決定システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US380,166 | 1995-01-30 | ||
US08/380,166 US5721917A (en) | 1995-01-30 | 1995-01-30 | System and method for determining a process's actual working set and relating same to high level data structures |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08241250A JPH08241250A (ja) | 1996-09-17 |
JP3772996B2 true JP3772996B2 (ja) | 2006-05-10 |
Family
ID=23500145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP00650896A Expired - Fee Related JP3772996B2 (ja) | 1995-01-30 | 1996-01-18 | 実際ワーキング・セット決定システム |
Country Status (4)
Country | Link |
---|---|
US (1) | US5721917A (ja) |
JP (1) | JP3772996B2 (ja) |
DE (1) | DE19600428C2 (ja) |
GB (1) | GB2297402B (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6658648B1 (en) * | 1997-09-16 | 2003-12-02 | Microsoft Corporation | Method and system for controlling the improving of a program layout |
US6381740B1 (en) * | 1997-09-16 | 2002-04-30 | Microsoft Corporation | Method and system for incrementally improving a program layout |
US6158024A (en) * | 1998-03-31 | 2000-12-05 | International Business Machines Corporation | Method and apparatus for structured memory analysis of data processing systems and applications |
FR2774788B1 (fr) * | 1998-02-12 | 2000-03-24 | Bull Sa | Procede de controle d'acces memoire sur une machine avec memoire a acces non uniforme et machine pour mettre en oeuvre ce procede |
US6496912B1 (en) * | 1999-03-25 | 2002-12-17 | Microsoft Corporation | System, method, and software for memory management with intelligent trimming of pages of working sets |
US6658653B1 (en) * | 2000-06-08 | 2003-12-02 | International Business Machines Corporation | Debugging methods for heap misuse |
US20040015864A1 (en) * | 2001-06-05 | 2004-01-22 | Boucher Michael L. | Method and system for testing memory operations of computer program |
GB2423781B (en) | 2003-03-19 | 2007-03-28 | Varco Int | Apparatus and method for moving drilled cuttings |
GB0505289D0 (en) * | 2005-03-15 | 2005-04-20 | Symbian Software Ltd | Computing device with automated page based rem shadowing and method of operation |
GB0515395D0 (en) * | 2005-07-27 | 2005-08-31 | Ibm | A method or apparatus for determining the memory usage of a program |
GB0523115D0 (en) * | 2005-11-12 | 2005-12-21 | Ibm | A resource optimisation component |
KR100772863B1 (ko) * | 2006-01-13 | 2007-11-02 | 삼성전자주식회사 | 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치 |
US8037039B2 (en) * | 2007-04-20 | 2011-10-11 | Microsoft Corporation | Runtime class database operation |
US8473691B2 (en) * | 2009-02-27 | 2013-06-25 | Ryosuke Ohgishi | Memory management device, image forming apparatus, and image forming method |
US8103849B2 (en) | 2009-04-24 | 2012-01-24 | International Business Machines Corporation | Reducing memory usage of kernel memory management structures |
JP6099458B2 (ja) | 2013-03-29 | 2017-03-22 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 特定の仮想マシンに関連するトレース・データを得るためのコンピュータ実装方法、プログラム、トレーサ・ノード |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4758944A (en) * | 1984-08-24 | 1988-07-19 | Texas Instruments Incorporated | Method for managing virtual memory to separate active and stable memory blocks |
US4761737A (en) * | 1986-01-16 | 1988-08-02 | International Business Machines Corporation | Method to automatically increase the segment size of unix files in a page segmented virtual memory data processing system |
US4730249A (en) * | 1986-01-16 | 1988-03-08 | International Business Machines Corporation | Method to operate on large segments of data in a virtual memory data processing system |
US4989134A (en) * | 1987-03-20 | 1991-01-29 | Hewlett-Packard Company | Method and apparatus for enhancing data storage efficiency |
US5055999A (en) * | 1987-12-22 | 1991-10-08 | Kendall Square Research Corporation | Multiprocessor digital data processing system |
CA1329432C (en) * | 1988-11-02 | 1994-05-10 | William Davy | Method of memory and cpu time allocation for a multi-user computer system |
US5101485B1 (en) * | 1989-06-29 | 1996-12-10 | Frank L Perazzoli Jr | Virtual memory page table paging apparatus and method |
US5086386A (en) * | 1990-03-23 | 1992-02-04 | Sun Microsystems, Inc. | Method and apparatus for benchmarking the working set of window-based computer systems |
US5247687A (en) * | 1990-08-31 | 1993-09-21 | International Business Machines Corp. | Method and apparatus for determining and using program paging characteristics to optimize system productive cpu time |
US5237673A (en) * | 1991-03-20 | 1993-08-17 | Digital Equipment Corporation | Memory management method for coupled memory multiprocessor systems |
US5263032A (en) * | 1991-06-27 | 1993-11-16 | Digital Equipment Corporation | Computer system operation with corrected read data function |
-
1995
- 1995-01-30 US US08/380,166 patent/US5721917A/en not_active Expired - Lifetime
-
1996
- 1996-01-03 GB GB9600053A patent/GB2297402B/en not_active Expired - Fee Related
- 1996-01-08 DE DE19600428A patent/DE19600428C2/de not_active Expired - Fee Related
- 1996-01-18 JP JP00650896A patent/JP3772996B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB2297402B (en) | 1999-09-22 |
DE19600428C2 (de) | 2000-08-03 |
JPH08241250A (ja) | 1996-09-17 |
GB9600053D0 (en) | 1996-03-06 |
GB2297402A (en) | 1996-07-31 |
US5721917A (en) | 1998-02-24 |
DE19600428A1 (de) | 1996-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3772996B2 (ja) | 実際ワーキング・セット決定システム | |
US9858183B2 (en) | Determining a benefit of reducing memory footprint of a Java application | |
US6795836B2 (en) | Accurately determining an object's lifetime | |
US6694507B2 (en) | Method and apparatus for analyzing performance of object oriented programming code | |
US7325234B2 (en) | System and method for monitoring computer application and resource utilization | |
US8336033B2 (en) | Method and system for generating a hierarchical tree representing stack traces | |
EP1172729B1 (en) | Apparatus and method for cataloguing symbolic data for use in performance analysis of computer programs | |
US7178145B2 (en) | Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system | |
US8566810B2 (en) | Using database knowledge to optimize a computer program | |
US7500077B2 (en) | Use of region-oriented memory profiling to detect heap fragmentation and sparse memory utilization | |
US7793304B2 (en) | System and method for monitoring memory usage | |
US20020120428A1 (en) | Topological, on-the-fly classification of objects into a global set and local sets | |
EP1260901A2 (en) | Method and apparatus for managing hashed objects | |
US20080276252A1 (en) | Kernel event visualization | |
US8478738B2 (en) | Object deallocation system and method | |
US6609249B2 (en) | Determining maximum number of live registers by recording relevant events of the execution of a computer program | |
US8272001B2 (en) | Management of resources based on association properties of association objects | |
US20090228537A1 (en) | Object Allocation System and Method | |
CN111400135A (zh) | 一种业务数据的提取方法及装置 | |
Harvey-Lees-Green et al. | A Dynamic Memory Management Unit for Real Time Systems | |
JPH0962493A (ja) | ソフトウェアインストールシステム | |
EP1221085A2 (en) | Method and system for dynamic injection of execution logic into a windowed operating system | |
US20090157742A1 (en) | On Demand Capture of Database Application Environmental Resources | |
Kistler et al. | Automated record layout for dynamic data structures | |
CN118069529A (zh) | 性能数据处理方法、装置、设备、介质及产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051220 |
|
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: 20060207 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060208 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090224 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100224 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100224 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110224 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120224 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130224 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130224 Year of fee payment: 7 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130224 Year of fee payment: 7 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130224 Year of fee payment: 7 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130224 Year of fee payment: 7 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140224 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |