annotate presen/sample.markdown @ 10:90aaf305aed6 default tip

add presen
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Thu, 18 Feb 2016 09:06:13 +0900
parents b2869724949d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
1 title: 分散フレームワークAliceのMeta Data Segment
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
2 author: 照屋のぞみ
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
3 profile:琉球大学 工学部 情報工学科 河野研
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 # 研究目的(1/3)
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
6 * 当研究室が開発している並列分散フレームワークAliceではスケーラブルな分散プログラムを信頼性高く記述できる環境を実現する
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
7 * ここで言う信頼性とは定められた環境下で安定して仕様に従った動作を行うことを指す
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
8 * Aliceでは当研究室が提案しているデータを Data Segment、タスクを Code Segment という単位で分割して記述するプログラミング手法を採用している
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 # 研究目的(2/3)
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
11 * Aliceでは、ComputationとMetaComputationに階層化し、コアな仕様と複雑な例外処理に分離する。
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 * 分散環境構築などの複雑な処理はAliceがMeta Computationとして提供する
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
13 * コードの変更を抑え、変更前の信頼性を保ったまま拡張可能にする
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 # 研究目的(3/3)
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
16 * 本研究では、Alice上に実用的な分散アプリケーションが制作できることを示すために画面配信システムTreeVNCを構築する
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
17 * 構築するにあたり必要となった圧縮機能をAliceのMeta Computationとして実装した
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
18 * もとのTreeVNCとの比較を行うことでMeta Computationの役割と有効性を示す
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 # Data Segment と Code Segment
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 * Aliceではデータを **Data Segment(DS)** 、タスクを **Code Segment(CS)** という単位に分割して依存関係を記述することでプログラミングを行う。
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 * CSはInput DS(入力されるDS)とOutput DS(出力されるDS)を持つ。
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
24 * CSはkeyで指定されたDSが全て揃うと実行されるという性質を持つ。
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
25 ![opt](./images/dsandcs.svg){:width="50%"}
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 # CodeSegmentの依存関係
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 * データの依存関係にないCSは並列実行される
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 * データの依存関係がある場合は Input DS が揃うと順に実行される
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 * DSはCSに専有されるためロックの記述を必要としない
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 ![opt](./images/dsandcs2.svg){:width="60%"}
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 # Data Segment Manager
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
34 * DS の集合体であるデータベースを **DS Manager(DSM)** と呼ぶ。
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
35 * Local DSM … 各ノード固有のデータベース。
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
36 * Remote DSM … 他のノードの Local DSM の proxy。接続しているノードの数だけ存在する。
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 * DSM 内の DS には対になる String型のkey が存在し、 DSM 名と key を指定しすることで DS の保存、取得を行う。
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 ![opt](./images/remote_datasegment.svg){:width="50%"}
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 # Computation と Meta Computation
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 * Aliceでは、計算の本質的な処理をComputatin、Computationとは直接関係ないが別のレベルでそれを支える処理をMeta Computationとして分けて考える。
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
43 * 分散トポロジーの構成、通信の切断・再接続時の処理などはMeta ComputationとしてAliceが提供
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
44 * プログラマは目的の処理だけ記述し通信部分などはMeta Computationを指定することでシンプルな記述を実現
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 # Computation と Meta Computation
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 * DS/CSの接続の間にMeta Computationが実行されている
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 * AliceのMeta ComputationもCS/DSにより実現される
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 * Meta ComputationはCS の処理を支えるMeta CSとMeta CSに管理されるMeta DSに分けられる
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 ![opt](./pictures/MetaCSDS.svg){:width="70%"}
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
53 # TreeVNCへの応用
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
54 * AliceのMeta Computationの有効性を示すため実用的な例題であるTreeVNCを実装する
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
55 * TightVNCをもとにした木構造画面配信システム
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 * 画面処理や分散処理が混在する複雑なTreeVNCも、Aliceを用いればTightVNCからの変更が少ない見通しの良い記述で構成可能
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 # TreeVNCで必要な機能
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 TreeVNCのComputation(VNCサーバからデータを受け取り表示)を支える機能をMeta Computationとして実装する
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 * TreeTopologyの構成・管理(Topology Manager)
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 * ノード間通信の切断時・再接続時の処理(ClosedEventManager)
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 * ノードの接続状態確認(KeepAlive)
8
ef17e4dc6216 after check
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
64 * 子ノードへのデータの転送(flip)
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 * データの圧縮
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 # Meta Computationの追加
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 * TreeVNCの数MByteの画面差分データを配信し続けるためデータを圧縮している
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 * 画面データを圧縮して送る → 解凍して画面表示 → 再圧縮して子ノードへ転送
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
70 * 圧縮状態のまま子ノードに送信ができれば、解凍・再圧縮 するオーバーヘッドを無くすことができる
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 * 圧縮のMeta Computationと転送のMeta Computationを追加した
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 # 圧縮表現(Meta DS)の追加
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 * DSを複数作るのではなく、1つのDSに対しMeta DSとして以下の表現を同時に持たせる
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 <table style="border:none;">
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
77 <tr><td width="550px">
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 1. 一般的なJavaのオブジェクト<br>
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
79  LocalDSMにputしたときの形式 <br>
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
80 <br>
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
81 2. シリアライズ化されたバイナリオブジェクト <br>
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
82  RemoteDSMにputしたときの形式 <br>
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
83 <br>
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
84 3. 2を圧縮したバイナリオブジェクト <br>
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
85  今回追加した形式 <br>
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 </td>
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
87 <td width="500px">
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
88 <img src="./pictures/compressDS.svg" width="100%">
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 </td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 </tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 </table>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 # 圧縮表現を扱うDSMとAPIの追加
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 * Local と Remote それぞれに圧縮表現を扱う Compressed DSM を追加
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 * DSを圧縮したい場合は指定する DSM を Compressed DSM に変える
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 * 圧縮するコードとしないコードで変更が少ない
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 ```java
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 put("Remote", "Key", val);
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 put("compressedRemote", "Key", val);  
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 ```
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 # 圧縮表現がオンデマンドに作られる
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 * DS はオブジェクト表現と圧縮表現を同時にもつため、TreeVNCでは受け取った画面データを解凍した後、転送のためにコピーや再圧縮をすることはない。
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 * 複数表現は必要最低限にしか作られない。
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
107 * 一つのKeyに対し様々な表現のDSが対応するが、キャストメソッドであるasClass()によってユーザーは送られてくるDSの表現を気にせず任意の型で取り出せる。
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 # Meta Computationの評価
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 TreeVNCとAliceVNCを比較した
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 * 性能比較
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 各ノードへのメッセージの伝達速度を比較
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 同等の性能が実現できたか
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 * コード比較
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 コード量・コード複雑度を比較
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 シンプルな記述で仕様の変更が抑えられているか
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 # 性能比較 - 実験結果
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 * 3段目の計測結果
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 * 同じ傾向から同等の処理性能があることがわかった
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 <table style="border:none;">
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 <tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 <td><img src="./pictures/TreeVNC_depth3.svg" width="80%"></td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 <td><img src="./pictures/AliceVNC_compress_depth3.svg" width="80%"></td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 </tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 <tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 <td align="center">TreeVNC</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 <td align="center">AliceVNC</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 </tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 </table>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 # コード量比較
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 * TightVNCを含む全体の行数・単語数はAliceVNCのほうが少ない
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 * コードの増加量ではTreeVNCに比べ75%仕様の変更が抑えられている
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 <table style="border-collapse: collapse;border:1px solid #000000;">
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 <th style="border:1px solid #000000;padding:5px 15px 5px 15px;"></th>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 <th style="border:1px solid #000000;padding:5px 15px 5px 15px;"> 行数 </th>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">単語数</th>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">TightVNCからの変更行数</th>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 <tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;"> TreeVNC </td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">19502</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">73646</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">7351</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 </tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 <tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;"> AliceVNC </td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">14647</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">59217</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">1129</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 </tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 <tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;"> 減少率 (%)</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">25</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">20</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">75</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 </tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 </table>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 # コード複雑度比較
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 * 循環的複雑度を用いる
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 コード内の線形独立な経路の数。if や forが多いほど複雑度が高い。
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 <table style="border-collapse: collapse;border:1px solid #000000;">
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 <th style="border:1px solid #000000;padding:5px 15px 5px 15px;"></th>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 <th style="border:1px solid #000000;padding:5px 15px 5px 15px;"> 平均値 </th>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">最高値</th>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 <tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;"> TightVNC </td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">13.63</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">97</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 </tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 <tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;"> TreeVNC </td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">15.33</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">141</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 </tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 <tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;"> AliceVNC</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">10.95</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">99</td>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 </tr>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 </table>
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 * AliceVNCのほうがTreeVNCに比べ複雑度が低い
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 * TreeVNC で最も複雑度が高いTreeRFBProto.classはデータの待ち合わせ処理や通信処理が入り組んだ複雑なコード
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 * AliceVNCで最も複雑度が高いSwingViewerWindow.classは、TightVNCから変更がほとんどないため、AliceVNCの持っている複雑度はTightVNCが元来持っていた複雑度
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 # まとめ
10
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
197 * Alice が実用的なアプリケーションを記述するための Meta Computation として、Meta Data Segmentに複数の表現のデータを同時に持たせることで圧縮機能を実装した。同様の手法を用いれば暗号表現などへの対応もでき自由度の高い通信を行うことが可能になる。
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
198 * TreeVNCをAlice上で実装し比較を行った結果、変更量の少ないシンプルな記述でTreeVNCの基本機能を実現でき、同等の性能を出すことに成功した。
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
199 * AliceのMeta Computationが拡張性・信頼性の高い実用的な分散アプリケーションの構築に有用であることが確認された。
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
200
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
201 # 今後の課題
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
202 * TreeVNCでは拡張が困難であった別ネットワーク間の通信もTopology Manager を用いれば容易に拡張できると考えられる
90aaf305aed6 add presen
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
203 ![opt](./pictures/overNAT.svg){:width="60%"}
6
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 # 今後の課題
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 * APIの再設計
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 * put/updateに対しtake/peekがcreate()・setKey()の操作はわかりにくい
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208 * DSの型情報のマネジメント
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 * 型情報がないのでpeek/takeする際にわかりにくい
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210 * セキュリティをサポートしていない
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 * 圧縮と同様の手法で暗号形式のデータ表現を扱えるように拡張可能
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
216
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
217 <style type="text/css">
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 <!--
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
219 *{
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
220 font:nomal 100% 'PT Sans';
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 }
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
222
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223 ul > li{
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 list-style-type:disc;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
225 }
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
226
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
227 .slide h1{
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
228 text-align:left;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 color:#777777;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 font:bold 40px/1.13 'PT Sans', sans-serif;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
231 margin-bottom: 50px;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
232 }
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
233
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
234 div#slide1 h1{
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 text-align:left;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 color:#777777;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
237 font:bold 60px 'PT Sans', sans-serif;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
238 margin-bottom: 50px;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 }
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
240
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
241 pre > code{
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
242 font-family:'Droid Sans Mono', 'Courier New', monospace;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
243 }
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
244
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
245 img[alt="opt"]{
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
246 display: block;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
247 margin-left: auto;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
248 margin-right: auto;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
249 }
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
250
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
251 img[alt="right"]{
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
252 margin-right: 0;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
253 }
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
254
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
255 table {
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
256 margin-left: auto;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
257 margin-right: auto;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
258 }
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
259
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
260 th {
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
261 font-size: 120%;
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
262 }
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
263 -->
edc72425caab add abstract
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
264 </style>