(57)【要約】      （修正有）【課題】  ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して、メモリを割当てることにより、マルチノードコンピュータのメモリ割当てのスラッシングの危険を減少させる方法、装置の提供。【解決手段】ページフレームデマンドの正規化された尺度、すなわちノードからのメモリ割当ての好ましさを表すメモリ親和性の重み付けされた係数に基づいて計算することと、メモリを割当てることを含む、マルチノードコンピュータのメモリ割当てを評価することは、メモリ親和性の重み付けされた係数に基づいてメモリを割当てることを含むことができる。【選択図】図１
2007095072.tif 000002
【特許請求の範囲】
【請求項１】
マルチノードコンピュータのメモリ割当ての方法であって、
ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価するステップと、
前記評価に基づいてメモリを割当てるステップとを有する方法。
【請求項２】
メモリ親和性を評価するステップが、ページフレームデマンドの正規化された尺度に基づいて前記ノードからのメモリ割当ての好ましさを表すメモリ親和性の重み付けされた係数を計算するステップをさらに有し、
かつメモリを割当てるステップが、メモリ親和性の前記重み付けされた係数に基づいて、メモリを割当てるステップを有する、請求項１に記載の方法。
【請求項３】
前記評価に基づいてメモリを割当てるステップが、割当てられるメモリの総量の比率として、前記ノードからメモリを割当てるステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記評価に基づいてメモリを割当てるステップが、メモリ割当ての総数の比率として、前記ノードからメモリを割当てるステップをさらに有する、請求項１に記載の方法。
【請求項５】
ノードに対するメモリ親和性を評価するステップが、ページフォールトの正規化された尺度に基づいてメモリ親和性を評価するステップをさらに有する、請求項１に記載の方法。
【請求項６】
ノードに対するメモリ親和性を評価するステップが、ページスワップの正規化された尺度に基づいてメモリ親和性を評価するステップをさらに有する、請求項１に記載の方法。
【請求項７】
ノードに対するメモリ親和性を評価するステップが、ページアウトの正規化された尺度に基づいてメモリ親和性を評価するステップをさらに有する、請求項１に記載の方法。
【請求項８】
マルチノードコンピュータのメモリ割当てのコンピュータプログラムであって、コンピュータを
ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価することができ、
かつ前記評価に基づいてメモリを割当てるように機能させる、コンピュータプログラム。
【請求項９】
メモリ親和性を評価することが、ページフレームデマンドの正規化された尺度、すなわち前記ノードからのメモリ割当ての好ましさを表すメモリ親和性の重み付けされた係数に基づいて計算することをさらに含み、
かつメモリを割当てることが、メモリ親和性の前記重み付けされた係数に基づいて、メモリを割当てることをさらに含む、請求項８に記載のコンピュータプログラム。
【請求項１０】
前記評価に基づいてメモリを割当てることが、割当てられるメモリの総量の比率として、前記ノードからメモリを割当てることをさらに含む、請求項１２に記載のコンピュータプログラム。
【請求項１１】
前記評価に基づいてメモリを割当てることが、メモリ割当ての総数の比率として、前記ノードからメモリを割当てることをさらに含む、請求項８に記載のコンピュータプログラム。
【請求項１２】
ノードに対するメモリ親和性を評価することが、ページフォールトの正規化された尺度に基づいてメモリ親和性を評価することをさらに含む、請求項１２に記載のコンピュータプログラム。
【請求項１３】
ノードに対するメモリ親和性を評価することが、ページスワップの正規化された尺度に基づいてメモリ親和性を評価することをさらに含む、請求項８に記載のコンピュータプログラム。
【請求項１４】
ノードに対するメモリ親和性を評価することが、ページアウトの正規化された尺度に基づいてメモリ親和性を評価することをさらに含む、請求項８に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野はデータ処理であり、さらに詳細には、マルチノードコンピュータのメモリ割当てのための方法、装置、および製品である。
【背景技術】
【０００２】
１９４８年のＥＤＶＡＣコンピュータシステムの開発が、コンピュータ時代の始まりとしてよく引用される。その時以来、コンピュータシステムは、非常に複雑な装置に発展してきた。今日のコンピュータは、ＥＤＶＡＣのような初期のシステムに比較すると、はるかに高性能である。通常、コンピュータシステムは、ハードウェアおよびソフトウェア部品の組合せ、アプリケーションプログラム、オペレーティングシステム、プロセッサ、バス、メモリ、入出力装置などを含む。半導体プロセスおよびコンピュータアーキテクチャの進歩が、コンピュータの高性能化をますます推し進めるにつれて、ハードウェアの、より高い性能を駆使するために、より洗練されたコンピュータソフトウェアが発展し、その結果、ほんの２、３年前に比べても、今日のコンピュータシステムは、はるかに強力なものとなっている。
【０００３】
コンピュータシステムが、より高性能になるにつれて、コンピュータ設計が、モジュール式になることが多くなってきた。多くの場合、コンピュータシステムは、１つ以上のコンピュータプロセッサ、多数のメモリ、またはプロセッサとメモリの両方を含む複数のモジュラノードで実行される。複合コンピュータシステムは、多くのノード、およびノード間でデータを送受信する高性能のバス構造を含むことができる。
【０００４】
ノード上のプロセッサがノード上のメモリへアクセスするためのアクセス時間は、どのノードがプロセッサを含むか、およびどのノードがアクセスされるメモリを含むかによって変化する。プロセッサと同じノード上のメモリへのプロセッサのメモリアクセスは、異なったノード上のメモリへのプロセッサのメモリアクセスより、短時間で完了する。遠隔ノード上のメモリへのアクセスは、ノード間のより多くのコンピュータハードウェア、より多くのバス、バスドライバ、メモリコントローラなどを横断しなければならないため、同一ノード上のメモリへのアクセスの方が、より高速である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
プロセッサおよびメモリを含むノード間のコンピュータハードウェアセパレーションのレベルは、時に「メモリ親和性」、または単に「親和性」と呼ばれている。現在のコンピュータシステムでは、ノード上のプロセッサは、そのノード上のメモリに、他のノード上のメモリにアクセスするよりも速くアクセスできるため、ノードは、それ自体と最大のメモリ親和性を有すると考えられている。ハードウェアセパレーションのレベルが高まるにつれて、プロセッサを含むノードと、メモリが搭載されている単一のノードまたは複数のノードとの間のメモリ親和性は低下する。
【０００６】
下表の情報により特徴付けられたコンピュータシステムの例を考える。
【０００７】
【表１】
2007095072.tif 000003
【０００８】
表は、３つのノード、ノード０、１、および２を有するシステムについて記述しており、プロセッサ容量の比率は、システム全体に対する各ノードのプロセッサ容量を表し、記憶容量の比率は、システム全体に対する各ノード上に搭載されたランダムアクセスメモリの比率を表す。オペレーティングシステムは、メモリを、プロセッサと同じノード上のメモリのみからプロセッサ上のプロセスに割り当てて、親和性を強化できる。この例では、システム上のメモリの半分を有するノード０は、ノード０のプロセッサ上で実行中のプロセスの要求を満たす十分なメモリを有することが想定されるため、ノード０は親和性の強化により便益を得る。また、ノード０は、プロセッサと同じノード上のメモリへのアクセスが速いため、メモリ親和性の強化により便益を得る。
【０００９】
ノード１に対しては事情は異なる。システム上のメモリの５％のみを有するノード１は、ノード１のプロセッサ上で実行中のプロセスの要求を満たす十分なメモリを有しそうにない。親和性を強化する際に、実行処理のプロセスまたはスレッドが、ノード１上のプロセッサを制御するときはいつでも、プロセスまたはスレッドは、メモリをクリアするために、ディスクドライブへのＲＡＭのコンテンツの交換、およびプロセスの、またはスレッドのメモリのコンテンツの、ディスクからのローディングに直面することが想定され、これらは、‘スワッピング’または‘スラッシング’と呼ばれる非常に効率の悪い動作である。プロセッサのローカルノード上のメモリに対して親和性強化を完全にオフにすることにより、スラッシングを軽減できるが、親和性の強化なしで実行することにより、上述の例のノード０のような、よくバランスのとれたノード上のプロセッサとメモリの間の親和性強化の便益を失う。
【課題を解決するための手段】
【００１０】
ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して、その評価に基づいてメモリを割当てることにより、マルチノードコンピュータのメモリ割当てのスラッシングの危険を減少させる方法、装置、および製品が開示されている。本発明の実施形態のマルチノードコンピュータのメモリ割当ての評価は、ページフレームデマンドの正規化された尺度、すなわちノードからのメモリ割当ての好ましさ（ｄｅｓｉｒａｂｉｌｉｔｙ）を表すメモリ親和性の重み付けされた係数に基づいて計算することを含むことができ、メモリを割当てることは、メモリ親和性の重み付けされた係数に基づいて、メモリを割当てることを含むことができる。
【００１１】
本発明の、前述および他の目的、特徴、および利点が、添付図面で示されたような本発明の例示的な実施形態についての、下記のさらに具体的な説明から明らかとなるであろう。添付図面では、全体を通して、類似の参照番号は、本発明の例示的な実施形態の類似の部分を表す。
【発明を実施するための最良の形態】
【００１２】
図１からの添付図面を参照することにより、本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための例示的な方法、装置、および製品について説明されている。本発明のマルチノードコンピュータのメモリ割当ては、一般に、コンピュータで、すなわち、自動演算機械で実行される。したがって、詳細な説明のために、図１は、本発明の実施形態の、マルチノードコンピュータのメモリ割当てにおいて有用なコンピュータ例（１５２）を含む、自動演算機械のブロック図を示す。図１のコンピュータ（１５２）は、少なくとも１つのノード（２０２）を含む。ノードは、１つ以上のコンピュータプロセッサ、多数のメモリ、またはプロセッサとメモリの両方を含む、コンピュータハードウェアモジュールである。本明細書では、１つ以上のプロセッサを含むノードを‘プロセッサノード’と呼ぶことがあり、メモリを含むノードを‘メモリノード’と呼ぶことがある。多数のメモリと１つ以上のプロセッサの両方を含むノードは、状況に応じて、プロセッサノード、またはメモリノードと呼ぶことができる。図１のノード（２０２）は、少なくとも１つのコンピュータプロセッサ（１５６）または‘中央処理装置（ＣＰＵ）’とともに、メモリ管理装置（１６１）およびシステムバス（１６０）を介してプロセッサ（１５６）およびコンピュータの他の構成要素に接続されているランダムアクセスメモリ（１６８）（‘ＲＡＭ’）を含む。実際問題として、通常、本発明の実施形態のマルチノードコンピュータのメモリ割当てのためのシステムは、２つ以上のノード、２つ以上のコンピュータプロセッサ、および２つ以上のＲＡＭ回路を含む。
【００１３】
ＲＡＭ（１６８）には、アプリケーションプログラム（１５３）、ユーザレベルデータ処理のためのコンピュータプログラム命令が保存されている。また、ＲＡＭ（１６８）には、オペレーティングシステム（１５４）が保存されている。本発明の実施形態のコンピュータで有用なオペレーティングシステムとしては、ＵＮＩＸ（Ｒ）、Ｌｉｎｕｘ（Ｒ）、マイクロソフトＸＰ（Ｒ）、ＡＩＸ（Ｒ）、ＩＢＭのｉ５／ＯＳ（Ｒ）、および当業者が想起するであろうような他のオペレーティングシステムなどがある。オペレーティングシステム（１５４）は、アプリケーションプログラム（１５３）のインスタンス、またはオペレーティングシステム（１５４）の他の構成要素に、プロセッサおよび物理メモリのようなシステム資源を割当てるカーネル（１５７）と呼ばれるコア構成要素を含む。図１の方法では、カーネル（１５７）を含むオペレーティングシステム（１５４）は、ＲＡＭ（１６８）の中に示されているが、通常、このようなソフトウェアの多くの構成要素は、不揮発性メモリ（１６６）の中にも保存される。
【００１４】
図１のオペレーティングシステム（１５４）は、ローダ（１５８）を含む。ローダ（１５８）は、実行可能プログラムを、例えば、ディスクドライブ、テープ、またはネットワーク接続のようなロード資源からロードするコンピュータプログラム命令のモジュールであり、‘プロセス’と呼ばれる実行可能プログラムの実行インスタンスを作成する。ローダは、実行可能ファイルのメタデータを読み込んで、かつインタプリト処理し、プロセスにメモリを割当て、実行可能ファイルのコードおよびデータセグメントをメモリにロードし、実行処理のために、通常、スケジューラのレディキューに新プロセスの識別記号を置くことにより、オペレーティングシステムのスケジューラにプロセスを登録する。この例では、ローダ（１５８）は、本発明の実施形態に基づいて改良されたコンピュータプログラム命令のモジュールであり、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して、その評価に基づいてメモリを割当てることにより、マルチノードコンピュータのメモリを割当てる。
【００１５】
ページフレームデマンドは、ランダムアクセスメモリに対するプロセスのメモリ割当て要求、すなわち、プロセスで使用するためのページフレームである。ページフレームは、プロセッサ上で実行処理中のプロセスに関連するページテーブルの中の仮想メモリのページに、空きフレームを写像することにより割当てられる。したがって、例えば、ページフォールト、ページスワップ、またはページアウトをカウントするように、一般に、仮想メモリのページに物理メモリのページフレームを写像するアクティビティを測定することにより、ページフレームデマンドを測定できる。
【００１６】
図１のオペレーティングシステム（１５４）は、メモリ割当てモジュール（１５９）を含む。図１のメモリ割当てモジュール（１５９）は、コンピュータプログラム命令のモジュールであり、このモジュールは、アプリケーションプログラムおよびオペレーティングシステムの他の構成要素が、動的に割当てを行い、再割当てを行い、または前に割当てられたメモリを解放することができるアプリケーションプログラミングインタフェース（‘ＡＰＩ’）を提供する。例えば、‘ｍａｌｌｏｃ（）’、‘ｒｅａｌｌｏｃ（）’、および‘ｆｒｅｅ（）’のような、メモリ割当てモジュール（１５９）のＡＰＩへの関数コールは、プログラムの実行処理中の動的メモリ割当て要求を満たす。この例では、メモリ割当てモジュール（１５９）は、本発明の実施形態に基づいて改良されたコンピュータプログラム命令のモジュールであり、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して、その評価に基づいてメモリを割当てることにより、マルチノードコンピュータのメモリを割当てる。
【００１７】
また、ＲＡＭ（１６８）には、コンピュータシステムの仮想メモリアドレス空間を、図１のシステムの物理メモリアドレス空間に写像するページテーブル（４３２）が保存されている。仮想メモリアドレス空間は、‘ページ’と呼ばれる固定サイズブロックに分けられ、他方、物理メモリアドレス空間は、‘ページフレーム’と呼ばれる同一サイズのブロックに分けられる。仮想メモリアドレス空間は、コンピュータシステムに搭載された実際の物理メモリ量よりはるかに大きい場合がある、常駐するためのメモリブロックを有するプロセスのスレッドを提供する。プロセスのスレッドは、隣接する仮想メモリのセグメントに存在するが、プロセスの命令およびデータを含む実際の物理メモリは、物理メモリ空間の全体に渡って細分されうる。スレッドの実行処理中に仮想メモリのページの参照が起こると、メモリ管理装置（１６１）は、参照をなすプログラムと関連するページテーブル（４３２）の中の物理メモリの対応するページフレームを調べる。図１のページテーブル（４３２）をプロセスと関連づけて、いくつかのオペレーティングシステムは、各プロセスに対するページテーブル（４３２）を保持し、他のオペレーティングシステムは、各プロセスに、システム全体に対して保持された１つの大きいページテーブル（４３２）の一部を割当てることができる。
【００１８】
プロセスに対するページテーブル（４３２）を新規作成し、拡張し、または変更するとき、オペレーティングシステム（１５４）は、物理メモリのページフレームをページテーブル（４３２）の中のページに割当てる。オペレーティングシステム（１５４）は、割当てられていないページフレームを捜し出して、ページフレームテーブル（４２４）を介してページテーブル（４３２）に割当てる。ページフレームテーブル（４２４）は、ＲＡＭ（１６８）に保存されており、図１のシステムの物理メモリのページフレームに関する情報を示す。図１のページフレームテーブル（４２４）をノード上のメモリのページフレームと関連づけて、いくつかのオペレーティングシステムは、ノード上のすべての割当てられていないページフレームのリストを含む各ノードに対するページフレームテーブル（４２４）を保持でき、他のオペレーティングシステムは、すべてのノードのすべてのページフレームに関する情報を含むシステム全体に対する１つの大きいページフレームテーブル（４２４）を保持できる。ページフレームテーブル（４２４）は、ページフレームが仮想メモリ空間の中のページに写像されているかどうかを示す。ページに写像されていないページフレームは、割当てられていないため、コードおよびデータを保存するために、プロセスがメモリ割当てを必要とするとき、利用可能である。
【００１９】
また、ＲＡＭ（１６８）には、プロセッサノードとメモリノードの間のメモリ親和性の評価を示すメモリ親和性テーブル（４０２）が保存されている。メモリ親和性は、メモリノードからプロセッサノード上で実行中のプロセスへメモリを割当てる好ましさの尺度である。メモリ親和性の高い評価は、物理的に非常に近接したプロセッサノードとメモリノードの間で生じうるが、その理由は、プロセッサノードとのメモリ親和性の高いノードに書き込まれたデータ、またはプロセッサノードとのメモリ親和性の高いノードから読み取られたデータは、このような高親和性メモリノードへの移動、またはこのような高親和性メモリノードからの移動の際に、より少数のコンピュータハードウェア、より少数のメモリコントローラ、およびより少数のバスドライバを横断するためである。さらに、比較的低いページフレームデマンドを有するメモリノードに対して、メモリ親和性を高く評価できる。例えば、プロセッサノードに対する同程度の物理的近接を有する他のメモリノードより低いページフレームデマンドを有するメモリノードは、プロセッサノードに関して、他のメモリノードより高いメモリ親和性の評価を有することができる。この例は、説明のためのものであり、限定を意図していない。実際に、プロセッサノードに対する物理的近接にかかわらず、他のメモリノードより低いページフレームデマンドを有するメモリノードは、他のメモリノードより高いメモリ親和性の評価を割当てられうる。
【００２０】
図１のコンピュータ（１５２）は、システムバス（１６０）を介して、プロセッサ（１５６）、およびコンピュータ（１５２）の他の構成要素と接続された不揮発性コンピュータメモリ（１６６）を含む。不揮発性コンピュータメモリ（１６６）を、ハードディスクドライブ（１７０）、光ディスクドライブ（１７２）、電気消去可能プログラマブル読み出し専用メモリスペース（いわゆる‘ＥＥＰＲＯＭ’または‘フラッシュ’メモリ）（１７４）、ＲＡＭドライブ（図示せず）として、または当業者が想起するであろうような任意の他の種類のコンピュータメモリとして実現することができる。図１のシステムの中のページテーブル（４３２）、ページフレームテーブル（４２４）、メモリ親和性テーブル（４０２）、オペレーティングシステム（１５４）、およびアプリケーションプログラム（１５３）は、ＲＡＭ（１６８）の中に示されているが、通常、このようなソフトウェアの多くの構成要素は、不揮発性メモリ（１６６）の中にも保存される。
【００２１】
図１のコンピュータ例は、１つ以上の入出力インタフェースアダプタ（１７８）を含む。コンピュータの入出力インタフェースアダプタは、コンピュータディスプレイ画面のような表示装置（１８０）への出力とともに、キーボードおよびマウスのようなユーザ入力装置（１８１）からのユーザ入力を制御する、例えば、ソフトウェアドライバおよびコンピュータハードウェアを介して、利用者指向の入出力を実行する。
【００２２】
図１のコンピュータ例（１５２）は、他のコンピュータ（１８２）とのデータ通信（１８４）を実行する通信アダプタ（１６７）を含む。このようなデータ通信は、ＲＳ−２３２接続を介して、ＵＳＢのような外部バスを介して、ＩＰネットワークのようなデータ通信網を介して、および当業者が想起するであろうような他の方法で、シリアルに実行されうる。通信アダプタは、１つのコンピュータが、直接にまたはネットワークを介して、他のコンピュータにデータ通信を送出するためのデータ通信のハードウェアレベルを実現する。本発明の実施形態に基づく、送出先の可用性を判定するために有用な通信アダプタの例としては、有線ダイヤルアップ通信用モデム、有線ネットワーク通信用イーサネット（ＩＥＥＥ８０２．３）アダプタ、および無線ネットワーク通信用８０２．１１ｂアダプタなどがある。
【００２３】
詳細な説明のために、図２は、マルチノードコンピュータのメモリ割当てのための、別のコンピュータ例（１５２）のブロック図を示す。図２のシステムは、バックプレーン（２０６）上に搭載されたノード（２０２）に含まれた、‘メモリチップ’（２０５）と呼ばれるメモリ集積回路として実装されたランダムアクセスメモリを含み、各バックプレーンは、システムバス（１６０）を介して、コンピュータ（１５２）の他の構成要素と接続されている。また、ノード（２０２）は、同様に、ノード上に搭載された集積回路の形のコンピュータプロセッサ（２０４）を含むことができる。バックプレーン上のノードは、データ通信のために、バックプレーンバス（２１２）を介して接続されており、ノード上のプロセッサチップおよびメモリチップは、データ通信のために、ノードバスを介して接続されており、このノードバスは、ノード（２２１）の図を拡大表示するノード（２２２）上に、参照番号（２１０）で示されている。
【００２４】
ノードは、例えば、マルチチップモジュール（‘ＭＣＭ’）として実装できる。ＭＣＭは、電子システム、または２つ以上の露出した集積回路（ベア・ダイ、ｂａｒｅ  ｄｉｅ）を有するサブシステム、または基板上に取り付けられた‘チップサイズのパッケージ’である。図２の方法では、ＭＣＭのチップは、コンピュータプロセッサおよびコンピュータメモリである。基板は、例えば、プリント基板、もしくは配線パターンを有するセラミックまたはシリコンの厚膜または薄膜でありうる。基板は、ＭＣＭパッケージの主要部分であってもよく、またはＭＣＭパッケージの中にマウントされてもよい。ＭＣＭは、それが特定用途向け集積回路（‘ＡＳＩＣｓ’）とプリント基板の間のパッケージレベルを表すため、コンピュータハードウェアアーキテクチャにおいて有用である。
【００２５】
図２のノードは、ハードウェアメモリ分割またはメモリ親和性のレベルを図解する。ノード（２２２）上のプロセッサ（２１４）は、以下の物理メモリにアクセスできる。
・メモリチップにアクセスするプロセッサ（２１４）と同じノード上のメモリチップ（２１６）の中にある物理メモリ
・同じバックプレーン（２０８）上の他のノード上のメモリチップ（２１８）の中にある物理メモリ
・または他のバックプレーン（２０６）上の他のノード上のメモリチップ（２２０）の中にある物理メモリ。
【００２６】
メモリチップ（２１６）は、プロセッサ（２１４）と同じノード上にあるため、プロセッサ（２１４）に関して‘ローカル’と呼ばれる。しかしながら、メモリチップ（２１８および２２０）は、プロセッサ（２１４）と異なったノード上にあるため、プロセッサ（２１４）に関して‘リモート’と呼ばれる。
【００２７】
同じバックプレーン上のリモートメモリへのアクセスは、ローカルメモリにアクセスするよりも長い時間がかかる。プロセッサによりリモートメモリに書き込まれた、またはプロセッサによりリモートメモリから読み取られたデータは、リモートメモリへ移動する際に、またはリモートメモリから移動する際に、より多くのコンピュータハードウェア、より多くのメモリコントローラ、およびより多くのバスドライバを横断する。同じ理由で、他のバックプレーン上のメモリに遠隔でアクセスするには、さらに長い時間がかかる。
【００２８】
ローカルメモリは、利用可能な最も速いメモリアクセスを提供するため、プロセッサノードを、ページフレームデマンドを問わず、それ自体と最も高いメモリ親和性を有すると見なせることに注目することは説明のために有用である。ローカルメモリ上にデータを保存する、または検索するときのアクセス時間が速いことは、メモリアクセスを要求するプロセスを実行中のプロセッサを含む、同じノードからのメモリ割当ての好ましさを高めうる。
【００２９】
しかしながら、メモリ親和性の評価がページフレームデマンドを含むとき、プロセッサノードは、それ自体と最も高いメモリ親和性を有することができない。プロセッサを含むノードが、少量の搭載されたメモリのみを有するとき、割当てられていないページフレームをほとんど有しないとき、または他の何らかの理由で、比較的高いページフレームデマンドを有するとき、このようなプロセッサノードは、それ自体に対するよりも、他のノードに対して、より高いメモリ親和性を有しうる。
【００３０】
図２のコンピュータシステムに対して説明されたコンピュータアーキテクチャは、説明のためのものであり、本発明の限定を意図していない。当業者が想起するであろうような他のアーキテクチャもまた、マルチノードコンピュータにおけるメモリ割当てを実行するために有用でありうる。本発明の実施形態に基づき、例えば、バックプレーンに接続されたプリント基板に搭載されたいくつかのノードを用いて、それにより、図２に示されないメモリ親和性の付加的なレベルを生じさせて、マルチノードコンピュータにおけるメモリ割当てを実行できる。当業者が想起するであろうような他のアーキテクチャもまた、マルチノードコンピュータにおけるメモリ割当てを実行するために有用でありうるとともに、このようなすべてのアーキテクチャは、充分に本発明の範囲にある。
【００３１】
詳細な説明のために、図３は、本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための方法例を図解するフローチャートを示しており、この方法例は、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して（４００）、その評価に基づいてメモリを割当てること（４１０）を含む。
【００３２】
図３の方法では、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価すること（４００）は、メモリ親和性の重み付けされた係数（５０２）を計算すること（５００）を含む。メモリ親和性の重み付けされた係数（５０２）は、ノードからのメモリ割当ての好ましさを示す。図３の方法では、メモリ親和性の重み付けされた係数（５０２）の計算（５００）は、ページフレームデマンドの正規化された尺度（５０１）に基づいて実行される。上述したように、ページフレームデマンドは、プロセスで使用するページフレームに対するプロセスのメモリ割当て要求であり、一般に、物理メモリのページフレームを仮想メモリのページに写像するアクティビティを、所定の時間内において測定することにより、測定することができる。ページフレームデマンドの正規化された尺度（５０１）は、例えば、他のノード上に搭載されたメモリとシステムのすべてのノード上に搭載されたメモリの比率のような正規化係数で乗じた、所定の時間間隔内に発生する、ノードのページフレームに対するページフレームデマンドとして計算できる。ページフォールト、ページスワップ、ページアウト、および当業者が想起するであろうような他の方法を用いて、ページフレームデマンドを特徴付けることができる。
【００３３】
参照番号（４０２）で示されたようなメモリ親和性テーブルの中に、メモリ親和性（５０２）の重み付けされた係数を保存することにより、ページフレームデマンドの正規化された尺度（５０１）に基づいた、図３の方法のメモリ親和性の重み付けされた係数（５０２）の計算（５００）を実行することができる。メモリ親和性テーブル（４０２）の各記録は、メモリノード（４０４）のメモリ親和性（５０２）の重み付けされた係数をプロセッサノード（４０３）に指定する。図示されたように、プロセッサノード０は、メモリノード０に対して０．１５のメモリ親和性係数を有しており、すなわち、プロセッサノード０のそれ自体とのメモリ親和性係数は、０．１５である。プロセッサノード０のメモリノード１に対するメモリ親和性係数は、０．５５である。以下同様。
【００３４】
メモリ親和性テーブル（４０２）におけるメモリ親和性（５０２）の評価は、メモリ親和性（５０２）の重み付けされた係数である。メモリ親和性（５０２）の重み付けされた係数がより低いほど、メモリ親和性の評価がより高いことを示す。０．３５の重み付けされた係数は、０．６５の重み付けされた係数よりも高いメモリ親和性の評価を示す。０．６５の重み付けされた係数は、１．２５の重み付けされた係数よりも高いメモリ親和性の評価を示す。以下同様であり、最も低いメモリ親和性の重み付けされた係数は、プロセッサノードに対して最も高いメモリ親和性の評価を有するメモリノードに対応し、最も高いメモリ親和性の重み付けされた係数は、プロセッサノードに対して最も低いメモリ親和性の評価を有するメモリノードに対応する。
【００３５】
この例における評価されたメモリ親和性の欠如は、テーブル（４０２）のメモリ親和性（５０２）に対するヌルエントリで示される。完全性のために、システムのすべてのノードの中のメモリ親和性が、テーブル（４０２）に示されているが、プロセッサノードと、メモリを全く搭載していない他のノードとの間には、メモリ親和性に関する意味のある表示はない。このような意味のないメモリ親和性の関係は、２つのノードの間のメモリ親和性に対するヌルエントリで示されている。この例では、プロセッサノード１とメモリノード３の間には評価されたメモリ親和性がなく、‘ヌル’エントリで示されている。このようなヌルエントリが存在しうる理由は、プロセッサノードが大きい比率のシステムメモリを有しており、他のノードからのメモリを全く必要としないためであったり、説明のために‘メモリノード’と名付けられた‘メモリノード’が、実際にはメモリを全く含んでいないためであったり、および当業者が想起するであろうような他の理由のためである。
【００３６】
図３の方法は、メモリ親和性の評価に基づいて、メモリを割当てること（４１０）により継続する。この例では、メモリ親和性の評価は、テーブル（４０２）のメモリ親和性（５０２）の重み付けされた係数により示されている。図３の方法の、メモリ親和性の評価に基づいてメモリを割当てること（４１０）は、メモリ親和性の重み付けされた係数に基づいてメモリを割当てること（５１０）を含む。図３の方法では、メモリ親和性の重み付けされた係数に基づいてメモリを割当てること（５１０）は、プロセッサノードに対して、すなわち、メモリを割当てられるプロセッサノードに対して、評価された親和性を有するシステムの中のメモリノードがあるかどうかを判断すること（４１２）を含む。図３の例では、プロセッサノードに対して、評価された親和性を有するシステムの中のメモリノードがあるかどうかを判断すること（４１２）は、メモリを割当てられる特定のプロセッサノードに対して、テーブルの中の評価された親和性があるかどうか、すなわち、テーブル（４０２）の中に非ヌルエントリがあるかどうかを判断することにより実行できる。
【００３７】
プロセッサノードとの評価された親和性を有するシステムの中のメモリノードがないとき、図３の方法は、メモリ親和性にかかわらず、システム上の何処かで利用可能な任意の空きページフレームを割当てること（４１４）を含む。例えば、メモリ親和性テーブル（４０２）の中のプロセッサノード１は、メモリノードに対する評価された親和性を全く有さず、テーブル（４０２）の中のプロセッサノード１に対する各エントリの欄（５０２）において、ヌル値で示されており、プロセッサノード１に対するメモリの割当ては、位置にかかわらずシステムメモリのどこかの任意の空きページフレームからもありうる。
【００３８】
プロセッサノードとの評価された親和性を有するシステムの中のメモリノードがあるとき、図３の方法は、最も低いメモリ親和性の重み付けされた係数（５０２）を有するメモリノードを特定すること（５２０）により継続して、そのノードが、割当てられていないページフレームを有するとき、図３の方法は、ページテーブル（４３２）の中のそのメモリノードからメモリのページフレームのページフレーム番号（４２８）を保存すること（４３０）で、そのノードからメモリを割当てることにより継続する。上述したように、メモリ親和性（５０２）の重み付けされた係数がより低いほど、メモリ親和性の評価がより高いことを示す。ページテーブル（４３２）の各記録は、ページ番号（４３６）とページフレーム番号（４３４）を関連づける。図３の方法に基づいて、メモリ親和性の最も低い重み付けされた係数（５０２）を有するメモリノードからのページフレームを示すページフレーム番号‘１５９３’が、矢印（４４０）で示されたページテーブル（４３２）のページ番号‘１３４８’に割当てられた。
【００３９】
最も低いメモリ親和性（５０２）の重み付けされた係数を有するメモリノードが、割当てられていないページフレームを有しないとき、図３の方法は、メモリ親和性テーブル（４０２）から、そのノードに対するエントリを除去すること（５２５）により継続して、プロセッサノードとの評価された親和性を有するシステムの中のメモリノードがあるかどうかを判断すること（４１２）、メモリ親和性（５０２）の最も低い重み付けされた係数を有するメモリノードを特定すること（５２０）などを再び繰り返す。
【００４０】
最も低いメモリ親和性（５０２）の重み付けされた係数を有するノードが、割当てられていないページフレームを有するかどうかは、例えば、図３において参照番号（４２４）で示したフレームテーブルのようなページフレームテーブルを用いて判断されうる（４２２）。ページフレームテーブル（４２４）の各記録は、ページフレーム番号（４２８）により特定されたメモリフレームを示し、割当てフラグ（４２６）で、ページフレームが割当てられているかどうかを明示する。割当てられたページフレームは、‘１’に設定された対応する割当てフラグを有し、空きページフレームの割当てフラグは、‘０’に再初期設定される。このようなページフレームテーブル（４２４）からページフレームを割当てることは、ページフレームの割り当てフラグを‘１’に設定することを含む。図３のページフレームテーブル（４２４）では、ページフレーム番号‘１５９１’、‘１５９２’、および‘１５９４’が、割当てられている。しかしながら、ページフレーム番号‘１５９３’は、割当てられていないまま残っている。
【００４１】
割当てられる空き状態のページフレームのページフレーム番号だけを含む‘空きページフレームテーブル’として、ページフレームテーブルの他の形式を実施できる。空きページフレームテーブルからページフレームを割当てることは、空きページフレームテーブルから、割当てられたページフレームのページフレーム番号を削除することを含む。ページフレームテーブルの他の形式、空き状態のおよび割当てられたページフレームについて表示する方法は、当業者が想起することができ、このようなすべての形式は、充分に本発明の範囲にある。
【００４２】
詳細な説明のために、図４は、本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートを示しており、この方法例は、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価し（４００）、その評価に基づいてメモリを割当てること（４１０）を含む。図３の方法について上述したように、図４の方法の、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価すること（４００）は、ページフレームデマンド（５０１）の正規化された尺度、すなわちノードからのメモリ割当ての好ましさを表すメモリ親和性の重み付けされた係数（５０２）に基づいて計算し、メモリ親和性テーブル（４０２）にメモリ親和性（５０２）の重み付けされた係数を保存することにより実行できる。メモリ親和性テーブル（４０２）の各記録は、メモリノード（４０４）に対するメモリ親和性の評価（５０２）をプロセッサノード（４０３）に指定する。メモリ親和性テーブル（４０２）におけるメモリ親和性（５０２）の評価は、割当てられるメモリの総量の比率を示す、メモリ親和性の重み付けされた係数である。
【００４３】
また、図４の方法は、メモリ親和性の評価に基づいて、すなわち、メモリ親和性（５０２）の重み付けされた係数に基づいて、メモリを割当てること（４１０）を含む。図４の方法の評価に基づいてメモリを割当てること（４１０）は、割当てられるメモリの総量の比率として、ノードからメモリを割当てること（６１０）を含む。割当てられるメモリの総量の比率として、ノードからメモリを割当てること（６１０）は、プロセッサノードに対して、割当てられるメモリの総量の比率として、ノードからメモリを割当てることにより実行できる。割当てられるメモリの総量は、例えば、割当てられる次の５メガバイトのように、割当て用のメモリの所定量として特定できる。
【００４４】
図４の方法の、割当てられるメモリの総量の比率として、ノードからメモリを割当てること（６１０）は、ノードに対するメモリ親和性（５０２）の重み付けされた係数から、割当てられるメモリの総量の比率（６２４）を計算すること（６１２）を含む。評価された親和性を有するメモリノードから割当てられるメモリの総量の比率（６２４）は、プロセッサノードに対するメモリノードのメモリ親和性（５０２）の重み付けされた係数の値の、プロセッサノードに対する評価された親和性を有するメモリノードに対するメモリ親和性（５０２）のすべての重み付けされた係数の合計値との割合と、割当てられるメモリの総量との積として計算できる。例えば、テーブル（４０２）のプロセッサノード０に対して、プロセッサノード０との評価された親和性を有する、メモリノードに対するメモリ親和性のすべての重み付けされた係数の合計（すなわち、メモリノード０、１、および２に対する）は、１．５である。図４の例の５メガバイトの割当てられるメモリの総量を用いて、メモリノード０、１、および２のそれぞれに関連するノードのメモリから割当てられるメモリの総量の比率（６２４）は、以下のように計算できる。
・ノード０：（０．７５のノード０に対する評価されたメモリ親和性）÷（１．５の評価されたメモリ親和性の合計）×５ＭＢ＝２．５ＭＢ
・ノード１：（０．６０のノード１に対する評価されたメモリ親和性）÷（１．５の評価されたメモリ親和性の合計）×５ＭＢ＝２．０ＭＢ
・ノード２：（０．１５のノード０に対する評価されたメモリ親和性）÷（１．５の評価されたメモリ親和性の合計）×５ＭＢ＝０．５ＭＢ
【００４５】
この例では、図４の方法の、割当てられる５ＭＢのメモリの総量の比率として、ノードからメモリを割当てること（６１０）は、プロセッサノード０に対して次の５ＭＢを割当てることにより、すなわち、ノード０から５ＭＢの割当てのうちの最初の２．５ＭＢ、ノード１から次の２．０ＭＢ、およびノード２から５ＭＢの割当てのうちの最後の０．５ＭＢを割当てることにより実行できる。このようなすべての割当ては、メモリノードのページフレームの可用性の制約を受ける。また、特に図４の例では、割当てられるメモリの総量の比率として、ノードからメモリを割当てること（６１０）は、ページフレーム可用性に従って、ノード上のメモリから割当てられるメモリの総量の比率（６２４）を割当てること（６３０）を含む。割当てられていないページフレームがメモリノード上に存在するかどうかは、ページフレームテーブル（４２４）を用いて判断されうる。ページフレームテーブル（４２４）は、メモリノードのページフレームに対するページフレーム番号（４２８）を、メモリのページフレームが割当てられているかどうかを示す割当てフラグ（４２６）と関連づける。
【００４６】
図４の方法の、メモリの総量の比率（６２４）を割当てること（６３０）は、割当てられるメモリの総量の比率（６２４）を割当てるために、必要とされるページフレーム数を計算することを含むことができる。必要とされるページフレーム数を計算することは、ページフレームサイズを、割当てられるメモリの総量の比率（６２４）に分割することにより達成できる。上述の計算例を続けて行うと、プロセッサノード０に対する評価された親和性を有する、メモリノードに対するメモリ親和性のすべての重み付けされた係数の合計は、１．５であり、割当てられるメモリの総量は、５メガバイトであり、ノード０、１、および２から割当てられるメモリの総量の比率は、それぞれ２．５ＭＢ、２．０ＭＢ、および０．５ＭＢであり、ページフレームサイズを２ＫＢとすると、そのとき、ノード０、１、および２から割当てられるページフレーム数は、以下のように計算できる。
・ノード０：２．５ＭＢ÷２ＫＢ／ページフレーム＝１２８０ページフレーム
・ノード１：２．０ＭＢ÷２ＫＢ／ページフレーム＝１０２４ページフレーム
・ノード２：０．５ＭＢ÷２ＫＢ／ページフレーム＝２５６ページフレーム
【００４７】
また、図４の方法の、計算されたメモリの総量の比率（６２４）を割当てること（６３０）は、メモリノードから割当てられる計算されたメモリの総量の比率（６２４）を割当てるために、必要とされるページフレーム数まで（必要とされるページフレーム数を含む）、メモリノードからすべての割当てられていないページフレームのページフレーム番号（４２８）を、プロセッサノード上で実行中のプロセスのページテーブル（４３２）に保存することにより実行できる。図４のページテーブル（４３２）の各記録は、メモリノード上のページフレームのページフレーム番号（４３４）を、プロセッサノード上で実行中のプロセスに割当てられた仮想メモリ空間の中のページ番号（４３６）と関連づける。したがって、図４の例では、メモリ親和性（５０２）の最も低い重み付けされた係数を有するメモリノードからのページフレームを示すページフレーム番号‘１５９３’が、矢印（４４０）で示されたページテーブル（４３２）のページ番号‘１３４８’に割当てられた。
【００４８】
メモリノードから割当てられるメモリの総量の比率（６２４）を割当てるために、必要とされるページフレーム数を割当てた後、またはメモリノードからすべての割当てられていないページフレームを割当てた後、これらのどちらが最初に行われるにせよ、図４の方法において、メモリノードに関連するメモリ親和性テーブル（４０２）の中の次のエントリに戻り、再び、ノードに対するメモリ親和性（５０２）の重み付けされた係数から、割当てられるメモリの総量の比率を計算し（６１２）、ページフレーム可用性に従って、ノード上のメモリから割当てられるメモリの総量の比率（６２４）を割当てて（６３０）、以下同様の操作を、多数のメモリを割当てられるプロセッサノードに対して、評価されたメモリ親和性（５０２）を有する各メモリノードに対する割当てられるメモリの総量の比率（６２４）の割当てが行われるまで、ページフレーム可用性に従って継続する（６３２）。多数のメモリを割当てられるプロセッサノードに対して、評価されたメモリ親和性（５０２）を有する各メモリノードに対する割当てられるメモリの総量の比率（６２４）を、ページフレーム可用性に従って割当てるとき、メモリ親和性にかかわらず、システム上のどこにあるメモリからも、図４の方法に基づいて、割当てられないまま残っている割当ての総数のうちの任意の部分を充足させることができる。
【００４９】
詳細な説明のために、図５は、本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートを示しており、この方法例は、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して（４００）、その評価に基づいてメモリを割当てること（４１０）を含む。図３の方法について上述したように、図５の方法に基づいてノードの中のメモリ親和性を評価すること（４００）は、システムパラメータに基づいて、各プロセッサノードに対する各メモリノードのメモリ親和性（５０２）の重み付けされた係数を計算して、メモリ親和性テーブル（４０２）にメモリ親和性（５０２）の重み付けされた係数を保存することにより実行できる。メモリ親和性テーブル（４０２）の各記録は、メモリノード（４０４）に対するメモリ親和性の評価（５０２）をプロセッサノード（４０３）に指定する。メモリ親和性テーブル（４０２）におけるメモリ親和性（５０２）の評価は、プロセッサノードに対して、すなわち、プロセッサノード上で実行中のプロセスに対して、メモリノードから割当てられるメモリ割当ての総数の比率を示すメモリ親和性（５０２）の重み付けされた係数である。
【００５０】
また、図５の方法は、メモリ親和性の評価に基づいて、すなわち、メモリ親和性（５０２）の重み付けされた係数に基づいて、メモリを割当てること（４１０）を含む。図５の方法の評価に基づいてメモリを割当てること（４１０）は、メモリ割当ての総数の比率として、ノードからメモリを割当てること（７１０）を含む。メモリ割当ての総数の比率として、ノードからメモリを割当てること（７１０）は、プロセッサノードに対して、メモリ割当ての総数の比率として、ノードからメモリを割当てることにより実行できる。図５の方法に基づいて、メモリ割当ての総数は、例えば、プロセッサノードに対するメモリの次の５００の割当て、すなわち、プロセッサノード上で実行中のプロセスに対する次の５００の割当てのように、メモリ割当ての所定数として特定できる。
【００５１】
図５の方法の、メモリ割当ての総数の比率として、ノードからメモリを割当てること（７１０）は、ノードに対するメモリ親和性（５０２）の重み付けされた係数から、メモリ割当ての総数の比率（７２４）を計算すること（７１２）を含む。評価された親和性を有するメモリノードからのメモリ割当ての総数の比率（７２４）は、プロセッサノードに対するメモリノードのメモリ親和性（５０２）の重み付けされた係数の値の、プロセッサノードに対する評価された親和性を有するメモリノードに対するメモリ親和性（５０２）のすべての重み付けされた係数の合計値との割合と、メモリ割当ての総数との積として計算できる。例えば、テーブル（４０２）のプロセッサノード０に対して、プロセッサノード０（すなわち、メモリノード０、１、および２に対する）との評価された親和性を有する、メモリノードに対する親和性のすべての重み付けされた係数の合計は、１．５である。図５の例の５００の割当てのメモリ割当ての総数を用いて、メモリノード０、１、および２のそれぞれから、プロセッサノード０に対するメモリ割当ての総数の比率（７２４）は、以下のように計算できる。
・ノード０：（０．７５のノード０に対する評価されたメモリ親和性）÷（１．５の評価されたメモリ親和性の合計）×５００割当て＝２５０割当て
・ノード１：（０．６０のノード１に対する評価されたメモリ親和性）÷（１．５の評価されたメモリ親和性の合計）×５００割当て＝２００割当て
・ノード２：（０．１５のノード０に対する評価されたメモリ親和性）÷（１．５の評価されたメモリ親和性の合計）×５００割当て＝５０割当て
【００５２】
この例では、図５の方法の、５００のメモリ割当ての総数の比率として、ノードからメモリを割当てること（７１０）は、プロセッサノード０に対して次の５００割当てを割当てることにより、すなわち、ノード０から５００割当てのうちの最初の２５０、ノード１から次の２００割当て、およびノード２から５００のうちの最後の５０を割当てることにより実行できる。このようなすべての割当ては、メモリノードのページフレームの可用性の制約を受けるとともに、このようなすべての割当ては、割当てられたメモリ量に関係なく実行される。また、特に図５の例では、メモリ割当ての総数の比率として、ノードからメモリを割当てること（７１０）は、ページフレーム可用性に従って、ノード上のメモリからメモリ割当ての総数の比率（７２４）を割当てること（７３０）を含む。割当てられていないページフレームがメモリノード上に存在するかどうかは、ページフレームテーブル（４２４）を用いて判断されうる。ページフレームテーブル（４２４）は、メモリノードのページフレームに対するページフレーム番号（４２８）を、メモリのページフレームが割当てられているかどうかを示す割当てフラグ（４２６）と関連づける。
【００５３】
図５の方法の、メモリ割当ての総数の比率（７２４）を割当てること（７３０）は、メモリノードに対するメモリ割当ての総数の比率（７２４）まで（メモリノードに対するメモリ割当ての総数の比率（７２４）を含む）、メモリノードからすべての割当てられていないページフレームのページフレーム番号（４２８）を、プロセッサノード上で実行中のプロセスに対するページテーブル（４３２）に保存することにより実行できる。図５のページテーブル（４３２）の各記録は、メモリノード上のページフレームのページフレーム番号（４３４）を、プロセッサノード上で実行中のプロセスに割当てられた仮想メモリ空間の中のページ番号（４３６）と関連づける。したがって、図５の例では、プロセッサノードに対する評価されたメモリ親和性（ここでは、重み付けされたメモリ親和性）を有するメモリノードからのページフレームを示すページフレーム番号‘１５９３’が、矢印（４４０）で示されたページテーブル（４３２）のページ番号‘１３４８’に割当てられた。
【００５４】
メモリノードからメモリ割当ての総数の比率（７２４）を割当てた後、またはメモリノードからすべての割当てられていないページフレームを割当てた後、これらのどちらが最初に行われるにせよ、図５の方法において、メモリノードに関連するメモリ親和性テーブル（４０２）の中の次のエントリに戻り、再び、ノードに対するメモリ親和性（５０２）の重み付けされた係数から、メモリ割当ての総数の比率（７２４）を計算し（７１２）、ページフレーム可用性に従って、ノード上のメモリから計算されたメモリ割当ての総数の比率（７２４）を割当て（７３０）、以下同様の操作を、メモリを割当てられるプロセッサノードに対して、評価されたメモリ親和性（５０２）を有する各メモリノードに対するメモリ割当ての総数の比率（７２４）の割当てが行われるまで、ページフレーム可用性に従って継続する（７３２）。メモリを割当てられるプロセッサノードに対して、評価されたメモリ親和性（５０２）を有する各メモリノードに対するメモリ割当ての総数の比率（７２４）を、ページフレーム可用性に従って割当てるとき、メモリ親和性にかかわらず、システム上のどこにあるメモリからも、図５の方法に基づいて、割当てられないまま残っている割当ての総数のうちの任意の部分を充足させることができる。
【００５５】
詳細な説明のために、図６は、本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートを示しており、この方法例は、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して（４００）、その評価に基づいてメモリを割当てること（４１０）を含む。図６の方法の、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価すること（４００）は、ページフォールトの正規化された尺度に基づいてメモリ親和性を評価すること（８００）を含む。ページフォールトは、ＲＡＭのページフレームに写像されていない仮想メモリの中のページへのメモリアクセスに対するプロセスからの要求に呼応して、メモリ管理装置（‘ＭＭＵ’）により引き起こされた割込みである。仮想メモリのページに対する写像されたページフレームの欠如は、例えば、ページテーブルの仮想メモリページのＴＲＵＥに対する空のビットセットで表示できる。代表的なオペレーティングシステムでは、空きフレームが利用可能であるとき、ページフォールト割込みハンドラは、ノードから仮想メモリの中のページに対して空きページフレームを写像する。ページフォールトの正規化された尺度は、例えば、他のノード上に搭載されたメモリとシステムのすべてのノード上に搭載されたメモリの比率のような正規化係数で乗じた、ノード上のページフレームを仮想メモリの中のページに写像する、所定の時間間隔内に発生するページフォールト数として計算できる。
【００５６】
図６の方法では、ページフォールトの正規化された尺度に基づいてメモリ親和性を評価すること（８００）は、所定の時間間隔で定期的に、例えば、１秒毎に実行できる。メモリ親和性を定期的に評価すること（８００）は、ノード上のページフレームに対するページフレームデマンドが変化するとき、参照番号（５０２）の親和性の重み付けされた係数のような親和性の評価を、動的に調整することを可能とする。
【００５７】
図６の方法の、ページフォールトの正規化された尺度に基づいてメモリ親和性を評価すること（８００）は、ページフォールトの現在の正規化された尺度を、ページフレームデマンドテーブル（８３０）のノードに対するページフォールトの前の正規化された尺度として保存すること（８２０）を含む。ページフレームデマンドテーブル（８３０）の各記録は、現在のページフレームデマンド（８３２）および前のページフレームデマンド（８３４）を、ノード識別記号（１００４）と関連づける。図６の現在のページフレームデマンド（８３２）は、直前に終了した所定の時間間隔で発生するページフォールトの正規化された尺度である。図６の前のページフレームデマンド（８３４）は、直前に終了した所定の時間間隔より前の時間間隔で発生するページフォールトの正規化された尺度である。例えば、すべてのノード間で相等しいメモリ分配を有し、かつ図６の方法に基づいて作動するコンピュータシステムのノード０において、第１の時間間隔に１０のページフォールトが発生し、第２の時間間隔に１５のページフォールトが発生し、および第３の時間間隔に１２のページフォールトが発生する場合について考える。第３の時間間隔が経過中に、直前に終了した所定の時間間隔は、第２の時間間隔である。したがって、ノード０に対する現在のページフレームデマンドは１５である。第３の時間間隔が経過中に、直前に終了した所定の時間間隔より前の時間間隔は、第１の時間間隔である。したがって、ノード０に対する前のページフレームデマンドは１０である。
【００５８】
また、図６の方法では、ページフォールトの正規化された尺度に基づいてメモリ親和性を評価すること（８００）は、現在のページフレームデマンドを計算すること（８４０）を含む。図６の方法の、現在のページフレームデマンドを計算すること（８４０）は、ページフォールトの現在の正規化された尺度を計算して、ページフレームデマンドテーブル（８３０）の現在のページフレームデマンド（８３２）のノードに対するページフォールト（８３２）の現在の正規化された尺度を保存することにより実行できる。以下の式１に従って、ページフォールトの現在の正規化された尺度を計算できる。
【００５９】
【数１】
2007095072.tif 000004
ここで、Ｎｉはｉ番目のメモリノードに対するページフォールトの正規化された尺度、Ｆｉはｉ番目のメモリノードから仮想メモリの中のページに対してページフレームを写像する、直前に終了した所定の時間間隔内に発生するページフォールト数、およびＭｉはｉ番目のメモリノード上に搭載されたメモリとすべてのノード上に搭載された全システムメモリの比率である。例えば、ノード０に対して、ページフォールトの正規化された尺度Ｎｉは式１に従って計算でき、ここで、ノード０から仮想メモリの中のページに対してページフレームを写像する、所定の時間間隔内に発生するページフォールト数は、テーブル（８０２）の欄（８０６）から読み取って１００とし、ノード０上に搭載されたメモリとすべてのノード上に搭載された全システムメモリの比率は、テーブル（８１０）の欄（８１２）から読み取って０．５０とすると、Ｎｉは、５０＝１００（１−０．５０）のように計算される。
【００６０】
図６のページフォールトテーブル（８０２）は、所定の時間間隔内に発生するページフォールト（８０６）の数を、ノード識別記号（１００４）と関連づける。この例では、１００のページフォールトが、ノード０から仮想メモリの中のページに対してページフレームを写像し、５０のページフォールトが、ノード１から仮想メモリの中のページに対してページフレームを写像し、および２５のページフォールトが、ノード２から仮想メモリの中のページに対してページフレームを写像した。
【００６１】
図６の全メモリの比率のテーブル（８１０）は、ノード上に搭載された全システムメモリの比率（８１２）を、ノード識別記号（１００４）と関連づける。この例では、ノード０は、全システムメモリの５０％を含み、ノード１は、全システムメモリの３０％を含み、およびノード２は、全システムメモリの２０％を含む。
【００６２】
図６の方法では、ページフォールトの正規化された尺度に基づいてメモリ親和性を評価すること（８００）は、さらに、以下の式２に従って、プロセッサノードとシステム上に搭載されたメモリノードとの間のメモリ親和性（５０２）の重み付けされた係数を計算すること（８５０）を含む。
【００６３】
【数２】
2007095072.tif 000005
ここで、Ｗｉはｉ番目のメモリノードに対するプロセッサノードのメモリ親和性（５０２）の重み付けされた係数、Ｐｉはｉ番目のメモリノードの前のページフレームデマンド（８３４）、およびＣｉはｉ番目のメモリノードの現在のページフレームデマンド（８３２）である。例えば、ノード０に対して、メモリ親和性（５０２）の重み付けされた係数Ｗｉは式２に従って計算でき、ここで、前のページフレームデマンドは、テーブル（８３０）の欄（８３４）から読み取って４０とし、現在のページフレームデマンドは、テーブル（８３０）の欄（８３２）から読み取って５０とすると、Ｗｉは、７０＝（４０÷２）＋５０のように計算される。
【００６４】
図６の方法では、メモリ親和性（５０２）の重み付けされた係数を計算すること（８５０）は、メモリ親和性テーブル（４０２）に、各メモリノードに対するメモリ親和性（５０２）の重み付けされた係数を保存することを含むことができる。メモリ親和性テーブル（４０２）の各記録は、メモリノード（４０４）に対するメモリ親和性の評価（５０２）をプロセッサノード（４０３）に指定する。
【００６５】
また、図６の方法は、メモリ親和性の評価に基づいて、メモリを割当てること（４１０）を含む。評価に基づいてメモリを割当てること（４１０）は、プロセッサノードとの評価された親和性を有するシステムの中のメモリノードがあるかどうかを判断して、最も低い親和性の重み付けされた係数を有するメモリノードを特定して、最も低い親和性の重み付けされた係数を有するノードが、割当てられていないページフレームを有するかどうかを判断して、本明細書で先に詳述したように、以下同様の操作を行うことにより実行できる。
【００６６】
詳細な説明のために、図７は、本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートを示しており、この方法例は、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して（４００）、その評価に基づいてメモリを割当てること（４１０）を含む。図７の方法の、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価すること（４００）は、ページスワップの正規化された尺度に基づいてメモリ親和性を評価すること（９００）を含む。
【００６７】
ページスワップは、ページフレームが既に割当てられている仮想メモリページに対する新規のページフレームの割当てである。新規のページフレームをそのように割当てるために、最初に、ページスワップは、以前に割当てられたページフレームのコンテンツをディスクに書き込む。したがって、ページスワップは、処理時間の点で非常に贅沢であり、通常、ページフォールトハンドラは、例えば、ＲＡＭが容量いっぱいであり、全く空きフレームが無いか、または現在のメモリ親和性強化ポリシーの中で割当てることができる空きフレームが無いなどの理由で、メモリの割当てを実行する他の方法が無いときだけページスワップを実行する。これらの理由により、多数のページスワップがメモリノード上で発生して、ノード上のページフレームデマンドが高いとき、ページスワップの手段は、ページフレームデマンドの有用な手段でありうる。ページスワップの正規化された尺度は、例えば、他のノード上に搭載されたメモリとシステムのすべてのノード上に搭載された全メモリの比率のような正規化係数で乗じた、所定の時間内に発生する、ノード上のメモリのページスワップ数の総数として与えることができる。
【００６８】
図７の方法では、ページスワップの正規化された尺度に基づいてメモリ親和性を評価すること（９００）は、所定の時間間隔で定期的に、例えば、１秒毎に実行できる。メモリ親和性を定期的に評価すること（９００）は、ノード上のページフレームに対するページフレームデマンドが変化するとき、参照番号（５０２）の親和性の重み付けされた係数のような親和性の評価を、動的に調整することを可能とする。
【００６９】
図７の方法の、ページスワップの正規化された尺度に基づいてメモリ親和性を評価すること（９００）は、ページスワップの現在の正規化された尺度を、ページフレームデマンドテーブル（８３０）のノードに対するページスワップの前の正規化された尺度として保存すること（９２０）を含む。ページフレームデマンドテーブル（８３０）の各記録は、現在のページフレームデマンド（８３２）および前のページフレームデマンド（８３４）を、ノード識別記号（１００４）と関連づける。図７の現在のページフレームデマンド（８３２）は、直前に終了した所定の時間間隔で発生するページスワップの正規化された尺度である。図７の前のページフレームデマンド（８３４）は、直前に終了した所定の時間間隔より前の時間間隔で発生するページスワップの正規化された尺度である。例えば、すべてのノード間で相等しいメモリ分配を有し、かつ図７の方法に基づいて作動するコンピュータシステムのノード０において、第１の時間間隔に１０のページスワップが発生し、第２の時間間隔に１５のページスワップが発生し、および第３の時間間隔に１２のページスワップが発生する場合について考える。第３の時間間隔が経過中に、直前に終了した所定の時間間隔は、第２の時間間隔である。したがって、ノード０に対する現在のページフレームデマンドは１５である。第３の時間間隔が経過中に、直前に終了した所定の時間間隔より前の時間間隔は、第１の時間間隔である。したがって、ノード０に対する前のページフレームデマンドは１０である。
【００７０】
また、図７の方法では、ページスワップの正規化された尺度に基づいてメモリ親和性を評価すること（９００）は、現在のページフレームデマンドを計算すること（９４０）を含む。図７の方法の、現在のページフレームデマンドを計算すること（９４０）は、ページスワップの現在の正規化された尺度を計算して、ページフレームデマンドテーブル（８３０）の現在のページフレームデマンド（８３２）のノードに対するページスワップの現在の正規化された尺度を保存することにより実行できる。以下の式３に従って、ページスワップの現在の正規化された尺度を計算できる。
【００７１】
【数３】
2007095072.tif 000006
ここで、Ｎｉはｉ番目のメモリノードに対するページスワップの正規化された尺度、Ｓｉはｉ番目のメモリノードから仮想メモリの中のページに対してページフレームを写像する、直前に終了した所定の時間間隔内に発生するページスワップ数、およびＭｉはｉ番目のメモリノード上に搭載されたメモリとすべてのノード上に搭載された全システムメモリの比率である。例えば、ノード０に対して、ページスワップの正規化された尺度Ｎｉは式３に従って計算でき、ここで、ノード０から仮想メモリの中のページに対してページフレームを写像する、所定の時間間隔内に発生するページスワップ数は、テーブル（９０２）の欄（９０６）から読み取って１００とし、ノード０上に搭載されたメモリとすべてのノード上に搭載された全システムメモリの比率は、テーブル（８１０）の欄（８１２）から読み取って０．５０とすると、Ｎｉは、５０＝１００（１−０．５０）のように計算される。
【００７２】
図７のページスワップテーブル（９０２）は、所定の時間間隔内に発生するページスワップ（９０６）の数を、ノード識別記号（１００４）と関連づける。この例では、１００のページスワップが、仮想メモリのページへの写像に使用可能であるノード０上の空きページフレームを新規作成し、５０のページスワップが、仮想メモリのページへの写像に使用可能であるノード１上の空きページフレームを新規作成し、２５のページスワップが、仮想メモリのページへの写像に使用可能であるノード２上の空きページフレームを新規作成した。
【００７３】
図７の全メモリの比率のテーブル（８１０）は、ノード上に搭載された全システムメモリの比率（８１２）を、ノード識別記号（１００４）と関連づける。この例では、ノード０は、全システムメモリの５０％を含み、ノード１は、全システムメモリの３０％を含み、およびノード２は、全システムメモリの２０％を含む。
【００７４】
図７の方法では、ページスワップの正規化された尺度に基づいてメモリ親和性を評価すること（９００）は、さらに、以下の式４に従って、プロセッサノードとシステム上に搭載されたメモリノードとの間のメモリ親和性（５０２）の重み付けされた係数を計算すること（８５０）を含む。
【００７５】
【数４】
2007095072.tif 000007
ここで、Ｗｉはｉ番目のメモリノードに対するプロセッサノードのメモリ親和性（５０２）の重み付けされた係数、Ｐｉはｉ番目のメモリノードの前のページフレームデマンド（８３４）、およびＣｉはｉ番目のメモリノードの現在のページフレームデマンド（８３２）である。例えば、ノード０に対して、メモリ親和性（５０２）の重み付けされた係数Ｗｉは式４に従って計算でき、ここで、前のページフレームデマンドは、テーブル（８３０）の欄（８３４）から読み取って４０とし、現在のページフレームデマンドは、テーブル（８３０）の欄（８３２）から読み取って５０とすると、Ｗｉは、７０＝（４０÷２）＋５０のように計算される。
【００７６】
図７の方法では、メモリ親和性（５０２）の重み付けされた係数を計算すること（８５０）は、メモリ親和性テーブル（４０２）に、各メモリノードに対するメモリ親和性（５０２）の重み付けされた係数を保存することを含むことができる。メモリ親和性テーブル（４０２）の各記録は、メモリノード（４０４）に対するメモリ親和性の評価（５０２）をプロセッサノード（４０３）に指定する。
【００７７】
また、図７の方法は、メモリ親和性の評価に基づいて、メモリを割当てること（４１０）を含む。評価に基づいてメモリを割当てること（４１０）は、プロセッサノードとの評価された親和性を有するシステムの中のメモリノードがあるかどうかを判断して、最も低い親和性の重み付けされた係数を有するメモリノードを特定して、最も低い親和性の重み付けされた係数を有するノードが、割当てられていないページフレームを有するかどうかを判断して、本明細書で先に詳述したように、以下同様の操作を行うことにより実行できる。
【００７８】
詳細な説明のために、図８は、本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートを示しており、この方法例は、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して（４００）、その評価に基づいてメモリを割当てること（４１０）を含む。図８の方法の、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価すること（４００）は、ページアウトの正規化された尺度に基づいてメモリ親和性を評価すること（１０００）を含む。
【００７９】
‘ページアウト’は、ＲＡＭの中のページフレームのコンテンツをディスクに保存して、かつページフレームが写像されていた仮想ページを、ページテーブルの中に空と記録するプロセスであり、それにより、再割当てのためにページフレームを解放する。また、ページアウトプロセスは、フレームについてフレームテーブルの中に空き状態と記録する、またはフレームを空きフレームテーブルの中に記載することができる。ページアウトは、ページフレームをディスクに書き込むため、ページアウトは、処理時間の点で非常に贅沢である。したがって、通常、ページフォールトハンドラは、例えば、割当てられたページフレームの数が、所定のしきい値を超えるときなどの、高いページフレームデマンドがあるときに限りページアウトを実行する。これらの理由により、多数のページアウトがメモリノード上で発生して、ノード上のページフレームデマンドが高いとき、ページアウトの手段は、ページフレームデマンドの有用な手段でありうる。ページアウトの正規化された尺度は、例えば、他のノード上に搭載されたメモリとシステムのすべてのノード上に搭載された全メモリの比率のような正規化係数で乗じた、所定の時間内に発生する、ノード上のメモリのページアウト数の総数として与えることができる。
【００８０】
図８の方法では、ページアウトの正規化された尺度に基づいてメモリ親和性を評価すること（１０００）は、所定の時間間隔で定期的に、例えば、１秒毎に実行できる。メモリ親和性を定期的に評価すること（１０００）は、ノード上のページフレームに対するページフレームデマンドが変化するとき、参照番号（５０２）の親和性の重み付けされた係数のような親和性の評価を、動的に調整することを可能とする。
【００８１】
図８の方法の、ページアウトの正規化された尺度に基づいてメモリ親和性を評価すること（１０００）は、ページアウトの現在の正規化された尺度を、ページフレームデマンドテーブル（８３０）のノードに対するページアウトの前の正規化された尺度として保存すること（１０２０）を含む。ページフレームデマンドテーブル（８３０）の各記録は、現在のページフレームデマンド（８３２）および前のページフレームデマンド（８３４）を、ノード識別記号（１００４）と関連づける。図８の現在のページフレームデマンド（８３２）は、直前に終了した所定の時間間隔で発生するページアウトの正規化された尺度である。図８の前のページフレームデマンド（８３４）は、直前に終了した所定の時間間隔より前の時間間隔で発生するページアウトの正規化された尺度である。
【００８２】
また、図８の方法では、ページアウトの正規化された尺度に基づいてメモリ親和性を評価すること（１０００）は、現在のページフレームデマンドを計算すること（１０４０）を含む。図８の方法の、現在のページフレームデマンドを計算すること（１０４０）は、ページアウトの現在の正規化された尺度を計算して、ページフレームデマンドテーブル（８３０）の現在のページフレームデマンド（８３２）のノードに対するページアウトの現在の正規化された尺度を保存することにより実行できる。以下の式５に従って、ページアウトの現在の正規化された尺度を計算できる。
【００８３】
【数５】
2007095072.tif 000008
ここで、Ｎｉはｉ番目のメモリノードに対するページアウトの正規化された尺度、Ｏｉはｉ番目のメモリノードから仮想メモリの中のページに対してページフレームを写像する、直前に終了した所定の時間間隔内に発生するページアウト数、およびＭｉはｉ番目のメモリノード上に搭載されたメモリとすべてのノード上に搭載された全システムメモリの比率である。例えば、ノード０に対して、ページアウトの正規化された尺度Ｎｉは式５に従って計算でき、ここで、ノード０から仮想メモリの中のページに対してページフレームを写像する、所定の時間間隔内に発生するページアウト数は、テーブル（１００２）の欄（１００６）から読み取って１００とし、ノード０上に搭載されたメモリとすべてのノード上に搭載された全システムメモリの比率は、テーブル（８１０）の欄（８１２）から読み取って０．５０とすると、Ｎｉは、５０＝１００（１−０．５０）のように計算される。
【００８４】
図８のページアウトテーブル（１００２）は、所定の時間間隔内に発生するページアウト（１００６）の数を、ノード識別記号（１００４）と関連づける。この例では、１００のページアウトが、仮想メモリのページへの写像に使用可能であるノード０上の空きページフレームを新規作成し、５０のページアウトが、仮想メモリのページへの写像に使用可能であるノード１上の空きページフレームを新規作成し、２５のページアウトが、仮想メモリのページへの写像に使用可能であるノード２上の空きページフレームを新規作成した。
【００８５】
図８の全メモリの比率のテーブル（８１０）は、ノード上に搭載された全システムメモリの比率（８１２）を、ノード識別記号（１００４）と関連づける。この例では、ノード０は、全システムメモリの５０％を含み、ノード１は、全システムメモリの３０％を含み、およびノード２は、全システムメモリの２０％を含む。
【００８６】
図８の方法では、ページアウトの正規化された尺度に基づいてメモリ親和性を評価すること（１０００）は、さらに、以下の式６に従って、プロセッサノードとシステム上に搭載されたメモリノードとの間のメモリ親和性（５０２）の重み付けされた係数を計算すること（８５０）を含む。
【００８７】
【数６】
2007095072.tif 000009
ここで、Ｗｉはｉ番目のメモリノードに対するプロセッサノードのメモリ親和性（５０２）の重み付けされた係数、Ｐｉはｉ番目のメモリノードの前のページフレームデマンド（８３４）、およびＣｉはｉ番目のメモリノードの現在のページフレームデマンド（８３２）である。例えば、ノード０に対して、メモリ親和性（５０２）の重み付けされた係数Ｗｉは式６に従って計算でき、ここで、前のページフレームデマンドは、テーブル（８３０）の欄（８３４）から読み取って４０とし、現在のページフレームデマンドは、テーブル（８３０）の欄（８３２）から読み取って５０とすると、Ｗｉは、７０＝（４０÷２）＋５０のように計算される。
【００８８】
図８の方法では、メモリ親和性（５０２）の重み付けされた係数を計算すること（８５０）は、メモリ親和性テーブル（４０２）に、各メモリノードに対するメモリ親和性（５０２）の重み付けされた係数を保存することを含むことができる。メモリ親和性テーブル（４０２）の各記録は、メモリノード（４０４）に対するメモリ親和性の評価（５０２）をプロセッサノード（４０３）に指定する。
【００８９】
また、図８の方法は、メモリ親和性の評価に基づいて、メモリを割当てること（４１０）を含む。評価に基づいてメモリを割当てること（４１０）は、プロセッサノードとの評価された親和性を有するシステムの中のメモリノードがあるかどうかを判断して、最も低い親和性の重み付けされた係数を有するメモリノードを特定して、最も低い親和性の重み付けされた係数を有するノードが、割当てられていないページフレームを有するかどうかを判断して、本明細書で先に詳述したように、以下同様の操作を行うことにより実行できる。
【００９０】
本発明の例示的な実施形態は、主に、マルチノードコンピュータのメモリ割当てに対する完全に機能的なコンピュータシステムとの関連の中で説明されている。しかしながら、また、任意の好適なデータ処理システムと共に使用するために、信号保持媒体に配設されたコンピュータプログラムにおいて本発明を具現化できることを、当技術分野の技能を有する読者は認識するであろう。このような信号保持媒体は、伝送媒体、もしくは磁気媒体、光媒体、または他の好適な媒体を含む、機械可読情報用の書き込み可能媒体でありうる。書き込み可能媒体の例は、ハードドライブの磁気ディスクまたはディスケット、光ドライブ用コンパクトディスク、磁気テープ、およびその他の当業者が想起するであろうようなものを含む。伝送媒体の例は、音声通信用の電話網と、例えば、イーサネット（Ｒ）、ならびにインターネットプロトコルおよびワールドワイドウェブを用いて通信するネットワークのようなデジタルデータ通信ネットワークを含む。好適なプログラミング手段を有する任意のコンピュータシステムが、プログラム製品で具現されるように本発明の方法のステップを実行処理できるであろうことを、当業者は直ちに認識するであろう。本明細書で説明された例示的な実施形態のいくつかのものは、コンピュータハードウェアにインストールされて、コンピュータハードウェア上で実行処理するソフトウェアに関するものであるが、それにもかかわらず、ファームウェアとして、またはハードウェアとして実現された他の実施形態が本発明の範囲内にあることを、当業者は直ちに認識するであろう。
【００９１】
上述の説明により、本発明の真の要旨を逸脱することなく、本発明の様々な実施形態において修正および変更をなしうることが理解されるであろう。本明細書の説明は、あくまで例を示すためのものに過ぎず、制限を意味するものと解釈されるべきではない。本発明の範囲は、以下のクレームの文言によってのみ制限される。
【図面の簡単な説明】
【００９２】
【図１】本発明の実施形態の、マルチノードコンピュータのメモリ割当てにおいて有用なコンピュータ例を含む、自動演算機械のブロック図である。
【図２】マルチノードコンピュータのメモリ割当てのための、別のコンピュータ例のブロック図である。
【図３】本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための方法例を図解するフローチャートであり、この方法例は、ノード上のページフレームに対するページフレームデマンドに基づいて、ノードに対するメモリ親和性を評価して、その評価に基づいてメモリを割当てることを含む。
【図４】本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートである。
【図５】本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートである。
【図６】本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートである。
【図７】本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートである。
【図８】本発明の実施形態の、マルチノードコンピュータのメモリ割当てのための、別の方法例を図解するフローチャートである。
【図１】
2007095072.tif 000010
【図２】
2007095072.tif 000011
【図３】
2007095072.tif 000012
【図４】
2007095072.tif 000013
【図５】
2007095072.tif 000014
【図６】
2007095072.tif 000015
【図７】
2007095072.tif 000016
【図８】
2007095072.tif 000017