JP4949157B2 - Numaコンピュータシステムにおけるローカリティドメインおよびスレッドアフィニティに基づいてコードを再コンパイルするためのシステムおよび方法 - Google Patents

Numaコンピュータシステムにおけるローカリティドメインおよびスレッドアフィニティに基づいてコードを再コンパイルするためのシステムおよび方法 Download PDF

Info

Publication number
JP4949157B2
JP4949157B2 JP2007192067A JP2007192067A JP4949157B2 JP 4949157 B2 JP4949157 B2 JP 4949157B2 JP 2007192067 A JP2007192067 A JP 2007192067A JP 2007192067 A JP2007192067 A JP 2007192067A JP 4949157 B2 JP4949157 B2 JP 4949157B2
Authority
JP
Japan
Prior art keywords
code
dynamically generated
generated code
nodes
buffers
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
JP2007192067A
Other languages
English (en)
Other versions
JP2008033932A (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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2008033932A publication Critical patent/JP2008033932A/ja
Application granted granted Critical
Publication of JP4949157B2 publication Critical patent/JP4949157B2/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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、包括的には、コンピュータソフトウェアに関し、より詳細には、性能の改善のためにコンピュータプログラムの部分を再アロケートすることに関する。
マルチプロセッサコンピュータシステムは、一般に、共通の共有メモリおよび周辺機器を有する複数のプロセッサを備えるシステム、または、分散したメモリおよび周辺機器を有する複数のプロセッサを備えるシステムの2つのカテゴリーに分類することができる。
すべてのプロセッサが周辺デバイスおよびメモリに等しくアクセスできるように編成されたシステムは、対称型マルチプロセシング(SMP)システムとして知られている。
SMPシステム内のプロセッサは、共通バスを介して共有メモリに相互に接続されている。
周辺デバイスを接続するのにバス階層が使用される場合がある。
NUMAコンピュータアーキテクチャでは、メモリアクセス待ち時間は、プロセッサおよびメモリのロケーションに応じて異なることが許容されている。
NUMAコンピュータシステムのすべてのプロセッサは、システムメモリを共有し続けるが、メモリにアクセスするのに必要な時間は、プロセッサおよびメモリのロケーションに基づいて変化し、すなわち、一様ではない。
UMA SMP設計に類似した他の代替的なものを上回るNUMA SMP設計の主な利点は、スケーラビリティである。
さらに、NUMA SMPにおけるプログラミングは、従来のSMP共有メモリにおけるプログラミングと同程度に簡単である。
その結果、NUMAコンピュータシステムは、既存のSMPアプリケーションを変更することなく実行することができる。
プロセッサおよびシステムメモリが2つまたは3つ以上のクラスタまたはローカリティドメインに編成されているNUMAコンピュータシステムでは、各ローカリティドメインは、ローカルバスによってローカルメモリと通信する1つまたは2つ以上のプロセッサを含むことができる。
また、ローカリティドメインを相互接続するネットワークを形成するために、各ローカリティドメインは、そのローカリティドメインを通信チャネルによって他のローカリティドメインと相互接続するためのブリッジも含む。
このようなマルチノードマルチプロセッサコンピュータシステムでは、特定のプロセッサの性能は、そのプロセッサが、リモートのローカリティドメインからのメモリではなく、それ自身のローカルなローカリティドメインからのメモリにアクセスする場合に、ローカルバスへのアクセスしか必要とされないので、常に最大となる。
マルチノードマルチプロセッサコンピュータシステムにおけるすべてのローカリティドメインの基礎となるアーキテクチャおよびメモリアクセスパターンを決定すること、並びに、プログラムおよびデータをNUMAマシンに最適に配置する知識を利用することによって、大幅な性能利得がもたらされる可能性がある。
システムファームウェアは、一般に、システムのリブート中にマルチプロセッサ環境内に存在するすべてのプロセッサおよびメモリのトポロジー情報を収容している。
このようなトポロジー情報は、ローカリティドメイン、すなわち、システムにおけるプロセッサおよび関連メモリのグループを識別する。
これによって、ローカリティドメインのプロセッサおよびメモリレンジの間の密結合が可能になり、オペレーティングシステムは、このようなアフィニティ情報を使用して、システム性能を改善するメモリ資源のアロケーションおよびソフトウェアスレッドのスケジューリングを決定することができる。
現在の最適化技法は、このようなアフィニティ情報を使用して、ローカリティドメインをより良く使用し、メモリアクセス待ち時間を削減する。
たとえば、ほとんどのオペレーティングシステムは、プロセスのすべてのスレッドが、かなり少ない待ち時間を提供する共通メモリプールを共有できるように、ローカリティドメイン内のプロセス全体をロックする方法を提供する。
プロセスがローカリティドメイン全体に及ぶ必要がある場合、現在の技法は、スレッドがアクセスするローカリティドメインをローカルドメインメモリセグメントに分割することによって、異なるスレッドにより良いメモリアクセスを提供する。
これらの技法はデータハンドリングを取り扱うが、命令ハンドリングを取り扱わない。
加えて、現在の技法は、このようなアフィニティ情報を使用するNUMAコンピュータシステムのローカリティドメインおよび/またはスレッドアフィニティに基づいてコードバッファを区画しない。
本発明は、上記背景からなされたものであって、NUMAコンピュータシステムにおけるローカリティドメインおよびスレッドアフィニティに基づいてコードを再コンパイルするための改良されたシステムおよび方法を提供することを目的とする。
本発明の主題の一態様によれば、実行可能コードのコードバッファを複数のローカリティドメインに分割することによって命令ローカリティを改善するための方法であって、コードバッファを複数のより小さなコードバッファに区画するステップと、複数のより小さなコードバッファのそれぞれを複数のノードの1つに割り当てるステップと、メソッドのコンパイル中にエスケープ解析を実行するステップと、エスケープ解析に基づいて、メソッドに関連付けられているスレッドセットの中で、エスケープしないものが存在するか否か判断するステップと、存在する場合に、メソッドに関連付けられているエスケープしないスレッドセットのそれぞれに関連付けられている生成コードを、複数のノードに割り当てられた、区画されて関連付けられている複数のより小さなコードバッファに配置するステップとを含む方法が提供される。
次に、添付図面を参照して本発明の実施の形態を単なる例として説明することにする。
本発明のさまざまな実施形態の以下の詳細な説明では、その一部を成す添付図面が参照される。
添付図面には、例示として、本発明を実施することができる特定の実施形態が示されている。
これらの実施形態は、当業者が本発明を実施することを可能にするように十分詳細に説明されているが、他の実施形態も利用できること、および、本発明の範囲から逸脱することなく変更を行えることが理解されるべきである。
したがって、以下の詳細な説明は、限定の意味に解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によってのみ画定される。
「スレッド」という用語は、プログラムの独立した実行パスを指す。
たとえば、電子商取引のコンピュータアプリケーションの場合、各顧客の特定の電子商取引のトランザクションが別個のスレッドでハンドリングされるように、異なる顧客に異なるスレッドを割り当てることができる。
以下の解説では、特定の数組の資源に割り当てられたエンティティを「スレッド」と呼ぶことにする。
しかしながら、他の専門用語を使用して、コンピュータシステムにおける一意の実行パスを定義するエンティティを説明できることが十分理解されよう。
したがって、「スレッド」という用語は、コンピュータシステムにおける特定の実行パスを定義する、コンピュータにおけるあらゆるエンティティに対応するものと考えられるべきである。
スレッドタイプは、本発明の主題の文脈内においては、実際には、スレッドのあらゆる属性または他の際立った特徴を含むことができ、実行優先度、同じ仮想バッファ若しくは仮想メモリまたは物理バッファ若しくは物理メモリへの割り当て、ユーザ識別情報、親論理サブシステム(parent logical subsystem)、ジョブ、アプリケーション、タスクまたはスレッド、同じメモリサブシステムへの割り当て、スレッドの起動時に実行される初期プログラムの名前、スレッド権限(thread authority)、およびユーザプロファイルが含まれるが、これらに限定されるものではない。
また、「ローカリティドメイン」、「クラスタ」、および「セル」という用語は、本明細書全体を通じて交換可能に使用される。
本発明の技法は、区画された複数のより小さなコードバッファに基づいて、生成コード内に存在するメソッドを分割する。
本発明の技法は、さらに、分割されたメソッドおよび関連付けられているスレッドセットを共に、これらの区画された複数のより小さなコードバッファにグループ化する。
さらに、本発明の技法は、グループ化されたメソッドおよびスレッドを、割り当てられたノードに関連付ける。
基本的には、各メソッドは、関連付けられている区画された複数のより小さなコードバッファの1つに配置され、グループ化されたスレッドは、関連付けられている複数のノードの1つで実行される。
加えて、本発明の技法は、オンラインプロファイルデータを使用して、新しいメソッドのコンパイルまたは既存のメソッドの再コンパイルから生成されたコードを、非ローカルアクセスが最小にされるように配置する。
図1は、複数のノードを有するNUMAコンピュータシステムのコードバッファ内に存在する動的生成コードの非ローカルアクセスの削減を再コンパイルする一例の方法100を示している。
動的生成コードは、JAVA(登録商標)メソッド用のものとすることができる。
動的生成コードは、より小さなスニペットで生成され、そのアクセスパターンは、ランタイム環境によって決定することができる。
たとえば、マルチスレッドプログラムでは、異なるスレッドは、異なる作業を行っている場合があり、異なるJAVAメソッドと共に動作している可能性がある。
また、たとえば、NUMAコンピュータシステムに4つのセルが存在する場合、コードバッファは、4つの関連部分(C1、C2、C3、およびC4)に分割することができる。
ステップ110において、この一例の方法100は、コードバッファを複数のより小さなコードバッファに区画することにより開始する。
いくつかの実施形態では、mmaps等の一般に知られている技法が使用されて、コードバッファが区画される。
本発明の実行例では、4つのより小さなバッファが、それらのバッファに関連付けられている4つの異なるセルに割り当てられる、すなわち、対応するCLM(セルローカルメモリ)に配置される。
ステップ120において、複数のより小さなコードバッファのそれぞれは、マルチノードNUMAコンピュータシステムにおける関連付けられている1つのノードに割り当てられる。
いくつかの実施形態では、複数のより小さなコードバッファのそれぞれのサイズは、オフラインプロファイルデータに基づいて決定される。
たとえば、通常のアプリケーションの実行について、セルC1にコードバッファの約40%が必要とされ、C2、C3、およびC4にそれぞれ20%が必要とされる場合、コードバッファを対応するサイズに分割でき、これらのより小さなバッファをこれらの対応するセルに関連付けることができる。
ステップ130において、エスケープ解析が、生成コードのメソッドのコンパイル中に実行されて、エスケープしないメソッドのそれぞれに関連付けられているスレッドセットが見つけられる。
エスケープ解析は、データの寿命がそのデータの静的スコープを超える場合があるか否かを判断する静的解析である。
また、エスケープ解析は、スタックにオブジェクトをアロケートできるか否かも判断することができる。
さらに、この技法は、オブジェクトに対する同期オペレーションを取り除くことができるように、そのオブジェクトが、その寿命中に単一のスレッドによってのみアクセスされるか否かを判断することを容易にする。
いくつかの実施形態では、メソッドは、JAVAの関数および/またはプロシージャを指す。
エスケープ解析情報は、既知の従来の技法を使用してコンパイラが収集することができる。
エスケープ解析情報は、どのオブジェクトをヒープの代わりにスタックにアロケートできるか、どの命令セットがスレッドをエスケープしないか等の情報を提供する。
この情報は、各メソッドが非エスケープスレッドセットに分類されるように、ホットメソッドセットおよびスレッドセットを分割するのに使用することができる。
たとえば、エスケープ解析は、メソッドMがスレッドセットT1およびT2をエスケープしないことを伝える場合がある。
その場合、Mのコンパイルから生成されたコードを、関連付けられているセルにのみ配置することができ、スレッドT1およびT2は、このセルに結合される(または、このセルにおいて、スレッドT1およびT2が実行される)。
ステップ140において、方法100は、スレッドセットの中で、メソッドのそれぞれをエスケープしないものが存在するか否か判断する。
ステップ140の判断に基づいて、メソッドのそれぞれをエスケープしないスレッドセットが存在する場合には、方法100はステップ150に進む。
ステップ150において、メソッドのそれぞれをエスケープしないスレッドセットに関連付けられている生成コードは、複数のノードに割り当てられた、関連付けられている区画された複数のより小さなコードバッファに配置される。
ステップ140の判断に基づいて、メソッドのそれぞれをエスケープしないスレッドセットが存在しない場合には、方法100はステップ160に進む。
ステップ160において、メソッドのそれぞれをエスケープしないスレッドセットに関連付けられている生成コードは、オフラインプロファイルデータに基づいて複数のコードバッファに配置される。
たとえば、メソッドMがエスケープしないスレッドセットを見つけることができない場合、次のように、メソッドM用にコンパイルされたコードをそれらのセルC1、C2、C3、およびC4のCLMに配置することができる。
すなわち、オフラインプロファイルデータから、特定のスレッドT1、T2、…Tiが特定のメソッドセットM1、M2、…Miに頻繁にアクセスできると判断できる場合、そのメソッドセットM1、M2、…Mi用にコンパイルされたコードをセルCiに配置することにより、スレッドセットT1、T2、…Tiを関連付けられているセルCiに結合することができる。
一般に、オフラインプロファイルデータは、メソッドごとの情報を含む。
この情報は、そのメソッドのインタープリタモードで実行された起動の回数、そのメソッドのコンパイルモードで実行された起動の回数、そのメソッドの起動の総数、そのメソッドのインタープリタモードでの1つの起動に要する平均時間、そのメソッドのコンパイルされたコードの1つの起動に要する平均時間、そのメソッドがコンパイル要求リストへ送信される時の起動カウント、メソッドサイズ(そのメソッドの命令のコスト解析から見積もられる)、コンパイル時間等のようなものである。
いくつかの実施形態では、スレッドセットに関連付けられている新しいメソッドまたは再コンパイルされたメソッドは、オンラインプロファイルデータに基づいて、関連付けられている複数のより小さなコードバッファに定期的に再割り当てされる。
このオンラインプロファイル情報は、コードキャッシュアクセス中にリモートメモリミスの難点がある命令を見つけるのに使用される。
この情報によって、スレッドを実行するようにスケジューリングされている関連付けられているローカリティドメインに命令がマッピングされるように、各命令のコードキャッシュをアロケートすることが助けられる。
また、これらの実施形態では、この情報は、プログラマの使用を支援できるように報告される。
たとえば、スレッドを関連付けられているローカリティドメインに結合するpsetコールが報告される。
また、プロファイル情報は、プログラムの異なる実行パスがトラバースされる頻度についてのデータであって、命令をパッケージできる順序の決定を容易にできる頻度についてのデータも含むことができる。
プロシージャを通じて「ホットコード」を発見することにより、命令を、それらの命令のトレースに連続的にパックして、キャッシュラインにすることができる。
この結果、キャッシュの利用率を大きくすることができ、キャッシュミスを少なくすることができる。
このように、プロファイル情報を使用して、セット関連(set-associate)キャッシュミスにおける競合性ミスを削減することができる。
加えて、プロファイル情報は、実行頻度の低いトレースをメインのプロシージャ本体から分離してさらに効率を良くすることを支援することができる。
一般に、ホットコードは、インタープリテーションモードで実行される。
インタープリタは、実行されると、どのコードセクションが頻繁に実行されているかを示すオンラインプロファイルデータを収集する。
これらのコードセクションは、「ホット」コードとして指定され、コンパイルモードでマシンコードにコンパイルされる。
このように、頻繁に実行されるコードのみがコンパイルされる。
コードセクションの起動回数が静的なホット性しきい値(hotness threshold)を超えていると判断される場合、そのコードセクションはコンパイルされる。
いくつかの実施形態では、割り当てられた複数のより小さなコードバッファ内に存在する生成コードは、再コンパイルされた生成コードのコピーを、関連付けられている複数のノードに所定の回数定期的に配置する時に無効にされる。
これらの実施形態では、再コンパイルされた生成コードのコピーを配置する所定の回数は、経験的な手法に基づいて決定される。
いくつかの実施形態では、新しい生成コードは、オンラインプロファイルデータに基づいて、関連付けられている複数のノードに定期的に配置される。
いくつかの実施形態では、割り当てられた複数のより小さなコードバッファ内に存在する生成コードを定期的に無効にするステップ、および、再コンパイルされた生成コードのコピーを配置するステップは、ガベージコレクションイベント等の所定のイベント中に繰り返される。
フローチャート100は、この例示の実施形態では直列に配列されたステップ110〜140を含むが、本発明の主題の他の実施形態は、2つまたは3つ以上の仮想マシンまたはサブプロセッサとして編成された複数のプロセッサまたは単一のプロセッサを使用して、2つまたは3つ以上のステップを並列に実行することができる。
その上、さらに他の実施形態は、2つまたは3つ以上の特定の相互接続されたハードウェアモジュールであって、関係した制御信号およびデータ信号がそれらのモジュール間で、それらのモジュールを通って通信されるハードウェアモジュールとしてステップを実施することもできるし、特定用途向け集積回路の部分としてステップを実施することもできる。
このように、例示のプロセスフロー図は、ソフトウェア、ファームウェア、および/またはハードウェアの実施態様に適用可能である。
本発明の実施形態は、非分散環境の状況で説明されているが、分散環境でも同様に非常に良好に実施することができる。
本発明の主題のさまざまな実施形態は、ソフトウェアで実施することができる。
このソフトウェアは、図2(後述)に示す環境で実行することもできるし、他のあらゆる適したコンピューティング環境で実行することもできる。
本発明の主題の実施形態は、多数の汎用コンピューティング環境または専用コンピューティング環境で動作可能である。
いくつかのコンピューティング環境には、コンピュータ可読媒体に記憶されたコードを実行するパーソナルコンピュータ、汎用コンピュータ、サーバコンピュータ、ハンドヘルドデバイス(すべてのタイプの電話および個人情報端末(PDA)が含まれるが、これらに限定されない)、ラップトップデバイス、マルチプロセッサ、マイクロプロセッサ、セットトップボックス、プログラマブル家庭用電化製品、ネットワークコンピュータ、ミニコンピュータ、メインフレームコンピュータ、分散コンピューティング環境等が含まれる。
本発明の主題の実施形態は、コンピュータによって実行されるプログラムモジュール等のマシン実行可能命令として部分的または全体的に実施することができる。
一般に、プログラムモジュールには、特定のタスクを実行するかまたは特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造体等が含まれる。
分散コンピューティング環境では、プログラムモジュールは、ローカルストレージデバイスまたはリモートストレージデバイスに配置することができる。
図2は、本発明の主題の実施形態を実施するのに適したコンピューティングシステム環境の一例を示している。
図2および以下の解説は、本明細書に含まれる発明概念の特定の実施形態を実施できる、適したコンピューティング環境の簡潔な一般的説明を提供することを目的としている。
コンピュータ210の形の一般的なコンピューティングデバイスは、プロセッサ202、メモリ204、着脱可能ストレージ201、および着脱不能ストレージ214を含むことができる。
コンピュータ210は、加えて、バス205およびネットワークインターフェース212も含む。
コンピュータ210は、1つまたは2つ以上のユーザ入力モジュール216と、1つまたは2つ以上の出力モジュール218と、ネットワークインターフェースカードまたはUSB接続等の1つまたは2つ以上の通信接続220とを含むコンピューティング環境を含むこともできるし、該コンピューティング環境にアクセスすることもできる。
1つまたは2つ以上の出力デバイス218は、コンピュータのディスプレイデバイス、コンピュータモニタ、TVスクリーン、プラズマディスプレイ、LCDディスプレイ、デジタイザのディスプレイ、電子タブレットのディスプレイ等とすることができる。
コンピュータ210は、通信接続220を使用して1つまたは2つ以上のリモートコンピュータに接続するネットワーク接続環境で動作することができる。
リモートコンピュータには、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他のネットワークノード等が含まれ得る。
通信接続には、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、および/または他のネットワークが含まれ得る。
メモリ204は、揮発性メモリ206および不揮発性メモリ208を含むことができる。
揮発性メモリ206および不揮発性メモリ208等のコンピュータ210のメモリ素子、着脱可能ストレージ201、並びに着脱不能ストレージ214にさまざまなコンピュータ可読媒体を記憶することができ、コンピュータ210のメモリ素子、着脱可能ストレージ201、および着脱不能ストレージ214からさまざまなコンピュータ可読媒体にアクセスすることができる。
コンピュータメモリ素子には、データおよびマシン可読命令を記憶するためのあらゆる適したメモリデバイス(複数可)を含めることができる。
このあらゆる適したメモリデバイス(複数可)は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、ハードドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、ディスケット、磁気テープカートリッジ、メモリカード、Memory Stick(商標)等をハンドリングするための着脱可能媒体ドライブ;ケミカルストレージ;バイオロジカルストレージ;および他のタイプのデータストレージ等である。
「プロセッサ」または「処理ユニット」は、本明細書で使用されるように、あらゆるタイプの計算回路を意味し、マイクロプロセッサ、マイクロコントローラ、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、明示的並列命令コンピューティング(EPIC)マイクロプロセッサ、グラフィックスプロセッサ、デジタル信号プロセッサ、または他のあらゆるタイプのプロセッサ若しくは処理回路等であるが、これらに限定されるものではない。
この用語は、汎用ロジックデバイス若しくは汎用ロジックアレイまたはプログラマブルロジックデバイス若しくはプログラマブルロジックアレイ、特定用途向け集積回路、シングルチップコンピュータ、スマートカード等の組み込みコントローラも含む。
本発明の主題の実施形態は、タスクを実行するか、または、抽象データタイプ若しくは低レベルハードウェアコンテキストを定義するためのプログラムモジュールと共に実施することができる。
プログラムモジュールには、関数、プロシージャ、データ構造体、アプリケーションプログラム等が含まれる。
上述したストレージ媒体のいずれかに記憶されたマシン可読命令は、コンピュータ210の処理ユニット202によって実行可能である。
たとえば、プログラムモジュール225は、複数のノードを含むNUMAコンピュータシステムのコードバッファ内に存在する動的生成コードの非ローカルアクセスを削減できるマシン可読命令を含むことができ、それによって、本発明の主題の教示および本明細書で説明した実施形態に従って性能を改善する。
一実施形態では、プログラムモジュール225は、CD−ROMに含めることができ、CD−ROMから不揮発性メモリ208のハードドライブへロードすることができる。
マシン可読命令は、本発明の主題のさまざまな実施形態に従ってコンピュータ210に符号化を行わせる。
性能を改善するように実行可能コードを再コンパイルするためのコンピュータシステム200のオペレーションを図1に関してより詳細に説明する。
上述した技法は、コンパイラから得られたエスケープ解析情報を使用して、NUMAコンピュータシステム等のセルベースのシステムの実行可能コードバッファをセグメント化する。
上記の技法は、高いスレッドアフィニティを有するプロセスについて、ローカリティ単位の永続的なコードキャッシュ方式を提案する。
さらに、上記の技法は、共有されたコードキャッシュの同期オーバーヘッドを削減する(すなわち、高速JAVA仮想マシン(JVM)の複数のコンパイラスレッドでは、各スレッドが単独でコードを実行するのとは対照的に、JIT(ジャストインタイムコンパイラ)におけるような変換を行うことを削減することができる)。
JITコンパイラは、すべてのバイトコードを実行前にマシンコードに変換するが、或るコードパスがまさに実行されようとしていることを知っている時にのみそのコードパスをコンパイルする。
上述したプロセスは、セルローカルメモリを含む動的最適化システムだけでなくブレードサーバについてもリモートメモリコードバッファミスを削減することによって性能を改善する。
さらに、上記の技法は、コンパイラから得られたエスケープ解析情報を使用して、セルローカルメモリ(CLM)ベースのシステムのコードバッファをセグメント化する。
図1および図2に示す上記の例示的な実施形態は、JVMおよびNUMAコンピュータシステムに関して説明されているが、上述した技法は、JVMおよびNUMAコンピュータシステムのみに限定されるものではなく、あらゆるコンピュータシステムのあらゆる実行可能コード内に使用されて、リモートメモリコードバッファミスを削減し、性能を改善することができる。
上記の技法は、プロセッサが、上記の技法の一態様を構成するコンピュータプログラムの形で命令の提供を受ける場合に、当該プロセッサにより制御される装置を使用して実施することができる。
このようなコンピュータプログラムは、コンピュータ可読命令としてストレージ媒体に記憶することができ、その結果、そのストレージ媒体は、本発明の主題のさらに別の一態様を構成する。
上記の説明は、限定的なものではなく例示として意図されている。
他の多くの実施形態が当業者には明らかとなろう。
したがって、本発明の主題の範囲は、添付の特許請求の範囲が資格を有する均等物の全範囲と共に、添付の特許請求の範囲によって決定されるべきである。
本明細書で示したように、本発明の主題は、さまざまな方法、回路、I/Oデバイス、システム、および関連付けられている命令を有するマシンアクセス可能媒体を備える物品を含めて、多数の異なる実施形態で実施することができる。
他の実施形態は、当業者に容易に明らかとなろう。
要素、アルゴリズム、およびオペレーションシーケンスはすべて、特定の要件に適するように変更することができる。
図1に示す方法に関して上述したオペレーションは、本明細書で図示して説明した順序とは異なる順序で実行することができる。
図1および図2は、単なる表現であって、一律の縮尺で描かれていない。
その特定の部分を誇張されている場合がある一方、それ以外の部分が最小にされている場合がある。
図1および図2は、当業者が理解でき、適切に実行できる主題のさまざまな実施形態を示している。
本発明の実施形態の上記の詳細な説明では、さまざまな特徴が、本開示を簡素化する目的で単一の実施形態に共にグループ化されている。
本開示の方法は、本発明の特許を請求する実施形態が、各請求項で明示的に列挙された特徴よりも多くの特徴を必要とするという意図を反映しているとして解釈されるべきではない。
逆に、添付の特許請求の範囲が反映するように、独創的な発明は、開示した単一の実施形態のすべての特徴よりも少ない特徴に存する。
このように、添付の特許請求の範囲は、これによって、本発明の実施形態の詳細な説明に援用され、各請求項は、それ自体で別個の好ましい実施形態として成立している。
本発明の主題の一実施形態による、実行可能コードを再コンパイルして性能を改善するための一方法を示すフローチャートである。 図1に示す本発明の主題の実施形態を実施するのに使用される通常のコンピュータシステムのブロック図である。
符号の説明
201・・・着脱可能ストレージ,
202・・・処理ユニット,
205・・・バス,
206・・・揮発性メモリ,
208・・・不揮発性メモリ,
212・・・ネットワークインターフェース,
214・・・着脱不能ストレージ,
216・・・ユーザ入力デバイス,
218・・・出力デバイス,
225・・・プログラム,

Claims (18)

  1. 複数のノードを含むNUMAコンピュータシステムのコードバッファ内に存在する動的生成コード(dynamically generated code)の非ローカルアクセスを削減するための方法であって、
    前記動的生成コードが呼び出すメソッドごとの起動回数、起動に要する時間、および、サイズを少なくとも含むオフラインプロファイルデータから、各メソッドが必要とする前記コードバッファの割合を算出し、前記コードバッファを、前記算出した各メソッドが必要とするコードバッファの割合それぞれに対応するサイズの複数のより小さなコードバッファに区画することと、
    前記複数のより小さなコードバッファのそれぞれを前記複数のノードの1つに割り当てることと、
    メソッドのコンパイル中にエスケープ解析を実行することと、
    前記エスケープ解析に基づいて、前記メソッドを呼び出すスレッドセットの中で、前記メソッドをエスケープしないものが存在するか否か判断することと、
    存在する場合に、前記メソッドを呼び出す前記スレッドセットに関連付けられている前記動的生成コードを、前記複数のノードに割り当てられた前記区画された複数のより小さなコードバッファのうちのいずれか1つに配置することと
    を含む方法。
  2. 前記スレッドセットの中で、前記メソッドをエスケープしないものが存在しない場合に、前記オフラインプロファイルデータに基づいて、前記メソッドを呼び出す前記スレッドセットに関連付けられている前記動的生成コードを、前記複数のより小さなコードバッファのうちのいずれか1つに配置すること
    をさらに含む請求項1に記載の方法。
  3. オンラインプロファイルデータに基づいて、スレッドセットに関連付けられている新しい動的生成コードまたは再コンパイルされた動的生成コードを、前記複数のノードに割り当てられた複数のより小さなコードバッファのうちのいずれか1つに定期的に再割り当てすること
    をさらに含む請求項1に記載の方法。
  4. 前記再コンパイルされた動的生成コードのコピーを、前記複数のノードのうちのいずれか1つに所定の回数定期的に配置することと、
    前記コピーを配置するときに、前記複数のより小さなコードバッファ内に存在する動的生成コードを無効にすることと
    をさらに含む請求項3に記載の方法。
  5. 前記オンラインプロファイルデータに基づいて、前記複数のノードのうちのいずれか1つに新しい動的生成コードを定期的に配置すること
    をさらに含む請求項4に記載の方法。
  6. 所定のイベント中に、前記動的生成コードのコピーを定期的に配置することと、
    前記コードバッファ内に存在する動的生成コードを無効にすることを繰り返すことと
    をさらに含む請求項3に記載の方法。
  7. 複数のノードを含むNUMAコンピュータシステムのコードバッファ内に存在する動的生成コードの非ローカルアクセスを削減するためのプログラムを記憶するコンピュータ可読の記録媒体であって、
    前記動的生成コードが呼び出すメソッドごとの起動回数、起動に要する時間、および、サイズを少なくとも含むオフラインプロファイルデータから、各メソッドが必要とする前記コードバッファの割合を算出し、前記コードバッファを、前記算出した各メソッドが必要とするコードバッファの割合それぞれに対応するサイズの複数のより小さなコードバッファに区画する区画ステップと、
    前記複数のより小さなコードバッファのそれぞれを前記複数のノードの1つに割り当てる割り当てステップと、
    メソッドのコンパイル中にエスケープ解析を実行する実行ステップと、
    前記エスケープ解析に基づいて、前記メソッドを呼び出すスレッドセットの中で、前記メソッドをエスケープしないものが存在するか否か判断する判断ステップと、
    存在する場合に、前記メソッドを呼び出す前記スレッドセットに関連付けられている前記動的生成コードを、前記複数のノードに割り当てられた前記区画された複数のより小さなコードバッファのうちのいずれか1つに配置する配置ステップと
    をコンピュータに実行させるためのプログラムを記憶するコンピュータ可読の記録媒体。
  8. 前記スレッドセットの中で、前記関連付けられているメソッドをエスケープしないものが存在しない場合に、前記オフラインプロファイルデータに基づいて、前記メソッドを呼び出す前記スレッドセットに関連付けられている前記動的生成コードを、前記複数のより小さなコードバッファのうちのいずれか1つに配置する配置ステップ
    をさらに含む請求項7に記載のコンピュータ可読の記録媒体。
  9. オンラインプロファイルデータに基づいて、スレッドセットに関連付けられている新しい動的生成コードまたは再コンパイルされた動的生成コードを、前記複数のノードに割り当てられた複数のより小さなコードバッファのうちのいずれか1つに定期的に再割り当てする再割り当てステップ
    をさらに含む請求項7に記載のコンピュータ可読の記録媒体。
  10. 前記再コンパイルされた動的生成コードのコピーを、前記複数のノードのうちのいずれか1つに所定の回数定期的に配置するコピー配置ステップと、
    前記コピー配置ステップが前記コピーを配置するときに、前記複数のより小さなコードバッファ内に存在する動的生成コードを無効にする無効ステップと
    をさらに含む請求項9に記載のコンピュータ可読の記録媒体。
  11. 前記オンラインプロファイルデータに基づいて、前記複数のノードのうちのいずれか1つに新しい動的生成コードを定期的に配置する配置ステップ
    をさらに含む請求項10に記載のコンピュータ可読の記録媒体。
  12. 所定のイベント中に、前記コピー配置ステップおよび前記無効ステップを繰り返す繰返しステップ
    をさらに含む請求項10に記載のコンピュータ可読の記録媒体。
  13. ネットワークインターフェースと、
    前記ネットワークインターフェースを介して動的生成コードを受信する前記ネットワークインターフェースに接続される入力モジュールと、
    プロセッサと、
    前記プロセッサに接続されるメモリであって、複数のノードを含むNUMAコンピュータシステムのコードバッファ内に存在する動的生成コードの非ローカルアクセスの削減するためのプログラムを記憶するメモリを備え、
    前記プログラムは、
    前記動的生成コードが呼び出すメソッドごとの起動回数、起動に要する時間、および、サイズを少なくとも含むオフラインプロファイルデータから、各メソッドが必要とする前記コードバッファの割合を算出し、前記コードバッファを、前記算出した各メソッドが必要とするコードバッファの割合それぞれに対応するサイズの複数のより小さなコードバッファに区画する区画ステップと、
    前記複数のより小さなコードバッファのそれぞれを前記複数のノードの1つに割り当てる割り当てステップと、
    メソッドのコンパイル中にエスケープ解析を実行する実行ステップと、
    前記エスケープ解析に基づいて、前記メソッドを呼び出すスレッドセットの中で、前記メソッドをエスケープしないものが存在するか否か判断する判断ステップと、
    存在する場合に、前記メソッドを呼び出す前記スレッドセットに関連付けられている前記動的生成コードを、前記複数のノードに割り当てられた前記区画された複数のより小さなコードバッファのうちのいずれか1つに配置する配置ステップと
    を前記プロセッサに実行させるコンピュータシステム。
  14. 前記スレッドセットの中で、前記メソッドをエスケープしないものが存在しない場合に、前記オフラインプロファイルデータに基づいて、前記メソッドを呼び出す前記スレッドセットに関連付けられている前記動的生成コードを、前記複数のより小さなコードバッファのうちのいずれか1つに配置すること
    をさらに含む請求項13に記載のコンピュータシステム。
  15. オンラインプロファイルデータに基づいて、スレッドセットに関連付けられている新しい動的生成コードまたは再コンパイルされた動的生成コードを、前記複数のノードに割り当てられた複数のより小さなコードバッファのうちのいずれか1つに定期的に再割り当てする再割り当てステップ
    をさらに含む請求項13に記載のコンピュータシステム。
  16. 前記再コンパイルされた動的生成コードのコピーを、前記複数のノードのうちのいずれか1つに所定の回数定期的に配置するコピー配置ステップと
    前記コピー配置ステップが前記コピーを配置するときに、前記複数のより小さなコードバッファ内に存在する動的生成コードを無効にする無効ステップと
    をさらに含む請求項15に記載のコンピュータシステム。
  17. 前記オンラインプロファイルデータに基づいて、前記複数のノードのうちのいずれか1つに新しい動的生成コードを定期的に配置する配置ステップ
    をさらに含む請求項16に記載のコンピュータシステム。
  18. 所定のイベント中に、前記コピー配置ステップと、
    前記無効ステップを繰り返す繰返しステップと
    をさらに含む請求項16に記載のコンピュータシステム。
JP2007192067A 2006-07-28 2007-07-24 Numaコンピュータシステムにおけるローカリティドメインおよびスレッドアフィニティに基づいてコードを再コンパイルするためのシステムおよび方法 Expired - Fee Related JP4949157B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN1331/CHE/2006 2006-07-28
IN1331CH2006 2006-07-28

Publications (2)

Publication Number Publication Date
JP2008033932A JP2008033932A (ja) 2008-02-14
JP4949157B2 true JP4949157B2 (ja) 2012-06-06

Family

ID=38987770

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007192067A Expired - Fee Related JP4949157B2 (ja) 2006-07-28 2007-07-24 Numaコンピュータシステムにおけるローカリティドメインおよびスレッドアフィニティに基づいてコードを再コンパイルするためのシステムおよび方法

Country Status (2)

Country Link
US (1) US8453132B2 (ja)
JP (1) JP4949157B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101480954B1 (ko) * 2013-01-28 2015-01-14 한국과학기술원 Numa 시스템의 스케줄링 장치 및 그 방법

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321850B2 (en) * 2008-06-06 2012-11-27 Vmware, Inc. Sharing and persisting code caches
US8140817B2 (en) * 2009-02-24 2012-03-20 International Business Machines Corporation Dynamic logical partition management for NUMA machines and clusters
US9529636B2 (en) * 2009-03-26 2016-12-27 Microsoft Technology Licensing, Llc System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine
US9535767B2 (en) 2009-03-26 2017-01-03 Microsoft Technology Licensing, Llc Instantiating a virtual machine with a virtual non-uniform memory architecture
US8627303B2 (en) * 2009-11-30 2014-01-07 International Business Machines Corporation Memory optimization of virtual machine code by partitioning extraneous information
US8723877B2 (en) * 2010-05-20 2014-05-13 Apple Inc. Subbuffer objects
JP5576305B2 (ja) 2011-01-20 2014-08-20 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータの動作制御方法、プログラム及びシステム
US8789026B2 (en) * 2011-08-02 2014-07-22 International Business Machines Corporation Technique for compiling and running high-level programs on heterogeneous computers
US8843894B2 (en) 2012-03-12 2014-09-23 International Business Machines Corporation Preferential execution of method calls in hybrid systems
US10223260B2 (en) 2014-03-19 2019-03-05 International Business Machines Corporation Compiler-generated memory mapping hints
US9547483B1 (en) * 2015-11-06 2017-01-17 International Business Machines Corporation Feedback directed optimized compiling of optimized executable code
US9823913B2 (en) * 2015-12-03 2017-11-21 International Business Machines Corporation Method of adding local variables in place of global in JavaScript
US20180115496A1 (en) * 2016-10-21 2018-04-26 Advanced Micro Devices, Inc. Mechanisms to improve data locality for distributed gpus
US10691590B2 (en) * 2017-11-09 2020-06-23 International Business Machines Corporation Affinity domain-based garbage collection
US11397568B2 (en) 2019-12-10 2022-07-26 International Business Machines Corporation Escape analysis support for method redefinition

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675786A (ja) 1992-08-26 1994-03-18 Hitachi Ltd タスクスケジュリング方法
JP3239963B2 (ja) 1992-10-20 2001-12-17 富士通株式会社 マルチ・プロセッサ計算機システム
JPH07141305A (ja) 1993-11-16 1995-06-02 Hitachi Ltd 並列計算機の実行制御方法
JPH09293057A (ja) * 1996-04-26 1997-11-11 Nec Corp 階層構造型マルチプロセッサシステムにおけるタスク割り当て方法
JPH1063525A (ja) 1996-08-23 1998-03-06 Canon Inc 情報処理装置、情報処理システム及びその制御方法
JPH10340198A (ja) * 1997-06-06 1998-12-22 Canon Inc 情報処理システム及びその制御方法、情報処理装置及びその制御方法
US6675378B1 (en) * 2000-01-06 2004-01-06 International Business Machines Corporation Object oriented apparatus and method for allocating array objects on an invocation stack
US6665865B1 (en) * 2000-04-27 2003-12-16 Microsoft Corporation Equivalence class based synchronization optimization
JP2002149481A (ja) 2000-11-09 2002-05-24 Fujitsu Ltd 並列計算機のメモリ管理装置及び方法
JP3681647B2 (ja) 2001-02-21 2005-08-10 株式会社半導体理工学研究センター キャッシュメモリシステム装置
US7076773B2 (en) * 2001-03-20 2006-07-11 International Business Machines Corporation Object oriented apparatus and method for allocating objects on an invocation stack in a dynamic compilation environment
US7080365B2 (en) * 2001-08-17 2006-07-18 Sun Microsystems, Inc. Method and apparatus for simulation system compiler
US7120898B2 (en) * 2003-06-26 2006-10-10 Microsoft Corporation Intermediate representation for multiple exception handling models
US7146606B2 (en) * 2003-06-26 2006-12-05 Microsoft Corporation General purpose intermediate representation of software for software development tools
US7117318B1 (en) * 2003-08-04 2006-10-03 Azul Systems, Inc. Memory management
US7168071B2 (en) * 2003-09-30 2007-01-23 Intel Corporation Method and system of permitting stack allocation to programs having open-world features
CA2453714A1 (en) * 2003-12-19 2005-06-19 Ibm Canada Limited - Ibm Canada Limitee Method, system and product for indentifying and executing locked read regions and locked write regions in programming languages that offer synchronization without explicit means to distinguish between such regions
US20050283771A1 (en) * 2004-06-22 2005-12-22 Nokia Corporation System and method for decreasing the memory footprint of applications with automatic memory management systems
US7620787B2 (en) * 2006-01-26 2009-11-17 Intel Corporation Optimizing memory accesses for network applications using indexed register files
US20070250825A1 (en) * 2006-04-21 2007-10-25 Hicks Daniel R Compiling Alternative Source Code Based on a Metafunction

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101480954B1 (ko) * 2013-01-28 2015-01-14 한국과학기술원 Numa 시스템의 스케줄링 장치 및 그 방법

Also Published As

Publication number Publication date
US8453132B2 (en) 2013-05-28
US20080028179A1 (en) 2008-01-31
JP2008033932A (ja) 2008-02-14

Similar Documents

Publication Publication Date Title
JP4949157B2 (ja) Numaコンピュータシステムにおけるローカリティドメインおよびスレッドアフィニティに基づいてコードを再コンパイルするためのシステムおよび方法
US8205200B2 (en) Compiler-based scheduling optimization hints for user-level threads
Tam et al. Thread clustering: sharing-aware scheduling on SMP-CMP-SMT multiprocessors
US8271989B2 (en) Method and apparatus for virtual processor dispatching to a partition based on shared memory pages
US6598130B2 (en) Technique for referencing distributed shared memory locally rather than remotely
EP2798499B1 (en) Methods and apparatus to manage workload memory allocation
US8528001B2 (en) Controlling and dynamically varying automatic parallelization
US20070074217A1 (en) Scheduling optimizations for user-level threads
CN101322106B (zh) 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置
US8364908B2 (en) Migrating program objects in a multi-node computer system
JP2004030574A (ja) 動的にキャッシュ・メモリの割り当てを行うプロセッサ集積回路
JP2004110809A (ja) マルチプロセッサ・ホスト・システム上でのマルチプロセッサ・エミュレーションのための方法およびシステム
JP2013524386A (ja) ランスペース方法、システムおよび装置
CN1541357A (zh) 用于向一处理器让与资源的系统
Hertz et al. Waste not, want not: resource-based garbage collection in a shared environment
US20090271807A1 (en) Selectively Generating Program Objects on Remote Node of a Multi-Node Computer System
Pupykina et al. Survey of memory management techniques for hpc and cloud computing
Nagarajan et al. Architectural support for shadow memory in multiprocessors
US20080163216A1 (en) Pointer renaming in workqueuing execution model
Cheng et al. A user-level numa-aware scheduler for optimizing virtual machine performance
Cho et al. Adaptive space-shared scheduling for shared-memory parallel programs
Yu et al. Improving thread-level parallelism in GPUs through expanding register file to scratchpad memory
Cruz et al. A sharing-aware memory management unit for online mapping in multi-core architectures
Orosa et al. Flexsig: Implementing flexible hardware signatures
JP5243822B2 (ja) 仮想化されたデータ処理環境におけるワークロード管理

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100405

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110519

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111222

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

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

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

Free format text: PAYMENT UNTIL: 20150316

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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