JP5063069B2 - マルチノードコンピュータのメモリ割当て方法、装置、およびプログラム - Google Patents

マルチノードコンピュータのメモリ割当て方法、装置、およびプログラム Download PDF

Info

Publication number
JP5063069B2
JP5063069B2 JP2006262791A JP2006262791A JP5063069B2 JP 5063069 B2 JP5063069 B2 JP 5063069B2 JP 2006262791 A JP2006262791 A JP 2006262791A JP 2006262791 A JP2006262791 A JP 2006262791A JP 5063069 B2 JP5063069 B2 JP 5063069B2
Authority
JP
Japan
Prior art keywords
memory
node
page
affinity
page frame
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
JP2006262791A
Other languages
English (en)
Other versions
JP2007095072A (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 JP2007095072A publication Critical patent/JP2007095072A/ja
Application granted granted Critical
Publication of JP5063069B2 publication Critical patent/JP5063069B2/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
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • 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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明の分野はデータ処理であり、さらに詳細には、マルチノードコンピュータのメモリ割当てのための方法、装置、および製品である。
1948年のEDVACコンピュータシステムの開発が、コンピュータ時代の始まりとしてよく引用される。その時以来、コンピュータシステムは、非常に複雑な装置に発展してきた。今日のコンピュータは、EDVACのような初期のシステムに比較すると、はるかに高性能である。通常、コンピュータシステムは、ハードウェアおよびソフトウェア部品の組合せ、アプリケーションプログラム、オペレーティングシステム、プロセッサ、バス、メモリ、入出力装置などを含む。半導体プロセスおよびコンピュータアーキテクチャの進歩が、コンピュータの高性能化をますます推し進めるにつれて、ハードウェアの、より高い性能を駆使するために、より洗練されたコンピュータソフトウェアが発展し、その結果、ほんの2、3年前に比べても、今日のコンピュータシステムは、はるかに強力なものとなっている。
コンピュータシステムが、より高性能になるにつれて、コンピュータ設計が、モジュール式になることが多くなってきた。多くの場合、コンピュータシステムは、1つ以上のコンピュータプロセッサ、多数のメモリ、またはプロセッサとメモリの両方を含む複数のモジュラノードで実行される。複合コンピュータシステムは、多くのノード、およびノード間でデータを送受信する高性能のバス構造を含むことができる。
ノード上のプロセッサがノード上のメモリへアクセスするためのアクセス時間は、どのノードがプロセッサを含むか、およびどのノードがアクセスされるメモリを含むかによって変化する。プロセッサと同じノード上のメモリへのプロセッサのメモリアクセスは、異なったノード上のメモリへのプロセッサのメモリアクセスより、短時間で完了する。遠隔ノード上のメモリへのアクセスは、ノード間のより多くのコンピュータハードウェア、より多くのバス、バスドライバ、メモリコントローラなどを横断しなければならないため、同一ノード上のメモリへのアクセスの方が、より高速である。
プロセッサおよびメモリを含むノード間のコンピュータハードウェアセパレーションのレベルは、時に「メモリ親和性」、または単に「親和性」と呼ばれている。現在のコンピュータシステムでは、ノード上のプロセッサは、そのノード上のメモリに、他のノード上のメモリにアクセスするよりも速くアクセスできるため、ノードは、それ自体と最大のメモリ親和性を有すると考えられている。ハードウェアセパレーションのレベルが高まるにつれて、プロセッサを含むノードと、メモリが搭載されている単一のノードまたは複数のノードとの間のメモリ親和性は低下する。
下表の情報により特徴付けられたコンピュータシステムの例を考える。
Figure 0005063069
表は、3つのノード、ノード0、1、および2を有するシステムについて記述しており、プロセッサ容量の比率は、システム全体に対する各ノードのプロセッサ容量を表し、記憶容量の比率は、システム全体に対する各ノード上に搭載されたランダムアクセスメモリの比率を表す。オペレーティングシステムは、メモリを、プロセッサと同じノード上のメモリのみからプロセッサ上のプロセスに割り当てて、親和性を強化できる。この例では、システム上のメモリの半分を有するノード0は、ノード0のプロセッサ上で実行中のプロセスの要求を満たす十分なメモリを有することが想定されるため、ノード0は親和性の強化により便益を得る。また、ノード0は、プロセッサと同じノード上のメモリへのアクセスが速いため、メモリ親和性の強化により便益を得る。
ノード1に対しては事情は異なる。システム上のメモリの5%のみを有するノード1は、ノード1のプロセッサ上で実行中のプロセスの要求を満たす十分なメモリを有しそうにない。親和性を強化する際に、実行処理のプロセスまたはスレッドが、ノード1上のプロセッサを制御するときはいつでも、プロセスまたはスレッドは、メモリをクリアするために、ディスクドライブへのRAMのコンテンツの交換、およびプロセスの、またはスレッドのメモリのコンテンツの、ディスクからのローディングに直面することが想定され、これらは、‘スワッピング’または‘スラッシング’と呼ばれる非常に効率の悪い動作である。プロセッサのローカルノード上のメモリに対して親和性強化を完全にオフにすることにより、スラッシングを軽減できるが、親和性の強化なしで実行することにより、上述の例のノード0のような、よくバランスのとれたノード上のプロセッサとメモリの間の親和性強化の便益を失う。
ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して、その評価に基づいてメモリを割当てることにより、マルチノードコンピュータのメモリ割当てのスラッシングの危険を減少させる方法、装置、および製品が開示されている。本発明の実施形態のマルチノードコンピュータのメモリ割当ての評価は、ページフレームデマンドの正規化された尺度、すなわちノードからのメモリ割当ての好ましさ(desirability)を表すメモリ親和性の重み付けされた係数に基づいて計算することを含むことができ、メモリを割当てることは、メモリ親和性の重み付けされた係数に基づいて、メモリを割当てることを含むことができる。
本発明の、前述および他の目的、特徴、および利点が、添付図面で示されたような本発明の例示的な実施形態についての、下記のさらに具体的な説明から明らかとなるであろう。添付図面では、全体を通して、類似の参照番号は、本発明の例示的な実施形態の類似の部分を表す。
図1からの添付図面を参照することにより、本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための例示的な方法、装置、および製品について説明されている。本発明のマルチノードコンピュータのメモリ割当ては、一般に、コンピュータで、すなわち、自動演算機械で実行される。したがって、詳細な説明のために、図1は、本発明の実施形態の、マルチノードコンピュータのメモリ割当てにおいて有用なコンピュータ例(152)を含む、自動演算機械のブロック図を示す。図1のコンピュータ(152)は、少なくとも1つのノード(202)を含む。ノードは、1つ以上のコンピュータプロセッサ、多数のメモリ、またはプロセッサとメモリの両方を含む、コンピュータハードウェアモジュールである。本明細書では、1つ以上のプロセッサを含むノードを‘プロセッサノード’と呼ぶことがあり、メモリを含むノードを‘メモリノード’と呼ぶことがある。多数のメモリと1つ以上のプロセッサの両方を含むノードは、状況に応じて、プロセッサノード、またはメモリノードと呼ぶことができる。図1のノード(202)は、少なくとも1つのコンピュータプロセッサ(156)または‘中央処理装置(CPU)’とともに、メモリ管理装置(161)およびシステムバス(160)を介してプロセッサ(156)およびコンピュータの他の構成要素に接続されているランダムアクセスメモリ(168)(‘RAM’)を含む。実際問題として、通常、本発明の実施形態のマルチノードコンピュータのメモリ割当てのためのシステムは、2つ以上のノード、2つ以上のコンピュータプロセッサ、および2つ以上のRAM回路を含む。
RAM(168)には、アプリケーションプログラム(153)、ユーザレベルデータ処理のためのコンピュータプログラム命令が保存されている。また、RAM(168)には、オペレーティングシステム(154)が保存されている。本発明の実施形態のコンピュータで有用なオペレーティングシステムとしては、UNIX(R)、Linux(R)、マイクロソフトXP(R)、AIX(R)、IBMのi5/OS(R)、および当業者が想起するであろうような他のオペレーティングシステムなどがある。オペレーティングシステム(154)は、アプリケーションプログラム(153)のインスタンス、またはオペレーティングシステム(154)の他の構成要素に、プロセッサおよび物理メモリのようなシステム資源を割当てるカーネル(157)と呼ばれるコア構成要素を含む。図1の方法では、カーネル(157)を含むオペレーティングシステム(154)は、RAM(168)の中に示されているが、通常、このようなソフトウェアの多くの構成要素は、不揮発性メモリ(166)の中にも保存される。
図1のオペレーティングシステム(154)は、ローダ(158)を含む。ローダ(158)は、実行可能プログラムを、例えば、ディスクドライブ、テープ、またはネットワーク接続のようなロード資源からロードするコンピュータプログラム命令のモジュールであり、‘プロセス’と呼ばれる実行可能プログラムの実行インスタンスを作成する。ローダは、実行可能ファイルのメタデータを読み込んで、かつインタプリト処理し、プロセスにメモリを割当て、実行可能ファイルのコードおよびデータセグメントをメモリにロードし、実行処理のために、通常、スケジューラのレディキューに新プロセスの識別記号を置くことにより、オペレーティングシステムのスケジューラにプロセスを登録する。この例では、ローダ(158)は、本発明の実施形態に基づいて改良されたコンピュータプログラム命令のモジュールであり、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して、その評価に基づいてメモリを割当てることにより、マルチノードコンピュータのメモリを割当てる。
ページフレームデマンドは、ランダムアクセスメモリに対するプロセスのメモリ割当て要求、すなわち、プロセスで使用するためのページフレームである。ページフレームは、プロセッサ上で実行処理中のプロセスに関連するページテーブルの中の仮想メモリのページに、空きフレームを写像することにより割当てられる。したがって、例えば、ページフォールト、ページスワップ、またはページアウトをカウントするように、一般に、仮想メモリのページに物理メモリのページフレームを写像するアクティビティを測定することにより、ページフレームデマンドを測定できる。
図1のオペレーティングシステム(154)は、メモリ割当てモジュール(159)を含む。図1のメモリ割当てモジュール(159)は、コンピュータプログラム命令のモジュールであり、このモジュールは、アプリケーションプログラムおよびオペレーティングシステムの他の構成要素が、動的に割当てを行い、再割当てを行い、または前に割当てられたメモリを解放することができるアプリケーションプログラミングインタフェース(‘API’)を提供する。例えば、‘malloc()’、‘realloc()’、および‘free()’のような、メモリ割当てモジュール(159)のAPIへの関数コールは、プログラムの実行処理中の動的メモリ割当て要求を満たす。この例では、メモリ割当てモジュール(159)は、本発明の実施形態に基づいて改良されたコンピュータプログラム命令のモジュールであり、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して、その評価に基づいてメモリを割当てることにより、マルチノードコンピュータのメモリを割当てる。
また、RAM(168)には、コンピュータシステムの仮想メモリアドレス空間を、図1のシステムの物理メモリアドレス空間に写像するページテーブル(432)が保存されている。仮想メモリアドレス空間は、‘ページ’と呼ばれる固定サイズブロックに分けられ、他方、物理メモリアドレス空間は、‘ページフレーム’と呼ばれる同一サイズのブロックに分けられる。仮想メモリアドレス空間は、コンピュータシステムに搭載された実際の物理メモリ量よりはるかに大きい場合がある、常駐するためのメモリブロックを有するプロセスのスレッドを提供する。プロセスのスレッドは、隣接する仮想メモリのセグメントに存在するが、プロセスの命令およびデータを含む実際の物理メモリは、物理メモリ空間の全体に渡って細分されうる。スレッドの実行処理中に仮想メモリのページの参照が起こると、メモリ管理装置(161)は、参照をなすプログラムと関連するページテーブル(432)の中の物理メモリの対応するページフレームを調べる。図1のページテーブル(432)をプロセスと関連づけて、いくつかのオペレーティングシステムは、各プロセスに対するページテーブル(432)を保持し、他のオペレーティングシステムは、各プロセスに、システム全体に対して保持された1つの大きいページテーブル(432)の一部を割当てることができる。
プロセスに対するページテーブル(432)を新規作成し、拡張し、または変更するとき、オペレーティングシステム(154)は、物理メモリのページフレームをページテーブル(432)の中のページに割当てる。オペレーティングシステム(154)は、割当てられていないページフレームを捜し出して、ページフレームテーブル(424)を介してページテーブル(432)に割当てる。ページフレームテーブル(424)は、RAM(168)に保存されており、図1のシステムの物理メモリのページフレームに関する情報を示す。図1のページフレームテーブル(424)をノード上のメモリのページフレームと関連づけて、いくつかのオペレーティングシステムは、ノード上のすべての割当てられていないページフレームのリストを含む各ノードに対するページフレームテーブル(424)を保持でき、他のオペレーティングシステムは、すべてのノードのすべてのページフレームに関する情報を含むシステム全体に対する1つの大きいページフレームテーブル(424)を保持できる。ページフレームテーブル(424)は、ページフレームが仮想メモリ空間の中のページに写像されているかどうかを示す。ページに写像されていないページフレームは、割当てられていないため、コードおよびデータを保存するために、プロセスがメモリ割当てを必要とするとき、利用可能である。
また、RAM(168)には、プロセッサノードとメモリノードの間のメモリ親和性の評価を示すメモリ親和性テーブル(402)が保存されている。メモリ親和性は、メモリノードからプロセッサノード上で実行中のプロセスへメモリを割当てる好ましさの尺度である。メモリ親和性の高い評価は、物理的に非常に近接したプロセッサノードとメモリノードの間で生じうるが、その理由は、プロセッサノードとのメモリ親和性の高いノードに書き込まれたデータ、またはプロセッサノードとのメモリ親和性の高いノードから読み取られたデータは、このような高親和性メモリノードへの移動、またはこのような高親和性メモリノードからの移動の際に、より少数のコンピュータハードウェア、より少数のメモリコントローラ、およびより少数のバスドライバを横断するためである。さらに、比較的低いページフレームデマンドを有するメモリノードに対して、メモリ親和性を高く評価できる。例えば、プロセッサノードに対する同程度の物理的近接を有する他のメモリノードより低いページフレームデマンドを有するメモリノードは、プロセッサノードに関して、他のメモリノードより高いメモリ親和性の評価を有することができる。この例は、説明のためのものであり、限定を意図していない。実際に、プロセッサノードに対する物理的近接にかかわらず、他のメモリノードより低いページフレームデマンドを有するメモリノードは、他のメモリノードより高いメモリ親和性の評価を割当てられうる。
図1のコンピュータ(152)は、システムバス(160)を介して、プロセッサ(156)、およびコンピュータ(152)の他の構成要素と接続された不揮発性コンピュータメモリ(166)を含む。不揮発性コンピュータメモリ(166)を、ハードディスクドライブ(170)、光ディスクドライブ(172)、電気消去可能プログラマブル読み出し専用メモリスペース(いわゆる‘EEPROM’または‘フラッシュ’メモリ)(174)、RAMドライブ(図示せず)として、または当業者が想起するであろうような任意の他の種類のコンピュータメモリとして実現することができる。図1のシステムの中のページテーブル(432)、ページフレームテーブル(424)、メモリ親和性テーブル(402)、オペレーティングシステム(154)、およびアプリケーションプログラム(153)は、RAM(168)の中に示されているが、通常、このようなソフトウェアの多くの構成要素は、不揮発性メモリ(166)の中にも保存される。
図1のコンピュータ例は、1つ以上の入出力インタフェースアダプタ(178)を含む。コンピュータの入出力インタフェースアダプタは、コンピュータディスプレイ画面のような表示装置(180)への出力とともに、キーボードおよびマウスのようなユーザ入力装置(181)からのユーザ入力を制御する、例えば、ソフトウェアドライバおよびコンピュータハードウェアを介して、利用者指向の入出力を実行する。
図1のコンピュータ例(152)は、他のコンピュータ(182)とのデータ通信(184)を実行する通信アダプタ(167)を含む。このようなデータ通信は、RS−232接続を介して、USBのような外部バスを介して、IPネットワークのようなデータ通信網を介して、および当業者が想起するであろうような他の方法で、シリアルに実行されうる。通信アダプタは、1つのコンピュータが、直接にまたはネットワークを介して、他のコンピュータにデータ通信を送出するためのデータ通信のハードウェアレベルを実現する。本発明の実施形態に基づく、送出先の可用性を判定するために有用な通信アダプタの例としては、有線ダイヤルアップ通信用モデム、有線ネットワーク通信用イーサネット(IEEE802.3)アダプタ、および無線ネットワーク通信用802.11bアダプタなどがある。
詳細な説明のために、図2は、マルチノードコンピュータのメモリ割当てのための、別のコンピュータ例(152)のブロック図を示す。図2のシステムは、バックプレーン(206)上に搭載されたノード(202)に含まれた、‘メモリチップ’(205)と呼ばれるメモリ集積回路として実装されたランダムアクセスメモリを含み、各バックプレーンは、システムバス(160)を介して、コンピュータ(152)の他の構成要素と接続されている。また、ノード(202)は、同様に、ノード上に搭載された集積回路の形のコンピュータプロセッサ(204)を含むことができる。バックプレーン上のノードは、データ通信のために、バックプレーンバス(212)を介して接続されており、ノード上のプロセッサチップおよびメモリチップは、データ通信のために、ノードバスを介して接続されており、このノードバスは、ノード(221)の図を拡大表示するノード(222)上に、参照番号(210)で示されている。
ノードは、例えば、マルチチップモジュール(‘MCM’)として実装できる。MCMは、電子システム、または2つ以上の露出した集積回路(ベア・ダイ、bare die)を有するサブシステム、または基板上に取り付けられた‘チップサイズのパッケージ’である。図2の方法では、MCMのチップは、コンピュータプロセッサおよびコンピュータメモリである。基板は、例えば、プリント基板、もしくは配線パターンを有するセラミックまたはシリコンの厚膜または薄膜でありうる。基板は、MCMパッケージの主要部分であってもよく、またはMCMパッケージの中にマウントされてもよい。MCMは、それが特定用途向け集積回路(‘ASICs’)とプリント基板の間のパッケージレベルを表すため、コンピュータハードウェアアーキテクチャにおいて有用である。
図2のノードは、ハードウェアメモリ分割またはメモリ親和性のレベルを図解する。ノード(222)上のプロセッサ(214)は、以下の物理メモリにアクセスできる。
・メモリチップにアクセスするプロセッサ(214)と同じノード上のメモリチップ(216)の中にある物理メモリ
・同じバックプレーン(208)上の他のノード上のメモリチップ(218)の中にある物理メモリ
・または他のバックプレーン(206)上の他のノード上のメモリチップ(220)の中にある物理メモリ。
メモリチップ(216)は、プロセッサ(214)と同じノード上にあるため、プロセッサ(214)に関して‘ローカル’と呼ばれる。しかしながら、メモリチップ(218および220)は、プロセッサ(214)と異なったノード上にあるため、プロセッサ(214)に関して‘リモート’と呼ばれる。
同じバックプレーン上のリモートメモリへのアクセスは、ローカルメモリにアクセスするよりも長い時間がかかる。プロセッサによりリモートメモリに書き込まれた、またはプロセッサによりリモートメモリから読み取られたデータは、リモートメモリへ移動する際に、またはリモートメモリから移動する際に、より多くのコンピュータハードウェア、より多くのメモリコントローラ、およびより多くのバスドライバを横断する。同じ理由で、他のバックプレーン上のメモリに遠隔でアクセスするには、さらに長い時間がかかる。
ローカルメモリは、利用可能な最も速いメモリアクセスを提供するため、プロセッサノードを、ページフレームデマンドを問わず、それ自体と最も高いメモリ親和性を有すると見なせることに注目することは説明のために有用である。ローカルメモリ上にデータを保存する、または検索するときのアクセス時間が速いことは、メモリアクセスを要求するプロセスを実行中のプロセッサを含む、同じノードからのメモリ割当ての好ましさを高めうる。
しかしながら、メモリ親和性の評価がページフレームデマンドを含むとき、プロセッサノードは、それ自体と最も高いメモリ親和性を有することができない。プロセッサを含むノードが、少量の搭載されたメモリのみを有するとき、割当てられていないページフレームをほとんど有しないとき、または他の何らかの理由で、比較的高いページフレームデマンドを有するとき、このようなプロセッサノードは、それ自体に対するよりも、他のノードに対して、より高いメモリ親和性を有しうる。
図2のコンピュータシステムに対して説明されたコンピュータアーキテクチャは、説明のためのものであり、本発明の限定を意図していない。当業者が想起するであろうような他のアーキテクチャもまた、マルチノードコンピュータにおけるメモリ割当てを実行するために有用でありうる。本発明の実施形態に基づき、例えば、バックプレーンに接続されたプリント基板に搭載されたいくつかのノードを用いて、それにより、図2に示されないメモリ親和性の付加的なレベルを生じさせて、マルチノードコンピュータにおけるメモリ割当てを実行できる。当業者が想起するであろうような他のアーキテクチャもまた、マルチノードコンピュータにおけるメモリ割当てを実行するために有用でありうるとともに、このようなすべてのアーキテクチャは、充分に本発明の範囲にある。
詳細な説明のために、図3は、本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための方法例を図解するフローチャートを示しており、この方法例は、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して(400)、その評価に基づいてメモリを割当てること(410)を含む。
図3の方法では、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価すること(400)は、メモリ親和性の重み付けされた係数(502)を計算すること(500)を含む。メモリ親和性の重み付けされた係数(502)は、ノードからのメモリ割当ての好ましさを示す。図3の方法では、メモリ親和性の重み付けされた係数(502)の計算(500)は、ページフレームデマンドの正規化された尺度(501)に基づいて実行される。上述したように、ページフレームデマンドは、プロセスで使用するページフレームに対するプロセスのメモリ割当て要求であり、一般に、物理メモリのページフレームを仮想メモリのページに写像するアクティビティを、所定の時間内において測定することにより、測定することができる。ページフレームデマンドの正規化された尺度(501)は、例えば、他のノード上に搭載されたメモリとシステムのすべてのノード上に搭載されたメモリの比率のような正規化係数で乗じた、所定の時間間隔内に発生する、ノードのページフレームに対するページフレームデマンドとして計算できる。ページフォールト、ページスワップ、ページアウト、および当業者が想起するであろうような他の方法を用いて、ページフレームデマンドを特徴付けることができる。
参照番号(402)で示されたようなメモリ親和性テーブルの中に、メモリ親和性(502)の重み付けされた係数を保存することにより、ページフレームデマンドの正規化された尺度(501)に基づいた、図3の方法のメモリ親和性の重み付けされた係数(502)の計算(500)を実行することができる。メモリ親和性テーブル(402)の各記録は、メモリノード(404)のメモリ親和性(502)の重み付けされた係数をプロセッサノード(403)に指定する。図示されたように、プロセッサノード0は、メモリノード0に対して0.15のメモリ親和性係数を有しており、すなわち、プロセッサノード0のそれ自体とのメモリ親和性係数は、0.15である。プロセッサノード0のメモリノード1に対するメモリ親和性係数は、0.55である。以下同様。
メモリ親和性テーブル(402)におけるメモリ親和性(502)の評価は、メモリ親和性(502)の重み付けされた係数である。メモリ親和性(502)の重み付けされた係数がより低いほど、メモリ親和性の評価がより高いことを示す。0.35の重み付けされた係数は、0.65の重み付けされた係数よりも高いメモリ親和性の評価を示す。0.65の重み付けされた係数は、1.25の重み付けされた係数よりも高いメモリ親和性の評価を示す。以下同様であり、最も低いメモリ親和性の重み付けされた係数は、プロセッサノードに対して最も高いメモリ親和性の評価を有するメモリノードに対応し、最も高いメモリ親和性の重み付けされた係数は、プロセッサノードに対して最も低いメモリ親和性の評価を有するメモリノードに対応する。
この例における評価されたメモリ親和性の欠如は、テーブル(402)のメモリ親和性(502)に対するヌルエントリで示される。完全性のために、システムのすべてのノードの中のメモリ親和性が、テーブル(402)に示されているが、プロセッサノードと、メモリを全く搭載していない他のノードとの間には、メモリ親和性に関する意味のある表示はない。このような意味のないメモリ親和性の関係は、2つのノードの間のメモリ親和性に対するヌルエントリで示されている。この例では、プロセッサノード1とメモリノード3の間には評価されたメモリ親和性がなく、‘ヌル’エントリで示されている。このようなヌルエントリが存在しうる理由は、プロセッサノードが大きい比率のシステムメモリを有しており、他のノードからのメモリを全く必要としないためであったり、説明のために‘メモリノード’と名付けられた‘メモリノード’が、実際にはメモリを全く含んでいないためであったり、および当業者が想起するであろうような他の理由のためである。
図3の方法は、メモリ親和性の評価に基づいて、メモリを割当てること(410)により継続する。この例では、メモリ親和性の評価は、テーブル(402)のメモリ親和性(502)の重み付けされた係数により示されている。図3の方法の、メモリ親和性の評価に基づいてメモリを割当てること(410)は、メモリ親和性の重み付けされた係数に基づいてメモリを割当てること(510)を含む。図3の方法では、メモリ親和性の重み付けされた係数に基づいてメモリを割当てること(510)は、プロセッサノードに対して、すなわち、メモリを割当てられるプロセッサノードに対して、評価された親和性を有するシステムの中のメモリノードがあるかどうかを判断すること(412)を含む。図3の例では、プロセッサノードに対して、評価された親和性を有するシステムの中のメモリノードがあるかどうかを判断すること(412)は、メモリを割当てられる特定のプロセッサノードに対して、テーブルの中の評価された親和性があるかどうか、すなわち、テーブル(402)の中に非ヌルエントリがあるかどうかを判断することにより実行できる。
プロセッサノードとの評価された親和性を有するシステムの中のメモリノードがないとき、図3の方法は、メモリ親和性にかかわらず、システム上の何処かで利用可能な任意の空きページフレームを割当てること(414)を含む。例えば、メモリ親和性テーブル(402)の中のプロセッサノード1は、メモリノードに対する評価された親和性を全く有さず、テーブル(402)の中のプロセッサノード1に対する各エントリの欄(502)において、ヌル値で示されており、プロセッサノード1に対するメモリの割当ては、位置にかかわらずシステムメモリのどこかの任意の空きページフレームからもありうる。
プロセッサノードとの評価された親和性を有するシステムの中のメモリノードがあるとき、図3の方法は、最も低いメモリ親和性の重み付けされた係数(502)を有するメモリノードを特定すること(520)により継続して、そのノードが、割当てられていないページフレームを有するとき、図3の方法は、ページテーブル(432)の中のそのメモリノードからメモリのページフレームのページフレーム番号(428)を保存すること(430)で、そのノードからメモリを割当てることにより継続する。上述したように、メモリ親和性(502)の重み付けされた係数がより低いほど、メモリ親和性の評価がより高いことを示す。ページテーブル(432)の各記録は、ページ番号(436)とページフレーム番号(434)を関連づける。図3の方法に基づいて、メモリ親和性の最も低い重み付けされた係数(502)を有するメモリノードからのページフレームを示すページフレーム番号‘1593’が、矢印(440)で示されたページテーブル(432)のページ番号‘1348’に割当てられた。
最も低いメモリ親和性(502)の重み付けされた係数を有するメモリノードが、割当てられていないページフレームを有しないとき、図3の方法は、メモリ親和性テーブル(402)から、そのノードに対するエントリを除去すること(525)により継続して、プロセッサノードとの評価された親和性を有するシステムの中のメモリノードがあるかどうかを判断すること(412)、メモリ親和性(502)の最も低い重み付けされた係数を有するメモリノードを特定すること(520)などを再び繰り返す。
最も低いメモリ親和性(502)の重み付けされた係数を有するノードが、割当てられていないページフレームを有するかどうかは、例えば、図3において参照番号(424)で示したフレームテーブルのようなページフレームテーブルを用いて判断されうる(422)。ページフレームテーブル(424)の各記録は、ページフレーム番号(428)により特定されたメモリフレームを示し、割当てフラグ(426)で、ページフレームが割当てられているかどうかを明示する。割当てられたページフレームは、‘1’に設定された対応する割当てフラグを有し、空きページフレームの割当てフラグは、‘0’に再初期設定される。このようなページフレームテーブル(424)からページフレームを割当てることは、ページフレームの割り当てフラグを‘1’に設定することを含む。図3のページフレームテーブル(424)では、ページフレーム番号‘1591’、‘1592’、および‘1594’が、割当てられている。しかしながら、ページフレーム番号‘1593’は、割当てられていないまま残っている。
割当てられる空き状態のページフレームのページフレーム番号だけを含む‘空きページフレームテーブル’として、ページフレームテーブルの他の形式を実施できる。空きページフレームテーブルからページフレームを割当てることは、空きページフレームテーブルから、割当てられたページフレームのページフレーム番号を削除することを含む。ページフレームテーブルの他の形式、空き状態のおよび割当てられたページフレームについて表示する方法は、当業者が想起することができ、このようなすべての形式は、充分に本発明の範囲にある。
詳細な説明のために、図4は、本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートを示しており、この方法例は、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価し(400)、その評価に基づいてメモリを割当てること(410)を含む。図3の方法について上述したように、図4の方法の、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価すること(400)は、ページフレームデマンド(501)の正規化された尺度、すなわちノードからのメモリ割当ての好ましさを表すメモリ親和性の重み付けされた係数(502)に基づいて計算し、メモリ親和性テーブル(402)にメモリ親和性(502)の重み付けされた係数を保存することにより実行できる。メモリ親和性テーブル(402)の各記録は、メモリノード(404)に対するメモリ親和性の評価(502)をプロセッサノード(403)に指定する。メモリ親和性テーブル(402)におけるメモリ親和性(502)の評価は、割当てられるメモリの総量の比率を示す、メモリ親和性の重み付けされた係数である。
また、図4の方法は、メモリ親和性の評価に基づいて、すなわち、メモリ親和性(502)の重み付けされた係数に基づいて、メモリを割当てること(410)を含む。図4の方法の評価に基づいてメモリを割当てること(410)は、割当てられるメモリの総量の比率として、ノードからメモリを割当てること(610)を含む。割当てられるメモリの総量の比率として、ノードからメモリを割当てること(610)は、プロセッサノードに対して、割当てられるメモリの総量の比率として、ノードからメモリを割当てることにより実行できる。割当てられるメモリの総量は、例えば、割当てられる次の5メガバイトのように、割当て用のメモリの所定量として特定できる。
図4の方法の、割当てられるメモリの総量の比率として、ノードからメモリを割当てること(610)は、ノードに対するメモリ親和性(502)の重み付けされた係数から、割当てられるメモリの総量の比率(624)を計算すること(612)を含む。評価された親和性を有するメモリノードから割当てられるメモリの総量の比率(624)は、プロセッサノードに対するメモリノードのメモリ親和性(502)の重み付けされた係数の値の、プロセッサノードに対する評価された親和性を有するメモリノードに対するメモリ親和性(502)のすべての重み付けされた係数の合計値との割合と、割当てられるメモリの総量との積として計算できる。例えば、テーブル(402)のプロセッサノード0に対して、プロセッサノード0との評価された親和性を有する、メモリノードに対するメモリ親和性のすべての重み付けされた係数の合計(すなわち、メモリノード0、1、および2に対する)は、1.5である。図4の例の5メガバイトの割当てられるメモリの総量を用いて、メモリノード0、1、および2のそれぞれに関連するノードのメモリから割当てられるメモリの総量の比率(624)は、以下のように計算できる。
・ノード0:(0.75のノード0に対する評価されたメモリ親和性)÷(1.5の評価されたメモリ親和性の合計)×5MB=2.5MB
・ノード1:(0.60のノード1に対する評価されたメモリ親和性)÷(1.5の評価されたメモリ親和性の合計)×5MB=2.0MB
・ノード2:(0.15のノード0に対する評価されたメモリ親和性)÷(1.5の評価されたメモリ親和性の合計)×5MB=0.5MB
この例では、図4の方法の、割当てられる5MBのメモリの総量の比率として、ノードからメモリを割当てること(610)は、プロセッサノード0に対して次の5MBを割当てることにより、すなわち、ノード0から5MBの割当てのうちの最初の2.5MB、ノード1から次の2.0MB、およびノード2から5MBの割当てのうちの最後の0.5MBを割当てることにより実行できる。このようなすべての割当ては、メモリノードのページフレームの可用性の制約を受ける。また、特に図4の例では、割当てられるメモリの総量の比率として、ノードからメモリを割当てること(610)は、ページフレーム可用性に従って、ノード上のメモリから割当てられるメモリの総量の比率(624)を割当てること(630)を含む。割当てられていないページフレームがメモリノード上に存在するかどうかは、ページフレームテーブル(424)を用いて判断されうる。ページフレームテーブル(424)は、メモリノードのページフレームに対するページフレーム番号(428)を、メモリのページフレームが割当てられているかどうかを示す割当てフラグ(426)と関連づける。
図4の方法の、メモリの総量の比率(624)を割当てること(630)は、割当てられるメモリの総量の比率(624)を割当てるために、必要とされるページフレーム数を計算することを含むことができる。必要とされるページフレーム数を計算することは、ページフレームサイズを、割当てられるメモリの総量の比率(624)に分割することにより達成できる。上述の計算例を続けて行うと、プロセッサノード0に対する評価された親和性を有する、メモリノードに対するメモリ親和性のすべての重み付けされた係数の合計は、1.5であり、割当てられるメモリの総量は、5メガバイトであり、ノード0、1、および2から割当てられるメモリの総量の比率は、それぞれ2.5MB、2.0MB、および0.5MBであり、ページフレームサイズを2KBとすると、そのとき、ノード0、1、および2から割当てられるページフレーム数は、以下のように計算できる。
・ノード0:2.5MB÷2KB/ページフレーム=1280ページフレーム
・ノード1:2.0MB÷2KB/ページフレーム=1024ページフレーム
・ノード2:0.5MB÷2KB/ページフレーム=256ページフレーム
また、図4の方法の、計算されたメモリの総量の比率(624)を割当てること(630)は、メモリノードから割当てられる計算されたメモリの総量の比率(624)を割当てるために、必要とされるページフレーム数まで(必要とされるページフレーム数を含む)、メモリノードからすべての割当てられていないページフレームのページフレーム番号(428)を、プロセッサノード上で実行中のプロセスのページテーブル(432)に保存することにより実行できる。図4のページテーブル(432)の各記録は、メモリノード上のページフレームのページフレーム番号(434)を、プロセッサノード上で実行中のプロセスに割当てられた仮想メモリ空間の中のページ番号(436)と関連づける。したがって、図4の例では、メモリ親和性(502)の最も低い重み付けされた係数を有するメモリノードからのページフレームを示すページフレーム番号‘1593’が、矢印(440)で示されたページテーブル(432)のページ番号‘1348’に割当てられた。
メモリノードから割当てられるメモリの総量の比率(624)を割当てるために、必要とされるページフレーム数を割当てた後、またはメモリノードからすべての割当てられていないページフレームを割当てた後、これらのどちらが最初に行われるにせよ、図4の方法において、メモリノードに関連するメモリ親和性テーブル(402)の中の次のエントリに戻り、再び、ノードに対するメモリ親和性(502)の重み付けされた係数から、割当てられるメモリの総量の比率を計算し(612)、ページフレーム可用性に従って、ノード上のメモリから割当てられるメモリの総量の比率(624)を割当てて(630)、以下同様の操作を、多数のメモリを割当てられるプロセッサノードに対して、評価されたメモリ親和性(502)を有する各メモリノードに対する割当てられるメモリの総量の比率(624)の割当てが行われるまで、ページフレーム可用性に従って継続する(632)。多数のメモリを割当てられるプロセッサノードに対して、評価されたメモリ親和性(502)を有する各メモリノードに対する割当てられるメモリの総量の比率(624)を、ページフレーム可用性に従って割当てるとき、メモリ親和性にかかわらず、システム上のどこにあるメモリからも、図4の方法に基づいて、割当てられないまま残っている割当ての総数のうちの任意の部分を充足させることができる。
詳細な説明のために、図5は、本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートを示しており、この方法例は、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して(400)、その評価に基づいてメモリを割当てること(410)を含む。図3の方法について上述したように、図5の方法に基づいてノードの中のメモリ親和性を評価すること(400)は、システムパラメータに基づいて、各プロセッサノードに対する各メモリノードのメモリ親和性(502)の重み付けされた係数を計算して、メモリ親和性テーブル(402)にメモリ親和性(502)の重み付けされた係数を保存することにより実行できる。メモリ親和性テーブル(402)の各記録は、メモリノード(404)に対するメモリ親和性の評価(502)をプロセッサノード(403)に指定する。メモリ親和性テーブル(402)におけるメモリ親和性(502)の評価は、プロセッサノードに対して、すなわち、プロセッサノード上で実行中のプロセスに対して、メモリノードから割当てられるメモリ割当ての総数の比率を示すメモリ親和性(502)の重み付けされた係数である。
また、図5の方法は、メモリ親和性の評価に基づいて、すなわち、メモリ親和性(502)の重み付けされた係数に基づいて、メモリを割当てること(410)を含む。図5の方法の評価に基づいてメモリを割当てること(410)は、メモリ割当ての総数の比率として、ノードからメモリを割当てること(710)を含む。メモリ割当ての総数の比率として、ノードからメモリを割当てること(710)は、プロセッサノードに対して、メモリ割当ての総数の比率として、ノードからメモリを割当てることにより実行できる。図5の方法に基づいて、メモリ割当ての総数は、例えば、プロセッサノードに対するメモリの次の500の割当て、すなわち、プロセッサノード上で実行中のプロセスに対する次の500の割当てのように、メモリ割当ての所定数として特定できる。
図5の方法の、メモリ割当ての総数の比率として、ノードからメモリを割当てること(710)は、ノードに対するメモリ親和性(502)の重み付けされた係数から、メモリ割当ての総数の比率(724)を計算すること(712)を含む。評価された親和性を有するメモリノードからのメモリ割当ての総数の比率(724)は、プロセッサノードに対するメモリノードのメモリ親和性(502)の重み付けされた係数の値の、プロセッサノードに対する評価された親和性を有するメモリノードに対するメモリ親和性(502)のすべての重み付けされた係数の合計値との割合と、メモリ割当ての総数との積として計算できる。例えば、テーブル(402)のプロセッサノード0に対して、プロセッサノード0(すなわち、メモリノード0、1、および2に対する)との評価された親和性を有する、メモリノードに対する親和性のすべての重み付けされた係数の合計は、1.5である。図5の例の500の割当てのメモリ割当ての総数を用いて、メモリノード0、1、および2のそれぞれから、プロセッサノード0に対するメモリ割当ての総数の比率(724)は、以下のように計算できる。
・ノード0:(0.75のノード0に対する評価されたメモリ親和性)÷(1.5の評価されたメモリ親和性の合計)×500割当て=250割当て
・ノード1:(0.60のノード1に対する評価されたメモリ親和性)÷(1.5の評価されたメモリ親和性の合計)×500割当て=200割当て
・ノード2:(0.15のノード0に対する評価されたメモリ親和性)÷(1.5の評価されたメモリ親和性の合計)×500割当て=50割当て
この例では、図5の方法の、500のメモリ割当ての総数の比率として、ノードからメモリを割当てること(710)は、プロセッサノード0に対して次の500割当てを割当てることにより、すなわち、ノード0から500割当てのうちの最初の250、ノード1から次の200割当て、およびノード2から500のうちの最後の50を割当てることにより実行できる。このようなすべての割当ては、メモリノードのページフレームの可用性の制約を受けるとともに、このようなすべての割当ては、割当てられたメモリ量に関係なく実行される。また、特に図5の例では、メモリ割当ての総数の比率として、ノードからメモリを割当てること(710)は、ページフレーム可用性に従って、ノード上のメモリからメモリ割当ての総数の比率(724)を割当てること(730)を含む。割当てられていないページフレームがメモリノード上に存在するかどうかは、ページフレームテーブル(424)を用いて判断されうる。ページフレームテーブル(424)は、メモリノードのページフレームに対するページフレーム番号(428)を、メモリのページフレームが割当てられているかどうかを示す割当てフラグ(426)と関連づける。
図5の方法の、メモリ割当ての総数の比率(724)を割当てること(730)は、メモリノードに対するメモリ割当ての総数の比率(724)まで(メモリノードに対するメモリ割当ての総数の比率(724)を含む)、メモリノードからすべての割当てられていないページフレームのページフレーム番号(428)を、プロセッサノード上で実行中のプロセスに対するページテーブル(432)に保存することにより実行できる。図5のページテーブル(432)の各記録は、メモリノード上のページフレームのページフレーム番号(434)を、プロセッサノード上で実行中のプロセスに割当てられた仮想メモリ空間の中のページ番号(436)と関連づける。したがって、図5の例では、プロセッサノードに対する評価されたメモリ親和性(ここでは、重み付けされたメモリ親和性)を有するメモリノードからのページフレームを示すページフレーム番号‘1593’が、矢印(440)で示されたページテーブル(432)のページ番号‘1348’に割当てられた。
メモリノードからメモリ割当ての総数の比率(724)を割当てた後、またはメモリノードからすべての割当てられていないページフレームを割当てた後、これらのどちらが最初に行われるにせよ、図5の方法において、メモリノードに関連するメモリ親和性テーブル(402)の中の次のエントリに戻り、再び、ノードに対するメモリ親和性(502)の重み付けされた係数から、メモリ割当ての総数の比率(724)を計算し(712)、ページフレーム可用性に従って、ノード上のメモリから計算されたメモリ割当ての総数の比率(724)を割当て(730)、以下同様の操作を、メモリを割当てられるプロセッサノードに対して、評価されたメモリ親和性(502)を有する各メモリノードに対するメモリ割当ての総数の比率(724)の割当てが行われるまで、ページフレーム可用性に従って継続する(732)。メモリを割当てられるプロセッサノードに対して、評価されたメモリ親和性(502)を有する各メモリノードに対するメモリ割当ての総数の比率(724)を、ページフレーム可用性に従って割当てるとき、メモリ親和性にかかわらず、システム上のどこにあるメモリからも、図5の方法に基づいて、割当てられないまま残っている割当ての総数のうちの任意の部分を充足させることができる。
詳細な説明のために、図6は、本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートを示しており、この方法例は、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して(400)、その評価に基づいてメモリを割当てること(410)を含む。図6の方法の、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価すること(400)は、ページフォールトの正規化された尺度に基づいてメモリ親和性を評価すること(800)を含む。ページフォールトは、RAMのページフレームに写像されていない仮想メモリの中のページへのメモリアクセスに対するプロセスからの要求に呼応して、メモリ管理装置(‘MMU’)により引き起こされた割込みである。仮想メモリのページに対する写像されたページフレームの欠如は、例えば、ページテーブルの仮想メモリページのTRUEに対する空のビットセットで表示できる。代表的なオペレーティングシステムでは、空きフレームが利用可能であるとき、ページフォールト割込みハンドラは、ノードから仮想メモリの中のページに対して空きページフレームを写像する。ページフォールトの正規化された尺度は、例えば、他のノード上に搭載されたメモリとシステムのすべてのノード上に搭載されたメモリの比率のような正規化係数で乗じた、ノード上のページフレームを仮想メモリの中のページに写像する、所定の時間間隔内に発生するページフォールト数として計算できる。
図6の方法では、ページフォールトの正規化された尺度に基づいてメモリ親和性を評価すること(800)は、所定の時間間隔で定期的に、例えば、1秒毎に実行できる。メモリ親和性を定期的に評価すること(800)は、ノード上のページフレームに対するページフレームデマンドが変化するとき、参照番号(502)の親和性の重み付けされた係数のような親和性の評価を、動的に調整することを可能とする。
図6の方法の、ページフォールトの正規化された尺度に基づいてメモリ親和性を評価すること(800)は、ページフォールトの現在の正規化された尺度を、ページフレームデマンドテーブル(830)のノードに対するページフォールトの前の正規化された尺度として保存すること(820)を含む。ページフレームデマンドテーブル(830)の各記録は、現在のページフレームデマンド(832)および前のページフレームデマンド(834)を、ノード識別記号(1004)と関連づける。図6の現在のページフレームデマンド(832)は、直前に終了した所定の時間間隔で発生するページフォールトの正規化された尺度である。図6の前のページフレームデマンド(834)は、直前に終了した所定の時間間隔より前の時間間隔で発生するページフォールトの正規化された尺度である。例えば、すべてのノード間で相等しいメモリ分配を有し、かつ図6の方法に基づいて作動するコンピュータシステムのノード0において、第1の時間間隔に10のページフォールトが発生し、第2の時間間隔に15のページフォールトが発生し、および第3の時間間隔に12のページフォールトが発生する場合について考える。第3の時間間隔が経過中に、直前に終了した所定の時間間隔は、第2の時間間隔である。したがって、ノード0に対する現在のページフレームデマンドは15である。第3の時間間隔が経過中に、直前に終了した所定の時間間隔より前の時間間隔は、第1の時間間隔である。したがって、ノード0に対する前のページフレームデマンドは10である。
また、図6の方法では、ページフォールトの正規化された尺度に基づいてメモリ親和性を評価すること(800)は、現在のページフレームデマンドを計算すること(840)を含む。図6の方法の、現在のページフレームデマンドを計算すること(840)は、ページフォールトの現在の正規化された尺度を計算して、ページフレームデマンドテーブル(830)の現在のページフレームデマンド(832)のノードに対するページフォールト(832)の現在の正規化された尺度を保存することにより実行できる。以下の式1に従って、ページフォールトの現在の正規化された尺度を計算できる。
Figure 0005063069
ここで、Nはi番目のメモリノードに対するページフォールトの正規化された尺度、Fはi番目のメモリノードから仮想メモリの中のページに対してページフレームを写像する、直前に終了した所定の時間間隔内に発生するページフォールト数、およびMiはi番目のメモリノード上に搭載されたメモリとすべてのノード上に搭載された全システムメモリの比率である。例えば、ノード0に対して、ページフォールトの正規化された尺度Nは式1に従って計算でき、ここで、ノード0から仮想メモリの中のページに対してページフレームを写像する、所定の時間間隔内に発生するページフォールト数は、テーブル(802)の欄(806)から読み取って100とし、ノード0上に搭載されたメモリとすべてのノード上に搭載された全システムメモリの比率は、テーブル(810)の欄(812)から読み取って0.50とすると、Nは、50=100(1−0.50)のように計算される。
図6のページフォールトテーブル(802)は、所定の時間間隔内に発生するページフォールト(806)の数を、ノード識別記号(1004)と関連づける。この例では、100のページフォールトが、ノード0から仮想メモリの中のページに対してページフレームを写像し、50のページフォールトが、ノード1から仮想メモリの中のページに対してページフレームを写像し、および25のページフォールトが、ノード2から仮想メモリの中のページに対してページフレームを写像した。
図6の全メモリの比率のテーブル(810)は、ノード上に搭載された全システムメモリの比率(812)を、ノード識別記号(1004)と関連づける。この例では、ノード0は、全システムメモリの50%を含み、ノード1は、全システムメモリの30%を含み、およびノード2は、全システムメモリの20%を含む。
図6の方法では、ページフォールトの正規化された尺度に基づいてメモリ親和性を評価すること(800)は、さらに、以下の式2に従って、プロセッサノードとシステム上に搭載されたメモリノードとの間のメモリ親和性(502)の重み付けされた係数を計算すること(850)を含む。
Figure 0005063069
ここで、Wはi番目のメモリノードに対するプロセッサノードのメモリ親和性(502)の重み付けされた係数、Pはi番目のメモリノードの前のページフレームデマンド(834)、およびCはi番目のメモリノードの現在のページフレームデマンド(832)である。例えば、ノード0に対して、メモリ親和性(502)の重み付けされた係数Wは式2に従って計算でき、ここで、前のページフレームデマンドは、テーブル(830)の欄(834)から読み取って40とし、現在のページフレームデマンドは、テーブル(830)の欄(832)から読み取って50とすると、Wは、70=(40÷2)+50のように計算される。
図6の方法では、メモリ親和性(502)の重み付けされた係数を計算すること(850)は、メモリ親和性テーブル(402)に、各メモリノードに対するメモリ親和性(502)の重み付けされた係数を保存することを含むことができる。メモリ親和性テーブル(402)の各記録は、メモリノード(404)に対するメモリ親和性の評価(502)をプロセッサノード(403)に指定する。
また、図6の方法は、メモリ親和性の評価に基づいて、メモリを割当てること(410)を含む。評価に基づいてメモリを割当てること(410)は、プロセッサノードとの評価された親和性を有するシステムの中のメモリノードがあるかどうかを判断して、最も低い親和性の重み付けされた係数を有するメモリノードを特定して、最も低い親和性の重み付けされた係数を有するノードが、割当てられていないページフレームを有するかどうかを判断して、本明細書で先に詳述したように、以下同様の操作を行うことにより実行できる。
詳細な説明のために、図7は、本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートを示しており、この方法例は、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して(400)、その評価に基づいてメモリを割当てること(410)を含む。図7の方法の、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価すること(400)は、ページスワップの正規化された尺度に基づいてメモリ親和性を評価すること(900)を含む。
ページスワップは、ページフレームが既に割当てられている仮想メモリページに対する新規のページフレームの割当てである。新規のページフレームをそのように割当てるために、最初に、ページスワップは、以前に割当てられたページフレームのコンテンツをディスクに書き込む。したがって、ページスワップは、処理時間の点で非常に贅沢であり、通常、ページフォールトハンドラは、例えば、RAMが容量いっぱいであり、全く空きフレームが無いか、または現在のメモリ親和性強化ポリシーの中で割当てることができる空きフレームが無いなどの理由で、メモリの割当てを実行する他の方法が無いときだけページスワップを実行する。これらの理由により、多数のページスワップがメモリノード上で発生して、ノード上のページフレームデマンドが高いとき、ページスワップの手段は、ページフレームデマンドの有用な手段でありうる。ページスワップの正規化された尺度は、例えば、他のノード上に搭載されたメモリとシステムのすべてのノード上に搭載された全メモリの比率のような正規化係数で乗じた、所定の時間内に発生する、ノード上のメモリのページスワップ数の総数として与えることができる。
図7の方法では、ページスワップの正規化された尺度に基づいてメモリ親和性を評価すること(900)は、所定の時間間隔で定期的に、例えば、1秒毎に実行できる。メモリ親和性を定期的に評価すること(900)は、ノード上のページフレームに対するページフレームデマンドが変化するとき、参照番号(502)の親和性の重み付けされた係数のような親和性の評価を、動的に調整することを可能とする。
図7の方法の、ページスワップの正規化された尺度に基づいてメモリ親和性を評価すること(900)は、ページスワップの現在の正規化された尺度を、ページフレームデマンドテーブル(830)のノードに対するページスワップの前の正規化された尺度として保存すること(920)を含む。ページフレームデマンドテーブル(830)の各記録は、現在のページフレームデマンド(832)および前のページフレームデマンド(834)を、ノード識別記号(1004)と関連づける。図7の現在のページフレームデマンド(832)は、直前に終了した所定の時間間隔で発生するページスワップの正規化された尺度である。図7の前のページフレームデマンド(834)は、直前に終了した所定の時間間隔より前の時間間隔で発生するページスワップの正規化された尺度である。例えば、すべてのノード間で相等しいメモリ分配を有し、かつ図7の方法に基づいて作動するコンピュータシステムのノード0において、第1の時間間隔に10のページスワップが発生し、第2の時間間隔に15のページスワップが発生し、および第3の時間間隔に12のページスワップが発生する場合について考える。第3の時間間隔が経過中に、直前に終了した所定の時間間隔は、第2の時間間隔である。したがって、ノード0に対する現在のページフレームデマンドは15である。第3の時間間隔が経過中に、直前に終了した所定の時間間隔より前の時間間隔は、第1の時間間隔である。したがって、ノード0に対する前のページフレームデマンドは10である。
また、図7の方法では、ページスワップの正規化された尺度に基づいてメモリ親和性を評価すること(900)は、現在のページフレームデマンドを計算すること(940)を含む。図7の方法の、現在のページフレームデマンドを計算すること(940)は、ページスワップの現在の正規化された尺度を計算して、ページフレームデマンドテーブル(830)の現在のページフレームデマンド(832)のノードに対するページスワップの現在の正規化された尺度を保存することにより実行できる。以下の式3に従って、ページスワップの現在の正規化された尺度を計算できる。
Figure 0005063069
ここで、Nはi番目のメモリノードに対するページスワップの正規化された尺度、Sはi番目のメモリノードから仮想メモリの中のページに対してページフレームを写像する、直前に終了した所定の時間間隔内に発生するページスワップ数、およびMはi番目のメモリノード上に搭載されたメモリとすべてのノード上に搭載された全システムメモリの比率である。例えば、ノード0に対して、ページスワップの正規化された尺度Nは式3に従って計算でき、ここで、ノード0から仮想メモリの中のページに対してページフレームを写像する、所定の時間間隔内に発生するページスワップ数は、テーブル(902)の欄(906)から読み取って100とし、ノード0上に搭載されたメモリとすべてのノード上に搭載された全システムメモリの比率は、テーブル(810)の欄(812)から読み取って0.50とすると、Nは、50=100(1−0.50)のように計算される。
図7のページスワップテーブル(902)は、所定の時間間隔内に発生するページスワップ(906)の数を、ノード識別記号(1004)と関連づける。この例では、100のページスワップが、仮想メモリのページへの写像に使用可能であるノード0上の空きページフレームを新規作成し、50のページスワップが、仮想メモリのページへの写像に使用可能であるノード1上の空きページフレームを新規作成し、25のページスワップが、仮想メモリのページへの写像に使用可能であるノード2上の空きページフレームを新規作成した。
図7の全メモリの比率のテーブル(810)は、ノード上に搭載された全システムメモリの比率(812)を、ノード識別記号(1004)と関連づける。この例では、ノード0は、全システムメモリの50%を含み、ノード1は、全システムメモリの30%を含み、およびノード2は、全システムメモリの20%を含む。
図7の方法では、ページスワップの正規化された尺度に基づいてメモリ親和性を評価すること(900)は、さらに、以下の式4に従って、プロセッサノードとシステム上に搭載されたメモリノードとの間のメモリ親和性(502)の重み付けされた係数を計算すること(850)を含む。
Figure 0005063069
ここで、Wはi番目のメモリノードに対するプロセッサノードのメモリ親和性(502)の重み付けされた係数、Pはi番目のメモリノードの前のページフレームデマンド(834)、およびCはi番目のメモリノードの現在のページフレームデマンド(832)である。例えば、ノード0に対して、メモリ親和性(502)の重み付けされた係数Wは式4に従って計算でき、ここで、前のページフレームデマンドは、テーブル(830)の欄(834)から読み取って40とし、現在のページフレームデマンドは、テーブル(830)の欄(832)から読み取って50とすると、Wは、70=(40÷2)+50のように計算される。
図7の方法では、メモリ親和性(502)の重み付けされた係数を計算すること(850)は、メモリ親和性テーブル(402)に、各メモリノードに対するメモリ親和性(502)の重み付けされた係数を保存することを含むことができる。メモリ親和性テーブル(402)の各記録は、メモリノード(404)に対するメモリ親和性の評価(502)をプロセッサノード(403)に指定する。
また、図7の方法は、メモリ親和性の評価に基づいて、メモリを割当てること(410)を含む。評価に基づいてメモリを割当てること(410)は、プロセッサノードとの評価された親和性を有するシステムの中のメモリノードがあるかどうかを判断して、最も低い親和性の重み付けされた係数を有するメモリノードを特定して、最も低い親和性の重み付けされた係数を有するノードが、割当てられていないページフレームを有するかどうかを判断して、本明細書で先に詳述したように、以下同様の操作を行うことにより実行できる。
詳細な説明のために、図8は、本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートを示しており、この方法例は、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して(400)、その評価に基づいてメモリを割当てること(410)を含む。図8の方法の、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価すること(400)は、ページアウトの正規化された尺度に基づいてメモリ親和性を評価すること(1000)を含む。
‘ページアウト’は、RAMの中のページフレームのコンテンツをディスクに保存して、かつページフレームが写像されていた仮想ページを、ページテーブルの中に空と記録するプロセスであり、それにより、再割当てのためにページフレームを解放する。また、ページアウトプロセスは、フレームについてフレームテーブルの中に空き状態と記録する、またはフレームを空きフレームテーブルの中に記載することができる。ページアウトは、ページフレームをディスクに書き込むため、ページアウトは、処理時間の点で非常に贅沢である。したがって、通常、ページフォールトハンドラは、例えば、割当てられたページフレームの数が、所定のしきい値を超えるときなどの、高いページフレームデマンドがあるときに限りページアウトを実行する。これらの理由により、多数のページアウトがメモリノード上で発生して、ノード上のページフレームデマンドが高いとき、ページアウトの手段は、ページフレームデマンドの有用な手段でありうる。ページアウトの正規化された尺度は、例えば、他のノード上に搭載されたメモリとシステムのすべてのノード上に搭載された全メモリの比率のような正規化係数で乗じた、所定の時間内に発生する、ノード上のメモリのページアウト数の総数として与えることができる。
図8の方法では、ページアウトの正規化された尺度に基づいてメモリ親和性を評価すること(1000)は、所定の時間間隔で定期的に、例えば、1秒毎に実行できる。メモリ親和性を定期的に評価すること(1000)は、ノード上のページフレームに対するページフレームデマンドが変化するとき、参照番号(502)の親和性の重み付けされた係数のような親和性の評価を、動的に調整することを可能とする。
図8の方法の、ページアウトの正規化された尺度に基づいてメモリ親和性を評価すること(1000)は、ページアウトの現在の正規化された尺度を、ページフレームデマンドテーブル(830)のノードに対するページアウトの前の正規化された尺度として保存すること(1020)を含む。ページフレームデマンドテーブル(830)の各記録は、現在のページフレームデマンド(832)および前のページフレームデマンド(834)を、ノード識別記号(1004)と関連づける。図8の現在のページフレームデマンド(832)は、直前に終了した所定の時間間隔で発生するページアウトの正規化された尺度である。図8の前のページフレームデマンド(834)は、直前に終了した所定の時間間隔より前の時間間隔で発生するページアウトの正規化された尺度である。
また、図8の方法では、ページアウトの正規化された尺度に基づいてメモリ親和性を評価すること(1000)は、現在のページフレームデマンドを計算すること(1040)を含む。図8の方法の、現在のページフレームデマンドを計算すること(1040)は、ページアウトの現在の正規化された尺度を計算して、ページフレームデマンドテーブル(830)の現在のページフレームデマンド(832)のノードに対するページアウトの現在の正規化された尺度を保存することにより実行できる。以下の式5に従って、ページアウトの現在の正規化された尺度を計算できる。
Figure 0005063069
ここで、Nはi番目のメモリノードに対するページアウトの正規化された尺度、Oはi番目のメモリノードから仮想メモリの中のページに対してページフレームを写像する、直前に終了した所定の時間間隔内に発生するページアウト数、およびMはi番目のメモリノード上に搭載されたメモリとすべてのノード上に搭載された全システムメモリの比率である。例えば、ノード0に対して、ページアウトの正規化された尺度Nは式5に従って計算でき、ここで、ノード0から仮想メモリの中のページに対してページフレームを写像する、所定の時間間隔内に発生するページアウト数は、テーブル(1002)の欄(1006)から読み取って100とし、ノード0上に搭載されたメモリとすべてのノード上に搭載された全システムメモリの比率は、テーブル(810)の欄(812)から読み取って0.50とすると、Nは、50=100(1−0.50)のように計算される。
図8のページアウトテーブル(1002)は、所定の時間間隔内に発生するページアウト(1006)の数を、ノード識別記号(1004)と関連づける。この例では、100のページアウトが、仮想メモリのページへの写像に使用可能であるノード0上の空きページフレームを新規作成し、50のページアウトが、仮想メモリのページへの写像に使用可能であるノード1上の空きページフレームを新規作成し、25のページアウトが、仮想メモリのページへの写像に使用可能であるノード2上の空きページフレームを新規作成した。
図8の全メモリの比率のテーブル(810)は、ノード上に搭載された全システムメモリの比率(812)を、ノード識別記号(1004)と関連づける。この例では、ノード0は、全システムメモリの50%を含み、ノード1は、全システムメモリの30%を含み、およびノード2は、全システムメモリの20%を含む。
図8の方法では、ページアウトの正規化された尺度に基づいてメモリ親和性を評価すること(1000)は、さらに、以下の式6に従って、プロセッサノードとシステム上に搭載されたメモリノードとの間のメモリ親和性(502)の重み付けされた係数を計算すること(850)を含む。
Figure 0005063069
ここで、Wはi番目のメモリノードに対するプロセッサノードのメモリ親和性(502)の重み付けされた係数、Pはi番目のメモリノードの前のページフレームデマンド(834)、およびCはi番目のメモリノードの現在のページフレームデマンド(832)である。例えば、ノード0に対して、メモリ親和性(502)の重み付けされた係数Wは式6に従って計算でき、ここで、前のページフレームデマンドは、テーブル(830)の欄(834)から読み取って40とし、現在のページフレームデマンドは、テーブル(830)の欄(832)から読み取って50とすると、Wは、70=(40÷2)+50のように計算される。
図8の方法では、メモリ親和性(502)の重み付けされた係数を計算すること(850)は、メモリ親和性テーブル(402)に、各メモリノードに対するメモリ親和性(502)の重み付けされた係数を保存することを含むことができる。メモリ親和性テーブル(402)の各記録は、メモリノード(404)に対するメモリ親和性の評価(502)をプロセッサノード(403)に指定する。
また、図8の方法は、メモリ親和性の評価に基づいて、メモリを割当てること(410)を含む。評価に基づいてメモリを割当てること(410)は、プロセッサノードとの評価された親和性を有するシステムの中のメモリノードがあるかどうかを判断して、最も低い親和性の重み付けされた係数を有するメモリノードを特定して、最も低い親和性の重み付けされた係数を有するノードが、割当てられていないページフレームを有するかどうかを判断して、本明細書で先に詳述したように、以下同様の操作を行うことにより実行できる。
本発明の例示的な実施形態は、主に、マルチノードコンピュータのメモリ割当てに対する完全に機能的なコンピュータシステムとの関連の中で説明されている。しかしながら、また、任意の好適なデータ処理システムと共に使用するために、信号保持媒体に配設されたコンピュータプログラムにおいて本発明を具現化できることを、当技術分野の技能を有する読者は認識するであろう。このような信号保持媒体は、伝送媒体、もしくは磁気媒体、光媒体、または他の好適な媒体を含む、機械可読情報用の書き込み可能媒体でありうる。書き込み可能媒体の例は、ハードドライブの磁気ディスクまたはディスケット、光ドライブ用コンパクトディスク、磁気テープ、およびその他の当業者が想起するであろうようなものを含む。伝送媒体の例は、音声通信用の電話網と、例えば、イーサネット(R)、ならびにインターネットプロトコルおよびワールドワイドウェブを用いて通信するネットワークのようなデジタルデータ通信ネットワークを含む。好適なプログラミング手段を有する任意のコンピュータシステムが、プログラム製品で具現されるように本発明の方法のステップを実行処理できるであろうことを、当業者は直ちに認識するであろう。本明細書で説明された例示的な実施形態のいくつかのものは、コンピュータハードウェアにインストールされて、コンピュータハードウェア上で実行処理するソフトウェアに関するものであるが、それにもかかわらず、ファームウェアとして、またはハードウェアとして実現された他の実施形態が本発明の範囲内にあることを、当業者は直ちに認識するであろう。
上述の説明により、本発明の真の要旨を逸脱することなく、本発明の様々な実施形態において修正および変更をなしうることが理解されるであろう。本明細書の説明は、あくまで例を示すためのものに過ぎず、制限を意味するものと解釈されるべきではない。本発明の範囲は、以下のクレームの文言によってのみ制限される。
本発明の実施形態の、マルチノードコンピュータのメモリ割当てにおいて有用なコンピュータ例を含む、自動演算機械のブロック図である。 マルチノードコンピュータのメモリ割当てのための、別のコンピュータ例のブロック図である。 本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための方法例を図解するフローチャートであり、この方法例は、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して、その評価に基づいてメモリを割当てることを含む。 本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートである。 本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートである。 本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートである。 本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートである。 本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートである。

Claims (12)

  1. マルチノードコンピュータのメモリ割当ての方法であって、
    ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価するステップであって、ページフレームデマンドは、仮想メモリのページに物理メモリのページフレームを写像するアクティビティを測定することにより求められ、所定の時間間隔内に発生するページフレームデマンドに正規化係数を乗じて得られるページフレームデマンドの正規化された尺度をノードからのメモリ割当ての好ましさを表すメモリ親和性の重み付けされた係数として求めることを含むステップと
    前記評価に基づいてメモリを割当てるステップであって、メモリ親和性の前記重み付けされた係数に基づいて、メモリを割当てることを含むステップと、を有する方法。
  2. 前記評価に基づいてメモリを割当てるステップが、割当てられるメモリの総量の比率として、前記ノードからメモリを割当てるステップをさらに含む、請求項1に記載の方法。
  3. 前記評価に基づいてメモリを割当てるステップが、メモリ割当ての総数の比率として、前記ノードからメモリを割当てるステップをさらに有する、請求項1に記載の方法。
  4. 前記ノードに対するメモリ親和性を評価するステップが、ページフォールトの正規化された尺度に基づいてメモリ親和性を評価するステップをさらに有する、請求項1〜3のいずれか1項に記載の方法。
  5. 前記ノードに対するメモリ親和性を評価するステップが、ページスワップの正規化された尺度に基づいてメモリ親和性を評価するステップをさらに有する、請求項1〜3のいずれか1項に記載の方法。
  6. 前記ノードに対するメモリ親和性を評価するステップが、ページアウトの正規化された尺度に基づいてメモリ親和性を評価するステップをさらに有する、請求項1〜3のいずれか1項に記載の方法。
  7. マルチノードコンピュータのメモリ割当てのコンピュータプログラムであって、コンピュータに、
    ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価するステップであって、ページフレームデマンドは、仮想メモリのページに物理メモリのページフレームを写像するアクティビティを測定することにより求められ、所定の時間間隔内に発生するページフレームデマンドに正規化係数を乗じて得られるページフレームデマンドの正規化された尺度をノードからのメモリ割当ての好ましさを表すメモリ親和性の重み付けされた係数として求めることを含むステップと、
    前記評価に基づいてメモリを割当てるステップであって、メモリ親和性の前記重み付けされた係数に基づいて、メモリを割当てることを含むステップと、
    を実行させるコンピュータプログラム。
  8. 前記評価に基づいてメモリを割当てるステップが、割当てられるメモリの総量の比率として、前記ノードからメモリを割当てることをさらに含む、請求項7に記載のコンピュータプログラム。
  9. 前記評価に基づいてメモリを割当てるステップが、メモリ割当ての総数の比率として、前記ノードからメモリを割当てることをさらに含む、請求項7に記載のコンピュータプログラム。
  10. 前記ノードに対するメモリ親和性を評価するステップが、ページフォールトの正規化された尺度に基づいてメモリ親和性を評価することをさらに含む、請求項7〜9のいずれか1項に記載のコンピュータプログラム。
  11. 前記ノードに対するメモリ親和性を評価するステップが、ページスワップの正規化された尺度に基づいてメモリ親和性を評価することをさらに含む、請求項7〜9のいずれか1項に記載のコンピュータプログラム。
  12. 前記ノードに対するメモリ親和性を評価するステップが、ページアウトの正規化された尺度に基づいてメモリ親和性を評価することをさらに含む、請求項7〜9のいずれか1項に記載のコンピュータプログラム。
JP2006262791A 2005-09-29 2006-09-27 マルチノードコンピュータのメモリ割当て方法、装置、およびプログラム Expired - Fee Related JP5063069B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/239596 2005-09-29
US11/239,596 US8806166B2 (en) 2005-09-29 2005-09-29 Memory allocation in a multi-node computer

Publications (2)

Publication Number Publication Date
JP2007095072A JP2007095072A (ja) 2007-04-12
JP5063069B2 true JP5063069B2 (ja) 2012-10-31

Family

ID=37895563

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006262791A Expired - Fee Related JP5063069B2 (ja) 2005-09-29 2006-09-27 マルチノードコンピュータのメモリ割当て方法、装置、およびプログラム

Country Status (3)

Country Link
US (1) US8806166B2 (ja)
JP (1) JP5063069B2 (ja)
CN (1) CN100465920C (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673114B2 (en) * 2006-01-19 2010-03-02 International Business Machines Corporation Dynamically improving memory affinity of logical partitions
TWM309149U (en) * 2006-06-23 2007-04-01 Genesys Logic Inc Data cache device of flash memory
JP2010122805A (ja) * 2008-11-18 2010-06-03 Hitachi Ltd 仮想サーバシステム並びに物理cpu及び物理メモリの割り当て方法
JP5174941B2 (ja) * 2011-07-22 2013-04-03 株式会社日立製作所 仮想計算機の制御方法
US10474369B2 (en) * 2012-02-06 2019-11-12 Vmware, Inc. Mapping guest pages to disk blocks to improve virtual machine management processes
US10152450B2 (en) * 2012-08-09 2018-12-11 International Business Machines Corporation Remote processing and memory utilization
US9037669B2 (en) * 2012-08-09 2015-05-19 International Business Machines Corporation Remote processing and memory utilization
US9052932B2 (en) * 2012-12-17 2015-06-09 International Business Machines Corporation Hybrid virtual machine configuration management
CN104166596B (zh) * 2013-05-17 2018-06-26 华为技术有限公司 一种内存分配方法及节点
US10223282B2 (en) * 2017-05-23 2019-03-05 International Business Machines Corporation Memory affinity management
DE102020207616A1 (de) * 2020-06-19 2021-12-23 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Betreiben einer Recheneinheit

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4718008A (en) * 1986-01-16 1988-01-05 International Business Machines Corporation Method to control paging subsystem processing in a virtual memory data processing system during execution of critical code sections
US5452440A (en) * 1993-07-16 1995-09-19 Zitel Corporation Method and structure for evaluating and enhancing the performance of cache memory systems
EP0703534B1 (de) * 1994-09-19 2002-05-02 Siemens Aktiengesellschaft Speicherverwaltungssystem eines Rechnersystems
US6167490A (en) * 1996-09-20 2000-12-26 University Of Washington Using global memory information to manage memory in a computer network
US6289424B1 (en) * 1997-09-19 2001-09-11 Silicon Graphics, Inc. Method, system and computer program product for managing memory in a non-uniform memory access system
US6249802B1 (en) * 1997-09-19 2001-06-19 Silicon Graphics, Inc. Method, system, and computer program product for allocating physical memory in a distributed shared memory network
US6701421B1 (en) * 2000-08-17 2004-03-02 International Business Machines Corporation Application-level memory affinity control
US6871219B2 (en) * 2001-03-07 2005-03-22 Sun Microsystems, Inc. Dynamic memory placement policies for NUMA architecture
US7143412B2 (en) * 2002-07-25 2006-11-28 Hewlett-Packard Development Company, L.P. Method and apparatus for optimizing performance in a multi-processing system
US20040088498A1 (en) * 2002-10-31 2004-05-06 International Business Machines Corporation System and method for preferred memory affinity
US6912625B2 (en) * 2003-01-09 2005-06-28 International Business Machines Corporation Method, system, and computer program product for creating and managing memory affinity in logically partitioned data processing systems
US7472246B2 (en) * 2003-04-30 2008-12-30 International Business Machines Corporation Method and system for automated memory reallocating and optimization between logical partitions
US6965978B2 (en) * 2003-05-15 2005-11-15 Microsoft Corporation Memory tracking tool
US7574708B2 (en) 2004-03-04 2009-08-11 International Business Machines Corporation Mechanism for enabling the distribution of operating system resources in a multi-node computer system
JP2006079495A (ja) * 2004-09-13 2006-03-23 Hitachi Ltd ストレージシステム及び論理区画の設定方法
US20070073993A1 (en) * 2005-09-29 2007-03-29 International Business Machines Corporation Memory allocation in a multi-node computer

Also Published As

Publication number Publication date
CN1940890A (zh) 2007-04-04
JP2007095072A (ja) 2007-04-12
CN100465920C (zh) 2009-03-04
US8806166B2 (en) 2014-08-12
US20070073992A1 (en) 2007-03-29

Similar Documents

Publication Publication Date Title
JP5063069B2 (ja) マルチノードコンピュータのメモリ割当て方法、装置、およびプログラム
US20070073993A1 (en) Memory allocation in a multi-node computer
US8212832B2 (en) Method and apparatus with dynamic graphics surface memory allocation
US6950107B1 (en) System and method for reserving and managing memory spaces in a memory resource
US9292437B2 (en) Optimizing virtual memory allocation in a virtual machine based upon a previous usage of the virtual memory blocks
JP5853624B2 (ja) ワークロード・メタデータの生成、分析、及び利用のための方法、プログラム、及びシステム
US8909853B2 (en) Methods and apparatus to share a thread to reclaim memory space in a non-volatile memory file system
US8214577B2 (en) Method of memory management for server-side scripting language runtime system
US7809918B1 (en) Method, apparatus, and computer-readable medium for providing physical memory management functions
US20070022416A1 (en) Execution device and application program
CN109582600B (zh) 一种数据处理方法及装置
US8793444B2 (en) Managing large page memory pools
KR101140914B1 (ko) 컴퓨팅 자원들을 제어하는 기술
US6961840B2 (en) Method and apparatus for managing a dynamic alias page table
US8055876B2 (en) Selectively mark free frames as unused for cooperative memory over-commitment
US8996834B2 (en) Memory class based heap partitioning
GB2516435A (en) Embedded memory management scheme for real-time applications
US9405470B2 (en) Data processing system and data processing method
US20230033029A1 (en) Optimized memory tiering
Goglin et al. Using performance attributes for managing heterogeneous memory in hpc applications
US11836525B2 (en) Dynamic last level cache allocation for cloud real-time workloads
CN111902804B (zh) 用于管理存储设备的资源并量化i/o请求成本的系统和方法
US20230031304A1 (en) Optimized memory tiering
KR20110125937A (ko) 사용자 응답 시간을 고려한 메모리 관리 장치 및 방법
US10579392B2 (en) System and method for mapping physical memory with mixed storage class memories

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120127

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20120127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120403

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120618

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120717

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120807

R150 Certificate of patent or registration of utility model

Ref document number: 5063069

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees