Transcript B(1)

A Low-Stretch Object Migration
Scheme for Wide-Area
Environments
2007.2.16
電子情報工学科4年
近山・田浦研究室
50390 弘中 健
Background

大域環境での分散オブジェクト指向言語

JavaRMI, CORBA



Web-service
分散データベース
scalableで、適応的な並列分散計算は考え
られてない
Background

適応的な並列計算


特定計算nodeにobjectが固定されていることは制約が大きい
Object Migration

性能向上


負荷分散


local nodeに置くことでアクセスコストの削減
object配置を変更して、ノード間負荷分散
柔軟性

ノード脱退もobjectを追い出すことで可能
Motivation

ただし、objectは移動しても既存のレファ
レンスは有効である必要がある

何らかで位置情報の更新をする必要がある
B
A
?
C
REFERENCE
Motivation

object migrationの実装例は数多くある





JavaParty [Philippsen et al. 1997]
Mozart [Van Roy et al. 1999]
ProActive [Baude et al. 2000]
location server, home node, …
今まで大域環境を考慮した実装はありま
せんでした
Contribution


大域的な環境で有効なobject migration
手法の提案
並列分散プログラミングが出来る オブ
ジェクト指向 middlewareの実装



object migration
mobile objectへの透過的なRMI
通信時間を考慮したrouting
objectの追跡

大域環境では


ただ追っていくと、不必要な大域的通
信が急増
STRETCHが大きくなる

actual / optimal path ratio
CLUSTER B
cluster 間を飛ぶ必要がなかった
CLUSTER A
位置情報の更新

全部のレファレンスを更新は避けたい


メッセージ数が膨大になる
不必要な更新も多い
UPDATE
CLUSTER A
CLUSTER B
有るべき形

大域的通信は控える

objectへのaccessメッセージ


stretchの小さいアクセス
更新メッセージ

遠隔で、無関係なノードに通知しない
Our Proposal

広域ネットワークで有効なobject
migrationのヒューリスティックス


限定された範囲で更新メッセージを伝搬
オブジェクトが移動しても、高い確率で
optimal access pathの定数倍のstretch
でアクセスが出来る




Related Work
Proposal
Results
Conclusion
Address Forwarding Protocol

[Fowler 86]

objectの移動順に追う
利点:
 ネットワーク通信
が限定される
欠点:
 high-latency, multi-hop
環境では、forwardingが
連鎖的に起きると
大きなstretch


FORWARDING
A
dst:A
B
dst:B
dst:C
D
OBJ.
PATH OF ACCESS
C
Mobile Networks

DSDV [Perkins et al. 94]




AODV [Perkins 97]



mobile agentの移動ごとに情報をbroadcast
常に最新の位置を把握
scalableではない
access時に位置をbroadcastで把握
on-demandな手法による遅延の問題
SHARP [Ramasubramanian 03]


DSDV, AODVの折衷
ただし、二つの使い分け方はあいまい




Related Work
Proposal
Results
Conclusion
Proposal : Overview


計算参加ノードでoverlay network
ノード間でshortest path routing table


各ノードを根としてrouting treeが
構成される
dst
各edgeの距離は
通信時間を使いました。
ROUTING
TREE
Proposal : Overview

objectが動くと、移動距離と比例した範囲
でupdate msgをbroadcastする
RANGE OF UPDATE MSG.
REFERRING TO NODE: B
B
OBJ.
A
C
RANGE OF UPDATE MSG.
REFERRING TO NODE: C
stretchの保証
アクセス間隔に一回しかobjがmigrateしない場合
migrateした距離の k倍の範囲にbcastすれば
アクセスはoptimal pathの 1+2/k 倍でバウンドされる
ことを証明した。


B
A
Pa/Po <= 2/k + 1
actual path : Pa
optimal path : Po
C
updateの節約

さらに、updateメッセージを節約する手法
を提案します
optimization 1

msgは新しいhost nodeをrootとしたrouting
treeに沿って伝搬されればメッセージ数を抑え
new dst
られる。
parent
child
optimization 2
new dst
old dst
B
A
parent
child
C
D
Implementation

Pythonをライブラリで拡張


近山・田浦研B4 澤井 と共同開発
move()を実装


オブジェクトを任意のあて先 dst_pidに動かす
obj.move(dst_pid)
4 cluster, 300 nodesで動作確認をしました
demonstration
randomized work stealing




[Blumofe et al. 1999]
Problem Setting: 一つの問題を処理するのですが、

親jobは子jobを生成し、親jobは子jobの完了結果を用いる

生成された子jobが優先的に処理される
生成され、未処理のjobはstackに入れられる
プログラムは一つのプロセスから開始します
stack
PP
RETURN
待機中
P1
PP
P2
P2
完了
C1
C2
実行中
demonstration
randomized work stealing


jobのないprocessは他プロセスからjobをstealする
親jobが遠隔ノードにstealされた場合、子jobは遠隔
ノードに結果を返さないといけない
 stealをmoveで実装
 moveしたobjectへ多数のRMIが発生する
Proc 0
Proc 1
MOVE
P2
RETURN
C2
P2




Related Work
Proposal
Results
Conclusion
Results

stretchでは、既存のForwarding
Address手法との比較


どのくらいの範囲に伝搬するかを変えながら
実験
更新msg数では、どのくらいの範囲に伝
搬するかで比較をしました
実験環境
HONGO:
66 nodes
within cluster: 0.060[ms]
CHIBA:
64 nodes
within cluster: 0.065[ms]
6.7 [ms]
10.7 [ms]
KASHIWA:
66 nodes
within cluster: 0.100[ms]
4.2 [ms]
stretchの実験の手法


objがR回migrationした後、アクセス
最適なパスでアクセスした時間と、実際にアク
セスに掛かった時間の比
MIGRATION
optimal path
stretchの実験結果(従来)
大きいRでstetchが非常に大きくなる
Forwarding Address Scheme
25
R=5
R=10
Access Stretch
20
15
10
5
0
0
100
200
300
Access Iterations
400
500
stretchの実験結果(提案)
Our Scheme(k=1)
14
Access Stretch
12
R=5
R=10
10
Rが変化しても、安定した low stretch
8
6
4
2
0
0
100
200
300
Access Iterations
400
500
stretchの実験結果(提案)
Our Scheme(k=0.5)
R=5
R=10
14
Access Stretch
12
10
8
6
4
2
0
0
100
200
300
Access Iterations
400
500
stretchの実験結果(提案)
Our Scheme(k=0.2)
R=5
R=10
14
Access Stretch
12
10
8
6
4
2
0
0
100
200
300
Access Iterations
400
500
メッセージ数の実験

object がランダムに100回migrationをし
た場合の更新メッセージの総和

更新メッセージの伝搬する範囲を変化さ
せて実験し、更新の局所性が保たれてい
るか検証しました
メッセージ数の実験
Histogram of Update Message Propagation
小さいkでobjectの近隣の
ノードのみに伝搬
1600
1400
1200
1000
800
600
k=1
k=0.5
k=0.2
400
200
0
0.05クラスタ内の伝搬
0.1
0.2
0.5
1
2 クラスタ間の伝搬
5
10
20
Propagation [ms]




Related Work
Proposal
Results
Conclusion
Conclusion

Muti-cluster環境において

常に安定して低いaccess stretchを実現


伝搬する範囲を制限しても、大きく性能に影響はな
い
更新メッセージの伝搬範囲を制限

メッセージの局所化を考慮した、効率的な伝搬が出
来ました
Future Work

オブジェクトが続けて複数回migrateする
場合における、stretch保証の研究

実アプリケーションを用いた検証
Background

分散した計算資源でのプログラミングが盛ん

クラスタ内計算


一様, 低遅延( order of [us])
クラスタ間計算

ヘテロ, 高遅延 ( order of [ms])
Background

object migrationの効果

性能向上


負荷分散


local nodeに置くことでアクセスコストの削減
object配置を変更して、ノード間負荷分散
柔軟性

ノード脱退もobjectを追い出すことで可能
Motivation

有るべき形とは
cluster間のものは
cluster間通信
常にSTRETCHが小さく抑えられたアクセス
CLUSTER B
CLUSTER A
cluster内のものはcluster
内の通信
Motivation

有るべき形とは
メッセージは局所的で限定されている
UPDATE
CLUSTER B
CLUSTER A
Proposal : Overview


あるノードへの距離は、そのノードをroot
とした木での深さ
destination
TIME OUT!
distance
stretchの保証 (根拠)

node間routingが常にshortest pathで
routingされて居る時は、距離で三角不等
式が成立する

|Rac – Rbc | <= Rab <= Rac + Rbc
Rab
A
B
Rbc
Rac
C
inter-node routing structure

一般なグラフでもあるnodeへのroutingは
木をなしている
destination
parent
child
Aggressive Migration

実験

ある時間周期でオブジェクト1000個がグ
ループでmoveする



周期も変えて実験
1ノードからの100 access時間を測定
forwarding pointerとの性能比較
Aggressive Migration
Total Execution Time [ms]
16000
14000
12000
提案手法ではmigration頻度が上がっ
ても安定したアクセス時間
10000
kにあまりよらず良性能
8000
Forwarding Address
Scheme
Our Scheme(k=1)
Our Scheme(k=0.5)
6000
Our Scheme(k=0.2)
4000
2000
0
0
0.5
1
1.5
Migration Frequency [Hz]
2
2.5
Message Overhead
40000000
Total Message Count
35000000
kを小さくして抑えることが
出来る
30000000
25000000
20000000
15000000
10000000
5000000
0
Forwarding
Address Scheme
Our
Scheme(k=1)
Our
Our
Scheme(k=0.5) Scheme(k=0.2)
Message Overhead
Update Message Traversal Cost
Traversal Cost [ms]
12000
動いた距離に対して伝搬の比
10000
を小さくすると、updateは局所的になる
8000
6000
4000
2000
0
0
0.2
0.4
0.6
0.8
Propagation Ratio: k
1
1.2
Message Overhead
Update Message Count
35000000
Simple Update
30000000
optimizationなしの1/6程度
Broadcast Scheme
overlayのdensityに依存
25000000
Our Scheme
20000000
15000000
10000000
5000000
0
0
0.2
0.4
0.6
0.8
Propagation Ratio: k
1
1.2
Analysis

現実問題、動いた距離の分数距離で十分



1/2、1/5 くらい
激しくmigrationがある環境でも、forwarding
pointerよりもはるかにlatencyはよい
単純なbroadcast methodと提案手法



ほぼ同性能
msg数的には、圧倒的に提案手法が良い
routing table次第でもある

shortest path routing tableが作れればなお更良い





Related Work
Proposal
Preliminary Results
Analysis
Conclusion
Conclusion

大域環境になればなるほど、migrationはoverheadを
伴うものである。




その後のaccessとのtrade-offになる
objectの集団移動が起こるような環境ではなおさら
programmerに下の層を意識させたプログラミングを強いる
object migrationが気軽に使える、solutionになるため
には、本研究のような工夫が必要


objectがどのように動いても、optimal pathと桁違いをしない
latencyでaccess出来ることが必要である
また、そのoptimizationが本業務を圧迫するようなことがあっ
てはいけない

msgでbandwidthが潰れる
NETWORK A
NETWORK B
access path
optimal path
OBJ.
RANGE OF UPDATE MSG.
REFERRING TO NODE: B
OBJ.
D
B
A
C
OBJ.
b
a
d(a,c) ≦ d(a,b) + d(b,c)
d(b,c)
c
destination node
parent
child
optimization 2
old object host
new object host
A
B
parent
child
C
D






hongo-shepherd: 4.2 ms
hongo-chiba: 6.7 ms
chiba-shepherd:10.7ms
hongo-hongo: 0.05 - 0.07ms
sheep-sheep: 0.1ms
chiba-chiba:0.06-0.07ms
実験環境
HONGO:
66 nodes
within cluster: 0.060[ms]
CHIBA:
64 nodes
within cluster: 0.065[ms]
6.7 [ms]
10.7 [ms]
KASHIWA:
66 nodes
within cluster: 0.100[ms]
4.2 [ms]
Objectのアクセス(1/2)

アクセスメッセージはオブジェクトがあると
思われる方向にルーティングされる

あて先


自分のノードが持っている情報を基に決める
若しくは、objectのunique IDに埋め込まれてい
るbirth placeに設定する
Objectのアクセス(2/2)

より新しい情報が優先される
GOTO NODE: C
GOTO NODE: B
B
OBJ.
A
A → B → C → Dのpath
をshort-cut出来ている
C
DST: B
DST: C
PATH OF ACCESS MSG.
DST: A
D
Leaving Nodes

src nodeは周囲に情報を伝搬している


周辺のノード達がその後forwardingを担う
少なくとも隣接ノードに情報を伝搬すれば、
安全に脱退できるプロトコルが実装出来
る
Broadcast Range

広範囲にbroadcastをする理由はshortcuttingのため

どの範囲でbroadcastすればよいか?
Broadcast Heuristics

Distance Effect


Mobility Rate


動きは、近くにあるノードほど大きく感じる
速度が大きいほど
変化を強く感じる
MIGRATION
変化を感じない場所に
通知する必要はない
B
A
OBJ.
現状と今後の予定

現状



Object migrationのprotocolが決まった
Node間routingのprotocolが決まっていない
今後の予定


Ad-hoc networkをヒントにNode間routingを考える
実装


Pythonインタープリタの拡張として実装
評価

分散ウェブアプリケーションをシステム上で書く
Object Unique ID (UID)

Location independentで不変な識別子

Objectが作られた場所


IP address, port #
Objectが作られた場所でのlocal id

例えば、メモリ番地
Object Routing Table


各ノードが持っている
Entry:<UID, dst, seq #>

destination:今居ると思われる場所


デフォルトではUIDに含まれる場所
sequence #:情報の「新しさ」を意味する

数が大きいほど新しい
Update Message

Objectがmigrateすると、srcとdstで変化
をbroadcastをする



この際、seq.#は+1する
<UID, new location, seq#>
MessageにTTLを付ける
Time-To-Live (TTL)

Messageが伝搬される範囲を指定する



転送されるたびに -1
0になったら転送しない
Update messageのTTLはsrc-dstノードの
hops数に比例させる
TTL:1
TTL:2
TTL:0
TTLに込められた意味

Distance Effect


Mobility Rate


動きは、近くにあるノードほど大きく感じる
速度が大きいほど
変化を強く感じる
変化を感じない場所に
通知する必要はない
MIGRATION
OBJ.
Object Access Message


Object Accessの時に生成される
<UID, dst, seq. #>

情報はObject Routing Tableを元に行う
Object Location

受信ノード

Access MessageとObject Routing Table
の内容を比較する



矛盾があった場合は新しい情報を優先する
古い情報は書き換える
Msgのdstへ送る

直接繋がらない時は”next hop”へ送る
Inter-Node Routing


直接ノード間で繋がらない時にルーティン
グが必要
ノード間で
Node B
Node A
Node D
Node C
Node B
Node A
Node C
B(1)
B(1)
B(1)
B(1)
B(1)
B(1)
B(1)
B(1)
B(1)
B(1)
Node D
B(1)
Migration:A→B
HOPS=2
BROADCAST TTL=2
Node B
Node A
Node C
C(2)
C(2)
C(2)
B(1)
C(2)
B(1)
C(2)
B(1)
B(1)
B(1)
Node D
B(1)
Migration:B→C
HOPS=1
BROADCAST TTL=1
Node B
Node A
Node C
C(2)
C(2)
C(2)
B(1)
C(2)
B(1)
C(2)
B(1)
B(1)
B(1)
A(0)
A(0)
Node D
B(1)
Node D:
Access to Object
Node B
Node A
C(2)
C(2)
Node C
C(2)
B(1)
C(2)
B(1)
C(2)
B(1)
B(1)
B(1)
A(0)
B(1)
A(0)
Node D
B(1)
Node B
Node A
C(2)
C(2)
Node C
C(2)
B(1)
C(2)
B(1)
C(2)
B(1)
B(1)
B(1)
B(1)
A(0)
Node D
B(1)
B(1)
Node B
Node A
C(2)
C(2)
Node C
C(2)
B(1)
C(2)
B(1)
C(2)
B(1)
C(2)
B(1)
B(1)
B(1)
A(0)
Node D
B(1)
B(1)
Node B
Node A
C(2)
C(2)
C(2)
Node C
C(2)
B(1)
C(2)
B(1)
C(2)
B(1)
B(1)
B(1)
A(0)
Node D
B(1)
B(1)
基本的な手法

Proactive




Reactive




常に最新のrouting tableを
トポロジーに変化があった場合に、積極的にupdate msgを交
換する
eg:DSDVなど
必要になったらrouting tableを更新する
アクセス時に正しい場所を皆で調べる
eg:simple broadcast, AODV, TORAなど
Hybrid


各ノードを中心とした“zone”を定義する(数ホップ内のエリア)
このzone内ではproactiveに、その外ではreactiveに
それぞれの問題点

Proactive


Reactive


Msg数がO(N*N)で増加する
アクセスが遅くなる
Hybrid


“zone”の範囲はどうする?
動的に伸縮する手法もあるが、その
heuristicsもかなり怪しい
中間発表後の方針



Routingはまだ未決定
取りあえずは、proactive/reactiveな手法
で実装して見る
ベターなroutingアルゴリズムを考える


Mobile ad-hoc networkよりは制約は緩い
はず
この制約の緩さを旨く使ったアルゴリズムを
考えていきたいです
求めているもの


基本的には、nodeに繋げる時は直接繋
ぎに行く
繋げないという万が一の時のために
routingが必要


そのためにO(N*N)のアルゴリズムを使うの
は勿体ない
ノードの増減を許す
最後に


コメント・アドバイス大歓迎です
実装処理系の名前も募集中です



Mudpy(ダメ、使われている)
Muddy?
Dsoapyはありきたりすぎかもしれません。。。