JP4778035B2 - 外部資源を排他使用しながら実行される命令の実行時間の遅延を防ぐためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム - Google Patents
外部資源を排他使用しながら実行される命令の実行時間の遅延を防ぐためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム Download PDFInfo
- Publication number
- JP4778035B2 JP4778035B2 JP2008286523A JP2008286523A JP4778035B2 JP 4778035 B2 JP4778035 B2 JP 4778035B2 JP 2008286523 A JP2008286523 A JP 2008286523A JP 2008286523 A JP2008286523 A JP 2008286523A JP 4778035 B2 JP4778035 B2 JP 4778035B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- counter
- value
- executed
- exclusively
- 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 abstract description 133
- 238000004590 computer program Methods 0.000 title claims abstract description 20
- 230000003247 decreasing effect Effects 0.000 claims abstract description 23
- 230000007423 decrease Effects 0.000 claims description 47
- 238000012545 processing Methods 0.000 claims description 45
- 230000004044 response Effects 0.000 claims description 26
- 230000008859 change Effects 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 33
- 230000003111 delayed effect Effects 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 5
- 238000004904 shortening Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000002035 prolonged effect Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Description
上記クラスタ構成では、上記サーバの1つが、共有DBのレコードを長時間ロックする場合がある。レコードが一旦ロックされると、ロックしたサーバ以外のサーバは、ロックされたレコードにアクセスできない。そのために、ロックしたサーバ以外のサーバがロックされたレコードにアクセスする場合、レコードがアンロックされるまで自身の処理を進めることができずに待たされる。よって、クラスタ構成をとったにもかかわらず、システムの性能が結局向上しないという危険性がある。
下記特許文献2は、本来のタスクとGCのタスクの優先度を調整し、GCを制御する手段を記載する。しかし、該制御する手段は、本来のタスクと同時にGCを実行できることを前提としている。よって、GCが実行されることによって本来のタスクの処理時間が遅延することは問題とされていない。
上記スレッドにおいて、排他使用を獲得する命令及び排他使用を解放する命令を実行するロック部と、
上記排他使用を獲得する命令又は上記排他使用を解放する命令の実行に応じて、上記スレッドそれぞれに関連付けられたカウンタの値を増減するカウンタ部と、
上記カウンタの値又は上記カウンタの値の変化に応じて、上記外部資源を排他使用しながら実行される命令と該外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令との実行順を制御する制御部と
を含む。
プログラム実行中に行われるメモリ・アロケーションに使えるメモリサイズが上記カウンタの値の合計値に基づいて求められる値よりも小さい場合、上記外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令を実行する。
ここで、T=外部資源を排他使用していない場合に適用される上記外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令が開始されるメモリサイズの閾値であり、
k=カウンタの値の合計値に基づいて求められる値を調整するためのパラメータであり、
N=カウンタの値の合計値である。
上記制御部が、上記実行回数カウンタの値が閾値よりも大きい場合、上記スレッドそれぞれに関連付けられたメソッドについて、上記外部資源を排他使用しながら実行される命令の実行時間を短縮化する命令を実行する。
上記制御部が、上記実行回数カウンタの値が上記閾値よりも大きい場合、上記実行回数カウンタに関連付けられたメソッドを上記JITコンパイルするリストに追加する。
上記制御部が、上記排他使用が獲得される前に、上記カウンタの値の増加に応じて、上記外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令を実行する。
上記制御部が、上記カウンタの値の減少に応じて、上記外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令を実行する。
上記排他使用を獲得する命令の実行に応じて、上記カウンタの値を増加し、
上記排他使用を解放する命令の実行に応じて、上記カウンタの値を減少する。
上記スレッドにおいて、排他使用を獲得する命令及び排他使用を解放する命令を実行するロック部と、
上記排他使用を獲得する命令又は上記排他使用を解放する命令の実行に応じて、上記スレッド全てのカウンタの値の合計値を増減するカウンタ部と、
上記カウンタの値の合計値又はカウンタの値の合計値の変化に応じて、上記外部資源を排他使用しながら実行される命令と該外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令との実行順を制御する制御部と
を含む。
上記スレッドにおいて、排他使用を獲得する命令又は排他使用を解放する命令を実行するステップと、
上記排他使用を獲得する命令又は上記排他使用を解放する命令の実行に応じて、上記スレッドそれぞれに関連付けられたカウンタの値を増減するステップと、
上記カウンタの値又は上記カウンタの値の変化に応じて、上記外部資源を排他使用しながら実行される命令と該外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令との実行順を制御するステップと、
を含む。
上記スレッドにおいて上記メソッドが実行されることに応じて、上記実行回数カウンタの値を求めるステップと、
上記実行回数カウンタの値が閾値よりも大きい場合、上記スレッドそれぞれに関連付けられたメソッドについて、上記外部資源を排他使用しながら実行される命令の実行時間を短縮化する命令を実行するステップと
を含む。
上記カウンタの値の増加に応じて、上記排他使用が獲得される前に上記外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令を実行するステップと
を含む。
上記カウンタの値の減少に応じて、上記外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令を実行するステップと
を含む。
上記排他使用を獲得する命令の実行に応じて、上記カウンタの値を増加するステップと、
上記排他使用を解放する命令の実行に応じて、上記カウンタの値を減少するステップと
を含む。
上記スレッドにおいて、排他使用を獲得する命令又は排他使用を解放する命令を実行するステップと、
上記排他使用を獲得する命令又は上記排他使用を解放する命令の実行に応じて、上記スレッド全てのカウンタの値の合計値を増減するステップと、
上記カウンタの値の合計値又はカウンタの値の合計値の変化に応じて、上記外部資源を排他使用しながら実行される命令と該外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令との実行順を制御するステップと、
を含む。
上記スレッドにおいて、排他使用を獲得する命令又は排他使用を解放する命令を実行するステップと、
上記排他使用を獲得する命令又は上記排他使用を解放する命令の実行に応じて、上記スレッドそれぞれに関連付けられたカウンタの値を増減するステップと、
上記カウンタの値又は上記カウンタの値の変化に応じて、上記データベースを排他使用しながら実行される命令とガベージコレクション又はジャストインタイム(JIT)コンパイルとの実行順を制御するステップと
を含む。
本発明の実施態様において、「排他使用を解放する命令」は、上記外部資源の独占使用を終了するために、ロックを解放する命令である。「排他使用を解放する命令」は、例えば、データベースアクセスにおける「commit」要求である。「排他使用を解放する命令」は、上記スレッドにおいて実行される。
本発明の実施態様において、「外部資源を排他使用しながら実行される命令」は、上記外部資源を独占的に使用する命令である。「外部資源を排他使用しながら実行される命令」は、上記ロックが獲得された後から上記ロックが解放される前の間における上記外部資源に対する命令である。「外部資源を排他使用しながら実行される命令」は、上記スレッドにおいて実行される。
「外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令」は、ハウスキーピング処理を含む。ハウスキーピング処理は、本来のプログラムの処理とは別に非同期に動いている処理である。ハウスキーピング処理は、例えば、GCの実行命令、JITコンパイルの実行命令を含む。「外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令」は、上記排他使用しながら実行される命令を実行するスレッドとは別のスレッドにおいて実行される。
A.上記カウンタの値の合計値が大きい状況では、上記遅延をもたらす命令がなるべく実行されないように制御される。
B.上記カウンタの値の合計値が大きい状況では、上記遅延をもたらす命令の優先度が下げられ、上記遅延をもたらす命令が抑制される。
C.上記カウンタの値が大きいスレッドで実行される処理の優先度が上げられる。
D.上記カウンタの値が大きいスレッドで実行されたメソッドについて、早めに短縮化する命令が実行され高速化される。
E.上記カウンタの値を大きくする場合、上記遅延をもたらす命令が前倒しで実行される。
上記カウンタの値の増減は、アプリケーションから行うこともできる。しかし典型的には、上記カウンタの値の増減は、上記プログラム実行環境のシステムライブラリ内のメソッドで実行される。例えば、外部資源がデータベースである場合、該データベースにアクセスするためのライブラリ内のデータベースレコードのロックを獲得するメソッドにおいて、上記カウンタを増加させる。また、データベースレコードのロックを解放するメソッドにおいて、上記カウンタを減少させる。例えば、コンピュータ・システムは、データベースレコードをロックするSQL命令である「select for update」が実行されたら上記カウンタの値に1を加える。また、コンピュータ・システムは、レコードロックを解放するコミット(commit)命令が実行されたら上記カウンタの値から1を引く。このようにすれば、多くのデータベースレコードがロックされている時に上記遅延をもたらす命令が抑制され、ロックが獲得される時間を短くすることができる。
上記カウンタの増減値は、ロックの対象に応じて管理者が設定してもよい。管理者は、上記カウンタの増減値に離散化スコアを与えることができる。
外部資源が、例えば、ハードディスクであり、ロックの対象が該ハードディスク上のファイル、該ファイルが格納されるフォルダA及び上記ファイルが格納されるフォルダBであるとする。ここで、上記ファイルは、アクセスされる頻度が低く、ロックされたとしてもシステム全体の処理が遅延する可能性は低いとする。また、フォルダAは、アクセスされる頻度が高く、ロックされた場合に上記ファイルに比べてシステム全体の処理が遅延する可能性が高いとする。さらに、フォルダBは、アクセスされる頻度がフォルダAよりも高く、ロックされた場合にフォルダAに比べシステム全体の処理が遅延する可能性が高いとする。この場合、管理者は上記増減値を、ファイルに対するロックに1、フォルダAに対するロックに5、フォルダBに対するロックに10を設定しうる。
また、外部資源が、例えば、データベースであり、ロックの対象が該データベース上のレコード、テーブルA及びテーブルBであるとする。ここで、上記レコードがロックされた場合、システム全体の処理が遅延する可能性は低いとする。上記テーブルAがロックされた場合、システム全体の処理が遅延する可能性は、上記レコードがロックされた場合に比べ高いとする。さらに、上記テーブルBがロックされた場合、システム全体の処理が遅延する可能性は、上記テーブルAがロックされた場合よりも高いとする。この場合、管理者は上記増減値を、レコードに対するロックに1、テーブルAに対するロックに5、テーブルBに対するロックに10を設定しうる。
また、外部資源がスプレッドシート又はブックファイルであり、ロックの対象が該スプレッドシート上のセル、ブックファイル上のセル、シート及びブックであるとする。上記セル、シート及びブックで扱われるデータは、通常セル、シート、ブックの順で少なくなる。よって、管理者は上記増減値を、セルに対するロックに1、シートに対するロックに5、ブックに対するロックに10を設定しうる。
上記管理者による増減値の設定により、ロックの影響規模に応じた上記遅延をもたらす命令の抑制が可能になる。
また、本発明の実施態様においては、上記カウンタの値によって上記閾値が調整される。
JITコンパイルの機能を有する上記実行環境では、一般的にメソッドごとに実行回数カウンタが用意されている。上記メソッドがインタプリタ方式で実行されると、上記実行回数カウンタに1が加えられる。そして、該実行回数が予め設定された閾値を超えると、上記メソッドがJITコンパイルされる対象のメソッドを登録するリストに登録される。JITコンパイルは定期的に実行される。JITコンパイルが実行されると、上記リストに登録されたメソッドは、機械語のコードに変換される。また、管理者は、JITコンパイルについての最適化レベルを設定できる。該最適化レベルが高く設定されるほど、上記変換に要する時間が長くなり、変換された機械語のコードの実行時間が短くなる。
JITコンパイル処理は、それ自体は上記遅延をもたらす命令である。しかし、コンパイルされたメソッドの処理時間は高速化される。よって、JITコンパイル処理は、上記短縮化する命令でもある。
また、本発明の実施態様において、上記実行回数カウンタの増分は、1とは限らない。本発明の実施態様では、上記スレッド毎に関連付けられたカウンタの値が、「重み」として上記増分に加えられる。例えば、上記カウンタの値が5ならば、上記増分は1+5=6である。
共有DBは、複数のサーバ(WAS1、2、・・・)から排他的にアクセスされるレコードを含むデータベースである。また、上記サーバでGCが発生した場合のアプリケーションの処理時間は、GCが発生しなかった場合の処理時間に比べて遅くなる。
ここで、WAS1上のアプリケーションが上記データベースのロックを獲得しロックを解放する前に、GCが発生したとする。すると、上記アプリケーションの処理時間は遅延する。よって、上記データベースのロックが獲得されている時間は長時間になる。そして、上記ロックが獲得されている間、別のサーバ(WAS2、3、・・・)上のアプリケーションは、上記データベースのロックを獲得できない。上記別のサーバが上記データベースのロックを獲得するためには、WAS1上のGCが完了し、そしてロックが解放されるまで待つ必要がある。このため、システム全体の処理時間の遅延が起きる。
コンピュータ・プログラム実行環境(201)は、スレッド(202〜204)、制御部(208)、カウンタ部(209)、ロック部(210)、計算部(211)、第1の変更部(212)及び第2の変更部(213)を有する。また、スレッド(202〜204)それぞれには、カウンタ(205〜207)が関連付けられている。カウンタ部(209)は、上記カウンタ(205〜207)の値の合計値を保持する。代替的に、スレッド(202〜204)それぞれに上記カウンタ(205〜207)を関連付ける代わりに、カウンタ部(209)が、上記カウンタの値の合計値のみを保持してもよい。
外部資源(214)を排他使用する場合、スレッド(202〜204)において、外部資源(214)を排他使用しながら命令が実行される。
ロック部(210)は、外部資源(214)を排他使用するために、外部資源の排他使用を獲得する命令を実行する。
カウンタ部(209)は、上記獲得する命令の実行に応じて、外部資源(214)を排他使用しながら命令が実行されるスレッド(202〜204)に関連付けられたカウンタ(205〜207)の値を増減する。カウンタ(205〜207)の値の増減に従い、カウンタ部は、カウンタの値の合計値を増減する。例えば、スレッド(202)において上記獲得する命令が実行されたならば、カウンタ部(209)は、カウンタ(205)の値を1増加する。該カウンタ(205)の値の増加に伴い、カウンタ部(209)は、カウンタ(205〜207)の値の合計値を1増加する。代替的に、上記獲得する命令の実行に応じて、カウンタ部(209)が上記カウンタの値の合計値を増減してもよい。例えば、スレッド(202)において上記獲得する命令が実行された場合、カウンタ部(209)は、カウンタの値の合計値を1増加する。
上記外部資源(214)の排他使用を終了する場合、ロック部(210)は、外部資源の排他使用を解放する命令を実行する。カウンタ部(209)は、上記解放する命令の実行に応じて、外部資源(214)を排他使用しながら命令が実行されるスレッド(202〜204)に関連付けられたカウンタ(205〜207)の値を増減する。該カウンタ(205〜207)の値の増減により、カウンタ部は、カウンタの値の合計値を増減する。例えば、スレッド(202)において上記解放する命令が実行されたならば、カウンタ部(209)は、カウンタ(205)の値を1減少させる。該カウンタ(205)の値の減少に伴い、カウンタ部(209)は、カウンタ(205〜207)の値の合計値を1減少する。代替的に、上記解放する命令の実行に応じて、カウンタ部(209)が上記カウンタの値の合計値を増減してもよい。例えば、スレッド(202)において上記解放する命令が実行された場合、カウンタ部(209)は、カウンタの値の合計値を1減少する。
第1の変更部(212)は、上記カウンタ(205〜207)の値の合計値の増減に応じて、外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令が実行されるスレッド(図示せず)の優先度を変更する。
第2の変更部(213)は、上記カウンタ(205〜207)の値の増減に応じて、上記スレッド(202〜204)の優先度を変更する。
制御部(208)は、上記カウンタ(205〜207)の値又は値の変化に応じて、上記スレッド(202〜204)に含まれる命令の実行順を制御する。該命令は、外部資源を排他使用しながら実行される命令及び外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令である。
計算部(211)は、上記スレッドにおいてメソッドが実行されることに応じて、実行回数カウンタの値を求める。実行回数カウンタの値の増分は、該実行回数カウンタの増分に上記カウンタの値を重みとして付与した値である。
制御部(208)はまた、上記実行回数カウンタの値に応じて、外部資源を排他使用しながら実行される命令の実行時間を短縮化する命令を実行する。
アプリケーション用スレッド(306〜308)は、プログラムが実行されるスレッドである。各アプリケーション用スレッド(306〜308)には、「カウンタ」が保持される。該カウンタは、アプリケーション用スレッド(306〜308)それぞれに関連付けられる。また、「カウンタの値の合計値」は、JDBCライブラリ(310)に保持される。なお、上記カウンタ及びカウンタの値の合計値は、プログラムを組み込める対象のどこに保持されてもよい。例えば、スレッドスケジューラ(309)に上記カウンタ及びカウンタの値の合計値が保持されてもよい。代替的に、上記スレッドそれぞれにカウンタが保持されず、上記カウンタの値の合計値のみがJDBCライブラリ(310)に保持されてもよい。
JITスレッド(305)は、JITコンパイル処理が実行されるスレッドである。JIT用プロファイラ(302)は、上記アプリケーション用スレッド(306〜308)でのメソッドの実行を監視し、上記JITコンパイルのタイミングを制御するプロファイラである。
JIT用プロファイラ(302)は、上記メソッドのプロファイリングをするときに、スレッドに関連付けられたカウンタの値を考慮する。JIT用プロファイラ(302)は、該カウンタの値が大きい状態のスレッドから呼ばれたメソッドが早めにJITコンパイルされるように、従来のメソッド実行回数カウンタに重みをつけて加算する。JIT用プロファイラ(302)は、計算部(図2、211)及び制御部(図2、208)に対応する。
JAVAヒープ(304)は、JAVA(商標)で使用できるメモリ領域である。ヒープ管理機構(303)は、上記メモリ領域を管理する仕組みであり、オブジェクトの作成処理及びGCを実行する。ヒープ管理機構(303)は、上記カウンタの値の合計値を元にGCのタイミングを調整する。ヒープ管理機構(303)は、上記カウンタの値の合計値が小さい場合はヒープに余裕があってもGCを起動する。また、ヒープ管理機構(303)は、上記カウンタの値の合計値が大きい場合は、ヒープの空きが非常に少なくなるまでGCを抑制する。ヒープ管理機構(303)は、制御部(208)に対応する。
スレッドスケジューラ(309)は、上記アプリケーション用スレッド(306〜308)及びJITスレッド(305)の実行順を制御するスケジューラである。スレッドスケジューラ(309)は、カウンタの値の合計値をもとにJITスレッドの優先度を調整する。スレッドスケジューラ(309)は、上記カウンタの値の合計値が大きい場合は、JITスレッド(305)の優先度を下げてJITコンパイル処理を抑制する。スレッドスケジューラ(309)は、上記カウンタの値の合計値が大きい場合は、JITスレッドの優先度を上げてJITコンパイル処理を起動しやすくする。
スレッドスケジューラ(309)はまた、スレッドに関連付けられたカウンタの値を考慮してスレッドスケジューリングを行う。スレッドスケジューラ(309)は、上記カウンタの値が大きいスレッドを、カウンタの値が小さいスレッドよりも優先的に実行する。スレッドスケジューラ(309)は、制御部(208)、第1の変更部(図2、212)及び第2の変更部(図2、213)に対応する。
その他のコンポ―ネット群(312〜315)は、コンピュータ・システムに様々な機能を提供するコンポーネントの集まりである。該コンポーネントは、例えば、インタプリタ及びクラスローダである。
カウンタの値又はカウンタの値の合計値の増減は、上記JDBCライブラリ(310)のメソッドによって行われる。
ステップ401では、アプリケーション用スレッド(図3、306〜308)においてJDBCライブラリ(310)のメソッドが呼び出されると、コンピュータ・システムは、該メソッドで指定されたDBアクセスの命令を実行する。
ステップ402では、コンピュータ・システムは、上記DBアクセスの命令がDB(311)のレコードのロックを獲得する命令かどうかの判定を行う。上記DBアクセスの命令がDB(311)のレコードのロックを獲得する命令の場合、ステップ403に進む。ステップ403では、コンピュータ・システムは、上記DBアクセスの命令が実行されたスレッドに関連付けられたカウンタの値又はカウンタの値の合計値を増加させる。該増加に従い、カウンタの値の合計値が増加する。さらに、コンピュータ・システムは、カウンタの値又はカウンタの値の合計値が変化したことをヒープ管理機構(図3、303)及びスレッドスケジューラ(図3、309)に通知する(ステップ406)。
ステップ404では、コンピュータ・システムは、上記DBアクセスの命令がDB(311)のレコードのロックを解放する命令かどうかの判定を行う。上記DBアクセスの命令が、DB(311)のレコードのロックを解放する命令の場合、ステップ405に進む。ステップ405では、コンピュータ・システムは、上記DBアクセスの命令が実行されたスレッドに関連付けられたカウンタの値又はカウンタの値の合計値を減少させる。該減少に従い、カウンタの値の合計値が減少する。
ステップ406では、コンピュータ・システムは、カウンタの値が変化したことをヒープ管理機構(303)及びスレッドスケジューラ(309)に通知する。
カウンタの増減値は、上記ロックを獲得したスレッド以外のプロセスの受ける影響に応じて、管理者が変更してもよい。例えば、上記カウンタの増減値は、他のサーバの処理を妨害する危険性の度合いに応じて変更する。例えば、管理者は、レコードロックならば±1、レコードロックよりも影響の大きい(すなわち、処理を急ぐ必要のある)テーブルロックならば±5のように、ロックの影響規模によってカウンタの増減する値を変更してもよい。また、DB(311)に対する処理要求の返り値として増減する値(他サーバへの影響度)を受け取り、それに基づいてカウンタの値を増減する方法も考えられる。
図4B及び図4Cの動作フローは、上記Aの方法に対応する。
ステップ411では、オブジェクト作成が要求されると、コンピュータ・システムは、ヒープ管理機構(303)を用いて、GCを実行するか否かの判定を行う。該判定の方法は、別途下記に記載する。該判定の結果、GCを実行する必要がある場合、ステップ412に進む。
ステップ412では、コンピュータ・システムは、GCを実行する。そして、ステップ413に進む。
上記判定の結果、GCを実行する必要がない場合、ステップ413に進む。
ステップ413では、コンピュータ・システムは、オブジェクトにメモリを割り当てる。
ステップ414では、カウンタの値の合計値が減少すると、コンピュータ・システムは、ヒープ管理機構(303)を用いて、GCを実行するか否かの判定を行う。該判定の方法は、別途下記に記載する。該判定の結果、GCを実行する必要がある場合、ステップ415に進む。
ステップ415では、コンピュータ・システムは、GCを実行する。
T÷(1+k×N(カウンタの値の合計値))
ここで、kは効き具合を調整するパラメータである。kの値が大きいほど、上記閾値は大きく調整される。kは、管理者又はコンピュータ・システムによって設定される値である。管理者がkを設定する場合、管理者は、例えば、0.1を設定する。コンピュータ・システムが自動的にkを設定する場合、コンピュータ・システムは、例えばGCの頻度をモニタし、該頻度があまりにも高ければ、kの値を小さくするという実装が考えられうる。
コンピュータ・システムは、GCを実行するか否かの判定を上記式から求められる値と、メモリ・アロケーションに使用できるメモリサイズとを比較して行う。なお、上記図4Bの例では、メモリ・アロケーションに使用できるメモリサイズからオブジェクトに割り当てられるメモリサイズを引いた値が、実際のメモリ・アロケーションに使用できるメモリサイズである。コンピュータ・システムは、GCをメモリ・アロケーションに使用できるメモリサイズが上記式から求められる値未満の場合に実行する。つまり、上記カウンタの値の合計値が小さい場合は、ヒープメモリに余裕があってもGCが実行される。これにより、カウンタの値の合計値が大きい状態でGCが実行される可能性を減らしている。
図4Dの動作フローは、上記B及びCの方法に対応する。
図4Dの動作フローは、カウンタの値が変化した場合にコンピュータ・システムによって実行される。
ステップ421では、カウンタの値が変化したことに応じて、コンピュータ・システムは、スレッドスケジューラ(309)を用いて、カウンタの値が変化したスレッドの優先度をカウンタの値に応じて変更する。コンピュータ・システムは、カウンタの値が大きいスレッドほど、該スレッドが優先的に実行されるように設定する。
ステップ422では、コンピュータ・システムは、JITコンパイルが実行されるスレッド(図3、305)(以下、JITスレッド)の優先度をカウンタの値の合計値に応じて変更する。上記JITスレッド(305)は、上記カウンタの値の合計値が小さいほど優先的に実行されるように設定される。
つまり、カウンタの値の合計値が大きい値の場合、JITコンパイルは抑制される。よって、カウンタ値の大きいスレッドの実行が妨害されにくくなる。
図4Eの動作フローは、上記Dの方法に対応する。
JAVA(商標)処理系では、一般的にメソッドごとに実行回数カウンタが用意されている。上記実行回数カウンタには、上記メソッドがインタプリタ方式で実行される毎に、1が加えられる。そして、該実行回数が、閾値をこえるとJITコンパイルされるような構成になっていることが多い。上記閾値は、JAVA(商標)処理系において管理者が設定できる値である。
ステップ431では、上記スレッドにおいてメソッドが実行されることに応じて、コンピュータ・システムは、上記メソッドに用意された上記実行回数カウンタに1を加える。さらにコンピュータ・システムは、メソッドが実行されたスレッドに関連付けられたカウンタの値を上記実行回数カウンタに足し込む。該足し込みにより「急いでいる」状態で実行されたメソッドが早めにJITコンパイルされるように制御される。
ステップ432では、コンピュータ・システムは、上記カウンタの値が足し込まれた実行回数カウンタの値と閾値が比較する。上記実行回数カウンタの値が閾値より大きい場合、ステップ433に進む。
ステップ433では、コンピュータ・システムは、上記メソッドをJITコンパイルするリストに登録する。
上記動作フローにより、ロック中に実行されるメソッドが早めにコンパイルされる。よって、次回以降の該メソッドの処理の高速化が望める。
また、上記実行回数が大きいメソッドについて、コンパイルの最適化レベルを高く設定してもよい。
図4Fの動作フローは、上記Eの方法に対応する。
図4Fの動作フローは、DB(311)にアクセスする命令が呼び出された場合にコンピュータ・システムによって実行される。
ステップ441では、DB(311)にアクセスする命令が呼び出されることに応じて、コンピュータ・システムは、JDBCドライバにおいて、上記命令がDB(311)のロックを獲得する命令かどうかの判定を行う。DB(311)にアクセスする命令がロックを獲得する命令である場合、ステップ442に進む。一方、DB(311)にアクセスする命令がロックを獲得する命令でない場合、ステップ444に進む。
ステップ442では、コンピュータ・システムは、実際にロックを獲得する前に、該命令が実行されたスレッドに関連付けられたカウンタの値又はカウンタの値の合計値を増加させる。該増加に従い、カウンタの値の合計値が増加する。
ステップ443では、コンピュータ・システムは、ハウスキーピング処理、例えばGC又はリストにコンパイルすべきメソッドがたまっているJITコンパイル処理を実行する。また、ロック獲得中に実行されるメソッドが判断できる場合は、コンピュータ・システムは、該メソッドをJITコンパイルする。該コンパイルにより、ロックを獲得した後に、GC又はJITコンパイル処理が発生してしまい、ロック期間が長期化してしまう危険性を下げることができる。
ステップ444では、コンピュータ・システムは、指定されたDB(311)にアクセスする命令を実行する。
ステップ445では、コンピュータ・システムは、上記DB(311)にアクセスする命令がDB(311)のロックを解放する命令かどうかの判定を行う。上記DB(311)にアクセスする命令がロックを解放する命令である場合、ステップ446に進む。一方、上記DBにアクセスする命令がロックを解放する命令でない場合、該動作は終了する。
ステップ446では、コンピュータ・システムは、上記DB(311)にアクセスする命令が実行されたスレッドに関連付けられたカウンタの値又はカウンタの値の合計値を減少させる。該減少に従い、カウンタの値の合計値が減少する。
ステップ447では、コンピュータ・システムは、遅延させられていたハウスキーピング処理、例えばGC又はJITコンパイル処理を行う。また、ロック獲得中に実行されたメソッドが判断できる場合、コンピュータ・システムは、上記メソッドが次回実行されるときに実行を高速化するために、明示的にJITコンパイルすることができる。
コンピュータ・システム(501)は、CPU(503)とメイン・メモリ(502)と含み、これらはバス(514)に接続されている。CPU(503)は好ましくは、32ビット又は64ビットのアーキテクチャに基づくものであり、例えば、インテル社のXeon(商標)シリーズ、Core(商標)シリーズ、Atom(商標)シリーズ、Pentium(商標)シリーズ、Celeron(商標)シリーズ、AMD社のPhenom(商標)シリーズ、Athlon(商標)シリーズ、Turion(商標)シリーズ及びSempron(商標)などを使用することができる。バス(514)には、ディスプレイ・コントローラ(507)を介して、LCDモニタなどのディスプレイ(512)が接続される。ディスプレイ(512)は、コンピュータ・システムの管理のために、通信回線を介してネットワークに接続されたコンピュータ・システムについての情報と、そのコンピュータ・システム上で動作中のソフトウェアについての情報を、適当なグラフィック・インターフェースで表示するために使用される。バス(514)にはまた、IDE又はSATAコントローラ(504)を介して、ハードディスク又はシリコン・ディスク(505)と、CD−ROM、DVDドライブ又はBDドライブ(506)が接続される。
Claims (25)
- 外部資源を排他使用しながら命令が実行される少なくとも1のスレッドを実行するコンピュータ・プログラム実行環境において、外部資源を排他使用しながら実行される少なくとも1の命令の実行時間の遅延を防ぐためのコンピュータ・システムであって、
前記スレッドにおいて、排他使用を獲得する命令及び排他使用を解放する命令を実行するロック部と、
前記排他使用を獲得する命令又は前記排他使用を解放する命令の実行に応じて、前記スレッドそれぞれに関連付けられたカウンタの値を増減するカウンタ部と、
前記カウンタの値又は前記カウンタの値の変化に応じて、前記外部資源を排他使用しながら実行される命令と該外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令との実行順を制御する制御部と
を含む、前記コンピュータ・システム。 - 前記制御部が、
プログラム実行中に行われるメモリ・アロケーションに使えるメモリサイズが前記カウンタの値の合計値に基づいて求められる値よりも小さい場合、前記外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令を実行する、
請求項1に記載のコンピュータ・システム。 - 前記カウンタの値の合計値に基づいて求められる値がT÷(1+k×N)によって求められ、
ここで、T=外部資源を排他使用していない場合に適用される前記外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令が開始されるメモリサイズの閾値であり、
k=カウンタの値の合計値に基づいて求められる値を調整するためのパラメータであり、
N=カウンタの値の合計値である、
請求項2に記載のコンピュータ・システム。 - 前記制御部が、前記カウンタの値の合計値が減少した場合であって、プログラム実行中に行われるメモリ・アロケーションに使えるメモリサイズがカウンタの値の減少した合計値に基づいて再度求められた値よりも小さい場合、前記外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令を実行する、
請求項1に記載のコンピュータ・システム。 - 前記カウンタの値の合計値の増減に応じて、前記外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令が実行されるスレッドの優先度を変更する第1の変更部をさらに含む、請求項1に記載のコンピュータ・システム。
- 前記カウンタの値の増減に応じて、前記カウンタに対応するスレッドの優先度を変更する第2の変更部をさらに含む、請求項1に記載のコンピュータ・システム。
- 前記第2の変更部が、前記カウンタの値が大きいスレッドに高い優先度を与える、請求項6に記載のコンピュータ・システム。
- 前記制御部が、前記優先度の高いスレッド順に、該スレッドに含まれる命令を優先して実行する、請求項7に記載のコンピュータ・システム。
- 上記制御部が、メソッドごとに設けられた実行回数カウンタの値を増加する際に、当該カウンタの増分に該メソッドを実行するスレッドの上記カウンタの値をさらに重みとして付与する、請求項1に記載のコンピュータ・システム。
- 前記スレッドにおいて前記メソッドが実行されることに応じて、前記実行回数カウンタの値を求める計算部をさらに含み、
前記制御部が、前記実行回数カウンタの値が閾値よりも大きい場合、前記スレッドそれぞれに関連付けられたメソッドについて、前記外部資源を排他使用しながら実行される命令の実行時間を短縮化する命令を実行する、請求項9に記載のコンピュータ・システム。 - 前記外部資源を排他使用しながら実行される命令の実行時間を短縮化する命令が、ジャストインタイム(JIT)コンパイルを実行する命令であり、
前記制御部が、前記実行回数カウンタの値が前記閾値よりも大きい場合、前記実行回数カウンタに関連付けられたメソッドを前記JITコンパイルするリストに追加する、
請求項10に記載のコンピュータ・システム。 - 前記カウンタ部が、前記排他使用が獲得される前に、前記排他使用を獲得する命令の実行に応じて前記カウンタの値を増加し、
前記制御部が、前記排他使用が獲得される前に、前記カウンタの値の増加に応じて、前記外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令を実行する、請求項1に記載のコンピュータ・システム。 - 前記カウンタ部が、前記排他使用が解放された後に、前記排他使用を解放する命令の実行に応じて前記カウンタの値を減少し、
前記制御部が、前記カウンタの値の減少に応じて、前記外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令を実行する、請求項1に記載のコンピュータ・システム。 - 前記カウンタ部が、
前記排他使用を獲得する命令の実行に応じて、前記カウンタの値を増加し、
前記排他使用を解放する命令の実行に応じて、前記カウンタの値を減少する、
請求項1に記載のコンピュータ・システム。 - 前記外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令が、ガベージコレクションを実行する命令である、請求項2〜4、6〜8、12又は13のいずれか1項に記載のコンピュータ・システム。
- 前記外部資源を排他使用しながら実行される命令の実行時間を短縮化する命令が、ジャストインタイム(JIT)コンパイルを実行する命令である、請求項5、12又は13のいずれか1項に記載のコンピュータ・システム。
- 外部資源を排他使用しながら命令が実行される少なくとも1のスレッドを実行するコンピュータ・プログラム実行環境において、外部資源を排他使用しながら実行される少なくとも1の命令の実行時間の遅延を防ぐためのコンピュータ・システムであって、
前記スレッドにおいて、排他使用を獲得する命令及び排他使用を解放する命令を実行するロック部と、
前記排他使用を獲得する命令又は前記排他使用を解放する命令の実行に応じて、前記スレッドそれぞれに関連付けられたカウンタの全ての値の合計値を増減するカウンタ部と、
前記カウンタの全ての値の合計値又は前記カウンタの全ての値の合計値の変化に応じて、前記外部資源を排他使用しながら実行される命令と該外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令との実行順を制御する制御部と
を含む、前記コンピュータ・システム。 - データベースを排他使用しながら命令が実行される少なくとも1のスレッドを実行するJAVA(登録商標)処理系において、データベースを排他使用しながら実行される少なくとも1の命令の実行時間の遅延を防ぐためのコンピュータ・システムであって、
前記スレッドにおいて、排他使用を獲得する命令又は排他使用を解放する命令を実行するロック部と、
前記排他使用を獲得する命令又は前記排他使用を解放する命令の実行に応じて、前記スレッドそれぞれに関連付けられたカウンタの値を増減するカウンタ部と、
前記カウンタの値又は前記カウンタの値の変化に応じて、前記データベースを排他使用しながら実行される命令と、ガベージコレクション又はジャストインタイム(JIT)コンパイルとの実行順を制御する制御部と
を含む、前記コンピュータ・システム。 - データベースを排他使用しながら命令が実行される少なくとも1のスレッドを実行するJAVA(登録商標)処理系において、データベースを排他使用しながら実行される少なくとも1の命令の実行時間の遅延を防ぐためのコンピュータ・システムであって、
前記スレッドにおいて、排他使用を獲得する命令及び排他使用を解放する命令を実行するロック部と、
前記排他使用を獲得する命令又は前記排他使用を解放する命令の実行に応じて、前記スレッドそれぞれに関連付けられたカウンタの全ての値の合計値を増減するカウンタ部と、
前記カウンタの全ての値の合計値又は前記カウンタの全ての値の合計値の変化に応じて、前記データベースを排他使用しながら実行される命令と、ガベージコレクション又はジャストインタイム(JIT)コンパイルとの実行順を制御する制御部と
を含む、前記コンピュータ・システム。 - 外部資源を排他使用しながら命令が実行される少なくとも1のスレッドを実行するコンピュータ・プログラム実行環境において、外部資源を排他使用しながら実行される少なくとも1の命令の実行時間の遅延を防ぐための方法であって、該方法は、コンピュータ・システムに下記ステップを実行させ、該ステップは、
前記スレッドにおいて、排他使用を獲得する命令又は排他使用を解放する命令を実行するステップと、
前記排他使用を獲得する命令又は前記排他使用を解放する命令の実行に応じて、前記スレッドそれぞれに関連付けられたカウンタの値を増減するステップと、
前記カウンタの値又は前記カウンタの値の変化に応じて、前記外部資源を排他使用しながら実行される命令と該外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令との実行順を制御するステップと、
を含む、前記方法。 - 上記方法は、前記コンピュータ・システムに下記ステップをさらに実行させ、該ステップは、
メソッドごとに設けられた実行回数カウンタの値を増加する際に、当該カウンタの増分に該メソッドを実行するスレッドの上記カウンタの値を重みとしてさらに付与するステップを含む、請求項20に記載の方法。 - 外部資源を排他使用しながら命令が実行される少なくとも1のスレッドを実行するコンピュータ・プログラム実行環境において、外部資源を排他使用しながら実行される少なくとも1の命令の実行時間の遅延を防ぐための方法であって、該方法は、コンピュータ・システムに下記ステップを実行させ、該ステップは、
前記スレッドにおいて、排他使用を獲得する命令及び排他使用を解放する命令を実行するステップと、
前記排他使用を獲得する命令又は前記排他使用を解放する命令の実行に応じて、前記スレッドそれぞれに関連付けられたカウンタの全ての値の合計値を増減するステップと、
前記カウンタの値の全ての値の合計値又は前記カウンタの全ての値の合計値の変化に応じて、前記外部資源を排他使用しながら実行される命令と該外部資源を排他使用しながら実行される命令の実行時間の遅延をもたらす命令との実行順を制御するステップと
を含む、前記方法。 - データベースを排他使用しながら命令が実行される少なくとも1のスレッドを実行するJAVA(登録商標)処理系において、データベースを排他使用しながら実行される少なくとも1の命令の実行時間の遅延を防ぐための方法であって、該方法は、コンピュータ・システムに下記ステップを実行させ、該ステップは、
前記スレッドにおいて、排他使用を獲得する命令又は排他使用を解放する命令を実行するステップと、
前記排他使用を獲得する命令又は前記排他使用を解放する命令の実行に応じて、前記スレッドそれぞれに関連付けられたカウンタの値を増減するステップと、
前記カウンタの値又は前記カウンタの値の変化に応じて、前記データベースを排他使用しながら実行される命令と、ガベージコレクション又はジャストインタイム(JIT)コンパイルとの実行順を制御するステップと
を含む、前記方法。 - データベースを排他使用しながら命令が実行される少なくとも1のスレッドを実行するJAVA(登録商標)処理系において、データベースを排他使用しながら実行される少なくとも1の命令の実行時間の遅延を防ぐための方法であって、該方法は、コンピュータ・システムに下記ステップを実行させ、該ステップは、
前記スレッドにおいて、排他使用を獲得する命令及び排他使用を解放する命令を実行するステップと、
前記排他使用を獲得する命令又は前記排他使用を解放する命令の実行に応じて、前記スレッドそれぞれに関連付けられたカウンタの全ての値の合計値を増減するステップと、
前記カウンタの全ての値の合計値又は前記カウンタの全ての値の合計値の変化に応じて、前記データベースを排他使用しながら実行される命令と、ガベージコレクション又はジャストインタイム(JIT)コンパイルとの実行順を制御するステップと
を含む、前記方法。 - コンピュータに、請求項20〜24のいずれか一項に記載の方法の各ステップを実行させるコンピュータ・プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008286523A JP4778035B2 (ja) | 2008-11-07 | 2008-11-07 | 外部資源を排他使用しながら実行される命令の実行時間の遅延を防ぐためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム |
US12/612,920 US8201178B2 (en) | 2008-11-07 | 2009-11-05 | Preventing delay in execution time of instruction executed by exclusively using external resource |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008286523A JP4778035B2 (ja) | 2008-11-07 | 2008-11-07 | 外部資源を排他使用しながら実行される命令の実行時間の遅延を防ぐためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010113585A JP2010113585A (ja) | 2010-05-20 |
JP4778035B2 true JP4778035B2 (ja) | 2011-09-21 |
Family
ID=42166361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008286523A Expired - Fee Related JP4778035B2 (ja) | 2008-11-07 | 2008-11-07 | 外部資源を排他使用しながら実行される命令の実行時間の遅延を防ぐためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US8201178B2 (ja) |
JP (1) | JP4778035B2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070094669A1 (en) * | 2005-10-25 | 2007-04-26 | Microsoft Corporation | Shared resource acquisition |
CA2693938A1 (en) | 2010-02-22 | 2011-08-22 | Ibm Canada Limited - Ibm Canada Limitee | Software object lock management using observations |
US20130061213A1 (en) * | 2011-08-26 | 2013-03-07 | Cognitive Electronics, Inc. | Methods and systems for optimizing execution of a program in a parallel processing environment |
US9400677B2 (en) | 2013-01-02 | 2016-07-26 | Apple Inc. | Adaptive handling of priority inversions using transactions |
US9477471B1 (en) * | 2015-07-07 | 2016-10-25 | Versa Networks, Inc. | Maintaining lock-free, high frequency, high performance counters in software |
CN109445950A (zh) * | 2018-09-30 | 2019-03-08 | 青岛海尔科技有限公司 | Ocf资源的互斥访问方法及系统、服务端、介质、设备 |
US10802944B2 (en) | 2019-01-23 | 2020-10-13 | Salesforce.Com, Inc. | Dynamically maintaining alarm thresholds for software application performance management |
US11194591B2 (en) | 2019-01-23 | 2021-12-07 | Salesforce.Com, Inc. | Scalable software resource loader |
US10747551B2 (en) | 2019-01-23 | 2020-08-18 | Salesforce.Com, Inc. | Software application optimization |
US10922095B2 (en) | 2019-04-15 | 2021-02-16 | Salesforce.Com, Inc. | Software application performance regression analysis |
US10922062B2 (en) * | 2019-04-15 | 2021-02-16 | Salesforce.Com, Inc. | Software application optimization |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05120041A (ja) * | 1991-10-25 | 1993-05-18 | Nec Corp | 資源割り当て管理方式 |
JP3826626B2 (ja) * | 1997-11-21 | 2006-09-27 | オムロン株式会社 | プログラム制御装置、プログラム制御方法、およびプログラム記録媒体 |
US7188344B1 (en) * | 1999-12-21 | 2007-03-06 | Unisys Corporation | Architecture for a read/write thread lock |
US7159220B2 (en) * | 2001-09-28 | 2007-01-02 | Intel Corporation | Flexible acceleration of java thread synchronization on multiprocessor computers |
JP3908760B2 (ja) * | 2004-10-26 | 2007-04-25 | 株式会社東芝 | 情報端末装置とそのプログラム |
JP2007004595A (ja) * | 2005-06-24 | 2007-01-11 | Hitachi Ltd | コンピュータ制御方法、コンピュータ、情報処理システム、及びプログラム |
US7962707B2 (en) * | 2005-07-06 | 2011-06-14 | Honeywell International Inc. | Apparatus and method for deterministic garbage collection of a heap memory |
JP2007086838A (ja) * | 2005-09-20 | 2007-04-05 | National Institute Of Advanced Industrial & Technology | ゼロガベージコレクション通信仲介装置 |
JP4148528B2 (ja) * | 2006-10-31 | 2008-09-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 排他制御を効率化する技術 |
-
2008
- 2008-11-07 JP JP2008286523A patent/JP4778035B2/ja not_active Expired - Fee Related
-
2009
- 2009-11-05 US US12/612,920 patent/US8201178B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20100122260A1 (en) | 2010-05-13 |
US8201178B2 (en) | 2012-06-12 |
JP2010113585A (ja) | 2010-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4778035B2 (ja) | 外部資源を排他使用しながら実行される命令の実行時間の遅延を防ぐためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム | |
US9727372B2 (en) | Scheduling computer jobs for execution | |
US9619378B2 (en) | Dynamically optimizing memory allocation across virtual machines | |
US9875145B2 (en) | Load based dynamic resource sets | |
US8146065B2 (en) | Running time of short running applications by effectively interleaving compilation with computation in a just-in-time environment | |
US8924981B1 (en) | Calculating priority indicators for requests in a queue | |
US20090288090A1 (en) | Priority control program, apparatus and method | |
US20080313639A1 (en) | Policy based scheduling of software applications | |
US20080172670A1 (en) | Method and Apparatus for Reducing Contention for Computer System Resources Using Soft Locks | |
US8954969B2 (en) | File system object node management | |
US20070067762A1 (en) | Exposing code contentions | |
JP2008204243A (ja) | ジョブ実行制御方法およびシステム | |
Wei et al. | Implementing Data Aware Scheduling In Gfarm (R) Using LSF (TM) Scheduler plugin Mechanism. | |
Cheng et al. | Dynamic resource provisioning for iterative workloads on Apache Spark | |
JP5055059B2 (ja) | データベース処理方法、その実施システム及びプログラム | |
WO2015075803A1 (ja) | 情報処理装置、方法、プログラム及び記録媒体 | |
US20090320036A1 (en) | File System Object Node Management | |
US9367439B2 (en) | Physical memory usage prediction | |
US20080127194A1 (en) | Job allocation program and job allocation method | |
JP2014139845A (ja) | データ処理システム、そのコンピュータプログラムおよびデータ処理方法 | |
EP4123461A1 (en) | Intelligent query plan cache size management | |
JP5444055B2 (ja) | 仮想サーバスケールダウンシステムとスケールダウン方法およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20101028 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110301 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110322 Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20110322 |
|
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: 20110615 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20110615 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20110615 |
|
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: 20110630 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140708 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |