Mercurial > hg > Papers > 2015 > nozomi-prosym
changeset 9:8de971cb8ad8
fix
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 30 Nov 2015 18:35:42 +0900 |
parents | c3c01167cff9 |
children | 5774c70506ae |
files | paper-last/.prosym.tex.swp paper-last/prosym.tex paper/prosym.pdf |
diffstat | 3 files changed, 24 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/paper-last/prosym.tex Mon Nov 30 17:59:53 2015 +0900 +++ b/paper-last/prosym.tex Mon Nov 30 18:35:42 2015 +0900 @@ -35,7 +35,7 @@ \title{分散フレームワークAliceのPC画面配信システムへの応用} \affiliate{IE}{琉球大学工学部情報工学科} \author{照屋 のぞみ}{Nozomi Teruya}{IE} -\author{河野 真治}{Shinji Kono}{IE} +\author{河野 真治}{Shinji Kono, kono@ie.u-ryukyu.ac.jp}{IE} \begin{abstract} 当研究室ではデータを Data Segment、タスクを Code Segment という単位で分割して記述する手法を提唱しており、それに基づく並列分散フレームワークAliceを開発している。 @@ -52,7 +52,7 @@ % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{研究背景と目的} -当研究室ではデータをData Segment、タスクをCode Segmentという単位で記述する分散フレームワークAliceの開発を行っている。 +当研究室ではデータをData Segment、タスクをCode Segmentという単位で記述する分散フレームワークAlice\cite{senkokenkyu} の開発を行っている。 Aliceではスケーラブルな分散プログラムを信頼性高く記述できる環境を実現する。 ここで言う信頼性とは、定められた環境下で安定して仕様に従った動作を行うことを指す。 @@ -60,12 +60,13 @@ そして分散環境の構築に必要な処理をMeta Computationとして提供する。 プログラマはコアな仕様の変更を抑えつつプログラムの挙動変更ができるため、信頼性の高い分散アプリケーションの記述が可能となる。 -先行研究 \cite{senkokenkyu} の水族館の例題等において、Aliceが分散プログラムを記述する能力を有することは確認された。 -しかし、実用的な分散アプリケーションを作成するためには、Data Segmentをそのまま転送する機能や通信時にData Segmentを圧縮形式で扱う機能が必要な場合がある。 - 本研究では、Alice上に実用的な分散アプリケーションの例題である画面共有システムTreeVNC \cite{treeVNC} を構築する。 -構築するにあたり必要となった圧縮などの機能を、AliceのMeta Computationとして実装する。 -そして Alice を使用していないTreeVNCとの比較を行うことでMeta Computationの役割と有効性を示す。 +画面変更の差分を木構造にそって配布する分散システムで、差分は数MByteに達するので圧縮を行う必要がある。 +ノード間の転送では複製を可能な限り避ける必要がある。表示時には伸長したデータを取り扱うことになる。 +差分データはData Segementに対応するが、圧縮やゼロコピー転送の機能が必要なる。 +これらの機能はTreeVNCではad-hocに実装されているが、 +Aliceでは、これをMeta Computationとして実装する。 +TreeVNCとの比較を行うことでAlice の実用性を示すと共にAlice のMeta Computationの役割と有効性を示す。 \section{分散フレームワークAlice} \subsection{Code Segment と Data Segment} @@ -82,13 +83,15 @@ \label{fig:CS} \end{figure} -実際にはAliceはJavaで実装されており、DSはJavaObjectでCSはRunnableThreadである。プログラマがCSを記述する際は、CodeSegmentクラスを継承し、DSを操作するAPIを使用する。 +AliceはJavaで実装されており、DSはJava Objectに相当する。CSはRunnableなObject(void run()を持つObject)に相当する。 +プログラマがCSを記述する際は、CodeSegmentクラスを継承する。 + +DSは数値や文字列などの基本的なデータの集まりを指し、Aliceが内部にもつデータベースによって管理されている。このデータベースをAliceではDS Manager(以下DSM)と呼ぶ。 + +CSは複数のData Segment Managerを持っている。それぞれのManagerにString型のkeyを指定してData Segmentにアクセスする。 +一つのkeyに対して複数のDSをputするとFIFO的に処理される。なのでData Segment Managerは通常のデータベースとは異なる。 \subsection{DataSegmentManager} -DSは数値や文字列などの基本的なデータの集まりを指し、Aliceが内部にもつデータベースによって管理されている。このデータベースをAliceではDS Manager(以下DSM)と呼ぶ。 - -DSには対になるString型のkeyが存在し、このkeyを指定してDSの保存・取得を行う。 -一つのkeyに対して複数のDSを登録することもでき、その場合DSはqueueに保存されFIFOで取り出される。 DSMにはLocal DSMとRemote DSMが存在する。Local DSMは各ノード固有のデータベースである。 Remote DSMは他ノードのLocal DSMに対応するproxyであり、接続しているノードの数だけ存在する(図 \ref{fig:Remote DSM} )。 @@ -150,7 +153,9 @@ ソースコード\ref{src:CodeSegment}は、0から9までインクリメントする例題である。 -2行目で取得されたDSが格納される受け皿を作る。Input DS APIがもつcreateメソッドを使うことで作成できる。 +CSのInput Data Segement はCSの作成時に指定する必要がある。指定はCommandType(PEEKかTAKE)、DSMを指定する文字列("local","remote")、それから、 +key よって行われる。 +Input DS APIがもつcreateメソッドを使うことでInput DSを格納する受け皿(Receiver)を作る。 \begin{itemize} \item {\ttfamily Receiver create(CommandType type)} \end{itemize} @@ -161,11 +166,11 @@ 4行目から6行目はコンストラクタである。コンストラクタはオブジェクト指向のプログラミング言語で新たなオブジェクトを生成する際に呼び出されて内容の初期化を行う関数である。 -TestCodeSegmentのコンストラクタが呼ばれた際には、 -\begin{enumerate} -\item CSが持つフィールド変数 {\tt Receiver input}に{\tt ids.create(CommandType.TAKE)}が行われ、{\tt input}が初期化される。 -\item 5行目にあるTestCodeSegmentのコンストラクタのTAKEが実行される。 -\end{enumerate} +% TestCodeSegmentのコンストラクタが呼ばれた際には、 +% \begin{enumerate} +% \item CSが持つフィールド変数 {\tt Receiver input}に{\tt ids.create(CommandType.TAKE)}が行われ、{\tt input}が初期化される。 +% \item 5行目にあるTestCodeSegmentのコンストラクタのTAKEが実行される。 +% \end{enumerate} 5行目はInput DS APIがもつsetKeyメソッドによりLocal DSMからDSを取得している。 \begin{itemize} @@ -173,7 +178,7 @@ \end{itemize} setKeyメソッドはpeek/takeの実行を行う。どのDSMのどのkeyに対してpeekまたはtakeコマンドを実行させるかを指定できる。コマンドの結果がレスポンスとして届き次第CSは実行される。 -runメソッドの内容としては +実行されるrunメソッドの内容は \begin{enumerate} \item 10行目で取得されたDSをInteger型に変換してcountに代入する。 \item 12行目でcountをインクリメントする。