数理・計算科学専攻 千葉研究室 08m37315 森田 悟史 指導教員 千葉 滋 教授

20
分分分分分分分分 分分分分分分分分分分分分分分分分分分分分分分分分分分 Coordinated Distributed Dynamic Weaving with Minimum Pause Time 分分 分分分分分分 分分分分分 08M37315 分分 分分 分分分分 分分 分 分分

Upload: sabin

Post on 24-Jan-2016

62 views

Category:

Documents


8 download

DESCRIPTION

分散アスペクトの一貫性の保持と停止時間の短縮を考慮した動的織り込み手法 Coordinated Distributed Dynamic Weaving with Minimum Pause Time. 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉 滋 教授. 分散動的アスペクト指向を用いた機能追加. プログラムの振る舞いを実行中に変更 例 : メッセージ送信プログラムへの暗号機能追加 二つのアスペクトで機能を実現 クライアント側:暗号化 サーバ側:復号. Client. Server. メッセージ. 暗号化. 復号. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

分散アスペクトの一貫性の保持と停止時間の短縮を考慮した動的織り込み手法

Coordinated Distributed Dynamic Weaving with Minimum Pause Time

数理・計算科学専攻 千葉研究室08M37315  森田 悟史指導教員 千葉 滋 教授

Page 2: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

分散動的アスペクト指向を用いた機能追加

•プログラムの振る舞いを実行中に変更•例 : メッセージ送信プログラムへの暗号機能

追加▫二つのアスペクトで機能を実現

クライアント側:暗号化 サーバ側:復号

Client Server

暗号化 復号

暗号文

Client Serverメッセージ

2

Page 3: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

追加する ( 織り込む ) 暗号化アスペクトの例

3

class Client { void send (String msg) { …}}

Server

暗号文ジョインポイン

public aspect Encrypter { void around (String msg): call(void Client.send(String))&& args(msg) { String cipher = encrypt(msg); // 暗号化 proceed(cipher); // 元のメソッドを呼び出す }}

アドバイス ポイントカット

復号

アスペクト

Page 4: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

研究目的:一貫性を保って織り込む•まだあまり注目されていない

▫ While coordinated weaving *may* be important, it is not necessarily required in all cases. (SC 09 notification)

•片方だけ先に織り込まれると不具合▫両方のアスペクトが必要

•織り込みにかかる時間が一定ではない▫ネットワークスピードの違い

巨大な分散環境▫CPU 使用率の違い

Java ベース言語のコード変換

Client Server

暗号化

暗号文

解読不可

Client Serverメッセージ

4

Page 5: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

実験:一貫性を保つことの重要性• InTrigger で実験▫ chiba ノードから mirai ノードへ送信

1 ミリ秒に 1 回通信 ネットワークレイテンシは 27 ミリ秒

▫ Java ベース言語の場合 ( コード変換あり ) 織り込みの瞬間 10 回の暗号化失敗

▫CaesarJ [‘03 Mezini ら ] の場合 ( コード変換なし ) 静的に織り込み、動的に有効化 有効化の瞬間 1 回の暗号化失敗

5

二種類の言語で実験

Page 6: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

評価軸:一貫性の保持と速度の両立•素朴に制御すると難しい

•素朴な方法:全ノードを停止▫安全なところで止めて織り込

み  再開▫パフォーマンスの問題

アプリケーションを止めてしまう

6

暗号化 復号

Client Serverメッセージ

Client Server

Client Server

Client Server暗号文

停止

再開

Page 7: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

提案 : two phase weaving 機構•織り込み制御プリミティブを分割▫アスペクトの準備 (deploy) と有効化 (activate) に分

ける 時間がかかる deploy を非同期的に行い、 activate する

タイミングだけを制御する

7

プリミティブ

説明

deploy ジョインポイントにアドバイスを準備をする

織り込み処理が並列でスタートする (block しない )isDeployed deploy が完了しているか確認するactivate アドバイスの呼び出しを可能にする

deploy 前の場合、 deploy 完了と同時に呼び出し可能になる

deploy の状態にかかわらず、 activate はすぐ終わる

一貫性と速度を両立させる手法

Page 8: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

例 : two phase weaving 機構を使った暗号化アスペクトの織り込み•実装した織り込みアルゴリズム▫それぞれの機能を deploy▫ isDeployed で織り込み終了を確

認▫受信→送信の順で activate

受信側アスペクトの工夫 織り込み過渡期に対応

8

暗号化 復号

Client Server

Client Server暗号文

メッセージ

STOPClient Server

メッセージ

Client Serverメッセージ

isDeployed = true

activate

activate

deploy

deploy

Page 9: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

例 : two phase weaving 機構を使ったロギングアスペクトの織り込み•実装した織り込みアルゴリズ

ム▫アプリケーションの同期に合

わせた織り込み▫2 つのアスペクトを deploy

同期のタイミング確認用 ロギングアスペクト

▫同期のタイミングに合わせて activate

9

node00 node01 node02

sync

activation

t = 101

t = 102

t = 103

Do not activate

sync

deploy

Join point

Data sending

Calculation

Page 10: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

two phase weaving 機構の特徴•向いているアプリケーション▫全て織り込まれている or 織り込まれていないことを保

証すればよいもの 途中で状態が変わらない

•すべてのプリミティブはブロックしない▫プログラムを止めずに一貫性を保てる

•限界▫アドバイス側に、両対応などの工夫が必要なこともある

アプリケーション自体の機構を利用することで工夫がいらない場合もある

10

Page 11: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

実証 : DandyJ• two phase weaving 機構を提供する分散 DAOP 言語•言語サポートを提供▫プリミティブのみだと、織り込み制御の記述が複雑に

なる 機能と分散処理・織り込み活性化処理が混ざる

▫deploy, activate, isDeployed + 補助プリミティブ▫Dynamic aspect▫Remote pointcut▫Onetime aspect

11

Page 12: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

Dynamic aspect•動的織り込みが可能なアスペクト•First-class aspect▫dynamic 修飾子をつける▫インスタンス化し、 deploy や activate の対象にでき

る•Dynamic aspect は他のコードから織り込みを操作可

能▫アスペクトでモニタリングを行い activate できる▫モニタリングアスペクトの実装

モニタリングを分離できる

12

Encrypter enc = new Encrypter ();enc.deploy();enc.activate();...enc.undeploy();

dynamic aspect Encrypter {…. }

Page 13: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

Remote pointcut [Nishizawa ら ‘ 04]•他のノード上のイベントに反応して

動くアドバイスが書ける•分散環境でのモニタリングアスペク

トが簡単に書ける▫織り込みのタイミングを集中管理できる

•ローカルアドバイスも定義できる▫ local 修飾子

13

指定子 ジョインポイントhosts(hostName1, hostName2 ..) hostName1, … 上のジョインポイントhostName(hostName) ホスト名が hostName と一致するジョインポイン

Aspect

node00:

node00

...send ();

Page 14: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

Onetime aspect•一度アドバイスが実行される

と自動的に除去される▫undeploy を明示的に記述す

る必要がない▫モニタリングアスペクトが簡単に書ける モニタリングアスペクトは将来いらなくなる

14

暗号化 復号

Client Serverメッセージ

Client Server

Client Server暗号文

モニタリング

暗号文

undeploy

Page 15: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

例 : DandyJ を用いた暗号化アスペクト

15

public abstract dynamic onetime aspect ServerClient { … before (): server() && if (openPort.isDeployed() && server.isDeployed()) { openPort.activate(); server.activate(); } before (): client() && if(server.isActivated() && changePort.isDeployed() && client.isWoven()) { changePort.activate(); client.activate();}}

public dynamic aspect Encrypter { local void around (String msg): client() && args(msg) { // encrypt the message proceed (msg); }}

public dynamic aspect Decrypter { local void around (String msg, Server s): server() && args(msg) && this(s){ if ( /* ポートで場合分け */ ) { // decrypt the message proceed (msg); } else { proceed(msg);}}}

Page 16: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

DandyJ の実装•ddjc: JastAdd 版 abc を拡張したコンパイラ▫アスペクトでコンパイラーを拡張

全体 :15万行 追加部分 : 約 5000 行

•ddj: プログラム実行と同時に Runtime system が起動▫Runtime system が動的織り込みを行う

Instrument API で javassist を利用 約 3000 行

16

Page 17: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

実験 : 暗号機能の追加 • 1 ミリ秒に 1 回メッセージを送信しているアプリに機能追

加• 3 ノードで実験▫ chiba: メッセージ送信ノード▫mirai: メッセージ受信ノード▫ chiba: コントロールノード

•織り込み方法▫制御なし▫ブロック▫Onetime aspect を用いてコントロール▫コントロールするがモニタリングアスペクトを undeploy し

ない

17

• 実験環境▫ InTrigger chiba & mirai▫ OS: Debian▫ Chiba CPU: Core2Duo 2.13GHz, メモリ : 4GB▫ Mirai CPU: Xeon 2.33GHz, メモリ : 16GB

Page 18: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

実験結果•Onetime aspect で一貫性と速度を両立できた

18

1 65 1291932573213854495135776417057698338979610

20406080

100120140

制御なし ( ミス 10 回 )

1 65 1291932573213854495135776417057698338979610

20

40

60

80

100

120

140Onetime aspect

1 65 1291932573213854495135776417057698338979610

20406080

100120140

undeploy なし

1 65 1291932573213854495135776417057698338979610

20406080

100120140

ブロック

100 付近で織り込み

時間(m

s)

時間 ( 回目 )

ブロックによる遅れ

速度◎一貫性 ×

速度 ×一貫性○

速度○一貫性○

速度△ (約7%)一貫性○

Max: 69Ave: 45.4

Max: 133Ave: 47.5

Max: 71Ave: 46.6

Max: 75Ave: 49.6

Page 19: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

関連研究

19

• DyReS [‘08 Truyen ら ]▫XML スクリプトで活性化までの流れを記述▫遠隔ノードの処理の状況を把握することはできない▫スクリプトが複雑になりやすい

• CaesarJ [‘03 Mezini ら ]▫非活性状態のアスペクトを deploy 命令で活性化▫遠隔ノードの処理の進行状況を集中管理できない

• DJAsCo [‘06 Navarro ら ]▫Remote pointcut を使用できる▫フックを活性化する処理をアドバイスとして記述でき

ない

Page 20: 数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉  滋 教授

まとめ•実験を通して、一貫性の保持が必要なことを示した• two phase weaving 機構の提案▫deploy と activate を分けることで、一貫性の保持と停止時間の短縮

を両立するアルゴリズムを実現可能にした• DandyJ での実証▫言語として実装▫実験でパフォーマンスを調査

•今まで (今後 ) の活動▫論文 : ソフトウェア科学会大会’ 08@筑波大、 (ECOOP’10@slovenija)

▫ポスター : PPL’08@仙台、 AOSD’09@Charlottesville 、 (AOSD’10@Saint-Malo)

20

投稿中

3月