comparison presen/sigOS/sample.markdown @ 15:696a908208c8

add compress part
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Sun, 24 May 2015 18:40:04 +0900
parents 99e5104997b7
children 1ac38e2b7572
comparison
equal deleted inserted replaced
14:99e5104997b7 15:696a908208c8
14 # 研究目的 14 # 研究目的
15 * Aliceに圧縮機能等を追加することにより、Data Segmentの多態性を実現しノード間通信における自由度の向上を図る。 15 * Aliceに圧縮機能等を追加することにより、Data Segmentの多態性を実現しノード間通信における自由度の向上を図る。
16 16
17 # Aliceの概要(1) - Data Segment 17 # Aliceの概要(1) - Data Segment
18 * 複数の関係のない要素を1つのデータオブジェクトで表現した場合、全ての操作でlockが必要になり、スケラビリティーを低下させる。 18 * 複数の関係のない要素を1つのデータオブジェクトで表現した場合、全ての操作でlockが必要になり、スケラビリティーを低下させる。
19 * Alice はデータを細かく分割して記述する。その分割されたデータを *Data Segment(DS)* と呼ぶ。 19 * Alice はデータを細かく分割して記述する。その分割されたデータを **Data Segment(DS)** と呼ぶ。
20 20
21 # Aliceの概要(2) - Data Segment Manager 21 # Aliceの概要(2) - Data Segment Manager
22 * DS は queue に保存される。queue には対 になる key し、 key を指定して DS の保存、取得を行う。 22 * DS は queue に保存される。queue には対 になる key し、 key を指定して DS の保存、取得を行う。
23 * queue の集合体であるデータベースデータベースを Alice では DS Manager(DSM) と呼ぶ。 23 * queue の集合体であるデータベースデータベースを Alice では DS Manager(DSM) と呼ぶ。
24 ![opt](./pictures/dsm.svg) 24 ![opt](./pictures/dsm.svg)
55 * LocalDSM に put された場合は一般的な Java のクラスオブジェクトとして enQueue される。 55 * LocalDSM に put された場合は一般的な Java のクラスオブジェクトとして enQueue される。
56 * MessagePack を用いて変換した byte[]で表現されたバイナリオブジェクト 56 * MessagePack を用いて変換した byte[]で表現されたバイナリオブジェクト
57 * RemoteDSM に put された場合は通信時に byteArray に変換されたバイナリオブジェクトが enQueue される。 57 * RemoteDSM に put された場合は通信時に byteArray に変換されたバイナリオブジェクトが enQueue される。
58 58
59 # Aliceの概要(5) - Code Segment 59 # Aliceの概要(5) - Code Segment
60 * Alice上で実行されるタスクの単位を Code Segment(CS) と呼ぶ。 60 * Alice上で実行されるタスクの単位を **Code Segment(CS)** と呼ぶ。
61 * 複数のDSが入力され、その結果をDSとして出力するfunctionと捉えられる。 61 * 複数のDSが入力され、その結果をDSとして出力するfunctionと捉えられる。
62 * CS をユーザーが記述する際には CS を継承して記述することにより CS で使用する API を利用する事ができる。 62 * CS をユーザーが記述する際には CS を継承して記述することにより CS で使用する API を利用する事ができる。
63 63
64 # Aliceの概要(5) - Code Segment 64 # Aliceの概要(5) - Code Segment
65 * 入力されるDSをInput DS、出力されるDSをOutput DSと呼ぶ。 65 * 入力されるDSをInput DS、出力されるDSをOutput DSと呼ぶ。
86 86
87 * Aliceの機能を追加するということは Meta Computation を追加すると言い換えられる 87 * Aliceの機能を追加するということは Meta Computation を追加すると言い換えられる
88 * Meta Computation も CS と DS により表現されており、それぞれMeta CSとMeta DSと呼ぶ。 88 * Meta Computation も CS と DS により表現されており、それぞれMeta CSとMeta DSと呼ぶ。
89 89
90 # AliceVNC 90 # AliceVNC
91 * 研究室では授業向け画面共有システム TreeVNC の開発を行っている。 91 * 研究室では授業向け画面共有システムTreeVNCではノード同士を接続させ、木構造を構成することで負荷分散を行う
92 * 授業で VNC を使う場合、1つ のコンピュータに多人数が同時につながるため、性能が大幅に落ちる
93 * TreeVNCではノード同士を接続させ、木構造を構成することで負荷分散を行う
94 ![opt](./images/treeVNC.svg) 92 ![opt](./images/treeVNC.svg)
95 93
96 # Alice の新機能 94 # Alice の新機能
97 * Alice が実用的なアプリケーションを記述する能力をもつことを確認するために、TreeVNC を Alice を用いて実装した AliceVNC の作成を行った。 95 * Alice が実用的なアプリケーションを記述する能力をもつことを確認するため、TreeVNC を Alice を用いて実装した AliceVNC の作成を行った。
98 * AliceVNCの実装で必要となった以下の機能をMeta Computation として実装した。 96 * AliceVNCの実装で必要となった以下の機能をMeta Computation として実装した。
99 * flip機能 … Input DS を Output DS として転送する 97 * 転送機能 … Input DS を Output DS として転送する
100 * 圧縮機能 … DS Manager の指定によってDSの表現を切り替える 98 * 圧縮機能 … DS Manager の指定によってDSの表現を切り替える
101 99
102 # flip機能 100 # 転送機能
101 * 通常、Input DSに変更を加えOutput DSとして出力する場合DSのコピーが行われる。
102 * AliceVNCのようにInput DS をそのまま子ノードに Output DS として出力する場合、コピーを行なうのは無駄。
103 * Input DSをコピーせずそのままOutput DSに渡すMeta Computationとして転送機能を実装した。
103 104
104 # 圧縮機能 105 # 圧縮機能
105 * AliceVNCは、ノードは受け取った画面データを描画すると同時に、子ノードの Remote DSM に送信する。 106 * AliceVNCは、ノードは受け取った画面データを描画すると同時に、子ノードの Remote DSM に送信する。
106 * ノードは DS を受信するとそれを一度解凍して画面を表示し、再圧縮して子ノードに送信する。 107 * ノードは DS を受信するとそれを一度解凍して画面を表示し、再圧縮して子ノードに送信する。
107 * 圧縮状態のまま子ノードに送信ができれば、解凍・再圧縮するオーバーヘッドを無くすことができる。 108 * 圧縮状態のまま子ノードに送信ができれば、解凍・再圧縮するオーバーヘッドを無くすことができる。
149 圧縮表現のデータを扱う場合 150 圧縮表現のデータを扱う場合
150 * put(String **"compressed"** + managerKey, String key, Object val) 151 * put(String **"compressed"** + managerKey, String key, Object val)
151 * take(String **"compressed"** + managerKey, String key) 152 * take(String **"compressed"** + managerKey, String key)
152 153
153 # 圧縮機能 - 通信プロトコルの変更 154 # 圧縮機能 - 通信プロトコルの変更
154 Remote から put されたデータは必ずシリアライズ化されており byteArray で表現される。 155 * Remote から put されたデータは必ずシリアライズ化されており byteArray で表現される。
155 データの 表現に圧縮した byteArray を追加したため、Remote から put された byteArray が圧縮されているのかそ うでないのかを判断する必要がある。 156 * 圧縮した byteArray の追加により、Remote から put された byteArray が圧縮されているのか判断する必要がある。
157
158 # 圧縮機能 - 通信プロトコルの変更
159 * Alice の通信におけるヘッダにあたる CommandMessage.classに **シリアライズ状態表すフラグ**と、**圧縮状態を表すフラク** を追加
160 * これにより put された DSM はフラグに応じた適切な形式で格納できる。
156 161
157 # 圧縮機能の評価 162 # 圧縮機能の評価
158 RingRelayTest 163 RingRelayTest
164 ![opt](./images/topologyring.svg)
159 165
160 # まとめ 166 # まとめ
161 * Alice が実用的なアプリケーションを記述するための Meta Computation として、データに多態性を持たせ、指定するDSMによってデータ表 現を変える機能を実装した。 167 * Alice が実用的なアプリケーションを記述するための Meta Computation として、データに多態性を持たせ、指定するDSMによってデータ表 現を変える機能を実装した。
162 * これによりユーザが記述する Computation 部分を大きく変えずに自由度の高い通信を行うことが可能になった。 168 * これによりユーザが記述する Computation 部分を大きく変えずに自由度の高い通信を行うことが可能になった。
163 * 同様の手法により、暗号形式・JSON 形式など複数のデータ表現を扱えるように拡張できる。 169 * 同様の手法により、暗号形式・JSON 形式など複数のデータ表現を扱えるように拡張できる。