JP2005502941A - デッドロック検出のための犠牲選択 - Google Patents
デッドロック検出のための犠牲選択 Download PDFInfo
- Publication number
- JP2005502941A JP2005502941A JP2003519790A JP2003519790A JP2005502941A JP 2005502941 A JP2005502941 A JP 2005502941A JP 2003519790 A JP2003519790 A JP 2003519790A JP 2003519790 A JP2003519790 A JP 2003519790A JP 2005502941 A JP2005502941 A JP 2005502941A
- Authority
- JP
- Japan
- Prior art keywords
- candidates
- candidate
- pass
- filtering
- factor
- 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.)
- Withdrawn
Links
- 238000001514 detection method Methods 0.000 title description 5
- 238000000034 method Methods 0.000 claims abstract description 53
- 238000001914 filtration Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 12
- 230000007246 mechanism Effects 0.000 abstract description 6
- 238000004891 communication Methods 0.000 description 16
- 230000003068 static effect Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000009434 installation Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005096 rolling process Methods 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
Abstract
デッドロックの場合に保持されるリソースを解放するか、または、潜在的なデッドロックが検出される際にリソースを求める要求を延期するための機構およびシステムが記載される。1つの技術は、候補を選択するための3つのパスのアルゴリズムを含み、ここでは所有エンティティまたはリソースである候補が用いられる。3つのパスは以下のとおりである。(1)セットされたCAN−BE−VICTIMフラグを有する候補のサブセットを決定する。(2)パス1により、その中に2つ以上の候補を備えたサブセットがもたらされる場合、そのサブセットを処理して、リソースの種類に関連付けられるリソースプライオリティに基づいて第2の候補のサブセットを決定する。(3)第2のパスにより、その中に2つ以上の候補を備えたサブセットがもたらされる場合、そのサブセットを処理して、実行していたかまたは保持されていた時間が最も短い候補を選択する。
Description
【技術分野】
【0001】
発明の分野
この発明は、分散型コンピュータシステムに関し、特に、デッドロックまたは潜在的なデッドロックが検出される際の犠牲(victim)選択に関する。
【背景技術】
【0002】
発明の背景
演算処理における長期間にわたる課題のうちの1つに、デッドロックへの対処がある。デッドロックは、エンティティのセットが存在し、このためそのセットにおける各エンティティがそのセットにおける別のエンティティによって所有される少なくとも1つのリソースの解放を待っている場合に発生する。リソースを所有することのできるエンティティは、この明細書中では所有エンティティと称される。データベースシステムの文脈では、たとえば、エンティティは、中でもプロセスおよびトランザクションを含む。トランザクションはアトミック単位の作業である。
【0003】
たとえば、トランザクションT1は、リソースR1およびR2の排他的な所有権を要求し得る。R1が利用可能であり、R2が別のトランザクションT2によって現在排他的に所有される場合、トランザクションT1はR1の排他的な所有権を獲得し得るが、R2が利用可能となるのを待たなくてはならない。トランザクションT2がR1の所有権を要求し、かつT2がR2を解放せずにR1を待つために中断される場合にデッドロックが発生する。T1およびT2はともに互いを待つのでデッドロックされる。
【0004】
コンピュータシステムは、デッドロックを検出する種々のデッドロック処理機構(デッドロックハンドラ)を用いる。デッドロックを解決するプロセスは、第1に、デッドロックがあるかどうかを判定し、第2に、デッドロックを如何に解決するかを決定するステップを含む。デッドロックに対処するためのいくつかの技術は、待ちグラフ技術およびタイムアウト技術を含む。
【0005】
待ちグラフ技術は「サイクル」に基づきデッドロックを検出する。特に、プロセスがリソースを要求した後、またはしきい値時間を超えてリソースを待った後、待ちグラフ技術が生成され得、サイクルがないか検査され得る。サイクルが識別される場合、デッドロック検出機構は潜在的なデッドロックを検出している。次いで、デッドロックサイクルの一部であるリソースが、デッドロックを解決するのに用いるために選択される。こうして、選択されたリソースはこの明細書中では「犠牲リソース」と称される。というのも、リソースを所有するかまたはリソースを要求しているエンティティが、典型的には、デッドロックを解決するための措置を講じる際に性能の低下を招くことになるからである。同様に、犠牲リソースを所有するかまたは犠牲リソースを要求しているエンティティは、この明細書中では「犠牲エンティティ」と称される。「犠牲」という用語は、この明細書中では、犠牲リソースまたは犠牲エンティティを称するのに用いられる。
【0006】
典型的には、犠牲リソースはサイクル内におけるリソースであり、このリソースはエンティティによって保持され、このエンティティの要求によってデッドロックがもたらされる。デッドロックを解決するために犠牲リソースに対するロックを解放する1つの方法がある。犠牲リソースに対するロックはさまざまな方法で解放され得る。たとえば、犠牲エンティティがトランザクションである場合、リソースを求め、デッドロック状態をもたらした要求のキャンセルをロールバックと組合わせることにより、トランザクションによって保持されるリソースが解放される。次いで、トランザクションは、リソースを再度獲得しようと試み、ロールバックされたステップを再実行しようと試み得る。ステップのこの再実行は、自動的に行なわれ得るか、またはカスタマ入力に基づいて開始され得る。
【0007】
待ちグラフは、どんなエンティティがリソースを有し、かつどんなエンティティがリソースを待っているかを示すグラフである。図においては、「待機中(WAITING)」という用語は、エンティティがリソースを待っている「待ち状態」にあり、したがってエントリが「実行中(RUNNING)」ではないことを示す。待ちグラフの例が図1aおよび図1bに示される。図1aは以下のシナリオを示す。
【0008】
1) エンティティ110はリソースR1を有する。
【0009】
2) エンティティ120はリソースR2を有し、リソースR1を必要とする。このため、エンティティ120はエンティティ110の後ろで待ち行列に入り、待ち状態に入り、エンティティ110がリソースR1を使用し終えるのを待つ。
【0010】
3) エンティティ130はリソースR3を有し、リソースR2を必要とする。このため、エンティティ130はエンティティ120の後ろで待ち行列に入り、待ち状態に入り、エンティティ120がリソースR2を使用し終えるのを待つ。
【0011】
4) エンティティ140はリソースR4を有し、リソースR3を必要とする。このため、エンティティ140はエンティティ130の後ろで待ち行列に入り、待ち状態に入り、エンティティ130がリソースR3を使用し終えるのを待つ。
【0012】
5) エンティティ150はリソースR5を有し、リソースR4を必要とする。このため、エンティティ150はエンティティ140の後ろで待ち行列に入り、待ち状態に入り、エンティティ140がリソースR4を使用し終えるのを待つ。
【0013】
6) エンティティ160はリソースを持たないが、リソースR5を必要とする。エンティティ150が既にリソースR5を有するので、エンティティ160はエンティティ150の後ろで待ち行列に入り、待ち状態に入り、エンティティ150がリソースR5を使用し終えるのを待つ。
【0014】
7) エンティティ110もリソースR5を必要とする。エンティティ160は既にリソースR5を待っている。このため、エンティティ110はエンティティ160の後ろで待ち行列に入り、待ち状態に入り、エンティティ160がR5を使用し終えるのを待つ。
【0015】
ノードをリソースとし、矢印を所有エンティティとすることにより待ちグラフを示す別の方法がある。図1bは、R1、R2、R3、R4、R5、R6、R7およびR8がリソースであり、矢印E1、E2、E3、E4、E5、E6、E7およびE8が所有エンティティであるようなグラフを示す。矢印は、所有エンティティが保持しているリソースから指している。矢印は、所有エンティティが要求しているリソースを指している。したがって、図1bにおいては以下のとおりである。
【0016】
1) エンティティE1はR1を保持し、R2を要求している。
【0017】
2) エンティティE2はR2を保持し、R3を要求している。
【0018】
3) エンティティE3はR3を保持し、R4を要求している。
【0019】
4) エンティティE4はR4を保持し、R1およびR5を要求している。
【0020】
5) エンティティE5はR5を保持し、R6を要求している。
【0021】
6) エンティティE6はR6を保持し、R7を要求している。
【0022】
7) エンティティE7はR7を保持し、R8を要求している。
【0023】
8) エンティティE8はR8を保持し、R1を要求している。
【0024】
デッドロック状況は、図1aおよび図1bにおけるエンティティおよびリソースのサイクルによって示される。図1aおよび図1bにおけるすべてのエンティティがリソースを待ち、これらのエンティティがいずれもリソースを放棄していないので、別のエンティティが続き得る。サイクルを中断するために何かを行なわなければならない。図1aでは、エンティティ110はリソースを要求する最後のエンティティであり、この要求によりサイクルがもたらされたので、エンティティ110が保持しているリソースが解放されるよう任意に選択されることとなる。問題は、エンティティ110が保持しているリソースが解放されるのに良い候補でないかもしれないことである。
【発明の開示】
【発明が解決しようとする課題】
【0025】
タイムアウト技術のもとでは、所有エンティティは、リソースの所有権を獲得するためにしきい値時間だけ待つと、デッドロックに関わることになるものと推定される。このタイムアウト技術はデッドロックの検出についてはあまり正確ではない。というのも、リソースの所有権を得る際の遅延が、デッドロック以外の多くの原因に起因する可能性があるからである。
【0026】
残念なことに、(1)デッドロックサイクルに関わる最も最近要求されたリソース、または(2)「タイムアウトになった」エンティティによって要求されるリソースとなるべきリソース犠牲を選択することにより、著しいオーバーヘッドがもたらされる可能性がある。たとえば、いずれの場合も、犠牲エンティティは、ほとんど完了している、長時間にわたるトランザクションであり得る。犠牲エンティティがトランザクションである場合、全トランザクションを再実行する必要がある。このようなエンティティを終了させることは、最小限のオーバーヘッドを用いて他の何らかの態様でデッドロックを中断し得る場合、特に無駄が多い。
【0027】
上述に基づき、検出されたデッドロックを中断するより効率的な方法を提供することが望ましい。
【課題を解決するための手段】
【0028】
発明の概要
潜在的なデッドロックが検出される際に犠牲を選択するための機構およびシステムが記載される。一実施例に従って、選択プロセスが、以下のとおり3つのパスで実行される。
【0029】
1) パス1の間に、デッドロックに関与する候補のセットから、候補が犠牲として選択され得ることを示す値にセットされるCAN−BE−VICTIM(犠牲であり得る)フラグを有する候補のサブセットを決定する。
【0030】
2) パス1により、中に2つ以上の候補を有するサブセットがもたらされる場合、パス2の間に、そのサブセットを処理して、リソースタイプに関連付けられるリソースプライオリティに基づき第2の候補のサブセットを決定する。
【0031】
3) 第2のパスにより、中に2つ以上の候補を有するサブセットがもたらされる場合、そのサブセットを処理して、実行していたかまたは保持されていた時間が最も短い候補を選択する。
【0032】
この発明は、添付の図面において、限定のためではなく例示のために示され、同様の参照番号が同様の要素を示す。
【発明を実施するための最良の形態】
【0033】
好ましい実施例の詳細な説明
デッドロックまたは潜在的なデッドロックの検出に応答して犠牲を選択するための方法および装置が説明される。以下の記載では、説明する目的で、この発明を完全に理解するために多くの特定の詳細が述べられる。しかしながら、これらの特定の詳細なしでこの発明を実施し得ることが当業者には明らかとなるだろう。他の場合では、周知の構造および装置は、この発明を不必要に不明瞭にすることを避けるためにブロック図の形態で示される。
【0034】
機能的概要
潜在的なデッドロックが検出される際に犠牲を選択するための機構およびシステムが説明される。リソースは、いくつかの理由で、デッドロックの検出に応答して選択される犠牲リソースとなるべきよい候補ではない可能性がある。たとえば、リソースを保持する所有エンティティは、プライオリティの高いプロセスまたはトランザクションであり得、可能な限り早く完了するよう実行する必要がある。このようなエンティティによって保持される、デッドロックの犠牲リソースとなるべきリソースを選択することにより、所有エンティティは許容できない不利益を被ることとなる。同様に、リソースは、リソースを保持する所有エンティティが極めて長時間にわたって実行していた場合、良い犠牲候補とはなり得ない。
【0035】
これらの問題に対処するために、デッドロックに関わる複数の候補のうちどの候補がデッドロックの解決に用いられる「犠牲」となるべきかを選択するための技術が提供される。この技術は、以下の要因を含み得る1つ以上の要因に基づいて犠牲を選択するステップを含む。
【0036】
1) 保持されたリソースが解放され得るかまたは要求されたリソースが延期され得るかどうかを示す、各候補に関連付けられた犠牲インジケータの値。
【0037】
2) リソースに割当てられたカテゴリおよび/またはプライオリティ。
【0038】
3) 所有エンティティが実行していたかまたはリソースが保持されていた時間の長さ。
【0039】
犠牲が選択されると、さまざまな技術を用いてデッドロックを解決することができる。たとえば、1つの技術には、犠牲リソースとするべく選択されたリソースを保持するエンティティをロールバックするステップが含まれる。他の技術には、犠牲リソースを求める要求を失敗させたり、犠牲リソースを求める要求を延期したりするステップが含まれる。さまざまなデッドロック解決技術は、この明細書中に記載される犠牲選択技術とともに用いることができるが、この発明は、犠牲が選択されるとデッドロックを解決するための特定の技術のいずれにも限定されない。
【0040】
CAN−BE−VICTIM フラグ
以下に記載される実施例では、犠牲選択動作の第1のパスは、CAN−BE−VICTIMフラグが「真」または「偽」のどちらにセットされるかに基づく。候補のCAN−BE−VICTIMフラグは、その候補を犠牲として選択できるかどうかを示す値である。このCAN−BE−VICTIMフラグはさまざまな方法でセットされ得る。たとえば、CAN−BE−VICTIMフラグの値は、ユーザにより、インストレーションによってセットされ得るか、またはサービスポリシーに基づいてセットされ得、この場合ユーザおよびインストレーションによってサービスポリシーが取り決められる。さらに、CAN−BE−VICTIMフラグは、中でもプロセス、トランザクションまたはリソースに関連付けられ得る。CAN−BE−VICTIMフラグをセットするための方法、およびCAN−BE−VICTIMフラグが関連付けられ得るエンティティの種類のこれらのリストは、網羅的なリストとなるよう意図されるものではない。
【0041】
リソースプライオリティ
リソースプライオリティを計算するために用いることができるいくつかの技術がある。たとえば、リソースのプライオリティは、アプリケーションの開始時に割当てられる静的数値であり得るか、または、リソースを保持している所有エンティティのリソースの使用および状態に応じてリソースの寿命中に変化する動的数値であり得る。静的プライオリティおよび動的プライオリティをともに用いる実施例では、リソースの動的プライオリティ値をリソースに対する静的プライオリティ値に加えて、複合的なプライオリティを作り得る。
【0042】
一実施例では、静的プライオリティは、アプリケーションに対するリソースの機能的重要性に基づいてリソースに割当てられる数値として設定される。
【0043】
保持されたリソースの動的プライオリティは、そのリソースに対する競合の量を計算することにより設定され得る。競合の量は、たとえば、何らかの予め定められた値に最初にセットされ、かつリソースに対するアクセスパターンがしきい値を超えると増加する、変動する値であり得る。同様に、競合の量は、リソースに対するアクセスパターンがしきい値に達しない場合減少することとなる。このしきい値は同じ値かまたは異なる値であってもよい。さらに、いくつかのしきい値があってもよく、各しきい値は、競合値の、増加または減少する異なった量に相互に関連する。
【0044】
さらに、リソースの動的プライオリティは、その所有エンティティにより既に所有されているかまたは所有される可能性のあるすべてのリソースを調べることによって決定され得る。たとえば、所有エンティティによって保持されるリソースの動的プライオリティは、その所有エンティティによって保持されるすべてのリソースの動的プライオリティの平均をとることにより設定され得る。動的プライオリティを平均して或る動的プライオリティを得るこの方策を用いることにより、プライオリティの高いリソースをいくつか既に所有する所有エンティティに犠牲リソースが属さないことを確実にし得る。
【0045】
静的プライオリティおよび動的プライオリティを計算するために用いられる入力値は、ユーザにより、インストレーションによってセットされ得るか、またはサービスポリシーに基づいてセットされ得、この場合ユーザおよびインストレーションによってサービスポリシーが取り決められる。これらは、リソースプライオリティを計算するために用いることのできる技術のうちほんのいくつかの例にすぎない。
【0046】
犠牲を選択するための技術
一実施例に従って、犠牲リソースは、以下のとおり、3つのパスのフィルタリングオペレーションを用いて選択される。
【0047】
パス1:第1のパスの間に、デッドロックグラフにおいて、セットされたCAN−BE−VICTIMフラグを有するリソースのセットを選択する。このグラフが、セットされたCAN−BE−VICTIMフラグを備えるリソースを1つだけ有する場合、このリソースは犠牲であり、そうでない場合パス2に進む。
【0048】
パス2:第2のパスの間に、パス1から得られたリソースのセットを、プライオリティが同じであるリソースを含むサブセットに分割する。代替的には、パス1からのセットは、プライオリティ範囲によって分割され得る。リソースがプライオリティに従って分割されると、プライオリティの最も低いリソースのサブセットが選択される。プライオリティの最も低いサブセットがリソースを1つだけ有する場合、その単一のリソースは犠牲であり、そうでない場合パス3に進む。
【0049】
パス2を説明するために、パス1は図1bに示されるリソースR1〜R8に対して実行されるものとする。さらに、R1、R2、R3、R4、R5、R6、R7およびR8はすべて、それらの関連するセットされたCAN−BE−VICTIMフラグを有するものとされる。プライオリティスキーム(すなわち、数値または範囲)に基づき、パス2の間に、パス1の後に残るリソースのセットを分割して以下の3つのセットを作り出す。
【0050】
S0={R1,R5,R8}
S1={R2,R3}
S2={R4,R6,R7}
ここで、S0>S1>S2および「>」は「より高いプライオリティ/プライオリティ範囲」を示す。このシナリオでは、セットS2={R4,R6 and R7}は、パス2の間に選択されることとなる。選択されたセットが2つ以上の候補を含むので、選択プロセスはパス3に進む。
【0051】
上述のように、リソースのプライオリティは、アプリケーションの開始時にそれに割当てられるいくらか静的な数値であり得、および/または、その所有エンティティの使用および状態に基づき、保持されたリソースの寿命中に変化し続けるいくらか動的な数値であり得る。
【0052】
パス3:パス3は、パス2の後に残るリソース(すなわち、プライオリティの最も低いセットにおけるリソース)に対して実行される。パス3の間に、セットにおける各リソースの所有エンティティに対する実行時間が決定される。その所有エンティティに対する実行時間が最も短いリソースが犠牲として選択される。
【0053】
変形例
上述の実施例においては、デッドロック犠牲は、3つのパスを実行することにより選択される。各パスは、異なるファクタに基づいてデッドロック犠牲候補のセットをフィルタする。しかしながら、パスの特定の数、およびこれらのパス中に用いられる特定のファクタは、実現例ごとに異なる可能性がある。たとえば、犠牲候補セットは、リソースプライオリティに基づいてフィルタされる前に、実行時間に基づいてフィルタされてもよい。
【0054】
同様に、犠牲リソースに対するプライオリティ値を設定するための技術は、実現例によって、ならびに所有エンティティがどのくらい長く実行していたかを判定するのに用いられる技術によっても変わる可能性がある。たとえば、所有エンティティがプロセスである場合、プロセスが実行していた時間は、オペレーションシステムに対して呼出しを行なうことにより判定され得る。一方、所有エンティティがトランザクションである場合、トランザクションの実行時間を得るために用いられる技術は、トランザクションが属するシステムにおいてトランザクションをいかに実現するかによって左右されることとなる。
【0055】
さらに、所与の異なった重みである複数のファクタを考慮に入れるフィルタリングが、単一のパスにおいて実行され得る。たとえば、1つのパスは、リソースプライオリティおよび実行時間の両方に基づいてフィルタすることができ、プライオリティが比較的高いリソースを有する候補は、その候補よりも他の候補の方が実行時間が極めて長い場合、依然として犠牲として選択され得る。他のファクタは、たとえば、所有エンティティの種類、および所有エンティティに関連付けられるユーザの身元を含み得る。
【0056】
別の可能な技術では、エンティティがリソースを要求しているがリソースをまだ獲得していない場合に、潜在的なデッドロックにアルゴリズムを適用する。リソースをいかに割当てるかを示す待ちグラフが構成および分析され得る。潜在的なデッドロックが検出される場合、この明細書中に記載される技術を適用して、どのリソースが延期を要求するかを判定し得る。
【0057】
ハードウェア概要
図2は、この発明の実施例が実現され得るコンピュータシステム200を示すブロック図である。コンピュータシステム200は、情報の通信を行なうためのバス202または他の通信メカニズムと、情報を処理するための、バス202に結合されるプロセッサ204とを含む。コンピュータシステム200はまた、プロセッサ204によって実行されるべき情報および命令を記憶するための、バス202に結合されるランダムアクセスメモリ(RAM)または他の動的記憶装置などのメインメモリ206を含む。メインメモリ206はまた、プロセッサ204によって実行されるべき命令の実行中に一時的数値変数または他の中間情報を記憶するために用いられ得る。コンピュータシステム200はさらに、プロセッサ204のための静的情報および命令を記憶するための、バス202に結合される読出専用メモリ(ROM)208または他の静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置210が設けられ、情報および命令を記憶するためにバス202に結合される。
【0058】
コンピュータシステム200は、コンピュータユーザに情報を表示するための陰極線管(CRT)などの表示装置212にバス202を介して結合され得る。英数字および他のキーを含む入力装置214は、バス202に結合されて、情報およびコマンド選択をプロセッサ204に伝達する。別の種類のユーザ入力装置は、方向情報およびコマンド選択をプロセッサ204に伝達しかつ表示装置212上でのカーソルの動きを制御するための、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御216である。この入力装置は、典型的には、2つの軸、すなわち第1の軸(たとえば、x)と第2の軸(たとえば、y)において2自由度を有し、これにより、装置が平面において位置を特定することが可能となる。
【0059】
この発明は、デッドロックまたは潜在的なデッドロックを解決する良い候補を選択するためのコンピュータシステム200の用途に関する。このような候補を選択するための命令は、記憶装置210などのコンピュータ読出可能媒体からメインメモリ206に読込まれ得る。メインメモリ206に含まれる命令のシーケンスを実行することにより、プロセッサ204がこの明細書中に記載されるプロセスステップを実行する。代替的な実施例においては、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せて、ハードワイヤード回路を用いてこの発明を実現することができる。したがって、この発明の実施例は、ハードウェア回路およびソフトウェアの特定のいずれの組合せにも限定されない。
【0060】
この明細書中で用いられる「コンピュータ読出可能媒体」という用語は、実行のためにプロセッサ204に命令を与えることにかかわるいずれの媒体をも指す。このような媒体は、不揮発性媒体、揮発性媒体および伝送媒体を含むが、これらに限定されない多くの形をとり得る。不揮発性媒体は、たとえば記憶装置210などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ206などの動的メモリを含む。伝送媒体は、バス202を含むワイヤを含んだ、同軸ケーブル、銅ワイヤおよび光ファイバを含む。伝送媒体はまた、電波および赤外線データ通信中に生成されるような音波または光波の形をとり得る。
【0061】
コンピュータ読出可能媒体の一般的な形は、たとえば、フロッピー(R)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、もしくは他のいずれかの磁気媒体、CD−ROM、他のいずれかの光学媒体、パンチカード、紙テープ、孔のパターンを備えた他のいずれかの物理的媒体、RAM、PROMおよびEPROM、FLASH−EPROM、他のいずれかのメモリチップもしくはカートリッジ、以下に記載される搬送波、またはコンピュータがそこから読出すことのできる他のいずれかの媒体を含む。
【0062】
さまざまな形のコンピュータ読出可能媒体は、実行のためにプロセッサ204に1つ以上の命令の1つ以上のシーケンスを実行することに関与し得る。たとえば、命令は、最初に、リモートコンピュータの磁気ディスク上で実行され得る。リモートコンピュータは、その動的メモリに命令をロードし、モデムを用いて電話線を介してこれらの命令を送り得る。コンピュータシステム200にとってローカルなモデムは、電話線上のデータを受信し、赤外線送信機を用いてデータを赤外線信号に変換し得る。赤外線検出器が赤外線信号に搬送されたデータを受信し得、適切な回路がバス202上にデータを置き得る。バス202はデータをメインメモリ206に搬送し、そこからプロセッサ204が命令を取出し、実行する。メインメモリ206が受取る命令は、随意には、プロセッサ204による実行の前または後に、記憶装置210に記憶され得る。
【0063】
コンピュータシステム200はまた、バス202に結合される通信インターフェイス218を含む。通信インターフェイス218は、ローカルネットワーク222に接続されるネットワークリンク220につながる双方向データ通信を提供する。たとえば、通信インターフェイス218は、統合サービスデジタル通信網(ISDN)カードまたはモデムであって、データ通信接続を対応する種類の電話線に提供し得る。別の例として、通信インターフェイス218は、ローカルエリアネットワーク(LAN)カードであって、データ通信接続を適合したLANに提供し得る。ワイヤレスリンクも実現され得る。このようないずれの実現例においても、通信インターフェイス218は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号または光信号を送受信する。
【0064】
ネットワークリンク220は、典型的には、1つ以上のネットワークを介して他のデータサービスにデータ通信を提供する。たとえば、ネットワークリンク220は、ローカルネットワーク222を介してホストコンピュータ224、またはインターネットサービスプロバイダ(ISP)226によって動作されるデータ機器に接続を提供し得る。ISP226は、現在一般に「インターネット」228と称される世界的なパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク222およびインターネット228はともに、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を用いる。さまざまなネットワークとネットワークリンク220上の信号とを介し、通信インターフェイス218を経由する信号は、コンピュータシステム200へ、およびコンピュータシステム200からデジタルデータを搬送するものであり、情報を移送する搬送波の例示的な形である。
【0065】
コンピュータシステム200は、ネットワーク、ネットワークリンク220および通信インターフェイス218を介して、プログラムコードを含んだメッセージの送信およびデータの受信を行ない得る。インターネットの例では、サーバ230は、インターネット228、ISP226、ローカルネットワーク222および通信インターフェイス218を介してアプリケーションプログラムのための要求されたコードを伝送し得る。この発明に従って、このようなダウンロードされた1つのアプリケーションは、この明細書中に記載される分散された動作に関与するものについての情報の提供をもたらす。
【0066】
受信されたコードは、受信されるとプロセッサ204によって実行され得、および/または記憶装置210もしくは他の不揮発性記憶装置に記憶されて後で実行され得る。この態様では、コンピュータシステム200は、搬送波の形でアプリケーションコードを獲得し得る。
【0067】
上述の明細書では、この発明を、その特定の実施例に関連して記載してきた。しかしながら、この発明のより広範な精神および範囲から逸脱することなく、さまざまな変形および変更が可能であることは明らかである。したがって、明細書および図面は、限定的な意味ではなく例示的な意味で理解されるべきである。
【図面の簡単な説明】
【0068】
【図1a】待ちグラフを示すブロック図である。
【図1b】待ちグラフを示すブロック図である。
【図2】この発明の実施例を実現することのできるコンピュータシステムを示すブロック図である。
【0001】
発明の分野
この発明は、分散型コンピュータシステムに関し、特に、デッドロックまたは潜在的なデッドロックが検出される際の犠牲(victim)選択に関する。
【背景技術】
【0002】
発明の背景
演算処理における長期間にわたる課題のうちの1つに、デッドロックへの対処がある。デッドロックは、エンティティのセットが存在し、このためそのセットにおける各エンティティがそのセットにおける別のエンティティによって所有される少なくとも1つのリソースの解放を待っている場合に発生する。リソースを所有することのできるエンティティは、この明細書中では所有エンティティと称される。データベースシステムの文脈では、たとえば、エンティティは、中でもプロセスおよびトランザクションを含む。トランザクションはアトミック単位の作業である。
【0003】
たとえば、トランザクションT1は、リソースR1およびR2の排他的な所有権を要求し得る。R1が利用可能であり、R2が別のトランザクションT2によって現在排他的に所有される場合、トランザクションT1はR1の排他的な所有権を獲得し得るが、R2が利用可能となるのを待たなくてはならない。トランザクションT2がR1の所有権を要求し、かつT2がR2を解放せずにR1を待つために中断される場合にデッドロックが発生する。T1およびT2はともに互いを待つのでデッドロックされる。
【0004】
コンピュータシステムは、デッドロックを検出する種々のデッドロック処理機構(デッドロックハンドラ)を用いる。デッドロックを解決するプロセスは、第1に、デッドロックがあるかどうかを判定し、第2に、デッドロックを如何に解決するかを決定するステップを含む。デッドロックに対処するためのいくつかの技術は、待ちグラフ技術およびタイムアウト技術を含む。
【0005】
待ちグラフ技術は「サイクル」に基づきデッドロックを検出する。特に、プロセスがリソースを要求した後、またはしきい値時間を超えてリソースを待った後、待ちグラフ技術が生成され得、サイクルがないか検査され得る。サイクルが識別される場合、デッドロック検出機構は潜在的なデッドロックを検出している。次いで、デッドロックサイクルの一部であるリソースが、デッドロックを解決するのに用いるために選択される。こうして、選択されたリソースはこの明細書中では「犠牲リソース」と称される。というのも、リソースを所有するかまたはリソースを要求しているエンティティが、典型的には、デッドロックを解決するための措置を講じる際に性能の低下を招くことになるからである。同様に、犠牲リソースを所有するかまたは犠牲リソースを要求しているエンティティは、この明細書中では「犠牲エンティティ」と称される。「犠牲」という用語は、この明細書中では、犠牲リソースまたは犠牲エンティティを称するのに用いられる。
【0006】
典型的には、犠牲リソースはサイクル内におけるリソースであり、このリソースはエンティティによって保持され、このエンティティの要求によってデッドロックがもたらされる。デッドロックを解決するために犠牲リソースに対するロックを解放する1つの方法がある。犠牲リソースに対するロックはさまざまな方法で解放され得る。たとえば、犠牲エンティティがトランザクションである場合、リソースを求め、デッドロック状態をもたらした要求のキャンセルをロールバックと組合わせることにより、トランザクションによって保持されるリソースが解放される。次いで、トランザクションは、リソースを再度獲得しようと試み、ロールバックされたステップを再実行しようと試み得る。ステップのこの再実行は、自動的に行なわれ得るか、またはカスタマ入力に基づいて開始され得る。
【0007】
待ちグラフは、どんなエンティティがリソースを有し、かつどんなエンティティがリソースを待っているかを示すグラフである。図においては、「待機中(WAITING)」という用語は、エンティティがリソースを待っている「待ち状態」にあり、したがってエントリが「実行中(RUNNING)」ではないことを示す。待ちグラフの例が図1aおよび図1bに示される。図1aは以下のシナリオを示す。
【0008】
1) エンティティ110はリソースR1を有する。
【0009】
2) エンティティ120はリソースR2を有し、リソースR1を必要とする。このため、エンティティ120はエンティティ110の後ろで待ち行列に入り、待ち状態に入り、エンティティ110がリソースR1を使用し終えるのを待つ。
【0010】
3) エンティティ130はリソースR3を有し、リソースR2を必要とする。このため、エンティティ130はエンティティ120の後ろで待ち行列に入り、待ち状態に入り、エンティティ120がリソースR2を使用し終えるのを待つ。
【0011】
4) エンティティ140はリソースR4を有し、リソースR3を必要とする。このため、エンティティ140はエンティティ130の後ろで待ち行列に入り、待ち状態に入り、エンティティ130がリソースR3を使用し終えるのを待つ。
【0012】
5) エンティティ150はリソースR5を有し、リソースR4を必要とする。このため、エンティティ150はエンティティ140の後ろで待ち行列に入り、待ち状態に入り、エンティティ140がリソースR4を使用し終えるのを待つ。
【0013】
6) エンティティ160はリソースを持たないが、リソースR5を必要とする。エンティティ150が既にリソースR5を有するので、エンティティ160はエンティティ150の後ろで待ち行列に入り、待ち状態に入り、エンティティ150がリソースR5を使用し終えるのを待つ。
【0014】
7) エンティティ110もリソースR5を必要とする。エンティティ160は既にリソースR5を待っている。このため、エンティティ110はエンティティ160の後ろで待ち行列に入り、待ち状態に入り、エンティティ160がR5を使用し終えるのを待つ。
【0015】
ノードをリソースとし、矢印を所有エンティティとすることにより待ちグラフを示す別の方法がある。図1bは、R1、R2、R3、R4、R5、R6、R7およびR8がリソースであり、矢印E1、E2、E3、E4、E5、E6、E7およびE8が所有エンティティであるようなグラフを示す。矢印は、所有エンティティが保持しているリソースから指している。矢印は、所有エンティティが要求しているリソースを指している。したがって、図1bにおいては以下のとおりである。
【0016】
1) エンティティE1はR1を保持し、R2を要求している。
【0017】
2) エンティティE2はR2を保持し、R3を要求している。
【0018】
3) エンティティE3はR3を保持し、R4を要求している。
【0019】
4) エンティティE4はR4を保持し、R1およびR5を要求している。
【0020】
5) エンティティE5はR5を保持し、R6を要求している。
【0021】
6) エンティティE6はR6を保持し、R7を要求している。
【0022】
7) エンティティE7はR7を保持し、R8を要求している。
【0023】
8) エンティティE8はR8を保持し、R1を要求している。
【0024】
デッドロック状況は、図1aおよび図1bにおけるエンティティおよびリソースのサイクルによって示される。図1aおよび図1bにおけるすべてのエンティティがリソースを待ち、これらのエンティティがいずれもリソースを放棄していないので、別のエンティティが続き得る。サイクルを中断するために何かを行なわなければならない。図1aでは、エンティティ110はリソースを要求する最後のエンティティであり、この要求によりサイクルがもたらされたので、エンティティ110が保持しているリソースが解放されるよう任意に選択されることとなる。問題は、エンティティ110が保持しているリソースが解放されるのに良い候補でないかもしれないことである。
【発明の開示】
【発明が解決しようとする課題】
【0025】
タイムアウト技術のもとでは、所有エンティティは、リソースの所有権を獲得するためにしきい値時間だけ待つと、デッドロックに関わることになるものと推定される。このタイムアウト技術はデッドロックの検出についてはあまり正確ではない。というのも、リソースの所有権を得る際の遅延が、デッドロック以外の多くの原因に起因する可能性があるからである。
【0026】
残念なことに、(1)デッドロックサイクルに関わる最も最近要求されたリソース、または(2)「タイムアウトになった」エンティティによって要求されるリソースとなるべきリソース犠牲を選択することにより、著しいオーバーヘッドがもたらされる可能性がある。たとえば、いずれの場合も、犠牲エンティティは、ほとんど完了している、長時間にわたるトランザクションであり得る。犠牲エンティティがトランザクションである場合、全トランザクションを再実行する必要がある。このようなエンティティを終了させることは、最小限のオーバーヘッドを用いて他の何らかの態様でデッドロックを中断し得る場合、特に無駄が多い。
【0027】
上述に基づき、検出されたデッドロックを中断するより効率的な方法を提供することが望ましい。
【課題を解決するための手段】
【0028】
発明の概要
潜在的なデッドロックが検出される際に犠牲を選択するための機構およびシステムが記載される。一実施例に従って、選択プロセスが、以下のとおり3つのパスで実行される。
【0029】
1) パス1の間に、デッドロックに関与する候補のセットから、候補が犠牲として選択され得ることを示す値にセットされるCAN−BE−VICTIM(犠牲であり得る)フラグを有する候補のサブセットを決定する。
【0030】
2) パス1により、中に2つ以上の候補を有するサブセットがもたらされる場合、パス2の間に、そのサブセットを処理して、リソースタイプに関連付けられるリソースプライオリティに基づき第2の候補のサブセットを決定する。
【0031】
3) 第2のパスにより、中に2つ以上の候補を有するサブセットがもたらされる場合、そのサブセットを処理して、実行していたかまたは保持されていた時間が最も短い候補を選択する。
【0032】
この発明は、添付の図面において、限定のためではなく例示のために示され、同様の参照番号が同様の要素を示す。
【発明を実施するための最良の形態】
【0033】
好ましい実施例の詳細な説明
デッドロックまたは潜在的なデッドロックの検出に応答して犠牲を選択するための方法および装置が説明される。以下の記載では、説明する目的で、この発明を完全に理解するために多くの特定の詳細が述べられる。しかしながら、これらの特定の詳細なしでこの発明を実施し得ることが当業者には明らかとなるだろう。他の場合では、周知の構造および装置は、この発明を不必要に不明瞭にすることを避けるためにブロック図の形態で示される。
【0034】
機能的概要
潜在的なデッドロックが検出される際に犠牲を選択するための機構およびシステムが説明される。リソースは、いくつかの理由で、デッドロックの検出に応答して選択される犠牲リソースとなるべきよい候補ではない可能性がある。たとえば、リソースを保持する所有エンティティは、プライオリティの高いプロセスまたはトランザクションであり得、可能な限り早く完了するよう実行する必要がある。このようなエンティティによって保持される、デッドロックの犠牲リソースとなるべきリソースを選択することにより、所有エンティティは許容できない不利益を被ることとなる。同様に、リソースは、リソースを保持する所有エンティティが極めて長時間にわたって実行していた場合、良い犠牲候補とはなり得ない。
【0035】
これらの問題に対処するために、デッドロックに関わる複数の候補のうちどの候補がデッドロックの解決に用いられる「犠牲」となるべきかを選択するための技術が提供される。この技術は、以下の要因を含み得る1つ以上の要因に基づいて犠牲を選択するステップを含む。
【0036】
1) 保持されたリソースが解放され得るかまたは要求されたリソースが延期され得るかどうかを示す、各候補に関連付けられた犠牲インジケータの値。
【0037】
2) リソースに割当てられたカテゴリおよび/またはプライオリティ。
【0038】
3) 所有エンティティが実行していたかまたはリソースが保持されていた時間の長さ。
【0039】
犠牲が選択されると、さまざまな技術を用いてデッドロックを解決することができる。たとえば、1つの技術には、犠牲リソースとするべく選択されたリソースを保持するエンティティをロールバックするステップが含まれる。他の技術には、犠牲リソースを求める要求を失敗させたり、犠牲リソースを求める要求を延期したりするステップが含まれる。さまざまなデッドロック解決技術は、この明細書中に記載される犠牲選択技術とともに用いることができるが、この発明は、犠牲が選択されるとデッドロックを解決するための特定の技術のいずれにも限定されない。
【0040】
CAN−BE−VICTIM フラグ
以下に記載される実施例では、犠牲選択動作の第1のパスは、CAN−BE−VICTIMフラグが「真」または「偽」のどちらにセットされるかに基づく。候補のCAN−BE−VICTIMフラグは、その候補を犠牲として選択できるかどうかを示す値である。このCAN−BE−VICTIMフラグはさまざまな方法でセットされ得る。たとえば、CAN−BE−VICTIMフラグの値は、ユーザにより、インストレーションによってセットされ得るか、またはサービスポリシーに基づいてセットされ得、この場合ユーザおよびインストレーションによってサービスポリシーが取り決められる。さらに、CAN−BE−VICTIMフラグは、中でもプロセス、トランザクションまたはリソースに関連付けられ得る。CAN−BE−VICTIMフラグをセットするための方法、およびCAN−BE−VICTIMフラグが関連付けられ得るエンティティの種類のこれらのリストは、網羅的なリストとなるよう意図されるものではない。
【0041】
リソースプライオリティ
リソースプライオリティを計算するために用いることができるいくつかの技術がある。たとえば、リソースのプライオリティは、アプリケーションの開始時に割当てられる静的数値であり得るか、または、リソースを保持している所有エンティティのリソースの使用および状態に応じてリソースの寿命中に変化する動的数値であり得る。静的プライオリティおよび動的プライオリティをともに用いる実施例では、リソースの動的プライオリティ値をリソースに対する静的プライオリティ値に加えて、複合的なプライオリティを作り得る。
【0042】
一実施例では、静的プライオリティは、アプリケーションに対するリソースの機能的重要性に基づいてリソースに割当てられる数値として設定される。
【0043】
保持されたリソースの動的プライオリティは、そのリソースに対する競合の量を計算することにより設定され得る。競合の量は、たとえば、何らかの予め定められた値に最初にセットされ、かつリソースに対するアクセスパターンがしきい値を超えると増加する、変動する値であり得る。同様に、競合の量は、リソースに対するアクセスパターンがしきい値に達しない場合減少することとなる。このしきい値は同じ値かまたは異なる値であってもよい。さらに、いくつかのしきい値があってもよく、各しきい値は、競合値の、増加または減少する異なった量に相互に関連する。
【0044】
さらに、リソースの動的プライオリティは、その所有エンティティにより既に所有されているかまたは所有される可能性のあるすべてのリソースを調べることによって決定され得る。たとえば、所有エンティティによって保持されるリソースの動的プライオリティは、その所有エンティティによって保持されるすべてのリソースの動的プライオリティの平均をとることにより設定され得る。動的プライオリティを平均して或る動的プライオリティを得るこの方策を用いることにより、プライオリティの高いリソースをいくつか既に所有する所有エンティティに犠牲リソースが属さないことを確実にし得る。
【0045】
静的プライオリティおよび動的プライオリティを計算するために用いられる入力値は、ユーザにより、インストレーションによってセットされ得るか、またはサービスポリシーに基づいてセットされ得、この場合ユーザおよびインストレーションによってサービスポリシーが取り決められる。これらは、リソースプライオリティを計算するために用いることのできる技術のうちほんのいくつかの例にすぎない。
【0046】
犠牲を選択するための技術
一実施例に従って、犠牲リソースは、以下のとおり、3つのパスのフィルタリングオペレーションを用いて選択される。
【0047】
パス1:第1のパスの間に、デッドロックグラフにおいて、セットされたCAN−BE−VICTIMフラグを有するリソースのセットを選択する。このグラフが、セットされたCAN−BE−VICTIMフラグを備えるリソースを1つだけ有する場合、このリソースは犠牲であり、そうでない場合パス2に進む。
【0048】
パス2:第2のパスの間に、パス1から得られたリソースのセットを、プライオリティが同じであるリソースを含むサブセットに分割する。代替的には、パス1からのセットは、プライオリティ範囲によって分割され得る。リソースがプライオリティに従って分割されると、プライオリティの最も低いリソースのサブセットが選択される。プライオリティの最も低いサブセットがリソースを1つだけ有する場合、その単一のリソースは犠牲であり、そうでない場合パス3に進む。
【0049】
パス2を説明するために、パス1は図1bに示されるリソースR1〜R8に対して実行されるものとする。さらに、R1、R2、R3、R4、R5、R6、R7およびR8はすべて、それらの関連するセットされたCAN−BE−VICTIMフラグを有するものとされる。プライオリティスキーム(すなわち、数値または範囲)に基づき、パス2の間に、パス1の後に残るリソースのセットを分割して以下の3つのセットを作り出す。
【0050】
S0={R1,R5,R8}
S1={R2,R3}
S2={R4,R6,R7}
ここで、S0>S1>S2および「>」は「より高いプライオリティ/プライオリティ範囲」を示す。このシナリオでは、セットS2={R4,R6 and R7}は、パス2の間に選択されることとなる。選択されたセットが2つ以上の候補を含むので、選択プロセスはパス3に進む。
【0051】
上述のように、リソースのプライオリティは、アプリケーションの開始時にそれに割当てられるいくらか静的な数値であり得、および/または、その所有エンティティの使用および状態に基づき、保持されたリソースの寿命中に変化し続けるいくらか動的な数値であり得る。
【0052】
パス3:パス3は、パス2の後に残るリソース(すなわち、プライオリティの最も低いセットにおけるリソース)に対して実行される。パス3の間に、セットにおける各リソースの所有エンティティに対する実行時間が決定される。その所有エンティティに対する実行時間が最も短いリソースが犠牲として選択される。
【0053】
変形例
上述の実施例においては、デッドロック犠牲は、3つのパスを実行することにより選択される。各パスは、異なるファクタに基づいてデッドロック犠牲候補のセットをフィルタする。しかしながら、パスの特定の数、およびこれらのパス中に用いられる特定のファクタは、実現例ごとに異なる可能性がある。たとえば、犠牲候補セットは、リソースプライオリティに基づいてフィルタされる前に、実行時間に基づいてフィルタされてもよい。
【0054】
同様に、犠牲リソースに対するプライオリティ値を設定するための技術は、実現例によって、ならびに所有エンティティがどのくらい長く実行していたかを判定するのに用いられる技術によっても変わる可能性がある。たとえば、所有エンティティがプロセスである場合、プロセスが実行していた時間は、オペレーションシステムに対して呼出しを行なうことにより判定され得る。一方、所有エンティティがトランザクションである場合、トランザクションの実行時間を得るために用いられる技術は、トランザクションが属するシステムにおいてトランザクションをいかに実現するかによって左右されることとなる。
【0055】
さらに、所与の異なった重みである複数のファクタを考慮に入れるフィルタリングが、単一のパスにおいて実行され得る。たとえば、1つのパスは、リソースプライオリティおよび実行時間の両方に基づいてフィルタすることができ、プライオリティが比較的高いリソースを有する候補は、その候補よりも他の候補の方が実行時間が極めて長い場合、依然として犠牲として選択され得る。他のファクタは、たとえば、所有エンティティの種類、および所有エンティティに関連付けられるユーザの身元を含み得る。
【0056】
別の可能な技術では、エンティティがリソースを要求しているがリソースをまだ獲得していない場合に、潜在的なデッドロックにアルゴリズムを適用する。リソースをいかに割当てるかを示す待ちグラフが構成および分析され得る。潜在的なデッドロックが検出される場合、この明細書中に記載される技術を適用して、どのリソースが延期を要求するかを判定し得る。
【0057】
ハードウェア概要
図2は、この発明の実施例が実現され得るコンピュータシステム200を示すブロック図である。コンピュータシステム200は、情報の通信を行なうためのバス202または他の通信メカニズムと、情報を処理するための、バス202に結合されるプロセッサ204とを含む。コンピュータシステム200はまた、プロセッサ204によって実行されるべき情報および命令を記憶するための、バス202に結合されるランダムアクセスメモリ(RAM)または他の動的記憶装置などのメインメモリ206を含む。メインメモリ206はまた、プロセッサ204によって実行されるべき命令の実行中に一時的数値変数または他の中間情報を記憶するために用いられ得る。コンピュータシステム200はさらに、プロセッサ204のための静的情報および命令を記憶するための、バス202に結合される読出専用メモリ(ROM)208または他の静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置210が設けられ、情報および命令を記憶するためにバス202に結合される。
【0058】
コンピュータシステム200は、コンピュータユーザに情報を表示するための陰極線管(CRT)などの表示装置212にバス202を介して結合され得る。英数字および他のキーを含む入力装置214は、バス202に結合されて、情報およびコマンド選択をプロセッサ204に伝達する。別の種類のユーザ入力装置は、方向情報およびコマンド選択をプロセッサ204に伝達しかつ表示装置212上でのカーソルの動きを制御するための、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御216である。この入力装置は、典型的には、2つの軸、すなわち第1の軸(たとえば、x)と第2の軸(たとえば、y)において2自由度を有し、これにより、装置が平面において位置を特定することが可能となる。
【0059】
この発明は、デッドロックまたは潜在的なデッドロックを解決する良い候補を選択するためのコンピュータシステム200の用途に関する。このような候補を選択するための命令は、記憶装置210などのコンピュータ読出可能媒体からメインメモリ206に読込まれ得る。メインメモリ206に含まれる命令のシーケンスを実行することにより、プロセッサ204がこの明細書中に記載されるプロセスステップを実行する。代替的な実施例においては、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せて、ハードワイヤード回路を用いてこの発明を実現することができる。したがって、この発明の実施例は、ハードウェア回路およびソフトウェアの特定のいずれの組合せにも限定されない。
【0060】
この明細書中で用いられる「コンピュータ読出可能媒体」という用語は、実行のためにプロセッサ204に命令を与えることにかかわるいずれの媒体をも指す。このような媒体は、不揮発性媒体、揮発性媒体および伝送媒体を含むが、これらに限定されない多くの形をとり得る。不揮発性媒体は、たとえば記憶装置210などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ206などの動的メモリを含む。伝送媒体は、バス202を含むワイヤを含んだ、同軸ケーブル、銅ワイヤおよび光ファイバを含む。伝送媒体はまた、電波および赤外線データ通信中に生成されるような音波または光波の形をとり得る。
【0061】
コンピュータ読出可能媒体の一般的な形は、たとえば、フロッピー(R)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、もしくは他のいずれかの磁気媒体、CD−ROM、他のいずれかの光学媒体、パンチカード、紙テープ、孔のパターンを備えた他のいずれかの物理的媒体、RAM、PROMおよびEPROM、FLASH−EPROM、他のいずれかのメモリチップもしくはカートリッジ、以下に記載される搬送波、またはコンピュータがそこから読出すことのできる他のいずれかの媒体を含む。
【0062】
さまざまな形のコンピュータ読出可能媒体は、実行のためにプロセッサ204に1つ以上の命令の1つ以上のシーケンスを実行することに関与し得る。たとえば、命令は、最初に、リモートコンピュータの磁気ディスク上で実行され得る。リモートコンピュータは、その動的メモリに命令をロードし、モデムを用いて電話線を介してこれらの命令を送り得る。コンピュータシステム200にとってローカルなモデムは、電話線上のデータを受信し、赤外線送信機を用いてデータを赤外線信号に変換し得る。赤外線検出器が赤外線信号に搬送されたデータを受信し得、適切な回路がバス202上にデータを置き得る。バス202はデータをメインメモリ206に搬送し、そこからプロセッサ204が命令を取出し、実行する。メインメモリ206が受取る命令は、随意には、プロセッサ204による実行の前または後に、記憶装置210に記憶され得る。
【0063】
コンピュータシステム200はまた、バス202に結合される通信インターフェイス218を含む。通信インターフェイス218は、ローカルネットワーク222に接続されるネットワークリンク220につながる双方向データ通信を提供する。たとえば、通信インターフェイス218は、統合サービスデジタル通信網(ISDN)カードまたはモデムであって、データ通信接続を対応する種類の電話線に提供し得る。別の例として、通信インターフェイス218は、ローカルエリアネットワーク(LAN)カードであって、データ通信接続を適合したLANに提供し得る。ワイヤレスリンクも実現され得る。このようないずれの実現例においても、通信インターフェイス218は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号または光信号を送受信する。
【0064】
ネットワークリンク220は、典型的には、1つ以上のネットワークを介して他のデータサービスにデータ通信を提供する。たとえば、ネットワークリンク220は、ローカルネットワーク222を介してホストコンピュータ224、またはインターネットサービスプロバイダ(ISP)226によって動作されるデータ機器に接続を提供し得る。ISP226は、現在一般に「インターネット」228と称される世界的なパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク222およびインターネット228はともに、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を用いる。さまざまなネットワークとネットワークリンク220上の信号とを介し、通信インターフェイス218を経由する信号は、コンピュータシステム200へ、およびコンピュータシステム200からデジタルデータを搬送するものであり、情報を移送する搬送波の例示的な形である。
【0065】
コンピュータシステム200は、ネットワーク、ネットワークリンク220および通信インターフェイス218を介して、プログラムコードを含んだメッセージの送信およびデータの受信を行ない得る。インターネットの例では、サーバ230は、インターネット228、ISP226、ローカルネットワーク222および通信インターフェイス218を介してアプリケーションプログラムのための要求されたコードを伝送し得る。この発明に従って、このようなダウンロードされた1つのアプリケーションは、この明細書中に記載される分散された動作に関与するものについての情報の提供をもたらす。
【0066】
受信されたコードは、受信されるとプロセッサ204によって実行され得、および/または記憶装置210もしくは他の不揮発性記憶装置に記憶されて後で実行され得る。この態様では、コンピュータシステム200は、搬送波の形でアプリケーションコードを獲得し得る。
【0067】
上述の明細書では、この発明を、その特定の実施例に関連して記載してきた。しかしながら、この発明のより広範な精神および範囲から逸脱することなく、さまざまな変形および変更が可能であることは明らかである。したがって、明細書および図面は、限定的な意味ではなく例示的な意味で理解されるべきである。
【図面の簡単な説明】
【0068】
【図1a】待ちグラフを示すブロック図である。
【図1b】待ちグラフを示すブロック図である。
【図2】この発明の実施例を実現することのできるコンピュータシステムを示すブロック図である。
Claims (26)
- デッドロックの解決中に用いられるべき犠牲を選択するための方法であって、
前記デッドロックに関わる複数の候補を、前記犠牲となるべき候補として最初に設定するステップと、
単一の候補が前記犠牲となるべき候補として残るまで、1つ以上のファクタに基づき前記複数の候補をフィルタするステップと、
前記デッドロックの解決中に用いるべき犠牲として前記単一の候補を選択するステップとを含む、方法。 - フィルタするステップは、前記複数の候補から、候補が犠牲であり得ないことを示すCAN−BE−VICTIMフラグを有するいずれの候補をも取除くステップをさらに含む、請求項1に記載の方法。
- フィルタするステップは、前記複数の候補から、他の候補のうち少なくとも1つの候補のリソースプライオリティよりもリソースプライオリティが高い候補を取除くステップをさらに含む、請求項1に記載の方法。
- フィルタするステップは、前記複数の候補から、他の候補に関連付けられる所有エンティティが実行していた時間よりも比較的長い時間実行していた所有エンティティに関連付けられるすべての候補を取除くステップをさらに含む、請求項1に記載の方法。
- フィルタするステップはコンピュータによって実現されるステップをさらに含み、前記ステップは、
第1のファクタに基づき、第1のパスにおいて複数の候補からいくつかの候補を取除くステップを含み、残された候補は第1の候補のサブセットであり、前記ステップはさらに、
第1のファクタとは異なる第2のファクタに基づき、第2のパスにおいて第1の候補のサブセットからいくつかの候補を取除くステップを含む、請求項1に記載の方法。 - 前記第2のパスの後に残された候補は第2の候補のサブセットであり、第2のファクタに基づく第2のパスは、2つ以上の候補が第1の候補のサブセットにある第1のパスを実行した後にのみ実行される、請求項5に記載の方法。
- 2つ以上の候補が第2の候補のサブセットにある第1および第2のパスを実行した後にのみ、第3のファクタに基づいて第3のパスを実行する、コンピュータによって実現されるステップをさらに含み、第3のファクタは第1のファクタおよび第2のファクタとは異なる、請求項6に記載の方法。
- フィルタするためのステップはコンピュータによって実現されるステップをさらに含み、前記ステップは、
第1のパスを実行して、終了のための候補ではないことを示すCAN−BE−VICTIMフラグを有するいずれの候補をもフィルタして除くステップと、
第1のパスを実行した後に2つ以上の候補が残される場合、第2のパスを実行して、他の候補のうち少なくとも1つの候補のリソースプライオリティよりもリソースプライオリティが高いいずれの候補をもフィルタするステップと、
第2のパスを実行した後に2つ以上の候補が残される場合、第3のパスを実行して、実行していた時間が最も短い候補以外のすべての候補をフィルタして除くステップとを含む、請求項1に記載の方法。 - フィルタするステップは、前記候補のために設定されるプライオリティに基づきフィルタするステップを含む、請求項1に記載の方法。
- 所与の候補のプライオリティの少なくとも一部分は動的に設定される、請求項9に記載の方法。
- 前記部分は、前記候補以外のリソースのいずれが、所与の候補に関連付けられる所有エンティティによって保持されるかに基づいて設定される、請求項10に記載の方法。
- 所与の候補のプライオリティの少なくとも一部分は静的に設定される、請求項9に記載の方法。
- 前記部分は、所与の候補の種類に基づいて設定される、請求項12に記載の方法。
- デッドロックの解決中に用いるべき犠牲を選択するための命令を実行するコンピュータ読出可能な媒体であって、
前記犠牲となるべき候補として前記デッドロックに関わる複数の候補を最初に設定するステップと、
単一の候補が前記犠牲となるべき候補として残るまで1つ以上のファクタに基づき前記複数の候補をフィルタするステップと、
前記デッドロックの解決中に用いるべき犠牲として前記単一の候補を選択するステップとを実行するための命令を伝える、コンピュータ読出可能媒体。 - フィルタするステップは、前記複数の候補から、候補が犠牲であり得ないことを示すCAN−BE−VICTIMフラグを有するいずれの候補をも取除くステップをさらに含む、請求項14に記載のコンピュータ読出可能媒体。
- フィルタするステップは、前記複数の候補から、他の候補のうち少なくとも1つの候補のリソースプライオリティよりもリソースプライオリティが高い候補を取除くステップをさらに含む、請求項14に記載のコンピュータ読出可能媒体。
- フィルタするステップは、前記複数の候補から、他の候補に関連付けられる所有エンティティが実行していた時間よりも比較的長い時間実行していた所有エンティティに関連付けられるすべての候補を取除くステップをさらに含む、請求項14に記載のコンピュータ読出可能媒体。
- フィルタするステップはコンピュータによって実現されるステップをさらに含み、前記ステップは、
第1のファクタに基づき、第1のパスにおいて複数の候補からいくつかの候補を取除くステップを含み、残された候補は第1の候補のサブセットであり、前記ステップはさらに、
第1のファクタとは異なる第2のファクタに基づき、第2のパスにおいて第1の候補のサブセットからいくつかの候補を取除くステップを含む、請求項14に記載のコンピュータ読出可能媒体。 - 前記第2のパスの後に残された候補は第2の候補のサブセットであり、第2のファクタに基づく第2のパスは、第1の候補のサブセットに2つ以上の候補がある第1のパスを実行した後にのみ実行される、請求項18に記載のコンピュータ読出可能媒体。
- 第2の候補のサブセットに2つ以上の候補がある第1および第2のパスを実行した後に
のみ、第3のファクタに基づいて第3のパスを実行する、コンピュータによって実現されるステップのための命令をさらに含み、第3のファクタは第1のファクタおよび第2のファクタとは異なる、請求項19に記載のコンピュータ読出可能媒体。 - フィルタするためのステップはコンピュータによって実現されるステップをさらに含み、前記ステップは、
第1のパスを実行して、終了のための候補ではないことを示すCAN−BE−VICTIMフラグを有するいずれの候補をもフィルタして除くステップと、
第1のパスを実行した後に2つ以上の候補が残される場合、第2のパスを実行して、他の候補のうち少なくとも1つの候補のリソースプライオリティよりもリソースプライオリティが高いいずれの候補をもフィルタするステップと、
第2のパスを実行した後に2つ以上の候補が残される場合、第3のパスを実行して、実行していた時間が最も短い候補以外のすべての候補をフィルタして除くステップとを含む、請求項14に記載のコンピュータ読出可能媒体。 - フィルタするステップは、前記候補のために設定されるプライオリティに基づいてフィルタするステップを含む、請求項14に記載のコンピュータ読出可能媒体。
- 所与の候補のプライオリティのうち少なくとも一部分は動的に設定される、請求項22に記載のコンピュータ読出可能媒体。
- 前記部分は、前記候補以外のリソースのいずれが、所与の候補に関連付けられる所有エンティティによって保持されるかに基づいて設定される、請求項23に記載のコンピュータ読出可能媒体。
- 所与の候補のプライオリティのうち少なくとも一部分は静的に設定される、請求項22に記載のコンピュータ読出可能媒体。
- 前記部分は所与の候補の種類に基づき設定される、請求項25に記載のコンピュータ読出可能媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/922,424 US7185339B2 (en) | 2001-08-03 | 2001-08-03 | Victim selection for deadlock detection |
PCT/US2002/023604 WO2003014926A2 (en) | 2001-08-03 | 2002-07-24 | Victim selection for deadlock detection |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005502941A true JP2005502941A (ja) | 2005-01-27 |
Family
ID=25447019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003519790A Withdrawn JP2005502941A (ja) | 2001-08-03 | 2002-07-24 | デッドロック検出のための犠牲選択 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7185339B2 (ja) |
EP (1) | EP1421488A2 (ja) |
JP (1) | JP2005502941A (ja) |
CN (1) | CN1539105A (ja) |
CA (1) | CA2455917A1 (ja) |
WO (1) | WO2003014926A2 (ja) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006146678A (ja) * | 2004-11-22 | 2006-06-08 | Hitachi Ltd | 情報処理装置におけるプログラム制御方法、情報処理装置、及びプログラム |
CN100361081C (zh) * | 2005-01-18 | 2008-01-09 | 华为技术有限公司 | 处理多线程/多任务/多处理器的方法 |
CN100337207C (zh) * | 2005-03-11 | 2007-09-12 | 华为技术有限公司 | 一种信号量死锁的检测方法 |
US8141087B2 (en) * | 2006-03-31 | 2012-03-20 | International Business Machines Corporation | Resolving computing resource deadlocks based on priority and dependent processes |
US8108865B2 (en) * | 2006-07-31 | 2012-01-31 | Hewlett-Packard Development Company, L.P. | Process replication method and system |
US20080282244A1 (en) * | 2007-05-07 | 2008-11-13 | Microsoft Corporation | Distributed transactional deadlock detection |
US11281654B2 (en) * | 2007-10-23 | 2022-03-22 | International Business Machines Corporation | Customized roll back strategy for databases in mixed workload environments |
CN101425070B (zh) * | 2008-08-11 | 2011-04-20 | 深圳市金蝶中间件有限公司 | 一种死锁定位的方法、死锁定位装置和数据系统 |
US9104989B2 (en) * | 2008-11-17 | 2015-08-11 | Microsoft Technology Licensing, Llc | Priority and cost based deadlock victim selection via static wait-for graph |
CN101937365B (zh) * | 2009-06-30 | 2013-05-15 | 国际商业机器公司 | 并行程序的死锁检测方法和系统 |
US8521472B2 (en) * | 2009-09-18 | 2013-08-27 | International Business Machines Corporation | Method to compute wait time |
CN102053861B (zh) * | 2009-10-30 | 2014-03-12 | 国际商业机器公司 | 并行程序中死锁检测的方法和系统 |
US7962615B1 (en) | 2010-01-07 | 2011-06-14 | International Business Machines Corporation | Multi-system deadlock reduction |
CN102521033B (zh) * | 2011-12-14 | 2014-06-25 | 华南理工大学 | 一种监测系统调度的死锁检测与解除方法 |
DK2817678T3 (en) | 2013-03-06 | 2018-08-13 | Lightvert Ltd | DISPLAY SYSTEM BASED ON VIOLENCE SURVIVAL WITH A LINE SCREEN |
US9298507B2 (en) * | 2013-09-26 | 2016-03-29 | International Business Machines Corporation | Data processing resource management |
CN104239147B (zh) * | 2014-10-20 | 2018-03-09 | 浪潮(北京)电子信息产业有限公司 | 一种处理死锁循环方法及系统 |
US10635653B2 (en) * | 2016-04-20 | 2020-04-28 | Unisys Corporation | Systems and methods for implementing a multi-host record lock deadlock feedback mechanism |
EP3964959A1 (en) * | 2020-09-03 | 2022-03-09 | ARM Limited | Data processing |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4965716A (en) * | 1988-03-11 | 1990-10-23 | International Business Machines Corporation | Fast access priority queue for managing multiple messages at a communications node or managing multiple programs in a multiprogrammed data processor |
EP0595453B1 (en) | 1992-10-24 | 1998-11-11 | International Computers Limited | Distributed data processing system |
JP3392236B2 (ja) * | 1994-11-04 | 2003-03-31 | 富士通株式会社 | 分散トランザクション処理システム |
US5682537A (en) * | 1995-08-31 | 1997-10-28 | Unisys Corporation | Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system |
US6021113A (en) * | 1997-10-29 | 2000-02-01 | Lucent Technologies Inc. | Distributed precomputation of network signal paths with table-based link capacity control |
US6330610B1 (en) | 1997-12-04 | 2001-12-11 | Eric E. Docter | Multi-stage data filtering system employing multiple filtering criteria |
US6332023B1 (en) * | 1998-06-04 | 2001-12-18 | Mci Communications Corporation | Method of and system for providing services in a communications network |
US6617969B2 (en) * | 2001-04-19 | 2003-09-09 | Vigilance, Inc. | Event notification system |
-
2001
- 2001-08-03 US US09/922,424 patent/US7185339B2/en not_active Expired - Lifetime
-
2002
- 2002-07-24 CA CA002455917A patent/CA2455917A1/en not_active Abandoned
- 2002-07-24 EP EP02744881A patent/EP1421488A2/en not_active Withdrawn
- 2002-07-24 CN CNA028152808A patent/CN1539105A/zh active Pending
- 2002-07-24 WO PCT/US2002/023604 patent/WO2003014926A2/en not_active Application Discontinuation
- 2002-07-24 JP JP2003519790A patent/JP2005502941A/ja not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20030028638A1 (en) | 2003-02-06 |
CA2455917A1 (en) | 2003-02-20 |
CN1539105A (zh) | 2004-10-20 |
WO2003014926A2 (en) | 2003-02-20 |
US7185339B2 (en) | 2007-02-27 |
WO2003014926A3 (en) | 2004-02-05 |
EP1421488A2 (en) | 2004-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005502941A (ja) | デッドロック検出のための犠牲選択 | |
US7735089B2 (en) | Method and system for deadlock detection in a distributed environment | |
US7725446B2 (en) | Commitment of transactions in a distributed system | |
US6412034B1 (en) | Transaction-based locking approach | |
JP4301937B2 (ja) | 分散データベース環境での一貫した読取 | |
JP4612710B2 (ja) | トランザクション並行制御方法、データベース管理システム、およびプログラム | |
US5745747A (en) | Method and system of lock request management in a data processing system having multiple processes per transaction | |
JP2531881B2 (ja) | 並行制御方法 | |
US20050022047A1 (en) | Conditional data access after database system failure | |
JPH1165863A (ja) | 共有資源管理方法 | |
JP3910577B2 (ja) | リソース・コンテンションを管理するための方法および装置 | |
US11449241B2 (en) | Customizable lock management for distributed resources | |
US7574439B2 (en) | Managing a nested request | |
JP2000194678A (ja) | クラスタコンピュ―タシステムにおける高度に利用可能な非同期i/o | |
US6807540B2 (en) | System and method for deadlock management in database systems with demultiplexed connections | |
US6304938B1 (en) | Detecting a state change in a lock structure to validate a potential deadlock | |
JP2001056767A (ja) | トランザクションサービス同期インターフェースを使用して、内部状態のクリーンアップを実施するための方法 | |
JP3110185B2 (ja) | 計算機システム | |
AU2002346120A1 (en) | Victim selection for deadlock detection | |
CN114356599A (zh) | 业务消息处理系统及方法 | |
CN112685142A (zh) | 分布式数据处理系统 | |
JP2933005B2 (ja) | 管理情報格納装置 | |
US6772176B1 (en) | Coordinating a distributed transaction between participants unable to follow a two-phase commit | |
US7013463B2 (en) | Latch mechanism for concurrent computing environments | |
JP3578408B2 (ja) | コンピュータネットワークシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20051004 |