Mercurial > hg > Papers > 2015 > nozomi-sigos
diff paper/sigos.tex @ 1:e13be99f69b6
can't view graphix correct place
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 05 May 2015 16:37:38 +0900 |
parents | 0127effb8fcd |
children | 74e97b9a4caf |
line wrap: on
line diff
--- a/paper/sigos.tex Tue May 05 15:36:41 2015 +0900 +++ b/paper/sigos.tex Tue May 05 16:37:38 2015 +0900 @@ -1,5 +1,6 @@ -\documentclass[techrep]{ipsjpapers} -\usepackage[dvipdfm]{graphicx} +\documentclass[techrep, ,dvipdfmx]{ipsjpapers} +\usepackage[dvipdfmx]{color} +\usepackage[dvipdfmx]{graphicx} \usepackage{url} \usepackage{listings} \usepackage{mediabb} @@ -99,16 +100,6 @@ CSは実行に必要なDSが揃うと実行されるという性質を持ち、入力されたDSに応じた結果が出力される。 CSを実行するために必要な入力DSはInputDS、CSが計算を行った後に出力されるDSはOutput DSと呼ばれる。データの依存関係にないCSは並列実行が可能であるため、並列度を上げるためにはCSの処理内容を細かく分割して依存するデータを少なくするのが望ましい。 -\subsection{ComputationとMeta Computation} -AliceのComputationは、keyで指し示されるDSを待ち合わせてCSを実行させると定義できる。 -それに対して、AliceのMeta Computationは、AliceのComputationを支えているComputationのプログラミングと定義できる。 - -例えば、トポロジーを指定するAPIはMeta Computationである。Aliceが動作するためにはトポロジーを決める必要がある。つまりトポロジーの構成はAliceのComputationを支えているComputationとみなすことができる。トポロジーが決定するとそのトポロジーを構成する計算が行われる。トポロジーを指定するAPIはその構成の計算をプログラミングして変更するものである。 -他にも再接続の動作を決めるAPIや切断時の動作を決めるAPIはMeta Computationである。 - -これらのMeta ComputationがAliceのComputationに影響することはない。プログラマーはCSを記述する際にトポロジーや切断、再接続という状況を予め想定した処理にする必要はない。プログラマーは目的の処理だけ記述する。そして、切断や再接続が起こった場合の処理を記述しMeta Computationで指定する。 -このようにプログラムすることで、通常処理と例外処理を分離することができるため、シンプルなプログラムを記述できる。 - \subsection{Data Segment} 複数のスレッドから1つのデータに変更を行うためには、データの不整合を防ぐためのlockが必要になる。複数の関係のない要素を1つのデータオブジェクトで表現した場合、全ての操作でlockが必要になる。このlockがスケラビリティーを低下させる。つまりデータのサイズも並列計算には重要である。 @@ -121,7 +112,7 @@ \begin{figure}[htbp] \begin{center} -\includegraphics[width=60mm]{images/remote_datasegment.pdf} +\includegraphics[scale=0.3]{images/remote_datasegment.pdf} \end{center} \caption{Remote DSMは他のノードのLocal DSMのproxy } \label{fig:RemoteDSM} @@ -132,21 +123,21 @@ putとupdateはDSを追加する際に、peekとtakeはDSを取得する際に使用する。 \begin{itemize} -\item {\ttfamily void put(String key, Object val)} +\item {\ttfamily void put(String managerKey, String key, \\ Object val)} \end{itemize} -DSをqueueに追加するためのAPIである。第一引数に対応するqueueに対してDSを追加している。 +DSをqueueに追加するためのAPIである。第一引数で指定したDSMの中の、第二引数に対応するqueueに対してDSを追加している。 \begin{itemize} -\item {\ttfamily void update(String key, Object val)} +\item {\ttfamily void update(String managerKey, String key, \\ Object val)} \end{itemize} updateもqueueに追加するためのAPIである。putとの違いは、先頭のDSを削除してからDSを追加することである。そのためAPI実行前後でqueueの中にあるDSの個数は変わらない。 \begin{itemize} -\item {\ttfamily void take(String key)} +\item {\ttfamily void take(String managerKey, String key)} \end{itemize} takeはDSを読み込むためのAPIである。読み込まれたDSは削除される。要求したDSが存在しなければ、CSの待ち合わせ (Blocking)が起こる。putやupdateによりDSに更新があった場合、takeが直ちに実行される。 \begin{itemize} -\item {\ttfamily void peek(String key)} +\item {\ttfamily void peek(String managerKey, String key)} \end{itemize} peekもDSを読み込むAPIである。takeとの違いは読み込まれたDSが削除されないことである。 @@ -177,10 +168,6 @@ ソースコード \ref{src:StartCodeSegment}は、5行目で次に実行させたいCS(ソースコード \ref{src:CodeSegment})を作成している。8行目でOutput DSMを通してLocal DSMに対してDSをputしている。 Output DSMはCSの{\tt ods}というフィールドを用いてアクセスする。 Output DSMは{\tt put}と{\tt update}を実行することができる。 -\begin{itemize} -\item \verb+void put(String managerKey, String key, Object val)+ -\item \verb+void update(String managerKey, String key, Object val)+ -\end{itemize} TestCodeSegmentはこの"cnt"というkeyに対して依存関係があり、8行目でupdateが行われるとTestCodeSegmentは実行される。 ソースコード\ref{src:CodeSegment}は、0から10までインクリメントする例題である。 @@ -213,6 +200,17 @@ 17行目でcountの値をインクリメントしてLocal DSMに値を追加する。 13行目が終了条件であり、countの値が10になれば終了する。 +\subsection{ComputationとMeta Computation} +AliceのComputationは、keyで指し示されるDSを待ち合わせてCSを実行させると定義できる。 +それに対して、AliceのMeta Computationは、AliceのComputationを支えているComputationのプログラミングと定義できる。 + +例えば、トポロジーを指定するAPIはMeta Computationである。Aliceが動作するためにはトポロジーを決める必要がある。つまりトポロジーの構成はAliceのComputationを支えているComputationとみなすことができる。トポロジーが決定するとそのトポロジーを構成する計算が行われる。トポロジーを指定するAPIはその構成の計算をプログラミングして変更するものである。 +他にも再接続の動作を決めるAPIや切断時の動作を決めるAPIはMeta Computationである。 + +これらのMeta ComputationがAliceのComputationに影響することはない。プログラマーはCSを記述する際にトポロジーや切断、再接続という状況を予め想定した処理にする必要はない。プログラマーは目的の処理だけ記述する。そして、切断や再接続が起こった場合の処理を記述しMeta Computationで指定する。 +このようにプログラムすることで、通常処理と例外処理を分離することができるため、シンプルなプログラムを記述できる。 + + \section{Meta Data Segment} DSは、アプリケーションに管理されているデータのことである。アプリケーションを構成するCSによってその値は変更される。 それに対してMeta DSは、分散フレームワークAliceが管理しているデータである。Aliceを構成するCSによってのみ、その値は変更される。一部のMeta DSはアプリケーションに利用することができる。 @@ -229,9 +227,33 @@ それに対してMeta CSはAliceを構成するタスクである。つまりMeta CSの群はAliceのComputationと言い換えることができる。一部のみユーザーが定義をすることができ、Aliceの挙動を変更することができる。 -\input{chapter2} + + +\section{AliceVNC} +AliceVNCは、当研究室で開発を行っているTreeVNCをAliceを用いて実装された、授業向け画面共有システムである。 +Aliceが実用的なアプリケーションを記述する能力をもつことを確認するために作成した。 + +授業でVNCを使う場合、1つのコンピュータに多人数が同時につながるため、性能が大幅に落ちてしまう(図\ref{fig:vnc})。この問題をノード同士を接続させ、木構造を構成することで負荷分散を行い解決したものがTreeVNCである(図\ref{fig:treestructure})。TreeVNCは、TightVNCのソースコードを利用して開発されている。 + +\begin{figure}[htbp] +\begin{center} +\includegraphics[width=80mm]{images/vnc.pdf} +\end{center} +\caption{VNCの構造 } +\label{fig:vnc} +\end{figure} + +\begin{figure}[htbp] +\begin{center} +\includegraphics[width=120mm]{images/treestructure.pdf} +\end{center} +\caption{TreeVNC, AliceVNCの構造 } +\label{fig:treestructure} +\end{figure} + + + % \input{chapter3} -% \input{chapter4} % \input{chapter5} % \input{conclusion}