changeset 29:39e81f4f1326

add conclusion
author kazz <kazz@cr.ie.u-ryukyu.ac.jp>
date Fri, 10 Feb 2012 06:14:46 +0900
parents ba470ac579d6
children 2f67ebce9b2f
files paper/abstract.tex paper/chapter2.tex paper/chapter4.tex paper/conclusion.tex paper/introduciton.tex
diffstat 5 files changed, 91 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/paper/abstract.tex	Fri Feb 10 04:47:13 2012 +0900
+++ b/paper/abstract.tex	Fri Feb 10 06:14:46 2012 +0900
@@ -1,4 +1,14 @@
 \begin{abstract}
+ブロードバンド環境やモバイル端末の普及により、ネットワーク上におけるサービスに参加するユーザー数の巨大化は必至である。
+しかし、フレームワークやデバッグ等を含めてスケーラビリティーに優れた分散プログラムを記述する事は極めて難しい。
+ここでいうスケーラビリティーとは、サービスの大きさが増えても、リソースの追加のみでサービスの質を維持できることを示す性能基準のことである。
+そのスケーラビリティーを備えた分散プログラムを作成するためには、いろいろなプロトコルを提案し、実装し、検証していく必要がある。
 
-アブストラクト
+そこで本研究室では、シンプルにスケーラブルな分散プログラムを書くことができるフレームワークとして、 "分散ネットワークアプリケーションフレームワーク Alice" を提案し、実装した。
+
+Alice は本研究の先行研究である Federated Linda の開発を通して得られた知見が大いに生かされている。また、それと同時に本研究室で開発している並列タスク管理フレームワーク Cerium の新設計から得られたアイディアも生きている。
+
+Alice は Data Segment と Code Segment という単位でデータと処理を細かく分割し、それぞれの依存関係をシンプルに記述して分散プログラムを作成することができる。また、他のマシンとの接続トポロジーの構築等の機能も盛り込まれており、ユーザーはトポロジー構築後の処理を記述することに集中できる。
+
+最後に、先行研究である Federated Linda との性能比較を行う。
 \end{abstract}
--- a/paper/chapter2.tex	Fri Feb 10 04:47:13 2012 +0900
+++ b/paper/chapter2.tex	Fri Feb 10 06:14:46 2012 +0900
@@ -38,7 +38,7 @@
 
 そこで考えられた手法が、データを Data Segment、タスクを Code Segment という単位に分割して記述するという手法である。
 
-まず、 Code Segment (タスク) は入力データと出力データ(それぞれ、 Input Data Segment、 Output Data Segment とする)を持つ。 (図\ref{fig:dsAndCs}) Input Data Segment はそのタスクを実行するにあたり必要なデータ群であり、 Output Data Segment はそのタスクが計算を行った結果を格納したデータ群である。
+まず、 Code Segment (タスク) は入力データと出力データ(それぞれ、 Input Data Segment、 Output Data Segment とする)を持つ。 (図\ref{fig:dsAndCs}) Input Data Segment はそのタスクを実行するにあたり必要なデータ群であり、 Output Data Segment はそのタスクが計算を行った結果を格納するデータ群である。
 
 \begin{figure}[htbp]
   \begin{center}
--- a/paper/chapter4.tex	Fri Feb 10 04:47:13 2012 +0900
+++ b/paper/chapter4.tex	Fri Feb 10 06:14:46 2012 +0900
@@ -124,6 +124,15 @@
 \end{lstlisting}
 
 \section{Federated Linda との性能比較}
-性能比較
+
+続いて、 Alice と Federated Linda の性能比較を行う。
+
+\subsection{実験の概要}
+今回はブレードサーバー上のバーチャルマシンによる仮想クラスタ環境を用いて実験した。
 
 
+\subsection{実験結果}
+グラフ
+
+\subsection{考察}
+
--- a/paper/conclusion.tex	Fri Feb 10 04:47:13 2012 +0900
+++ b/paper/conclusion.tex	Fri Feb 10 06:14:46 2012 +0900
@@ -1,6 +1,59 @@
 \chapter{結論} \label{chapter:conclusion}
 
 \section{まとめ}
-まとめ
+今回の研究では、まず始めに、先行研究である Federated Linda の開発から得られた知見をまとめ、分散プログラミングに重要な事とは何かについて論じた。
+
+その次に、本研究室で開発している Cerium の新設計のアイディアを踏襲し、 Data Segment と Code Segment という単位に分けてプログラミングを行うというスタイルを取り入れ、新しい分散フレームワークの概観を設計した。
+
+さらに、それらの設計をもとに更に詳細な設計を重ね、 Java を用いて Alice の実装を行った。
+
+最後に Alice の動作方法や、クラスター上での実験方法についてまとめ、 Federated Linda との性能比較等を行った。
+
+実際に実装してみることで、初めて得られた知見がたくさんあり、新たな問題点もたくさん見えてきた。
+
+今後、このフレームワークを用いて、たくさんのプロトコルを提案し、実装し、検証していく過程で、分散プログラミングの分野に有意義な影響を与えることができれば幸いである。
+
 \section{今後の課題}
-今後の課題
+
+\subsection{データの永続性の確保}
+
+現在の Alice のデータベースである Data Segment は、プロセスが終了した場合、メモリ解放と共に失われる。
+
+これらを解決するには、 Data Segment を他の Key-Value Store 等のシステムに格納し、永続性を確保することが必要である。
+
+または、自前でファイルに出力することを考えても良い。 Alice では Data Segment の表現に MessagePack を利用しているため、 Data Segment のシリアライズ化が可能である。そのため、比較的容易に Data Segment の永続性をサポートできるのではないかと考えられる。
+
+\subsection{Data Segment のキーごとにスレッドを持つ事による問題点}
+現在の Alice では、 Data Segment のキーごとに Data Segment を処理するスレッドを持っている。
+このため、 Data Segment のキーが異なる Data Segment にアクセスする API は並列実行することが可能となっている。
+
+しかし、これからキーを大量に利用するアプリケーションの開発を行うことになった際、それらのキー全てがスレッドを持つことになってしまう。そのため、スレッドの切り替えが頻繁に起こり、処理効率の低下が懸念される。
+
+そこで、大量にあるキーごとのスレッドを1本にまとめる方法と、スレッドプールを利用して、ある一定の数までのキーだけ並列処理できる方法が挙げられる。
+
+それらを検証するための例題を作成し、どちらの方法を用いたほうが効率が良くなるのか実験をしていかねばならない。
+
+\subsection{Federated Linda の実行速度を目指したのチューニング}
+今回の実験結果では、シンプルな実装であった Federated Linda のリングトポロジーの実装速度に勝ることは出来なかった。
+
+マルチスレッドによる多段パイプラインを備えた Alice は、リングを1周させるようなシンプルなプロトコルではなく、複雑な通信が頻繁に飛び交うプロトコル向きだとは言えども、シンプルなプロトコルでも Federated Linda に勝てるように、プロファイルを重ねてチューニングを行なっていきたい。これからボトルネックの炙り出しを行っていく必要がある。
+
+\subsection{HashMap の多用による処理速度の低下}
+先行研究である Federated Linda に比べ、 Data Segment Manager のマネージャーキーによる探索や、 Data Segment のキーによる探索など、 HashMap を多用している。
+
+しかし、 Code Segment のコーディングを行なっているときに、キーが固定であるケースも多いため、探索数を減らすことができると考える。
+
+また、 Javassist などのリフレクションを行えるツールを利用して、元になったソースから動的にコンパイルを行うという方法を模索していきたい。
+
+\subsection{Code Segment のユーザビリティ}
+Federated Linda に比べ、分散プログラミングをシンプルに行えるようになったとはいえ、まだまだユーザーの Code Segment への記述量は多い。
+
+この記述量を減らすためには、コード生成系を開発すればよい。
+
+また、 Javassist などのリフレクションを行えるツールを利用して、動的にコンパイルを行い、依存関係を解決できるようにするとよいかもしれない。
+
+\subsection{デバッグ方法の提案と実装}
+現在、 Alice はログファイルによるデバッグしか行なっておらず、実行時にリアルタイムに Data Segment の内容を調べたり、現在の依存関係を調べる方法がない。
+もちろん、全てのマシンに接続を張るというモデルでは、確実にスケールしない。
+そのため、効率の良いトポロジーとルーティングを使って、デバッグデータの収集を行う方法を考えていかなくてはならない。
+
--- a/paper/introduciton.tex	Fri Feb 10 04:47:13 2012 +0900
+++ b/paper/introduciton.tex	Fri Feb 10 06:14:46 2012 +0900
@@ -2,7 +2,20 @@
 \pagenumbering{arabic}
 
 \section{研究背景と目的}
-研究背景と目的
+多数の計算機をインターネットなどの比較的遠いネットワークにより接続し実現される分散システムは、接続されたそれぞれの
+
+ブロード環境やモバイル端末の普及により、ネットワーク上におけるサービスに参加するユーザー数の巨大化は必至である。
+しかし、フレームワークやデバッグ等を含めてスケーラビリティーに優れた分散プログラムを記述する事は極めて難しい。
+ここでいうスケーラビリティーとは、サービスの大きさが増えても、リソースの追加のみでサービスの質を維持できることを示す性能基準のことである。
+そのスケーラビリティーを備えた分散プログラムを作成するためには、いろいろなプロトコルを提案し、実装し、検証していく必要がある。
+
+そこで本研究室では、シンプルにスケーラブルな分散プログラムを書くことができるフレームワークとして、 "分散ネットワークアプリケーションフレームワーク Alice" を提案し、実装した。
+
+Alice は本研究の先行研究である Federated Linda の開発を通して得られた知見が大いに生かされている。また、それと同時に本研究室で開発している並列タスク管理フレームワーク Cerium の新設計から得られたアイディアも生きている。
+
+Alice は Data Segment と Code Segment という単位でデータと処理を細かく分割し、それぞれの依存関係をシンプルに記述して分散プログラムを作成することができる。また、他のマシンとの接続トポロジーの構築等の機能も盛り込まれており、ユーザーはトポロジー構築後の処理を記述することに集中できる。
+
+最後に、先行研究である Federated Linda との性能比較を行う。
 
 \section{論文の構成}
 論文の構成