changeset 27:a27c97e0bb15

add appendix
author sugi
date Wed, 04 Feb 2015 21:13:48 +0900
parents cefaf86da446
children 46a09e9020a3
files paper/abstract.tex paper/abstract_eng.tex paper/appendix.tex paper/appendix1.tex paper/chapter1.tex paper/chapter3.tex paper/chapter5.tex paper/images/topologymanagerandnode1.pdf paper/images/topologymanagerandnode2.pdf paper/images/topologymanagerandnode3.pdf paper/introduciton.tex paper/master_paper.pdf paper/source/MulticastIncrement.java paper/source/MulticastStartCodeSegment.java paper/source/ReceiveTask.java paper/thanx.tex
diffstat 16 files changed, 196 insertions(+), 43 deletions(-) [+]
line wrap: on
line diff
--- a/paper/abstract.tex	Wed Feb 04 19:10:32 2015 +0900
+++ b/paper/abstract.tex	Wed Feb 04 21:13:48 2015 +0900
@@ -1,6 +1,10 @@
 \begin{abstract}
 
-そこで本研究室ではデータをData Segment、タスクをCode Segmentという単位で分割して記述する手法を提唱しており、分散フレームワークAliceはそのプロトタイプとして開発されたものである。プロトタイプであるため、実際にAliceを用いてさまざまな例題を記述すると、Aliceに足りない機能や問題点が浮かび上がってきた。
+データをData Segment、タスクをCode Segmentという単位で分割して記述する手法を提唱しており、分散フレームワークAliceはそのプロトタイプとして開発された。Aliceが分散プログラムを記述する能力をもつことは、水族館の例題により確認された。
+
+本研究ではAliceに実用的なアプリケーションを作成するために必要な、動的なトポロジーを管理する機能とAliceの制御を行えるメタ計算を追加した。そして既存のアプリケーションをAlice上で実装することで実用的なアプリケーションを記述する能力を持つことを確認した。
 
-本研究ではAliceにAliceのComputationの制御を行うMeta Computationを追加した。そして実用的なアプリケーションをAlice上で実装することでAliceの有効性を確認した。
+また、分散と並列両方の観点から性能改善を行ない、12%の性能向上に成功した。そして、先行研究であるFederated Lindaと同等の性能を持たせることができた。
+
+
 \end{abstract}
--- a/paper/abstract_eng.tex	Wed Feb 04 19:10:32 2015 +0900
+++ b/paper/abstract_eng.tex	Wed Feb 04 21:13:48 2015 +0900
@@ -1,8 +1,3 @@
 \begin{abstract_eng}
-It increases in rate of diffusion of the smart phone and tablet device every year. And people who use service on Internet increase. It would be cause the huge increase in active users of Internet services. So the service which on Internet need  scalability and reliability. The program should keep quality of service while increasing number of users by additional resources and perform same action under same environment with same code .The scalability and reliability are the performance standard. Moreover the program need concurrency because computer has many cpu.
-But it is difficult to create program which has all of them.
 
-We develop an distributed programming framework Alice which uses Data Segment and Code Segment as programming units. But we find many problems and need functions for programming.
-
-We add Meta Computation which control Alice Computation. And We show usability, creating application with Alice.
 \end{abstract_eng}
--- a/paper/appendix.tex	Wed Feb 04 19:10:32 2015 +0900
+++ b/paper/appendix.tex	Wed Feb 04 21:13:48 2015 +0900
@@ -6,4 +6,11 @@
 杉本 優, 河野 真治(琉球大学),\\
 第125回 システムソフトウェアとオペレーティングシステム・システム研究会, April, 2013
 
+\item Code Segment と Data Segment によるプログラミング手法 ,\\
+杉本 優, 河野 真治(琉球大学)\\
+第54回 プログラミングシンポジウム, Jan, 2013
+
+\item 分散フレームワークAliceによる例題の作成  ,\\
+杉本 優, 河野 真治(琉球大学)\\
+オープンソースカンファレンス2012 Okinawa July 2012
 \end{itemize}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/appendix1.tex	Wed Feb 04 21:13:48 2015 +0900
@@ -0,0 +1,126 @@
+\clearpage
+\addcontentsline{toc}{chapter}{付録}
+\appendix
+\def\thesection{付録\Alph{section}}
+
+
+\section[ TORQUE Resource Manager を用いた実験方法]{TORQUE Resource Manager を用いた実験方法}
+分散環境の実験する際に、学科にある共用のブレードサーバーを用いた。
+
+TORQUE Resource Manager (\url{http://www.adaptivecomputing.com/products/torque.php})というジョブスケジューラーによって、他の利用者とのリソースが競合しないように管理されている。
+
+\subsubsection {TORQUE Resource Manager}
+TORQUE は、1台のマスターと複数台のスレーブで構成される。(図 \ref{fig:torque})
+スレーブは、マスターへ現在の自身のリソースの利用状況を報告する。
+
+\begin{figure}[htbp]
+  \begin{center}
+    \includegraphics[width=80mm]{images/torque.pdf}
+  \end{center}
+  \caption{TORQUE の構成}
+  \label{fig:torque}
+\end{figure}
+
+ユーザーはマスターを用いてTORQUEを利用する。ジョブを記述したシェルスクリプトを用意し、スケジューラーに投入する。投入するタイミングで、利用したいマシン台数、CPUコア数を指定することができる。(ソースコード \ref {src:torque})
+
+TORQUE は、ジョブに必要なマシンが揃い次第、受け取ったジョブを実行する。
+
+\subsubsection {TORQUE のジョブの書き方}
+TORQUEのジョブは、シェルスクリプトにより記述する。
+TORQUEのジョブは実行される際に、環境変数が与えられる。
+
+\begin{itemize}
+\item {\ttfamily PBS\_NODEFILE}\\
+すべての参加マシンが列挙されているファイルへのパス
+\item {\ttfamily PBS\_NUM\_NODES}\\
+全ての参加マシン数
+\item{\ttfamily PBS\_NUM\_PPN}\\
+参加マシン一台あたりのコア数
+\item{\ttfamily PBS\_JOBNAME}\\
+ジョブの名前
+\end{itemize}
+これらの環境変数は、ジョブを投入する際にオプションでも変更することができる。
+
+\begin{lstlisting}[label=src:torque1, caption=指定されたマシンにログインして hostname コマンドを走らせる例]
+function run() {
+    while read node
+    do
+        ssh $node hostname < /dev/null
+    done
+    wait
+}
+run < $PBS_NODEFILE
+\end{lstlisting}
+
+ソースコード \ref{src:torque1}はスレーブに、{\ttfamily PBS\_NODEFILE} に記述されているマシン名の順番にログインさせ、hostnameコマンドを実行させる例題である。
+
+\begin{table}[html]
+\lstinputlisting[label=src:torque, caption=10台(1台あたり4コア)で走らせる例]{source/Torque.sh}
+\end{table}
+
+
+\newpage
+\def\thesection{付録\Alph{section}}
+\section[ Topology Manager]{Topology Manager}
+Aliceは複数のノードで構成され、相互に接続される。通信するノードはURLにより直接指定するのではなくTopology Managerで管理する。
+Topology Managerはトポロジーファイルを読み込み、参加を表明したクライアント(以下、Topology Node)に接続するべきTopology NodeのIPアドレス、ポート番号、接続名を送りトポロジーファイルに記述されたとおりにトポロジーを作成する。(図\ref{fig:topologymanager})
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics[width=70mm]{images/topologymanager.pdf}
+\end{center}
+\caption{Topology Manager はトポロジーファイルの記述に従ってトポロジーを生成する}
+\label{fig:topologymanager}
+\end{figure}
+
+CS内部でRemote DSMにアクセスする場合はToplogyManagerによって指定されたノード内部だけで有効なlabel(文字列)を使う。これにより特定のURLがCS内部に記述されることを防いでいる。
+
+トポロジーファイルはグラフ構造を表現するデータ記述する言語の一種であるDOT Languageと呼ばれる言語で記述する。また、dotコマンドを用いてトポロジーファイルを可視化することができる。
+
+\subsubsection{Topology Managerの参加表明処理}
+Topology Managerへの参加表明は、Topology Node起動時にコマンドライン引数からTopology ManagerのIPアドレスとポート番号を指定すればよい。
+
+参加表明を行ってからリングトポロジーができるまでのコミュニケーションダイアグラムを示す。
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics[width=100mm]{images/topologymanagerandnode1.pdf}
+\end{center}
+\caption{参加表明したノードに対して抽象名を返す}
+\label{fig:topologymanagerandnode1}
+\end{figure}
+
+\begin{enumerate}
+\item 指定されたTopology Managerに接続を行うと、Topology Manager側のキー"hosts"に、自分自身のIPアドレスとポート番号をputする。
+\item 参加表明を受け取ったTopology Managerは、抽象名を参加表明したTopology Nodeのキー"host"にputする。
+\end{enumerate}
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics[width=100mm]{images/topologymanagerandnode2.pdf}
+\end{center}
+\caption{Topology Nodeは接続すべきNodeの情報をTopology Managerに要求する}
+\label{fig:topologymanagerandnode2}
+\end{figure}
+
+
+\begin{enumerate}
+\setcounter{enumi}{3}
+\item Topology NodeはTopology Managerに対してtakeを行う。指定するkeyは"host"に投入された文字列である。
+\item takeへの応答として接続すべきTopology Nodeの情報(IP アドレス、ポート番号等)がreplyされる。
+\end{enumerate}
+
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics[width=100mm]{images/topologymanagerandnode3.pdf}
+\end{center}
+\caption{リングトポロジーの完成}
+\label{fig:topologymanagerandnode3}
+\end{figure}
+\begin{enumerate}
+\setcounter{enumi}{5}
+\item replyされた情報に対して接続処理を行う。
+\item 3から5を繰り返し行うことでリングトポロジーが完成する。
+\end{enumerate}
+
+全ての接続処理が終わるとTopology ManagerからTopology Nodeに対してStart CSの実行命令が出され、アプリケーションが開始される。
--- a/paper/chapter1.tex	Wed Feb 04 19:10:32 2015 +0900
+++ b/paper/chapter1.tex	Wed Feb 04 21:13:48 2015 +0900
@@ -5,7 +5,7 @@
 DSはAliceが内部にもつデータベースによって管理されている。DSに対応する一意のkeyが設定されており、そのkeyを用いてデータベースを操作する。
 
 CSは実行に必要なDSが揃うと実行されるという性質を持つ。そして入力されたDSに応じた結果が出力される。
-入力されるDSはInput DS、出力されるDSはOutput DSと呼ばれる(図 \ref{fig:dsandcs})。Input DSはそのCSを実行するために必要なデータ群であり、Output DSはCSが計算を行った結果を格納するデータ群である。
+入力されるDSはInput DS、出力されるDSはOutput DSと呼ばれる(図 \ref{fig:dsandcs})。Input DSはそのCSを実行するために必要なデータであり、Output DSはCSが計算を行った後に出力されるデータである。
 
 
 \begin{figure}[htbp]
@@ -16,7 +16,7 @@
 \label{fig:dsandcs}
 \end{figure}
 
-CSに依存するデータ群であると出力されるデータ群を記述することにより、CSが実行される順番が決定される(図 \ref{fig:dsandcs2})。データの依存関係にないCSは並列実行が可能であるため、並列度を上げるためにはCSの処理内容を細かく分割して依存するデータを少なくするのが望ましい。
+CSに依存するデータであると出力されるデータを記述することにより、CSが実行される順番が決定される(図 \ref{fig:dsandcs2})。データの依存関係にないCSは並列実行が可能であるため、並列度を上げるためにはCSの処理内容を細かく分割して依存するデータを少なくするのが望ましい。
 
 
 \begin{figure}[htbp]
@@ -28,13 +28,13 @@
 \end{figure}
 
 \section{ComputationとMeta Computation}
-%Aliceはkeyで指し示されるDSを待ち合わせてCSを実行させるというComputationである。
-%また、アプリケーションでAliceのComputationを設定するComputationを利用することができる。このComputationをMeta Computationと呼ぶ。
+Aliceはkeyで指し示されるDSを待ち合わせてCSを実行させるというComputationである。
+また、アプリケーションでAliceのComputationを設定するComputationを利用することができる。このComputationをMeta Computationと呼ぶ。
 
-%例えば、Aliceのトポロジーと再接続の管理はMeta Computationとみなすことができる。
-%CS単位ではトポロジーや切断を想定せずにアプリケーションを記述することができる。
-%トポロジーのMeta Computationを利用することで、トポロジーが2分木からn分木に変わってもアプリケーションは動く。
-%再接続のMeta Computationを利用すれば、アプリケーションはノードが再接続してきた場合でも、切断してないノードと同様に動かすことができる。
+例えば、Aliceのトポロジーと再接続の管理はMeta Computationとみなすことができる。
+CS単位ではトポロジーや切断を想定せずにアプリケーションを記述することができる。
+トポロジーのMeta Computationを利用することで、トポロジーが2分木からn分木に変わってもアプリケーションは動く。
+再接続のMeta Computationを利用すれば、アプリケーションはノードが再接続してきた場合でも、切断してないノードと同様に動かすことができる。
 
 \section{Data Segment}
 複数のスレッドから1つのデータに変更を行うためには、データの不整合を防ぐためのlockが必要になる。
--- a/paper/chapter3.tex	Wed Feb 04 19:10:32 2015 +0900
+++ b/paper/chapter3.tex	Wed Feb 04 21:13:48 2015 +0900
@@ -166,13 +166,17 @@
 
 現在、Multicast Data Segmentは自動では作成されないため、ユーザー自身で作成する必要がある。
 
-ソースコード \ref {src:MulticastStartCodeSegment}と\ref {src:MulticastIncrement}は実際にMulticast Data Segmentを利用した例題である。例題の内容はmulticast Data Segmentに対してtakeを行い、取得したデータをインクリメントして再びputを行うものである。
+ソースコード \ref {src:MulticastStartCodeSegment}と\ref {src:MulticastIncrement}は実際にMulticast Data Segmentを利用した例題である。送信側では送信専用のmulticast DSMを作成し、それに対して数字データを10回putしている。
+受信側では受信専用のmulticast DSMを作成し、送信されたDSを受け取り内容を表示している(ソースコード\ref {src:Receivemessage})。
 
-Multicast DSMを作成する際のSocketTypeの引数はBothであるため、ReceiverとSender両方作成される。そのため、"multicast"というkeyに対してputを行うと、自分自身に対してもData Segmentがputされる。takeもまた同様に自分自身に対してもtakeが要求され、要求に対してreplyを返すことになる。
 \begin{table}[htbp]
-\lstinputlisting[label=src:MulticastStartCodeSegment, caption=multicast DSMの作成例]{source/MulticastStartCodeSegment.java}
+\lstinputlisting[label=src:MulticastStartCodeSegment, caption=multicast DSの例題の送信側]{source/MulticastStartCodeSegment.java}
 \end{table}
 
 \begin{table}[htbp]
-\lstinputlisting[label=src:MulticastIncrement, caption=multicast Data Segmentの使用例]{source/MulticastIncrement.java}
+\lstinputlisting[label=src:MulticastIncrement, caption=multicast DSの例題の受信側]{source/MulticastIncrement.java}
+\end{table}
+
+\begin{table}[htbp]
+\lstinputlisting[label=src:Receivemessage, caption=multicast DSMに対してsetKeyを行う]{source/ReceiveTask.java}
 \end{table}
\ No newline at end of file
--- a/paper/chapter5.tex	Wed Feb 04 19:10:32 2015 +0900
+++ b/paper/chapter5.tex	Wed Feb 04 21:13:48 2015 +0900
@@ -143,6 +143,7 @@
 AliceがFederated Lindaに対して優位な点は、マルチコアによる並列実行である。従って、複数のCode Segmentが同時に走る実験では、小さなパケットの場合でもFederated Lindaに勝つことができると予想される。
 
 \section{TreeVNCとのCodeの比較}
+ここでは授業向け画面共有システムであるTreeVNCとそれをAlice上で実装したAliceVNCをソースコードの面から比較した。
 TreeVNCとAliceVNCのソースコードに対してwcを行い、TightVNCからどの程度コードが増加しているかを調べた。(表\ref {tb:diffwordCount})
 
 \begin{table}[htbp]
Binary file paper/images/topologymanagerandnode1.pdf has changed
Binary file paper/images/topologymanagerandnode2.pdf has changed
Binary file paper/images/topologymanagerandnode3.pdf has changed
--- a/paper/introduciton.tex	Wed Feb 04 19:10:32 2015 +0900
+++ b/paper/introduciton.tex	Wed Feb 04 21:13:48 2015 +0900
@@ -2,7 +2,7 @@
 \pagenumbering{arabic}
 
 \section{研究背景と目的}
-スマートフォンやタブレット端末の普及率が年々増加している。それに伴いインターネット利用者数も増加しており、ネットワーク上のサービスの利用者の増加は必至である。従って、サービスには、信頼性とスケーラビリティーが要求される。
+スマートフォンやタブレット端末の普及率が増加している。それに伴いインターネット利用者数も増加しており、ネットワーク上のサービスの利用者の増加は必至である。従って、サービスには、信頼性とスケーラビリティーが要求される。
 ここでいう信頼性は定められた環境下で安定して期待しされた動作を行うことをさす。スケーラビリティーはサービスの利用者が増大した場合、メモリ等のリソースを追加するだけでサービスを維持できる性能をさす。また、CPUが発熱の問題からマルチコアが主流になっているため、プログラムには並列性も求められる。
 しかし、これら全てをもつ分散プログラムをユーザーが一から記述することは容易ではない。
 
Binary file paper/master_paper.pdf has changed
--- a/paper/source/MulticastIncrement.java	Wed Feb 04 19:10:32 2015 +0900
+++ b/paper/source/MulticastIncrement.java	Wed Feb 04 21:13:48 2015 +0900
@@ -1,20 +1,15 @@
 public class ReceiverTask extends CodeSegment {
-    
-    private Receiver num = ids.create(CommandType.TAKE);
-    
-    public MutlicastIncrement() {
-        num.setKey("multicast", "num");
-    }
-    
+
     @Override
     public void run() {
-        int num = this.num.asInteger();
-        System.out.println("[CodeSegment] " + num);
-        if (num == 10) System.exit(0);
-        
-        new MulticastIncrement();
-        
-        ods.put("multicast", "num", ++num);
+        // create multicast receiver
+        DataSegment.connectMulticast("multicast",
+                                     "224.0.0.1",
+                                     10000,
+                                     "en1",
+                                     SocketType.Receiver);
+
+        new ReceiveMessage();
     }
     
 }
--- a/paper/source/MulticastStartCodeSegment.java	Wed Feb 04 19:10:32 2015 +0900
+++ b/paper/source/MulticastStartCodeSegment.java	Wed Feb 04 21:13:48 2015 +0900
@@ -8,15 +8,8 @@
                                      10000,
                                      "en1",
                                      SokcetType.Sender);
-        // create multicast receiver
-        DataSegment.connectMulticast("multicast1",
-                                     "224.0.0.2",
-                                     10001,
-                                     "en1"
-                                     SocketType.Receiver);
-        new ReceiveMessage()
         
-        for (int i=1;i < 11; i++)
+        for (int i=1;i < 10; i++)
             ods.put("multicast", "num", i);
     }
     
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/source/ReceiveTask.java	Wed Feb 04 21:13:48 2015 +0900
@@ -0,0 +1,18 @@
+public class ReceiveMessage extends CodeSegment {
+    
+    private Receiver num = ids.create(CommandType.TAKE);
+    
+    public ReceiveMessage() {
+        num.setKey("multicast", "num");
+    }
+    
+    @Override
+    public void run() {
+        int num = this.num.asInteger();
+        System.out.println("[CodeSegment] "+num);
+        
+        new ReceiveInteger();
+        
+    }
+    
+}
--- a/paper/thanx.tex	Wed Feb 04 19:10:32 2015 +0900
+++ b/paper/thanx.tex	Wed Feb 04 21:13:48 2015 +0900
@@ -1,2 +1,12 @@
 \chapter*{謝辞}
-\addcontentsline{toc}{chapter}{謝辞}
\ No newline at end of file
+\addcontentsline{toc}{chapter}{謝辞}
+
+本研究を行うにあたって、ご多忙にも関わらず日頃より多くのご助言、ご指導を頂きました河野真治助教授に心より感謝いたします。
+
+また、本研究に大きく役立つ技術的指導を賜りました、赤嶺一樹さん並びに情報工学科の先生方に感謝いたします。
+
+先行研究である Federated Linda や Cerium ,TreeVNCがなければ、本研究はありませんでした。 Federated Linda や Cerium ,TreeVNCの設計や実装に関わった全ての先輩方に感謝いたします。
+
+研究を行うにあたり貴重なご意見と日々の強力を頂いた比嘉 健太さん、実験の測定に協力してくださった照屋 のぞみさん、並びに並列信頼研究室の皆様に深く感謝いたします。
+
+最後に、長年にわたり理解を示し、援助してくれた家族に感謝します。