# HG changeset patch # User sugi # Date 1361250428 -32400 # Node ID 580ce56d06c2379d9ff3a6c2729b98434e8b1926 # Parent 482339b9a9fb49495f1063364943049562726b1e remove no used files diff -r 482339b9a9fb -r 580ce56d06c2 Draft/Draft.tex --- a/Draft/Draft.tex Mon Feb 18 18:28:58 2013 +0900 +++ b/Draft/Draft.tex Tue Feb 19 14:07:08 2013 +0900 @@ -60,15 +60,16 @@ % 記述が大変である こういう口語的なものは論文では使わない ノード間のData Segmentの送受信APIが提供されている。 % のでユーザーが記述をする必要はない。 -また、Blade また PCクラスタ上で分散プログラムのシミューレションするために、オーバレイネットワークを自動的に構成する +また、Blade また PCクラスタ上で分散プログラムのシュミレーションするために、オーバレイネットワークを自動的に構成する TopologyManagerという機能が搭載されている。 +さらに近年のメニーコアのマシンが主流になっている背景からSEDA Architecture\cite{4}を採用しており、マルチコア上 でのスループットの向上を期待している。 % というトポロジーの作成をサポートする機能が含まれているためユーザーはトポロジー完成後の記述を行うだけで良い。 % しかし、提供されているAPIが適当なものであるか、必要な機能が備わっているかどうかは、ソースコード上では確認できず、実際にプログラミングを行うことでしか見えてこない部分である。 本研究はAliceを用いてプログラムを作成することで、Aliceが抱える問題点、APIの見直しを行った。 まず、分散プログラムを書くためのAPIがちゃんとそろっているかどうかを例題を作成することにより確認した。 -スケーラビリティがあるかどうかを調べるためには、Blade 上でのシミューレションを行うことが必要である。 -実際にシミューレションを行い、応答時間の測定を行った。 +スケーラビリティがあるかどうかを調べるためには、Blade 上でのシュミレーションを行うことが必要である。 +実際にシュミレーションを行い、応答時間の測定を行った。 % そして、Aliceの改良を行い、 % 誰でも簡単に % 分散プログラムを書けるようなフレームワークを作成するのが目的である。 @@ -101,7 +102,7 @@ \begin{figure}[htbp] \begin{center} -\includegraphics[width=70mm]{pic/dsandcs2.pdf} +\includegraphics[width=65mm]{pic/dsandcs2.pdf} \caption{DataSegment と CodeSegment の依存関係で一意に決まる実行順序} \label{fig:dsandcs} \end{center} @@ -120,7 +121,7 @@ 水族館ゲームを作成した目的は魚とディスプレイが増えてもサービスを維持できることを確認するためである。しかし、現状では魚の数、参加するClinetが増えるとトップノードが処理すべきCode Segmentが増加していくため、スケールしないと思われる。 -以前水族館ゲームをJava3Dで作成したが、JavaのVersion が1.7になったのに伴いJava3Dが使用不可になった。しかしJavaFXというGUIプラグインが追加されたため、JavaFXで水族館ゲームを書きなおした。(図 \ref{fig:JavaFX})また、描画部分がJava3DからJavaFXに変わっただけであるので、それぞれで魚の情報を共有することが可能である。 +以前水族館ゲームをJava3Dで作成したが、JavaのVersion が1.7になったのに伴いJavaFXというGUIプラグインが追加されたため、JavaFXで水族館ゲームを書きなおした。(図 \ref{fig:JavaFX}) \begin{figure}[htbp] @@ -156,25 +157,22 @@ \end{figure} \section{考察} -サービスに参加するClientの数が増加するに連れて、時間が増加していく。これはトップノードがData Segmentを子ノードに送信するというCode SegmentがThread Poolに次々に送られてくる。しかし、同時実行可能すうはCPUに依存するため、Client数が増えるに従ってThread Poolで実行されるのを待つ時間が増えていくのではないかと思われる。 - +サービスに参加するClientの数が増加するに連れて、時間が増加していく。これはトップノードがData Segmentを子ノードに送信するというCode SegmentがThread Poolに次々に送られてくる。しかし、同時実行可能数はCPUに依存するため、Client数が増えるに従ってThread Poolで実行されるのを待つ時間が増えていくのではないかと思われる。 +また、原因の一つにはSEDAがあげられる。SEDAはスループット重視の実装であるので、多段のパイプラインのせいでレスポンスが遅れてしまう。 % 今後の課題ではなくて、今のAPIの評価を行う \section{APIの評価} 現在、Aliceが提供されているAPIだけで分散プログラムを記述することが可能であったものの、改善したほうがよいAPIがある。 -\verb+setKey+ は呼ぶタイミングを気をつけなければ、NullPointerExceptionになる事がわかった。\verb+setKey+ 以降に処理を記述しても実行される前にactiveになってしまう可能性がある。従って\verb+setKey+ の方法を考えなおさなければならない。 +\verb+setKey+ はシンタックス的に問題がある。setKeyを呼部とData Segmentの取得を始める。そして必要なData Segmentが揃った時点でactiveになってしまうため、\verb+setKey+以降に処理を記述しても、その処理が実行される保証がない。コンストラクタ内でsetKeyを呼び出すのではなく、setKeyを行うメソッドを用意するなど工夫する必要がある。 \verb+peek+ でData Segmentを取得、\verb+put+ でData Segmentの追加を行なっているが、この際にMessage Pack\cite{3}でdecode / encodeの操作が行われている。 -他のClientに対してデータの送受信するために行う場合はやむを得ないが、local に送受信する際にも行なっている。localに対しての送受信はencode / decode 抜きに処理できるようにするのが望ましい。また +他のClientに対してデータの送受信するために行う場合はやむを得ないが、local に送受信する際にも行なっている。localに対しての送受信はencode / decode 抜きに処理できるようにするのが望ましい。 -\section{Aliceの問題点} -\subsection{Java} -Aliceの全てのData SegmentはKVSに格納され、実行時のData SegmentはCode Segmentが activeな時のみメモリ上にある。この最大値は同時にActive Taskの量を見積もれば良い。従って、AliceにGCは必要ない。一方で、KVS上のデータは決してGCの対象にならない。しかし、それではGCに付加をかけてしまう。 -\subsection{Key} -本実装ではData Segment相互の参照はKey経由となる。分散実装では妥当であるが、並列実装ではすべてのData SegmentをKVSに格納するのは性能的な問題を引き起こす。一方で、分散記述と並列記述がかけ離れてしまうのも好ましくない。また、本来はKVSは持続性を持つべきだと思われる。持続性をもつことで、トラブルで処理が途中で中断された場合であっても途中から処理を再開可能となる。 +\section{今後の課題} +{\bf Key} 本実装ではData Segment相互の参照はKey経由となる。分散実装では妥当であるが、並列実装ではすべてのData SegmentをKVSに格納するのは性能的な問題を引き起こす。一方で、分散記述と並列記述がかけ離れてしまうのも好ましくない。また、本来はKVSは持続性を持つべきだと思われる。持続性をもつことで、トラブルで処理が途中で中断された場合であっても途中から処理を再開可能となる。 \thispagestyle{fancy} \begin{thebibliography}{9} @@ -184,5 +182,7 @@ 赤嶺一樹, 河野真治. Meta engine を用いた federated linda の実験. 日本ソフトウェア科学会第 27 会大会, Sep 2010. \bibitem{3} 古橋 貞之,新城靖. 分散システムのためのメッセージ表現手法 に関する研究 システム情報工学研究科修士論文 +\bibitem{4} +Matt Welsh, David Culler, and Eric Brewer. Seda: an architecture for well-conditioned, scal- able internet services. SIGOPS Oper. Syst.Rev., Vol.35, No.5, pp. 230-243, 2001. \end{thebibliography} \end{document} diff -r 482339b9a9fb -r 580ce56d06c2 Draft/pic/NodeToClient.pdf Binary file Draft/pic/NodeToClient.pdf has changed diff -r 482339b9a9fb -r 580ce56d06c2 Draft/pic/dsandcs.pdf Binary file Draft/pic/dsandcs.pdf has changed diff -r 482339b9a9fb -r 580ce56d06c2 Draft/pic/result.pdf Binary file Draft/pic/result.pdf has changed