changeset 16:8e0b26d962cc

modify conclusion
author sugi
date Sun, 18 Jan 2015 00:23:22 +0900
parents 930eae4e8aeb
children 675939a7f983
files paper/chapter5.tex paper/conclusion.tex paper/source/ShowDataFailed.java paper/source/Singleton.java
diffstat 4 files changed, 39 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter5.tex	Fri Jan 16 14:44:05 2015 +0900
+++ b/paper/chapter5.tex	Sun Jan 18 00:23:22 2015 +0900
@@ -36,7 +36,7 @@
 \hline
  & 改善前 & 改善後 \\ 
  \hline
- 実行時間 (ms)& 199.38 & 184.64 \\ 
+ 実行時間 (ms)& 232.7 & 131.0 \\ 
 \hline
 \end{tabular} 
 \end{center}
--- a/paper/conclusion.tex	Fri Jan 16 14:44:05 2015 +0900
+++ b/paper/conclusion.tex	Sun Jan 18 00:23:22 2015 +0900
@@ -1,12 +1,23 @@
 \chapter{結論} \label{chapter:conclusion}
 
 \section{まとめ}
+今回の研究では、さまざまなアプリケーションの作成を行い、Aliceの性能的問題や不足機能を洗い出した。
+性能的な問題に対しては、並列と分散の両方の観点から改善を行った。その結果、実行速度を最大24\%改善した。
+不足機能に関しては、洗いだした機能を実装することで、当研究室で開発しているTreeVNCをAlice上で実装できるまでになった。
+
+しかし、性能も機能も十分であるとは言えない。性能に関しては、先行研究であるFederated Lindaに勝てていない。
+機能に関しては、versionの違うプロトコルに対応するなどまだ必要な機能も多い。
 
 \section{今後の課題}
+\subsection{データの永続性の確保}
+現在のAliceは、On memoryであるためプロセスの終了とともにData Segmentは全て失われてしまう。
 
-\subsection{データの永続性の確保}
+この問題を解決するためには、Data Segmentを他のKey Value Store等のシステムに保存し、永続性を確保する昼用がある。また、JungleのようにLogファイルとして出力することでも解決ができる。
 
 \subsection{DataSegmentKeyの領域分け}
+現在Meta Data SegmentとData Segmentは、同じKey Value Queueで管理されている。つまり、Data Segment APIを用いれば、誰でもMeta Data Segmentを変更することができてしまう。Meta Data SegmentにAliceの状態を表すものがあるため、ユーザーによる変更は望ましくない。また、ユーザーが意図せずMeta Data Segment Keyに対して、putすることも考えられる。そして、Meta Code Segmentがactiveになりエラーを起こす。Meta Code Segmentでエラーが起こった場合、ソースコードを見ることができないため解決しづらい。
+
+このようなエラーを防ぐためにMeta Data SegmentとData Segmentの領域を分ける必要がある。Data Segmentを分けることによりKeyの重複によるエラーをアプリケーションレベルにすることができる。しかし、領域を分けるだけでは足りない。領域をわけることで解決することができるのはputまたはupdateの場合だけである。Meta Data Segmentを取得する際にtakeを使用した場合Meta Data SegmentがQueueから取り除かれてしまう。この問題に対処するためには権限をCode Segmentに対して設定する必要がある。その権限により、takeと記述しても実際にはpeekを行うようにすることができる。
 
 \subsection{記述に関する注意点}
 \subsubsection{setKey のシンタックス問題}
@@ -25,4 +36,11 @@
 \begin{table}[html]
 \lstinputlisting[label=src:success,caption=NullPointerExceptionにならない記述]{source/ShowData.java}
 \end{table}
-\subsubsection{singleton Code Segment}
\ No newline at end of file
+
+\subsubsection{singleton Code Segment}
+Javaには、クラスのインスタンスを1つに限定するSingletonパターンがある。Code SegmentにSingletonパターンを使用したい場合があり得る。その場合、setKeyを行なう前に{\tt ids.init()}を行なう必要がある。先ほどのsetKeyのシンタックス問題でも述べたが、Code Segmentは内部で実行に必要なData Segmentを示す値がある。一度実行された状態のCode Segmentと新しくインスタンスを作成した場合のCode Segmentでは、値が違うため{\tt ids.init()}を呼ばずにsetKeyを行なうとData Segmentが揃ったにもかかわらずCode Segmentが実行されない。そのためsetKeyを呼ぶ前に{\tt ids.init()}を呼び内部の値を初期化する必要がある。(ソースコード\ref{src:Singleton})
+
+
+\begin{table}[html]
+\lstinputlisting[label=src:Singleton,caption=setKeyを呼ぶ前にinitを呼ぶ必要がある。]{source/Singleton.java}
+\end{table}
\ No newline at end of file
--- a/paper/source/ShowDataFailed.java	Fri Jan 16 14:44:05 2015 +0900
+++ b/paper/source/ShowDataFailed.java	Sun Jan 18 00:23:22 2015 +0900
@@ -6,7 +6,7 @@
         for (int i= 0;i < cnt; i++) {
             info[i] = ids.create(CommandType.TAKE);
             info[i].setKey(SetInfo.array[i]);
-	}
+        }
     }
 
     @Override
@@ -14,6 +14,7 @@
         int size = 0;
         for (Receiver anInfo : info) {
             DataList dlist = anInfo.asClass(DataList.class);
-	    dlist.showData();
+            dlist.showData();
         }
-    }
\ No newline at end of file
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/source/Singleton.java	Sun Jan 18 00:23:22 2015 +0900
@@ -0,0 +1,14 @@
+public class TaskExecuter extends CodeSegment {
+    private Receiver info = ids.create(CommandType.TAKE);
+    private static TaskExecuter instance = new TaskExecuter();
+
+    private TaskExecuter() {}
+    public static TaskExecuter getInstance() {
+        return instance;
+    }
+
+    public void setKey() {
+        ids.init();
+        info.setKey("_SCHEDULER");
+    }
+}
\ No newline at end of file