view presen/sigOS/sample.markdown @ 13:c0fe42a8808d

add slides
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Sat, 23 May 2015 16:11:04 +0900
parents
children 99e5104997b7
line wrap: on
line source

title: 分散フレームワークAliceの圧縮機能
author: 照屋のぞみ
profile:琉球大学 工学部 情報工学科 4年

# 研究背景(1/2)
* 信頼性とスケーラビリティに優れた分散プログラムをプログラマが一から記述することは容易ではない。
* 本研究室ではデータを *Data Segment* 、タスクを *Code Segment* という単位で分割して記述する**並列分散フレームワークAlice**の開発を行っている。
* Aliceは分散環境の構築のためのAPIが提供されており、スケーラブルな分散プログラムを信頼性高く記述できる環境を実現する。  

# 研究背景(1/2)
* 水族館の例題等において、Aliceが分散プログラムを記述する能力を有することは確認された。
* 実用的な分散プログラムを作成するためには、圧縮形式のデータで通信する機能等が必要だとわかった。

# 研究目的
* Aliceに圧縮機能等を追加することにより、Data Segmentの多態性を実現しノード間通信における自由度の向上を図る。  

# Aliceの概要(1) - Data Segment
* 複数の関係のない要素を1つのデータオブジェクトで表現した場合、全ての操作でlockが必要になり、スケラビリティーを低下させる。
* Alice はデータを細かく分割して記述する。その分割されたデータを *Data Segment(DS)* と呼ぶ。

# Aliceの概要(2) - Data Segment Manager
* DS は queue に保存される。queue には対 になる key し、 key を指定して DS の保存、取得を行う。
* queue の集合体であるデータベースデータベースを Alice では DS Manager(DSM) と呼ぶ。  
![opt](./pictures/dsm.svg)

# Aliceの概要(2) - Data Segment Manager
* Local DSM … 各ノード固有のデータベース。
* Remote DSM … 他のノードの Local DSM の proxy。接続しているノードの数だけ存在。  
	![opt](./images/remote_datasegment.svg){:width="450px"}

# Aliceの概要(3) - Data Segment API
DSMに対して以下のコマンドを送り操作できる  

<table style="border-collapse: collapse;border:1px solid #000000;">
  <tr>
    <td style="border:1px solid #000000;"> put</td>
    <td style="border:1px solid #000000;">データを追加する</td>
  </tr>
  <tr>
    <td style="border:1px solid #000000;"> update </td>
    <td style="border:1px solid #000000;">データを更新する</td>
  </tr>
	<tr>
		<td style="border:1px solid #000000;"> peek</td>
		<td style="border:1px solid #000000;">データを取得する</td>
	</tr>
	<tr>
	<td style="border:1px solid #000000;"> take</td>
	<td style="border:1px solid #000000;">データを取得する。取得したデータはDSMから削除される。</td>
	</tr>
</table>


# Aliceの概要(4) - Code Segment  
* Alice上で実行されるタスクの単位を Code Segment(CS) と呼ぶ。
* 複数のDSが入力され、その結果をDSとして出力するfunctionと捉えられる。
* 入力されるDSをInput DS、出力されるDSをOutput DSと呼ぶ。
* keyで指定されたDSが揃うと実行されるという性質を持つ。
![opt](./images/dsandcs.svg)

# Aliceの概要(5) - CodeSegmentの依存関係
* データの依存関係にないCSは並列実行される
* データの依存関係がある場合は依存を解決した順に実行される
* 並列度あげるために、処理を細かく記述し、依存するDSを少なくする
![opt](./images/dsandcs2.svg)

# AliceのMeta Computation
* 並列指向プログラミング言語 Erlang では、分散環境の構築等の処理は全てプログラマが記述しなければいけない。
* Aliceではプログラマが記述する部分を *Computation*、Aliceが提供するComputationを支える部分を *Meta Computation* として分けて捉えている。

# AliceのMeta Computation
* AliceのComputation
	* keyによりData Segmentを待ち合わせてCode Segmentを実行する

* AliceのMeta Computation
	* Javaで記述したAliceの実装システム

* Aliceの機能を追加するということはMeta Computationを追加すると言い換えられる
* Meta ComputationもCSとDSにより表現されており、それぞれMeta CSとMeta DSと呼ぶ。

# Alice の新機能
実用的なアプリケーションであるTreeVNCの実装で必要となった以下の機能をMeta Computation として実装した。  
* flip機能 … Input DS を Output DSとして転送する
* 圧縮機能 … DS Managerの指定によってDSの表現を切り替える

# flip機能

# 圧縮機能

# API設計  
* put(String "compressed" + managerKey, String key, Object val)  
* take(String "compressed" + managerKey, String key)