Document

動的にチャネルが増減する環境下
での分散スナップショットアルゴリズ
ム
澤井省吾 田浦健次朗 近山隆(東京大学)
IPSJ PRO 2007/03/22(木)
2015/10/1
情報処理学会プログラミング研究会
1
分散システム


クラスタを複数組み合わせたグリッドなど、
多数の計算機を用いた計算が盛んになっ
ている。
適応的並列計算の必要性


動的に計算機が参加、脱退を行う
動的に計算機を結ぶチャネルを接続、切断す
る。
2015/10/1
情報処理学会プログラミング研究会
2
分散スナップショット

分散システムの大域状態



デッドロック検出、計算の終了、分散GC、etc…
ChandyとLamportらによって静的なネットワーク
における分散スナップショットアルゴリズムが提
案されている。
動的なネットワークにおける分散スナップショット
アルゴリズムはあまり提案されていない。
2015/10/1
情報処理学会プログラミング研究会
3
本研究の貢献


動的なネットワークにおける分散スナップ
ショットアルゴリズムの提案
フォーマルな証明
2015/10/1
情報処理学会プログラミング研究会
4
分散システム


プロセス
チャネル



各プロセス間を結ぶ通信路
FIFO
ポート


送信ポート
受信ポート
2015/10/1
情報処理学会プログラミング研究会
5
分散システムにおける計算
メッセージ
イベント:メッセージの送受信や
計算など
A
B
C
2015/10/1
情報処理学会プログラミング研究会
6
分散システムの大域状態

各プロセスのローカルな状態


それまでに起こったイベント列
各チャネルをその瞬間に流れていたメッ
セージ列

送信したが、まだ受信されていないメッセージ
2015/10/1
情報処理学会プログラミング研究会
7
いかにして分散システムの大域
状態を得るのか

全システムを停止させて、そのときの各プ
ロセスの状態と、流れていたメッセージを
記録すればよい
2015/10/1
情報処理学会プログラミング研究会
8
分散システムの大域状態
メッセージ
イベント:メッセージの送受信や
計算など
ある瞬間における、すべて
のプロセスの状態 と、プ
ロセス間のチャネルを流れ
るメッセージ列
A
B
C
2015/10/1
情報処理学会プログラミング研究会
9
いかにして分散システムの大域
状態を得るのか


全システムを停止させて、そのときの各プ
ロセスの状態と、流れていたメッセージを
記録すればよい
さすがに全システムを困難であるので、各
プロセスが勝手に記録する。
2015/10/1
情報処理学会プログラミング研究会
10
だめな例
メッセージ
プロセスがスナップショット
を取った瞬間
A
B
C
2015/10/1
情報処理学会プログラミング研究会
11
だめな例
送信されてもいないメッ
セージが、受信された
ことになっている
メッセージ
プロセスがスナップショット
を取った瞬間
Cからメッセージを受け
取った!!!!
BとCの証言が矛盾する
A
B
C
Bにメッセージなんて送っ
てない!!!!
2015/10/1
情報処理学会プログラミング研究会
12
いかにして分散システムの大域
状態を得るのか



全システムを停止させて、そのときの各プ
ロセスの状態と、流れていたメッセージを
記録すればよい
さすがに全システムをとめたくはないの
で、各プロセスが勝手に記録する。
consistentなスナップショットをとりたい
2015/10/1
情報処理学会プログラミング研究会
13
ChandyとLamportの分散スナップショットアルゴリズム
(CLアルゴリズム)
[K.Mani Chandy and Leslie Lamport, Distributed Snapshots:
Determining Global States of Distributed Systems]

markerというプロトコルメッセージを用いて、
各プロセスのスナップショットのタイミングと、
メッセージの記録を制御する
2015/10/1
情報処理学会プログラミング研究会
14
CLアルゴリズム


初めてmarkerを受け取ったプロセスは、ス
ナップショットを取り、すべての送信ポート
にmarkerを送信する
markerを受け取ったら、スナップショットを
取ったときからmarkerを受け取るまでの
メッセージ列を記録する
2015/10/1
情報処理学会プログラミング研究会
15
分散スナップショット
markerメッセージ
メッセージ
プロセスがスナップショット
を取った瞬間
A
B
C
2015/10/1
情報処理学会プログラミング研究会
16
分散スナップショット
メッセージ
プロセスがスナップショット
を取った瞬間
A
B
C
2015/10/1
情報処理学会プログラミング研究会
17
CLアルゴリズム


証明されているのは静的なネットワーク
動的なネットワークに拡張することはでき
ないのか?
2015/10/1
情報処理学会プログラミング研究会
18
CLアルゴリズムの単純な拡張



初めて、markerを受け取ると、スナップ
ショットを取り、つながっているすべてのプ
ロセスにmarkerを送信する。
markerを受け取ると、スナップショットを
取ってから、markerを受け取るまでのメッ
セージを記録する。
チャネルが作成されても、削除されても何
もしない。
2015/10/1
情報処理学会プログラミング研究会
19
だめな例(チャネルができるとき)
記録されない
メッセージ
メッセージ
プロセスがスナップショット
を取った瞬間
矛盾する
メッセージ
A
AとBの間に
チャネルがで
きた
B
この時点でAとBはつ
ながっていなかった。
2015/10/1
AはBに対して
markerを送信しない
情報処理学会プログラミング研究会
20
だめな例(チャネルが削除されるとき)
メッセージ
AはBからmarkerがくるのを待
つ。
プロセスがスナップショット
を取った瞬間
AはBからmarkerがくるの
A
を永遠に待ち続けてしまう。
AとBの間にチャネルが切断された
(BからAにメッセージを送信すること
ができなくなった)
B
この時点でAとBはつ
ながっていた。
2015/10/1
この時点で、BはAとは接続
していないためAにmarker
を送信しない。
情報処理学会プログラミング研究会
21
CLアルゴリズム


動的な分散システムに何もしないまま適用
するのは難しい
チャネルの増減の扱い方をきちんと考えて
あげる必要がある。
2015/10/1
情報処理学会プログラミング研究会
22
動的なネットワークにおける分散スナップ
ショットアルゴリズム

Monitoring Stable Properties in Dynamic Peer-to-Peer
Distributed Systems (Sathya Peri and Neeraj Mittal.
2005 )



スパニングツリー(全プロセスを結ぶ木)を作成する必要がある
脱退の際にスパニングツリーを再構成する必要がある
A Snapshot Algorithm for Distributed Mobile Systems
( 佐藤ら, 1996 )


動的にチャネルが変化するプロセスは、1hopで静的なネット
ワークに接続されていなければならない(トポロジーに制限があ
る)
一般的な分散システムには適用できない
2015/10/1
情報処理学会プログラミング研究会
23
発表の流れ



背景・貢献
関連研究
提案手法





仮定
チャネルの増減
スナップショットアルゴリズム
証明の概要
まとめ
2015/10/1
情報処理学会プログラミング研究会
24
仮定


任意のプロセスグラフ
双方向チャネル



作成、削除の際には一時的に単方向チャネル
チャネルはFIFO
チャネルは動的に増減する
2015/10/1
情報処理学会プログラミング研究会
25
チャネル
AはBに向かう送信ポートが
あるのでメッセージを送るこ
とができる
A
2015/10/1
B
Bとの通信路
AはBからの受信ポートがあ
るのでメッセージを受信する
ことができる
情報処理学会プログラミング研究会
26
メッセージが受け取られない場合

メッセージが残っているにもかかわらず受
信ポートが受け取り側で削除されてしまう
送信されたメッセージが
あるにもかかわらず、受
信ポートが削除された
メッセージ
2015/10/1
情報処理学会プログラミング研究会
27
チャネルを削除する際のプロトコル


送ったメッセージは必ず相手に届く。
これ以上はメッセージを送らないという、プ
ロトコルメッセージを用いればいい
2015/10/1
情報処理学会プログラミング研究会
28
チャネルを削除する際のプロトコル

これ以上メッセージを送らないというプロトコル
メッセージ(closechannel)を相手に送信する
closechannelを受け取ると同時に
closechannelを送信したと同時に
受信ポートが削除される
送信ポートが削除される
メッセージ
2015/10/1
closechannel
情報処理学会プログラミング研究会
29
チャネルを作成するときのプロトコル


作成するときは削除するときとは逆に、受
信ポートができてから送信ポートができる
べき
プロトコルメッセージ(newchannel)を用い
る
対応する送信ポート
2015/10/1
受信ポート
情報処理学会プログラミング研究会
30
チャネルを作成する際のプロトコル

メッセージを受け取る準備ができたことを知らせ
るためのプロトコルメッセージ(newchannel)を用
いる。
newchannelを受け取ると送信 受信ポートが作成され、同時に、
newchannelが送信される
ポートが作成される
メッセージ
2015/10/1
newchannel
情報処理学会プログラミング研究会
31
チャネルの増減のプロトコル
作成したいとき(A->B)

Bが受信ポートを作り、Aにnewchannelを送信する
Aはnewchannelを受け取ったら、送信ポートを作成
する
A<-Bがなければ同様に作成する
1.
2.
3.
削除したいとき(A->B)

1.
2.
3.
2015/10/1
AがBに対してclosechannelを送信し、送信ポートを
閉じる
Bはclosechannelを受け取ったら、送信ポートを閉じ
る
A<-Bが存在していれば、同様に削除する
情報処理学会プログラミング研究会
32
発表のながれ



背景・貢献
関連研究
提案手法




チャネルの増減
スナップショットアルゴリズム
証明の概要
まとめ
2015/10/1
情報処理学会プログラミング研究会
33
本研究のアプローチ




チャネルの増減がなければCLアルゴリズムと同
じ動作
チャネルの増減がスナップショットのきっかけに
はならない
またアルゴリズムがチャネルの増減を妨げない
あるプロセスがスナップショットをとった後、チャ
ネルの増減があった時について考える。

送受信ポートが作成、削除される。4つのパターンに
ついて、どうプロトコルを追加すればよいのかを考え
る。実質、送信ポートが作成されたとき、受信ポートが
作成、削除されたときの3パターンについて考える。
2015/10/1
情報処理学会プログラミング研究会
34
だめな例(Aにおいて送信ポートが
新しく作られたとき)
送信ポートが
send
作成された
recv
受信ポートが
作成された
プロセスがスナップショット
Aが送ってないのに、
を取った瞬間
Bはなぜか受信したと
いうメッセージ
A
send
newchannel
B
recv
この時点でAとBはつ
ながっていなかった。
2015/10/1
Aは以後Bにメッセージを
送信することができる
情報処理学会プログラミング研究会
35
Aにおいて送信ポートが新しく作
られたとき
以後Bにメッセージを
送信ポートが
受信ポートが
送信することができる
send
recv
作成された
作成された
send
プロセスがスナップショット
を取った瞬間
送信ポートができたら即
座にmarkerを送信する
A
newchannel
B
recv
この時点でAとBはつ
ながっていなかった。
2015/10/1
必ずAから何かメッセージを受け取
るよりも前にmarkerを受け取る
情報処理学会プログラミング研究会
36
だめな例(Aにおいて受信ポートが
できるとき)
スナップショットの時にBはすでに送信していた
が、Aはスナップショットにはまだ受信していない
メッセージなので、記録する必要がある。
A
recv
newchannel
記録されないメッセージ
B
send
この時点でAとBはつ
ながっていなかった。
2015/10/1
情報処理学会プログラミング研究会
37
Aにおいて受信ポートが作成さ
れたとき
newchannelを送信する前に、
すでにスナップショットを取って
いれば、markerを送信する
A
recv
newchannel
send
以降メッセージを送った
としても、Aは記録する
必要はない
B
この時点でAとBはつ
ながっていなかった。
2015/10/1
情報処理学会プログラミング研究会
38
だめな例(チャネルが削除されるとき)
メッセージ
AはBからmarkerがくるのを待つ。
プロセスがスナップショット
を取った瞬間
AはBからmarkerがくるの
A
を永遠に待ち続けてしまう。
AとBの間にチャネルが切断された
(BからAにメッセージを送信すること
ができなくなった)
B
この時点でAとBはつ
ながっていた。
2015/10/1
この時点で、BはAとは接続
していないためAにmarker
を送信しない。
情報処理学会プログラミング研究会
39
受信ポートが削除されたとき
X
send 送信ポートが
削除された
X
recv
X
recv
受信ポートが
削除された
この時点でAはBからのメッ
セージの記録を終了する
A
Bからmarkerがこない・・・
でも、接続が切れた
X
B
send
2015/10/1
Bがスナップショットを取ったときAへの送信
はできないので、markerを送信しない
情報処理学会プログラミング研究会
40
新しく追加したプロトコル
プロセスがすでにスナップショットを取っていたら



新しい送信ポートができたら、即座に
markerを送信する
受信ポートを作成する際に、newchannel
の前にmarkerを送信する。
markerを受け取るよりも前に、
closechannelを受け取ったら、メッセージ
の記録を終了する
2015/10/1
情報処理学会プログラミング研究会
41
追加したプロトコルによって増え
るメッセージ数


新しい送受信ポートができたときに、即座
にmarkerを送信する必要がある
CLアルゴリズム


エッジの数x2
本アルゴリズム

エッジの数x2+増えたチャネルの数x4
2015/10/1
情報処理学会プログラミング研究会
42
発表の流れ





背景・貢献
関連研究
提案手法
証明の概要
まとめ
2015/10/1
情報処理学会プログラミング研究会
43
証明の流れ


終了
CLアルゴリズムの証明を再度行い、異な
る部分について証明を行った。
2015/10/1
情報処理学会プログラミング研究会
44
本アルゴリズムの証明

終了


スナップショットを取ったプロセスというのは必
ず、メッセージの記録を終了する
得られるスナップショットの正しさの証明
2015/10/1
情報処理学会プログラミング研究会
45
本アルゴリズムの証明


終了
得られるスナップショットの正しさの証明


A->Bに流れていたメッセージ列として記録されるメッ
セージ列は、「Aがスナップショットの前に送信したメッ
セージ列から、Bがスナップショットの前に受信したメッ
セージ列を引いたもの」である。
また、Bがスナップショットの前に受信したメッセージの
集合は、Aがスナップショットの前に送信したメッセー
ジの集合に常に含まれる
2015/10/1
情報処理学会プログラミング研究会
46
まとめ


チャネルの増減を扱うために、送受信ポー
トの作成・削除に順序関係をつくった
その上で動作する分散スナップショットア
ルゴリズムを提案した。


メッセージ数は、CLアルゴリズムとあまり変わ
らない
また、そのアルゴリズムの正しさを証明し
た。
2015/10/1
情報処理学会プログラミング研究会
47
参考文献



K. Mani Chandy and Leslie Lamport. Distributed snapshots:
Determining global states of distributedsystems. ACM Trans.
Comput. Syst., Vol. 3, No. 1, pp. 63–75, 1985.
Sathya Peri and Neeraj Mittal. Monitoring stable properties in
dynamic peer-to-peer distributed systems.In R. Ramanujam and
Sandeep Sen, editors, FSTTCS, Vol. 3821 of Lecture Notes in
Computer Science,pp. 420–431. Springer, 2005.
Yasurou Satou, Michiko Inoue, Toshimitsu Masuzawa, and Hideo
Fujiwara. A snapshot algorithm fordistributed mobile systems. In
16th International Conference on Distributed Computing
Systems, pp.734–743, 1996.
2015/10/1
情報処理学会プログラミング研究会
48