Mercurial > hg > Papers > 2015 > nozomi-sigos
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 形式など複数のデータ表現を扱えるように拡張できる。 |