JP2825839B2 - デッドロック検出処理方式 - Google Patents
デッドロック検出処理方式Info
- Publication number
- JP2825839B2 JP2825839B2 JP1068814A JP6881489A JP2825839B2 JP 2825839 B2 JP2825839 B2 JP 2825839B2 JP 1068814 A JP1068814 A JP 1068814A JP 6881489 A JP6881489 A JP 6881489A JP 2825839 B2 JP2825839 B2 JP 2825839B2
- Authority
- JP
- Japan
- Prior art keywords
- deadlock
- wfg
- processor module
- local
- information
- 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
Landscapes
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の詳細な説明】 〔概要〕 共用メモリをバス結合したマルチプロセッサアーキテ
クチァでのデータベース処理におけるデッドロック検出
処理方式に関し, デッドロック検出のための処理コストを削減し,シス
テム全体の処理性能を向上させることを目的とし, 1つのプロセッサモジュール内で動作するトランザク
ション間の待ち関係を示す有向グラフ情報を,そのプロ
セッサモジュール内のローカルメモリ上に置き,複数の
プロセッサモジュールに関係するトランザクション間の
待ち関係を示す有向グラフ情報を,共用メモリ上に置い
て,ローカルなデッドロック検出と,グローバルなデッ
ドロック検出とを分離し,ローカルメモリおよび共用メ
モリ上の上記有向グラフ情報を参照して,待ち関係を追
跡することにより,デッドロックを検出するように構成
する。
クチァでのデータベース処理におけるデッドロック検出
処理方式に関し, デッドロック検出のための処理コストを削減し,シス
テム全体の処理性能を向上させることを目的とし, 1つのプロセッサモジュール内で動作するトランザク
ション間の待ち関係を示す有向グラフ情報を,そのプロ
セッサモジュール内のローカルメモリ上に置き,複数の
プロセッサモジュールに関係するトランザクション間の
待ち関係を示す有向グラフ情報を,共用メモリ上に置い
て,ローカルなデッドロック検出と,グローバルなデッ
ドロック検出とを分離し,ローカルメモリおよび共用メ
モリ上の上記有向グラフ情報を参照して,待ち関係を追
跡することにより,デッドロックを検出するように構成
する。
本発明は,共用メモリをバス結合したマルチプロセッ
サアーキテクチァでのデータベース処理におけるデッド
ロック検出処理方式に関する。
サアーキテクチァでのデータベース処理におけるデッド
ロック検出処理方式に関する。
マルチプロセッサシステムは,密結合マルチプロセッ
サシステムと,疎結合マルチプロセッサシステムとに大
別されるが,さらにこれらを複合させたものや,密結合
と疎結合との中間的なものなど,多種多用のシステム構
成が,実用化されてきている。
サシステムと,疎結合マルチプロセッサシステムとに大
別されるが,さらにこれらを複合させたものや,密結合
と疎結合との中間的なものなど,多種多用のシステム構
成が,実用化されてきている。
一方,データベース管理システムを,1つのプロセッサ
上で実現するには,レスポンスにある程度の限界が生じ
るので,マルチプロセッサで処理することが考えられて
いるが,データベースの資源の管理が複雑化し,特にア
クセス競合の防止のための排他制御等に関する処理時間
が長くなる傾向にあるので,その効率的な処理が望まれ
ている。
上で実現するには,レスポンスにある程度の限界が生じ
るので,マルチプロセッサで処理することが考えられて
いるが,データベースの資源の管理が複雑化し,特にア
クセス競合の防止のための排他制御等に関する処理時間
が長くなる傾向にあるので,その効率的な処理が望まれ
ている。
第6図は従来の一般的なロックによる排他制御におけ
るデッドロックを説明するための図,第7図は従来の待
ち関係を示す有向グラフ情報によるデッドロック検出方
式の説明図である。
るデッドロックを説明するための図,第7図は従来の待
ち関係を示す有向グラフ情報によるデッドロック検出方
式の説明図である。
データベースの資源(リソース)は,通常,グラニュ
ールと呼ばれる単位,すなわち,データベース中のある
データ集合の単位で,アクセスが管理される。この単位
は,例えばファイルレベルのこともあり,レコードレベ
ルのこともある。
ールと呼ばれる単位,すなわち,データベース中のある
データ集合の単位で,アクセスが管理される。この単位
は,例えばファイルレベルのこともあり,レコードレベ
ルのこともある。
この資源に対するアクセスでは,アクセス競合による
データ矛盾の発生を防止し,データのインテグリティを
保証するために排他制御が必要になる。排他制御を実現
するために,一般にロックが使用される。
データ矛盾の発生を防止し,データのインテグリティを
保証するために排他制御が必要になる。排他制御を実現
するために,一般にロックが使用される。
ロック制御では,ある資源の名前とその資源に対する
ロックのモード(共用モード/排他モードなど)を指定
することにより,同一の資源を必要とする要求元に対し
て,該当資源に対する参照・更新処理の順序を規定す
る。これにより,その資源のインテグリティを保証す
る。
ロックのモード(共用モード/排他モードなど)を指定
することにより,同一の資源を必要とする要求元に対し
て,該当資源に対する参照・更新処理の順序を規定す
る。これにより,その資源のインテグリティを保証す
る。
第6図(イ)は,資源R1に対して,トランザクション
T1が,共用モードSでロックを最初に行っている状態
で,トランザクションT2が,排他モードXによるロック
を要求した状態を示している。T2のロックは,T1がロッ
クを解除するまで待たされることになる。
T1が,共用モードSでロックを最初に行っている状態
で,トランザクションT2が,排他モードXによるロック
を要求した状態を示している。T2のロックは,T1がロッ
クを解除するまで待たされることになる。
ロックによる排他制御を行う場合に,一般的に問題に
なるのが,デッドロックの発生である。デッドロックと
は,任意の資源のロックを依頼する依頼者間で,ロック
の待ちによる「すくみ」が発生している状態をいう。
なるのが,デッドロックの発生である。デッドロックと
は,任意の資源のロックを依頼する依頼者間で,ロック
の待ちによる「すくみ」が発生している状態をいう。
例えば第6図(ロ)に示すように,トランザクション
T1が,資源R1に対してロックを行い,資源R2に対する待
ちの状態にあるときに,他のトランザクションT2が,資
源R2にロック,資源R1に対して他のロックの解除待ちの
状態にあるとする。そうすると,第6図(ハ)に示すよ
うに,T1がT2を待ち,T2がT1を待つ状態になる。したがっ
て,どちらの処理も終了しないことになり,デッドロッ
クが発生する。
T1が,資源R1に対してロックを行い,資源R2に対する待
ちの状態にあるときに,他のトランザクションT2が,資
源R2にロック,資源R1に対して他のロックの解除待ちの
状態にあるとする。そうすると,第6図(ハ)に示すよ
うに,T1がT2を待ち,T2がT1を待つ状態になる。したがっ
て,どちらの処理も終了しないことになり,デッドロッ
クが発生する。
これを防止するため,最初からデッドロックを発生さ
せないように制御することもできるが,通常のロック要
求に対する処理性能が劣化するため,一般的に適当な契
機でデッドロックの検出を行うことにより,デッドロッ
クの状態が発生していれば,それを解消するような手段
を講じる。
せないように制御することもできるが,通常のロック要
求に対する処理性能が劣化するため,一般的に適当な契
機でデッドロックの検出を行うことにより,デッドロッ
クの状態が発生していれば,それを解消するような手段
を講じる。
デッドロックの検出では,主に,ある資源のロックを
媒介として,ロック依頼者間の待ち関係を,有向グラフ
として表現し,そのグラフのループを検出することによ
り,デッドロックを検出する方式が用いられている。こ
の有向グラフを,WFG(Wait For Graph)という。
媒介として,ロック依頼者間の待ち関係を,有向グラフ
として表現し,そのグラフのループを検出することによ
り,デッドロックを検出する方式が用いられている。こ
の有向グラフを,WFG(Wait For Graph)という。
第7図は,そのWFGの例を示しており,すべての待ち
関係を矢印に従って追跡してみると,この例では,T1→T
2→T6→T7→T5→T1というループが存在することがわか
る。したがって,デッドロックが発生していることがわ
かる。デッドロックの解除は,このループを断ち切るよ
うに,どれかの要求をエラーとして終了させればよい。
関係を矢印に従って追跡してみると,この例では,T1→T
2→T6→T7→T5→T1というループが存在することがわか
る。したがって,デッドロックが発生していることがわ
かる。デッドロックの解除は,このループを断ち切るよ
うに,どれかの要求をエラーとして終了させればよい。
以上が,一般的なデッドロック検出の原理であるが,
従来,マルチプロセッサシステムにおいて,WFGを利用し
てデッドロックを検出する場合,次のような方式があっ
た。
従来,マルチプロセッサシステムにおいて,WFGを利用し
てデッドロックを検出する場合,次のような方式があっ
た。
(a) マルチプロセッサシステムの中で,デッドロッ
クの検出を行う特定のプロセッサモジュールを決め,そ
のプロセッサモジュールが,システム全体の集中したデ
ッドロック検出処理を行う。WFGは,そのデッドロック
を検出するプロセッサが持つ。
クの検出を行う特定のプロセッサモジュールを決め,そ
のプロセッサモジュールが,システム全体の集中したデ
ッドロック検出処理を行う。WFGは,そのデッドロック
を検出するプロセッサが持つ。
(b) すべてのWFGを,共用メモリ上において,各プ
ロセッサモジュールが,それぞれシンメトリックにデッ
ドロックの検出処理を行う。
ロセッサモジュールが,それぞれシンメトリックにデッ
ドロックの検出処理を行う。
(c) 各プロセッサモジュールが,ローカルメモリを
使用して独立にデッドロック検出を行う。各プロセッサ
モジュールは,自システム内のローカルなWFGと,シス
テム間のWFGとを持ち,他のプロセッサモジュールのロ
ーカルWFGが必要になった場合には,メッセージ通信に
より,その情報をもらい,全体のデッドロック検出を行
う。
使用して独立にデッドロック検出を行う。各プロセッサ
モジュールは,自システム内のローカルなWFGと,シス
テム間のWFGとを持ち,他のプロセッサモジュールのロ
ーカルWFGが必要になった場合には,メッセージ通信に
より,その情報をもらい,全体のデッドロック検出を行
う。
以上のように,従来方式では,WFGを完全に共用メモリ
で管理するか,各ローカルメモリで管理するようにさ
れ,次のような問題があった。
で管理するか,各ローカルメモリで管理するようにさ
れ,次のような問題があった。
上記(a)の特定のプロセッサモジュールが集中管理
する方式では,特定のプロセッサモジュールに負荷がか
かり,また,全体のWFGを維持するためのコストが大き
くなるという問題がある。さらに,その特定のプロセッ
サモジュールが障害などによりクラッシュした場合に,
影響が全体に及び,その対処が必要になるという問題が
ある。
する方式では,特定のプロセッサモジュールに負荷がか
かり,また,全体のWFGを維持するためのコストが大き
くなるという問題がある。さらに,その特定のプロセッ
サモジュールが障害などによりクラッシュした場合に,
影響が全体に及び,その対処が必要になるという問題が
ある。
上記(b)のWFGを完全に共用メモリ上で管理する方
式では,あるプロセッサモジュール内でローカルに処理
できる場合であっも,かならず共用メモリへのアクセス
が必要になるので,処理が遅くなるという問題がある。
式では,あるプロセッサモジュール内でローカルに処理
できる場合であっも,かならず共用メモリへのアクセス
が必要になるので,処理が遅くなるという問題がある。
上記(c)のWFGを各プロセッサモジュールがすべて
ローカルメモリで管理する方式では,メッセージ通信の
オーバヘッドが増大し,デッドロック検出のコストが大
きく,検出に時間がかかるという問題がある。
ローカルメモリで管理する方式では,メッセージ通信の
オーバヘッドが増大し,デッドロック検出のコストが大
きく,検出に時間がかかるという問題がある。
本発明は上記問題点の解決を図り,デッドロック検出
のための処理コストを削減し,システム全体の処理性能
を向上させることを目的としている。
のための処理コストを削減し,システム全体の処理性能
を向上させることを目的としている。
第1図は本発明の原理説明図である。
第1図において,10は共用メモリ,11はプロセッサモジ
ュール(PM),12は各プロセッサモジュール11と共用メ
モリ10とを接続する高速バス,13はデータベースに対す
るアクセスを行う処理単位であるトランザクションを管
理するためのトランザクション管理情報,14は複数のプ
ロセッサモジュール11間のトランザクションの待ち関係
を示すグローバルWFG情報,15はデッドロックの検出処理
を行うデッドロック検出処理部,16は各プロセッサモジ
ュール11が持つローカルメモリ,17は各プロセッサモジ
ュール11内で動作しているトランザクション間の待ち関
係を示すローカルWFG情報を表す。
ュール(PM),12は各プロセッサモジュール11と共用メ
モリ10とを接続する高速バス,13はデータベースに対す
るアクセスを行う処理単位であるトランザクションを管
理するためのトランザクション管理情報,14は複数のプ
ロセッサモジュール11間のトランザクションの待ち関係
を示すグローバルWFG情報,15はデッドロックの検出処理
を行うデッドロック検出処理部,16は各プロセッサモジ
ュール11が持つローカルメモリ,17は各プロセッサモジ
ュール11内で動作しているトランザクション間の待ち関
係を示すローカルWFG情報を表す。
各プロセッサモジュール11は,それぞれローカルメモ
リ16を持つ。また,各プロセッサモジュール11は,高速
バス12を介して,共用メモリ10にバス結合されている。
なお,2つのバスを1つで構成してもよい。
リ16を持つ。また,各プロセッサモジュール11は,高速
バス12を介して,共用メモリ10にバス結合されている。
なお,2つのバスを1つで構成してもよい。
本発明では,デッドロックの検出を,データベースの
資源に対するロック依頼者(トランザクション)間の待
ち関係を表す有向グラフ(WFG:Wait For Graph)を用い
て,そのグラフのループを検出することにより行う。
資源に対するロック依頼者(トランザクション)間の待
ち関係を表す有向グラフ(WFG:Wait For Graph)を用い
て,そのグラフのループを検出することにより行う。
そして,各プロセッサモジュール11のローカルメモリ
16には,その各プロセッサモジュール11内で動作してい
るトランザクション間の待ち関係を示す有効グラフ情報
であるローカルWFG情報17を設定し管理する。
16には,その各プロセッサモジュール11内で動作してい
るトランザクション間の待ち関係を示す有効グラフ情報
であるローカルWFG情報17を設定し管理する。
一方,各プロセッサモジュール11から共通にアクセス
可能な共用メモリ10には,異なるプロセッサモジュール
11でそれぞれ動作するトランザクション間の待ち関係を
示す有向グラフ情報であるグローバルWFG情報14を設定
し管理する。
可能な共用メモリ10には,異なるプロセッサモジュール
11でそれぞれ動作するトランザクション間の待ち関係を
示す有向グラフ情報であるグローバルWFG情報14を設定
し管理する。
以上のように,ローカルWFG情報17とグローバルWFG情
報14とを配置することにより,各プロセッサモジュール
11が,他のプロセッサモジュール11に関係なく処理でき
るローカルなデッドロック検出と,他のプロセッサモジ
ュール11で動作するトランザクションに関係するグロー
バルなデッドロック検出とを分離する。
報14とを配置することにより,各プロセッサモジュール
11が,他のプロセッサモジュール11に関係なく処理でき
るローカルなデッドロック検出と,他のプロセッサモジ
ュール11で動作するトランザクションに関係するグロー
バルなデッドロック検出とを分離する。
デッドロック検出処理部15は,ローカルメモリ16およ
び共用メモリ10上の上記有向グラフ情報に従って待ち関
係を追跡し,ループを検出した場合には,デッドロック
の発生を認識し,デッドロック解消のための処理を起動
する。
び共用メモリ10上の上記有向グラフ情報に従って待ち関
係を追跡し,ループを検出した場合には,デッドロック
の発生を認識し,デッドロック解消のための処理を起動
する。
WFGを用いてデッドロックを検出する方式を,マルチ
プロセッサシステムに適用する場合,従来方式では,例
えばすべてのWFG情報を共用メモリ10に置くか,または
デッドロック検出を行う専用のプロセッサモジュール11
を決めておき,そのローカルメモリ16にまとめて記憶す
るようにしていた。
プロセッサシステムに適用する場合,従来方式では,例
えばすべてのWFG情報を共用メモリ10に置くか,または
デッドロック検出を行う専用のプロセッサモジュール11
を決めておき,そのローカルメモリ16にまとめて記憶す
るようにしていた。
本発明では,第1図(イ),(ロ)に示すように,ロ
ーカルWFG情報17とグローバルWFG情報14とを分離して管
理する。特に,第1図(ロ)は,グローバルWFG情報14
とローカルWFG情報17の具体例を示しており,その関係
は次のようになっている。
ーカルWFG情報17とグローバルWFG情報14とを分離して管
理する。特に,第1図(ロ)は,グローバルWFG情報14
とローカルWFG情報17の具体例を示しており,その関係
は次のようになっている。
同じプロセッサモジュール内で動作するトランザクシ
ョン間の待ち関係を持つトランザクションは,各プロセ
ッサモジュールごとに,次のように個別に管理される。
ョン間の待ち関係を持つトランザクションは,各プロセ
ッサモジュールごとに,次のように個別に管理される。
(a) トランザクションT1,T2,T3,T4 (b) トランザクションT8,T9,T10 …… (c) トランザクションT14,T15,T16。
一方,異なるプロセッサモジュール間のトランザクシ
ョンの待ち関係を持つトランザクションは,第1図
(ロ)では以下のものである。
ョンの待ち関係を持つトランザクションは,第1図
(ロ)では以下のものである。
(d) トランザクションT5,T6,T7,T11,T12,T13。
このように,各プロセッサモジュール内のWFGは,ロ
ーカルメモリ16に配置し,各プロセッサモジュール間の
WFGは,共用メモリ10上に配置することにより,次のよ
うに従来方式の欠点が解決される。
ーカルメモリ16に配置し,各プロセッサモジュール間の
WFGは,共用メモリ10上に配置することにより,次のよ
うに従来方式の欠点が解決される。
(i)ローカルに閉じるデッドロックの検出処理は,そ
のプロセッサモジュール11だけで行うことができる。例
えば,トランザクションT1,T2,T3がデッドロックの関係
にあるかないかは,そのトランザクションを処理するプ
ロセッサモジュール11のローカルメモリ16を参照するこ
とだけで検出することが可能である。
のプロセッサモジュール11だけで行うことができる。例
えば,トランザクションT1,T2,T3がデッドロックの関係
にあるかないかは,そのトランザクションを処理するプ
ロセッサモジュール11のローカルメモリ16を参照するこ
とだけで検出することが可能である。
(ii)システム間に関連するデッドロック検出は,共用
メモリ10の情報を参照することにより,完全に各プロセ
ッサモジュールが独立に行う方式と,各プロセッサモジ
ュールが連係して共用情報を参照することにより,検出
する方式が選択可能となり,システムに応じて効率的な
方式を選択することができる。
メモリ10の情報を参照することにより,完全に各プロセ
ッサモジュールが独立に行う方式と,各プロセッサモジ
ュールが連係して共用情報を参照することにより,検出
する方式が選択可能となり,システムに応じて効率的な
方式を選択することができる。
(iii)プロセッサモジュール間にまたがるグローバル
なデッドロック検出について,検出する頻度の調整を容
易化することができる。例えば,システムの負荷を考慮
して,デッドロックの検出を省略し,規定処理時間を超
過したトランザクションを処理打ち切りにするようなこ
とも可能であり,その影響範囲を少なくすることもでき
る。
なデッドロック検出について,検出する頻度の調整を容
易化することができる。例えば,システムの負荷を考慮
して,デッドロックの検出を省略し,規定処理時間を超
過したトランザクションを処理打ち切りにするようなこ
とも可能であり,その影響範囲を少なくすることもでき
る。
第2図は本発明の一実施例によるシステム構成例,第
3図は本発明の一実施例に関係する管理情報説明図,第
4図は本発明の一実施例に係るデッドロック検出形態の
例,第5図は本発明の一実施例で用いるWFG制御表の例
を示す。
3図は本発明の一実施例に関係する管理情報説明図,第
4図は本発明の一実施例に係るデッドロック検出形態の
例,第5図は本発明の一実施例で用いるWFG制御表の例
を示す。
本発明は,例えば第2図に示すようなマルチプロセッ
サシステム上で実施される。第2図において,SSUは共用
メモリ装置,SCAはI/Oインタフェースアダプタ,DKはディ
スク記憶装置,DLPはデータリンクプロセッサ,DRCは回線
制御を行うドライバ・レシーバ・カードを表す。
サシステム上で実施される。第2図において,SSUは共用
メモリ装置,SCAはI/Oインタフェースアダプタ,DKはディ
スク記憶装置,DLPはデータリンクプロセッサ,DRCは回線
制御を行うドライバ・レシーバ・カードを表す。
各プロセッサモジュール11は,1台または複数台のCPU
とローカルメモリ16をも持っている。ローカルメモリ16
に対しては,キャッシュメモリのような高速アクセスが
可能である。また,各プロセッサモジュール11は,バス
コントローラ(図示省略)による制御のもとに,高速バ
ス12を介して,共用メモリ装置SSUに対するアクセスを
行うことができるようになっている。
とローカルメモリ16をも持っている。ローカルメモリ16
に対しては,キャッシュメモリのような高速アクセスが
可能である。また,各プロセッサモジュール11は,バス
コントローラ(図示省略)による制御のもとに,高速バ
ス12を介して,共用メモリ装置SSUに対するアクセスを
行うことができるようになっている。
バスオペレーションの高速化と障害対策のため,高速
バス12やI/Oバス20などは,多重化されている。もちろ
ん,一重でもよい。
バス12やI/Oバス20などは,多重化されている。もちろ
ん,一重でもよい。
各プロセッサモジュール11は,全く対称的に構成され
るため,1つのプロセッサモジュール11の処理を,他のプ
ロッサモジュール11が代わりに行うことができる。した
がって,プロセッサモジュール11の障害時には,その障
害装置をシステムから切り離して,残りのプロセッサモ
ジュール11により,サービスを続行することができるよ
うになっている。
るため,1つのプロセッサモジュール11の処理を,他のプ
ロッサモジュール11が代わりに行うことができる。した
がって,プロセッサモジュール11の障害時には,その障
害装置をシステムから切り離して,残りのプロセッサモ
ジュール11により,サービスを続行することができるよ
うになっている。
データベースの実体は,光ディスクや磁気ディスクな
どのディスク記憶装置DKに格納され,どのプロセッサモ
ジュール11からも,I/Oバス20およびアダプタSCAを介し
てアクセスできるようになっている。2つのバスを1つ
で構成してもよい。
どのディスク記憶装置DKに格納され,どのプロセッサモ
ジュール11からも,I/Oバス20およびアダプタSCAを介し
てアクセスできるようになっている。2つのバスを1つ
で構成してもよい。
このようなシステムに類似したシステムとして,日経
BP社発行の「日経エレクトロニクスNo.461,1988年11月2
8日号」,P110〜P115に示されているような各種のシステ
ムが知られているが,これらに限らず,共用メモリをバ
ス結合した種々のマルチプロセッサアーキテクチャ上
で,本発明を実現することが可能である。
BP社発行の「日経エレクトロニクスNo.461,1988年11月2
8日号」,P110〜P115に示されているような各種のシステ
ムが知られているが,これらに限らず,共用メモリをバ
ス結合した種々のマルチプロセッサアーキテクチャ上
で,本発明を実現することが可能である。
データベースの資源に対するロックに関連する資源管
理情報は,例えば第3図(イ)のようになっている。
理情報は,例えば第3図(イ)のようになっている。
第3図(イ)において,(a)は,ロックの対象とな
る資源R1,R2,…の管理情報である。
る資源R1,R2,…の管理情報である。
(b),(c)は,資源を要求しているロック依頼者
の要求受け付けのための待ち管理情報であって,特に,
(b)は,対応する資源のロックを保持しているトラン
ザクション,(c)は,資源のロックを行うために前の
トランザクションが解放するのを待っているトランザク
ションを示している。
の要求受け付けのための待ち管理情報であって,特に,
(b)は,対応する資源のロックを保持しているトラン
ザクション,(c)は,資源のロックを行うために前の
トランザクションが解放するのを待っているトランザク
ションを示している。
この例では,資源R1のロックをトランザクションT1が
保持しており,そのトランザクションT1が資源R1のロッ
クを解放するのを,トランザクションT2が待っている。
さらに,トランザクションT2を,トランザクションT4が
待っている。他の資源に対する待ち関係も同様である。
保持しており,そのトランザクションT1が資源R1のロッ
クを解放するのを,トランザクションT2が待っている。
さらに,トランザクションT2を,トランザクションT4が
待っている。他の資源に対する待ち関係も同様である。
この待ち関係を,有向グラフで表したのが,第3図
(ロ)である。なお,計算機内では,このWFG情報を,
テーブルとそのリンク情報で表現することになる。
(ロ)である。なお,計算機内では,このWFG情報を,
テーブルとそのリンク情報で表現することになる。
本発明によるデッドロックの検出形態は,例えば第4
図に示すようになる。
図に示すようになる。
第4図(イ)に示すように,関連するWFGが,すべて
ローカルWFG情報17として,ローカルメモリ内にある場
合,そのローカルメモリを持つプロセッサモジュール
が,ローカルWFG情報17だけを参照し,他とは独立にデ
ッドロックの検出処理を行うことができる。
ローカルWFG情報17として,ローカルメモリ内にある場
合,そのローカルメモリを持つプロセッサモジュール
が,ローカルWFG情報17だけを参照し,他とは独立にデ
ッドロックの検出処理を行うことができる。
第4図(ロ)に示すように,関連するWFGが,ローカ
ルWFG情報17とグローバルWFG情報14とに存在する場合,
ローカルWFG情報17によるグラフのループを調べた後,
必要に応じて共用メモリ10にアクセスして,グローバル
WFG情報14を参照することにより,デッドロックの検出
処理を行うことができる。
ルWFG情報17とグローバルWFG情報14とに存在する場合,
ローカルWFG情報17によるグラフのループを調べた後,
必要に応じて共用メモリ10にアクセスして,グローバル
WFG情報14を参照することにより,デッドロックの検出
処理を行うことができる。
例えば,第4図(ハ)に示すように,プロセッサモジ
ュール(PM1)のローカルメモリに格納されているロー
カルWFG情報17から,グローバルWFG情報14を経て,他の
プロセッサモジュールPM2のローカルWFG情報17との間
に,待ち関係の接続がある場合,プロセッサモジュール
PM1だけでは,デッドロックを検出することはできな
い。そこで,このような場合には,プロセッサモジュー
ルPM1は,自分の持つローカルWFG情報17のサブグラフ
を,プロセッサモジュールPM2へメッセージ通信で送
り,プロセッサモジュールPM2に,デッドロックの検出
を依頼する。プロセッサモジュールPM2は,そのサブグ
ラフと自分の持つローカルWFG情報17とにより,デッド
ロック発生の有無を調べることが可能になる。
ュール(PM1)のローカルメモリに格納されているロー
カルWFG情報17から,グローバルWFG情報14を経て,他の
プロセッサモジュールPM2のローカルWFG情報17との間
に,待ち関係の接続がある場合,プロセッサモジュール
PM1だけでは,デッドロックを検出することはできな
い。そこで,このような場合には,プロセッサモジュー
ルPM1は,自分の持つローカルWFG情報17のサブグラフ
を,プロセッサモジュールPM2へメッセージ通信で送
り,プロセッサモジュールPM2に,デッドロックの検出
を依頼する。プロセッサモジュールPM2は,そのサブグ
ラフと自分の持つローカルWFG情報17とにより,デッド
ロック発生の有無を調べることが可能になる。
待ちとなっている各トランザクションごとに設けられ
るWFG制御表は,例えば第5図(イ)に示すように構成
され,次のような領域を持つ。なお,グローバルなWFG
もローカルなWFGも,共通であり,同じ形式で管理され
る。
るWFG制御表は,例えば第5図(イ)に示すように構成
され,次のような領域を持つ。なお,グローバルなWFG
もローカルなWFGも,共通であり,同じ形式で管理され
る。
(a) デッドロック検出制御情報域 デッドロック解消のための犠牲者選択情報などが設定
される。
される。
(b) デッドロック検出作業情報域 デッドロック検出中に一時的に使用される作業領域で
ある。
ある。
(c) トランザクション識別子設定域 待ちとなっているトランザクションの識別子が格納さ
れる。
れる。
(d) システム識別子設定域 トランザクションが動作しているプロセッサモジュー
ルの識別子またはそのプロセッサモジュールで動作して
いるデータベースを管理するサブシステムの識別子が設
定される。
ルの識別子またはそのプロセッサモジュールで動作して
いるデータベースを管理するサブシステムの識別子が設
定される。
(e) 待ち相手へのポインタ域 待ち関係にあるトランザクションのWFG制御表へのポ
インタが格納される。複数の待ち関係がある場合,この
エントリは複数個作成される。
インタが格納される。複数の待ち関係がある場合,この
エントリは複数個作成される。
WFG制御表30は,第5図(ロ)に示すように,索引表3
1からポイントされ,また,各WFG制御表30間でリンク関
係を持つ。これ以外に,デッドロック検出の開始のため
の索引表を,ローカルメモリ内に持ち,これを見て,デ
ッドロック検出の開始点を決める。
1からポイントされ,また,各WFG制御表30間でリンク関
係を持つ。これ以外に,デッドロック検出の開始のため
の索引表を,ローカルメモリ内に持ち,これを見て,デ
ッドロック検出の開始点を決める。
デッドロック検出のアルゴリズム,すなわち,第1図
に示すデッドロック検出処理部15の処理は,例えば以下
のとおりである。
に示すデッドロック検出処理部15の処理は,例えば以下
のとおりである。
(a)デッドロック検出を開始するローカルシステムが
行う処理。
行う処理。
自分のローカルシステム内のWFGを検索し,ローカ
ルシステム内でのWFGによる待ち関係のループを検出す
る。
ルシステム内でのWFGによる待ち関係のループを検出す
る。
グローバルWFGへ至るトランザクションについて
は,トランザクションの待ち時間が妥当であるかどうか
の判断を行い,長時間待っているトランザクションなら
ば,グローバルWFGに対する待ち関係のループも検出す
る。
は,トランザクションの待ち時間が妥当であるかどうか
の判断を行い,長時間待っているトランザクションなら
ば,グローバルWFGに対する待ち関係のループも検出す
る。
処理の結果,他のローカルシステムが扱うローカ
ルWFGへの探索となった場合,そのローカルシステムに
対して,WFGサイクルの検出依頼を行う。このとき,それ
までに扱ったトランザクションに関連するWFGのサブグ
ラフを,依頼先のローカルシステムへ転送する。
ルWFGへの探索となった場合,そのローカルシステムに
対して,WFGサイクルの検出依頼を行う。このとき,それ
までに扱ったトランザクションに関連するWFGのサブグ
ラフを,依頼先のローカルシステムへ転送する。
(b)依頼されたローカルシステムが行う処理。
依頼されたトランザクションから探索を開始する。
ローカルシステム内でデッドロック検出がなく,他
のローカルシステムへの依頼もない場合には,ここで処
理を終了する。
のローカルシステムへの依頼もない場合には,ここで処
理を終了する。
探索の結果,再び他のローカルシステムへの待ちト
ランザクションが発見されたならば,同様にWFGのサブ
グラフを構成して,他のローカルシステムへ転送する。
ランザクションが発見されたならば,同様にWFGのサブ
グラフを構成して,他のローカルシステムへ転送する。
(c)デッドロックの判定 上記(b)の処理において,依頼されたWFGのサブグ
ラフのトランザクションから,再び同一のトランザクシ
ョンへのサイクルが発見されたとき,デッドロックと判
定する。デッドロック解消のための犠牲となるトランザ
クションは,この判定したシステム内のトランザクショ
ンか,サブグラフを構成するトランザクションの中から
選択する。通常は,処理打ち切りによる被害が最も小さ
いものを,トランザクションの実行制御情報などにより
選択する。このデッドロック解消の処理については,従
来と同様でよいので,説明を省略する。
ラフのトランザクションから,再び同一のトランザクシ
ョンへのサイクルが発見されたとき,デッドロックと判
定する。デッドロック解消のための犠牲となるトランザ
クションは,この判定したシステム内のトランザクショ
ンか,サブグラフを構成するトランザクションの中から
選択する。通常は,処理打ち切りによる被害が最も小さ
いものを,トランザクションの実行制御情報などにより
選択する。このデッドロック解消の処理については,従
来と同様でよいので,説明を省略する。
以上説明したように,本発明によれば,マルチプロセ
ッサアーキテクチャの特性を活かして,ローカルなデッ
ドロック検出と,全体のデッドロック検出とをバランス
させて,効率よく検出処理を行うことができるようにな
る。
ッサアーキテクチャの特性を活かして,ローカルなデッ
ドロック検出と,全体のデッドロック検出とをバランス
させて,効率よく検出処理を行うことができるようにな
る。
デッドロック検出のための負荷が特定のプロセッサモ
ジュールに集中することがなく,また,他のプロセッサ
モジュールで動作するトランザクションとの待ち関係が
ない場合には,ローカルメモリのアクセスだけで,単一
プロセッサの場合と同様に,高速に検出処理を行うこと
ができる。
ジュールに集中することがなく,また,他のプロセッサ
モジュールで動作するトランザクションとの待ち関係が
ない場合には,ローカルメモリのアクセスだけで,単一
プロセッサの場合と同様に,高速に検出処理を行うこと
ができる。
第1図は本発明の原理説明図, 第2図は本発明の一実施例によるシステム構成例, 第3図は本発明の一実施例に関係する管理情報説明図, 第4図は本発明の一実施例に係るデッドロック検出形態
の例, 第5図は本発明の一実施例で用いるWFG制御表の例, 第6図は従来の一般的なロックによる排他制御における
デッドロックを説明するための図, 第7図は従来の待ち関係を示す有向グラフ情報によるデ
ッドロック検出方式の説明図を示す。 図中,10は共用メモリ,11はプロセッサモジュール,12は
高速バス,13はトランザクション管理情報,14はグローバ
ルWFG情報,15はデッドロック検出処理部,16はローカル
メモリ,17はローカルWFG情報を表す。
の例, 第5図は本発明の一実施例で用いるWFG制御表の例, 第6図は従来の一般的なロックによる排他制御における
デッドロックを説明するための図, 第7図は従来の待ち関係を示す有向グラフ情報によるデ
ッドロック検出方式の説明図を示す。 図中,10は共用メモリ,11はプロセッサモジュール,12は
高速バス,13はトランザクション管理情報,14はグローバ
ルWFG情報,15はデッドロック検出処理部,16はローカル
メモリ,17はローカルWFG情報を表す。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 林 知博 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 関根 裕 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 下雅意 義徳 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (56)参考文献 特開 平2−77868(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 15/16
Claims (1)
- 【請求項1】それぞれローカルメモリ(16)を持つ複数
のプロセッサモジュール(11)と,これらの各プロセッ
サモジュールにバス結合される共用メモリ(10)とを備
えたマルチプロセッサシステムによるデータベース処理
におけるデッドロック検出処理方式において, 各プロセッサモジュールのローカルメモリ上に,その各
プロセッサモジュール内で動作しているトランザクショ
ン間の待ち関係を示す有向グラフ情報(17)を保持する
手段と, 上記共用メモリ上に,異なるプロセッサモジュールでそ
れぞれ動作するトランザクション間の待ち関係を示す有
向グラフ情報(14)を保持する手段と, ローカルなデッドロック検出と,グローバルなデッドロ
ック検出とを分離し,ローカルメモリおよび共用メモリ
上の上記有向グラフ情報に従って待ち関係を追跡するこ
とによりデッドロックを検出する手段とを備えた ことを特徴とするデッドロック検出処理方式。
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1068814A JP2825839B2 (ja) | 1989-03-20 | 1989-03-20 | デッドロック検出処理方式 |
CA002011807A CA2011807C (en) | 1989-03-20 | 1990-03-15 | Data base processing system using multiprocessor system |
AU52001/90A AU614225B2 (en) | 1989-03-20 | 1990-03-19 | Data base processing system using multiprocessor system |
US07/495,982 US5649184A (en) | 1989-03-20 | 1990-03-20 | Symmetric/asymmetric shared processing operation in a tightly coupled multiprocessor |
DE69032337T DE69032337T2 (de) | 1989-03-20 | 1990-03-20 | Multiprozessorsystem verwendendes Datenbasisverarbeitungssystem |
ES90302972T ES2116267T3 (es) | 1989-03-20 | 1990-03-20 | Sistema de tratamiento de bases de datos que utiliza un sistema multiprocesador. |
EP90302972A EP0389242B1 (en) | 1989-03-20 | 1990-03-20 | Data base processing system using multiprocessor system |
KR1019900003741A KR930000853B1 (ko) | 1989-03-20 | 1990-03-20 | 멀티 프로세서 시스템을 사용한 데이터 베이스 프로세싱 시스템. |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1068814A JP2825839B2 (ja) | 1989-03-20 | 1989-03-20 | デッドロック検出処理方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH02247770A JPH02247770A (ja) | 1990-10-03 |
JP2825839B2 true JP2825839B2 (ja) | 1998-11-18 |
Family
ID=13384563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1068814A Expired - Fee Related JP2825839B2 (ja) | 1989-03-20 | 1989-03-20 | デッドロック検出処理方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2825839B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6051721B2 (ja) * | 2012-09-19 | 2016-12-27 | 株式会社ソシオネクスト | 実行制御方法、およびマルチプロセッサシステム |
CN113899383B (zh) * | 2021-11-22 | 2024-04-19 | 上海西井科技股份有限公司 | 基于短路径的多车防死锁方法、系统、设备及存储介质 |
-
1989
- 1989-03-20 JP JP1068814A patent/JP2825839B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH02247770A (ja) | 1990-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2820752B2 (ja) | 密結合マルチプロセッサシステムにおけるキャッシュメモリ一致制御方法 | |
US7584222B1 (en) | Methods and apparatus facilitating access to shared storage among multiple computers | |
CN100514299C (zh) | 利用虚拟存储器的事务型存储器执行 | |
US4399504A (en) | Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment | |
US5649184A (en) | Symmetric/asymmetric shared processing operation in a tightly coupled multiprocessor | |
US5845147A (en) | Single lock command for an I/O storage system that performs both locking and I/O data operation | |
US7631214B2 (en) | Failover processing in multi-tier distributed data-handling systems | |
US6832298B2 (en) | Server system operation control method | |
US6105085A (en) | Lock mechanism for shared resources having associated data structure stored in common memory include a lock portion and a reserve portion | |
US8108631B2 (en) | Transactional memory support for non-coherent shared memory systems using selective write through caches | |
US7818309B2 (en) | Method for managing data access requests utilizing storage meta data processing | |
US20140173326A1 (en) | Write Performance in Fault-Tolerant Clustered Storage Systems | |
US7533223B1 (en) | System and method for handling memory requests in a multiprocessor shared memory system | |
JP2781092B2 (ja) | システム間排他制御方式 | |
US6941308B1 (en) | Methods and apparatus for accessing a doubly linked list in a data storage system | |
CN110569112A (zh) | 日志数据写入方法及对象存储守护装置 | |
JP2829115B2 (ja) | ファイル共用方法 | |
JP2825839B2 (ja) | デッドロック検出処理方式 | |
CN115629822A (zh) | 一种基于多核处理器的并发事务处理方法及其系统 | |
JP3312652B2 (ja) | マルチプロセッサアーキテクチャでのデータベース管理方式 | |
JP3107094B2 (ja) | 共用バッファのロック期間短縮処理方法及び装置 | |
JP2772052B2 (ja) | 資源情報引き継ぎ処理方法 | |
EP0049423A2 (en) | Multiprocessor system | |
JPH10187616A (ja) | 状態記録再現方法、ならびに同方法を実現する計算機システム、及び同方法がプログラムされ記憶されるメモリ装置 | |
JP2848437B2 (ja) | マルチクラスタ排他制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |