JP4949157B2 - Numaコンピュータシステムにおけるローカリティドメインおよびスレッドアフィニティに基づいてコードを再コンパイルするためのシステムおよび方法 - Google Patents
Numaコンピュータシステムにおけるローカリティドメインおよびスレッドアフィニティに基づいてコードを再コンパイルするためのシステムおよび方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 110
- 239000000872 buffer Substances 0.000 claims description 63
- 238000004458 analytical method Methods 0.000 claims description 17
- 230000004913 activation Effects 0.000 claims description 12
- 238000001994 activation Methods 0.000 claims description 12
- 238000005192 partition Methods 0.000 claims description 4
- 238000000638 solvent extraction Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000007728 cost analysis Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 235000019633 pungent taste Nutrition 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing 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
すべてのプロセッサが周辺デバイスおよびメモリに等しくアクセスできるように編成されたシステムは、対称型マルチプロセシング(SMP)システムとして知られている。
SMPシステム内のプロセッサは、共通バスを介して共有メモリに相互に接続されている。
周辺デバイスを接続するのにバス階層が使用される場合がある。
NUMAコンピュータシステムのすべてのプロセッサは、システムメモリを共有し続けるが、メモリにアクセスするのに必要な時間は、プロセッサおよびメモリのロケーションに基づいて変化し、すなわち、一様ではない。
UMA SMP設計に類似した他の代替的なものを上回るNUMA SMP設計の主な利点は、スケーラビリティである。
さらに、NUMA SMPにおけるプログラミングは、従来のSMP共有メモリにおけるプログラミングと同程度に簡単である。
その結果、NUMAコンピュータシステムは、既存のSMPアプリケーションを変更することなく実行することができる。
また、ローカリティドメインを相互接続するネットワークを形成するために、各ローカリティドメインは、そのローカリティドメインを通信チャネルによって他のローカリティドメインと相互接続するためのブリッジも含む。
このようなマルチノードマルチプロセッサコンピュータシステムでは、特定のプロセッサの性能は、そのプロセッサが、リモートのローカリティドメインからのメモリではなく、それ自身のローカルなローカリティドメインからのメモリにアクセスする場合に、ローカルバスへのアクセスしか必要とされないので、常に最大となる。
システムファームウェアは、一般に、システムのリブート中にマルチプロセッサ環境内に存在するすべてのプロセッサおよびメモリのトポロジー情報を収容している。
このようなトポロジー情報は、ローカリティドメイン、すなわち、システムにおけるプロセッサおよび関連メモリのグループを識別する。
これによって、ローカリティドメインのプロセッサおよびメモリレンジの間の密結合が可能になり、オペレーティングシステムは、このようなアフィニティ情報を使用して、システム性能を改善するメモリ資源のアロケーションおよびソフトウェアスレッドのスケジューリングを決定することができる。
たとえば、ほとんどのオペレーティングシステムは、プロセスのすべてのスレッドが、かなり少ない待ち時間を提供する共通メモリプールを共有できるように、ローカリティドメイン内のプロセス全体をロックする方法を提供する。
プロセスがローカリティドメイン全体に及ぶ必要がある場合、現在の技法は、スレッドがアクセスするローカリティドメインをローカルドメインメモリセグメントに分割することによって、異なるスレッドにより良いメモリアクセスを提供する。
これらの技法はデータハンドリングを取り扱うが、命令ハンドリングを取り扱わない。
加えて、現在の技法は、このようなアフィニティ情報を使用するNUMAコンピュータシステムのローカリティドメインおよび/またはスレッドアフィニティに基づいてコードバッファを区画しない。
添付図面には、例示として、本発明を実施することができる特定の実施形態が示されている。
これらの実施形態は、当業者が本発明を実施することを可能にするように十分詳細に説明されているが、他の実施形態も利用できること、および、本発明の範囲から逸脱することなく変更を行えることが理解されるべきである。
したがって、以下の詳細な説明は、限定の意味に解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によってのみ画定される。
たとえば、電子商取引のコンピュータアプリケーションの場合、各顧客の特定の電子商取引のトランザクションが別個のスレッドでハンドリングされるように、異なる顧客に異なるスレッドを割り当てることができる。
以下の解説では、特定の数組の資源に割り当てられたエンティティを「スレッド」と呼ぶことにする。
しかしながら、他の専門用語を使用して、コンピュータシステムにおける一意の実行パスを定義するエンティティを説明できることが十分理解されよう。
したがって、「スレッド」という用語は、コンピュータシステムにおける特定の実行パスを定義する、コンピュータにおけるあらゆるエンティティに対応するものと考えられるべきである。
本発明の技法は、さらに、分割されたメソッドおよび関連付けられているスレッドセットを共に、これらの区画された複数のより小さなコードバッファにグループ化する。
さらに、本発明の技法は、グループ化されたメソッドおよびスレッドを、割り当てられたノードに関連付ける。
基本的には、各メソッドは、関連付けられている区画された複数のより小さなコードバッファの1つに配置され、グループ化されたスレッドは、関連付けられている複数のノードの1つで実行される。
加えて、本発明の技法は、オンラインプロファイルデータを使用して、新しいメソッドのコンパイルまたは既存のメソッドの再コンパイルから生成されたコードを、非ローカルアクセスが最小にされるように配置する。
動的生成コードは、JAVA(登録商標)メソッド用のものとすることができる。
動的生成コードは、より小さなスニペットで生成され、そのアクセスパターンは、ランタイム環境によって決定することができる。
たとえば、マルチスレッドプログラムでは、異なるスレッドは、異なる作業を行っている場合があり、異なるJAVAメソッドと共に動作している可能性がある。
また、たとえば、NUMAコンピュータシステムに4つのセルが存在する場合、コードバッファは、4つの関連部分(C1、C2、C3、およびC4)に分割することができる。
ステップ110において、この一例の方法100は、コードバッファを複数のより小さなコードバッファに区画することにより開始する。
いくつかの実施形態では、mmaps等の一般に知られている技法が使用されて、コードバッファが区画される。
本発明の実行例では、4つのより小さなバッファが、それらのバッファに関連付けられている4つの異なるセルに割り当てられる、すなわち、対応するCLM(セルローカルメモリ)に配置される。
いくつかの実施形態では、複数のより小さなコードバッファのそれぞれのサイズは、オフラインプロファイルデータに基づいて決定される。
たとえば、通常のアプリケーションの実行について、セルC1にコードバッファの約40%が必要とされ、C2、C3、およびC4にそれぞれ20%が必要とされる場合、コードバッファを対応するサイズに分割でき、これらのより小さなバッファをこれらの対応するセルに関連付けることができる。
エスケープ解析は、データの寿命がそのデータの静的スコープを超える場合があるか否かを判断する静的解析である。
また、エスケープ解析は、スタックにオブジェクトをアロケートできるか否かも判断することができる。
さらに、この技法は、オブジェクトに対する同期オペレーションを取り除くことができるように、そのオブジェクトが、その寿命中に単一のスレッドによってのみアクセスされるか否かを判断することを容易にする。
エスケープ解析情報は、既知の従来の技法を使用してコンパイラが収集することができる。
エスケープ解析情報は、どのオブジェクトをヒープの代わりにスタックにアロケートできるか、どの命令セットがスレッドをエスケープしないか等の情報を提供する。
この情報は、各メソッドが非エスケープスレッドセットに分類されるように、ホットメソッドセットおよびスレッドセットを分割するのに使用することができる。
たとえば、エスケープ解析は、メソッドMがスレッドセットT1およびT2をエスケープしないことを伝える場合がある。
その場合、Mのコンパイルから生成されたコードを、関連付けられているセルにのみ配置することができ、スレッドT1およびT2は、このセルに結合される(または、このセルにおいて、スレッドT1およびT2が実行される)。
ステップ140の判断に基づいて、メソッドのそれぞれをエスケープしないスレッドセットが存在する場合には、方法100はステップ150に進む。
ステップ150において、メソッドのそれぞれをエスケープしないスレッドセットに関連付けられている生成コードは、複数のノードに割り当てられた、関連付けられている区画された複数のより小さなコードバッファに配置される。
ステップ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)を超えていると判断される場合、そのコードセクションはコンパイルされる。
これらの実施形態では、再コンパイルされた生成コードのコピーを配置する所定の回数は、経験的な手法に基づいて決定される。
いくつかの実施形態では、新しい生成コードは、オンラインプロファイルデータに基づいて、関連付けられている複数のノードに定期的に配置される。
その上、さらに他の実施形態は、2つまたは3つ以上の特定の相互接続されたハードウェアモジュールであって、関係した制御信号およびデータ信号がそれらのモジュール間で、それらのモジュールを通って通信されるハードウェアモジュールとしてステップを実施することもできるし、特定用途向け集積回路の部分としてステップを実施することもできる。
このように、例示のプロセスフロー図は、ソフトウェア、ファームウェア、および/またはハードウェアの実施態様に適用可能である。
このソフトウェアは、図2(後述)に示す環境で実行することもできるし、他のあらゆる適したコンピューティング環境で実行することもできる。
本発明の主題の実施形態は、多数の汎用コンピューティング環境または専用コンピューティング環境で動作可能である。
いくつかのコンピューティング環境には、コンピュータ可読媒体に記憶されたコードを実行するパーソナルコンピュータ、汎用コンピュータ、サーバコンピュータ、ハンドヘルドデバイス(すべてのタイプの電話および個人情報端末(PDA)が含まれるが、これらに限定されない)、ラップトップデバイス、マルチプロセッサ、マイクロプロセッサ、セットトップボックス、プログラマブル家庭用電化製品、ネットワークコンピュータ、ミニコンピュータ、メインフレームコンピュータ、分散コンピューティング環境等が含まれる。
本発明の主題の実施形態は、コンピュータによって実行されるプログラムモジュール等のマシン実行可能命令として部分的または全体的に実施することができる。
一般に、プログラムモジュールには、特定のタスクを実行するかまたは特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造体等が含まれる。
分散コンピューティング環境では、プログラムモジュールは、ローカルストレージデバイスまたはリモートストレージデバイスに配置することができる。
図2および以下の解説は、本明細書に含まれる発明概念の特定の実施形態を実施できる、適したコンピューティング環境の簡潔な一般的説明を提供することを目的としている。
コンピュータ210は、加えて、バス205およびネットワークインターフェース212も含む。
1つまたは2つ以上の出力デバイス218は、コンピュータのディスプレイデバイス、コンピュータモニタ、TVスクリーン、プラズマディスプレイ、LCDディスプレイ、デジタイザのディスプレイ、電子タブレットのディスプレイ等とすることができる。
コンピュータ210は、通信接続220を使用して1つまたは2つ以上のリモートコンピュータに接続するネットワーク接続環境で動作することができる。
リモートコンピュータには、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他のネットワークノード等が含まれ得る。
通信接続には、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、および/または他のネットワークが含まれ得る。
揮発性メモリ206および不揮発性メモリ208等のコンピュータ210のメモリ素子、着脱可能ストレージ201、並びに着脱不能ストレージ214にさまざまなコンピュータ可読媒体を記憶することができ、コンピュータ210のメモリ素子、着脱可能ストレージ201、および着脱不能ストレージ214からさまざまなコンピュータ可読媒体にアクセスすることができる。
コンピュータメモリ素子には、データおよびマシン可読命令を記憶するためのあらゆる適したメモリデバイス(複数可)を含めることができる。
このあらゆる適したメモリデバイス(複数可)は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、ハードドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、ディスケット、磁気テープカートリッジ、メモリカード、Memory Stick(商標)等をハンドリングするための着脱可能媒体ドライブ;ケミカルストレージ;バイオロジカルストレージ;および他のタイプのデータストレージ等である。
この用語は、汎用ロジックデバイス若しくは汎用ロジックアレイまたはプログラマブルロジックデバイス若しくはプログラマブルロジックアレイ、特定用途向け集積回路、シングルチップコンピュータ、スマートカード等の組み込みコントローラも含む。
プログラムモジュールには、関数、プロシージャ、データ構造体、アプリケーションプログラム等が含まれる。
たとえば、プログラムモジュール225は、複数のノードを含むNUMAコンピュータシステムのコードバッファ内に存在する動的生成コードの非ローカルアクセスを削減できるマシン可読命令を含むことができ、それによって、本発明の主題の教示および本明細書で説明した実施形態に従って性能を改善する。
一実施形態では、プログラムモジュール225は、CD−ROMに含めることができ、CD−ROMから不揮発性メモリ208のハードドライブへロードすることができる。
マシン可読命令は、本発明の主題のさまざまな実施形態に従ってコンピュータ210に符号化を行わせる。
上述した技法は、コンパイラから得られたエスケープ解析情報を使用して、NUMAコンピュータシステム等のセルベースのシステムの実行可能コードバッファをセグメント化する。
上記の技法は、高いスレッドアフィニティを有するプロセスについて、ローカリティ単位の永続的なコードキャッシュ方式を提案する。
さらに、上記の技法は、共有されたコードキャッシュの同期オーバーヘッドを削減する(すなわち、高速JAVA仮想マシン(JVM)の複数のコンパイラスレッドでは、各スレッドが単独でコードを実行するのとは対照的に、JIT(ジャストインタイムコンパイラ)におけるような変換を行うことを削減することができる)。
JITコンパイラは、すべてのバイトコードを実行前にマシンコードに変換するが、或るコードパスがまさに実行されようとしていることを知っている時にのみそのコードパスをコンパイルする。
さらに、上記の技法は、コンパイラから得られたエスケープ解析情報を使用して、セルローカルメモリ(CLM)ベースのシステムのコードバッファをセグメント化する。
このようなコンピュータプログラムは、コンピュータ可読命令としてストレージ媒体に記憶することができ、その結果、そのストレージ媒体は、本発明の主題のさらに別の一態様を構成する。
他の多くの実施形態が当業者には明らかとなろう。
したがって、本発明の主題の範囲は、添付の特許請求の範囲が資格を有する均等物の全範囲と共に、添付の特許請求の範囲によって決定されるべきである。
要素、アルゴリズム、およびオペレーションシーケンスはすべて、特定の要件に適するように変更することができる。
図1に示す方法に関して上述したオペレーションは、本明細書で図示して説明した順序とは異なる順序で実行することができる。
その特定の部分を誇張されている場合がある一方、それ以外の部分が最小にされている場合がある。
図1および図2は、当業者が理解でき、適切に実行できる主題のさまざまな実施形態を示している。
本開示の方法は、本発明の特許を請求する実施形態が、各請求項で明示的に列挙された特徴よりも多くの特徴を必要とするという意図を反映しているとして解釈されるべきではない。
逆に、添付の特許請求の範囲が反映するように、独創的な発明は、開示した単一の実施形態のすべての特徴よりも少ない特徴に存する。
このように、添付の特許請求の範囲は、これによって、本発明の実施形態の詳細な説明に援用され、各請求項は、それ自体で別個の好ましい実施形態として成立している。
202・・・処理ユニット,
205・・・バス,
206・・・揮発性メモリ,
208・・・不揮発性メモリ,
212・・・ネットワークインターフェース,
214・・・着脱不能ストレージ,
216・・・ユーザ入力デバイス,
218・・・出力デバイス,
225・・・プログラム,
Claims (18)
- 複数のノードを含むNUMAコンピュータシステムのコードバッファ内に存在する動的生成コード(dynamically generated code)の非ローカルアクセスを削減するための方法であって、
前記動的生成コードが呼び出すメソッドごとの起動回数、起動に要する時間、および、サイズを少なくとも含むオフラインプロファイルデータから、各メソッドが必要とする前記コードバッファの割合を算出し、前記コードバッファを、前記算出した各メソッドが必要とするコードバッファの割合それぞれに対応するサイズの複数のより小さなコードバッファに区画することと、
前記複数のより小さなコードバッファのそれぞれを前記複数のノードの1つに割り当てることと、
メソッドのコンパイル中にエスケープ解析を実行することと、
前記エスケープ解析に基づいて、前記メソッドを呼び出すスレッドセットの中で、前記メソッドをエスケープしないものが存在するか否か判断することと、
存在する場合に、前記メソッドを呼び出す前記スレッドセットに関連付けられている前記動的生成コードを、前記複数のノードに割り当てられた前記区画された複数のより小さなコードバッファのうちのいずれか1つに配置することと
を含む方法。 - 前記スレッドセットの中で、前記メソッドをエスケープしないものが存在しない場合に、前記オフラインプロファイルデータに基づいて、前記メソッドを呼び出す前記スレッドセットに関連付けられている前記動的生成コードを、前記複数のより小さなコードバッファのうちのいずれか1つに配置すること
をさらに含む請求項1に記載の方法。 - オンラインプロファイルデータに基づいて、スレッドセットに関連付けられている新しい動的生成コードまたは再コンパイルされた動的生成コードを、前記複数のノードに割り当てられた複数のより小さなコードバッファのうちのいずれか1つに定期的に再割り当てすること
をさらに含む請求項1に記載の方法。 - 前記再コンパイルされた動的生成コードのコピーを、前記複数のノードのうちのいずれか1つに所定の回数定期的に配置することと、
前記コピーを配置するときに、前記複数のより小さなコードバッファ内に存在する動的生成コードを無効にすることと
をさらに含む請求項3に記載の方法。 - 前記オンラインプロファイルデータに基づいて、前記複数のノードのうちのいずれか1つに新しい動的生成コードを定期的に配置すること
をさらに含む請求項4に記載の方法。 - 所定のイベント中に、前記動的生成コードのコピーを定期的に配置することと、
前記コードバッファ内に存在する動的生成コードを無効にすることを繰り返すことと
をさらに含む請求項3に記載の方法。 - 複数のノードを含むNUMAコンピュータシステムのコードバッファ内に存在する動的生成コードの非ローカルアクセスを削減するためのプログラムを記憶するコンピュータ可読の記録媒体であって、
前記動的生成コードが呼び出すメソッドごとの起動回数、起動に要する時間、および、サイズを少なくとも含むオフラインプロファイルデータから、各メソッドが必要とする前記コードバッファの割合を算出し、前記コードバッファを、前記算出した各メソッドが必要とするコードバッファの割合それぞれに対応するサイズの複数のより小さなコードバッファに区画する区画ステップと、
前記複数のより小さなコードバッファのそれぞれを前記複数のノードの1つに割り当てる割り当てステップと、
メソッドのコンパイル中にエスケープ解析を実行する実行ステップと、
前記エスケープ解析に基づいて、前記メソッドを呼び出すスレッドセットの中で、前記メソッドをエスケープしないものが存在するか否か判断する判断ステップと、
存在する場合に、前記メソッドを呼び出す前記スレッドセットに関連付けられている前記動的生成コードを、前記複数のノードに割り当てられた前記区画された複数のより小さなコードバッファのうちのいずれか1つに配置する配置ステップと
をコンピュータに実行させるためのプログラムを記憶するコンピュータ可読の記録媒体。 - 前記スレッドセットの中で、前記関連付けられているメソッドをエスケープしないものが存在しない場合に、前記オフラインプロファイルデータに基づいて、前記メソッドを呼び出す前記スレッドセットに関連付けられている前記動的生成コードを、前記複数のより小さなコードバッファのうちのいずれか1つに配置する配置ステップ
をさらに含む請求項7に記載のコンピュータ可読の記録媒体。 - オンラインプロファイルデータに基づいて、スレッドセットに関連付けられている新しい動的生成コードまたは再コンパイルされた動的生成コードを、前記複数のノードに割り当てられた複数のより小さなコードバッファのうちのいずれか1つに定期的に再割り当てする再割り当てステップ
をさらに含む請求項7に記載のコンピュータ可読の記録媒体。 - 前記再コンパイルされた動的生成コードのコピーを、前記複数のノードのうちのいずれか1つに所定の回数定期的に配置するコピー配置ステップと、
前記コピー配置ステップが前記コピーを配置するときに、前記複数のより小さなコードバッファ内に存在する動的生成コードを無効にする無効ステップと
をさらに含む請求項9に記載のコンピュータ可読の記録媒体。 - 前記オンラインプロファイルデータに基づいて、前記複数のノードのうちのいずれか1つに新しい動的生成コードを定期的に配置する配置ステップ
をさらに含む請求項10に記載のコンピュータ可読の記録媒体。 - 所定のイベント中に、前記コピー配置ステップおよび前記無効ステップを繰り返す繰返しステップ
をさらに含む請求項10に記載のコンピュータ可読の記録媒体。 - ネットワークインターフェースと、
前記ネットワークインターフェースを介して動的生成コードを受信する前記ネットワークインターフェースに接続される入力モジュールと、
プロセッサと、
前記プロセッサに接続されるメモリであって、複数のノードを含むNUMAコンピュータシステムのコードバッファ内に存在する動的生成コードの非ローカルアクセスの削減するためのプログラムを記憶するメモリを備え、
前記プログラムは、
前記動的生成コードが呼び出すメソッドごとの起動回数、起動に要する時間、および、サイズを少なくとも含むオフラインプロファイルデータから、各メソッドが必要とする前記コードバッファの割合を算出し、前記コードバッファを、前記算出した各メソッドが必要とするコードバッファの割合それぞれに対応するサイズの複数のより小さなコードバッファに区画する区画ステップと、
前記複数のより小さなコードバッファのそれぞれを前記複数のノードの1つに割り当てる割り当てステップと、
メソッドのコンパイル中にエスケープ解析を実行する実行ステップと、
前記エスケープ解析に基づいて、前記メソッドを呼び出すスレッドセットの中で、前記メソッドをエスケープしないものが存在するか否か判断する判断ステップと、
存在する場合に、前記メソッドを呼び出す前記スレッドセットに関連付けられている前記動的生成コードを、前記複数のノードに割り当てられた前記区画された複数のより小さなコードバッファのうちのいずれか1つに配置する配置ステップと
を前記プロセッサに実行させるコンピュータシステム。 - 前記スレッドセットの中で、前記メソッドをエスケープしないものが存在しない場合に、前記オフラインプロファイルデータに基づいて、前記メソッドを呼び出す前記スレッドセットに関連付けられている前記動的生成コードを、前記複数のより小さなコードバッファのうちのいずれか1つに配置すること
をさらに含む請求項13に記載のコンピュータシステム。 - オンラインプロファイルデータに基づいて、スレッドセットに関連付けられている新しい動的生成コードまたは再コンパイルされた動的生成コードを、前記複数のノードに割り当てられた複数のより小さなコードバッファのうちのいずれか1つに定期的に再割り当てする再割り当てステップ
をさらに含む請求項13に記載のコンピュータシステム。 - 前記再コンパイルされた動的生成コードのコピーを、前記複数のノードのうちのいずれか1つに所定の回数定期的に配置するコピー配置ステップと
前記コピー配置ステップが前記コピーを配置するときに、前記複数のより小さなコードバッファ内に存在する動的生成コードを無効にする無効ステップと
をさらに含む請求項15に記載のコンピュータシステム。 - 前記オンラインプロファイルデータに基づいて、前記複数のノードのうちのいずれか1つに新しい動的生成コードを定期的に配置する配置ステップ
をさらに含む請求項16に記載のコンピュータシステム。 - 所定のイベント中に、前記コピー配置ステップと、
前記無効ステップを繰り返す繰返しステップと
をさらに含む請求項16に記載のコンピュータシステム。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101480954B1 (ko) * | 2013-01-28 | 2015-01-14 | 한국과학기술원 | Numa 시스템의 스케줄링 장치 및 그 방법 |
Families Citing this family (15)
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)
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 |
-
2007
- 2007-06-20 US US11/812,639 patent/US8453132B2/en not_active Expired - Fee Related
- 2007-07-24 JP JP2007192067A patent/JP4949157B2/ja not_active Expired - Fee Related
Cited By (1)
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 |