# HG changeset patch # User Nozomi Teruya # Date 1430811458 -32400 # Node ID e13be99f69b69ae302d357781b2c4726c114165b # Parent 0127effb8fcd2dc1801f50c83e32bc169a96dc5d can't view graphix correct place diff -r 0127effb8fcd -r e13be99f69b6 paper/chapter3.tex --- a/paper/chapter3.tex Tue May 05 15:36:41 2015 +0900 +++ b/paper/chapter3.tex Tue May 05 16:37:38 2015 +0900 @@ -1,8 +1,8 @@ -\chapter{Aliceの新機能} \label{chapter:chapter3} +\section{Aliceの新機能} 水族館の例題によって、Aliceを用いて分散プログラムを記述可能であることを確認した。 次に実用的なアプリケーションであるTreeVNCをAlice上で実装することで、Aliceに必要な機能を洗い出した。 -\section{Dynamic Topologyへの対応} +\subsection{Dynamic Topologyへの対応} 第2章で示したように分散フレームワークAliceはTopology Fileを読み込むことでTopologyを構成する。 つまり、予め参加するノードの台数が決まっている必要がある。また、Topologyに全ノードが参加するまでアプリケーションが起動しない。 @@ -10,7 +10,7 @@ そこで、AliceにDynamic Topology Managerを追加した。 Dynamic Topologyの場合は、新しくTopology Nodeがアプリケーションに参加するたびにTopology ManagerからTopology Nodeに対して、接続すべきTopology Nodeの情報がputされ接続処理が順次行われる。 -\section{Keep Alive} +\subsection{Keep Alive} ノード間の通信は、Remote DSMに対してputやpeekを行うことでのみ発生する。アプリケーション次第では長時間通信が行われない可能性がある。通信が行われない間にRemote DSMとの接続が切れた場合、次の通信が行われるまで切断を発見することができない。また、接続状態ではあるが問題が発生し、応答に時間がかかる場合も考えられる。 以上の問題を検知するためにアプリケーションではKeep Aliveという、定期的にheart beatを送り生存確認を行う機能を持つことが望ましい。そこで、Alice自体にKeep Aliveの機能を実装した。 @@ -76,7 +76,7 @@ ClosedEventCodeSegmentを継承したCode Segmentに、Input Data Segmentを追加記述する事ができる。 その際は、もちろんInput Data Segmentが全て揃うまでCode Segmentは実行されない。 -\section{Topologyの再構成} +\subsection{Topologyの再構成} ノードは永続的にアプリケーションに参加し続ける訳ではない。目的を果たすとアプリケーションから離脱する。 Topology次第では、アプリケーションに支障をきたす。 例えば、AliceVNCは木構造であるため、子ノードを持つノードがアプリケーションから離脱した場合、その子ノードに対してデータを送信することができなくなる。 @@ -124,7 +124,7 @@ \item お互いにRemote DSMの名前を贈り合い、Remote DSMが利用可能になる。 \end{enumerate} -\section{再接続の処理} +\subsection{再接続の処理} MMORPGでは、試合の最中に障害などによりサーバーから離脱したユーザーが、試合が終わるまでに再びサーバーに接続してきた場合に、再びその試合に参加できるような再接続の処理が用意されている。 分散にアプリケーションでは、MMORPGの例のように再接続してきたノードに対して通常の処理とは別の処理を行わせたい場合がある。そこで、Aliceに再接続してきたノードに、任意のCode Segmentを実行できる機能を追加した。ユーザーはconfigにCode Segmentを継承したClassを登録することで、再接続時に実行されるCode Segmentを指定することができる。 @@ -133,7 +133,7 @@ \lstinputlisting[label=src:StartAquarium, caption=再接続に実行するCode Segmentの登録方法]{source/StartAquariumFX.java} \end{table} -\section{Multicast Data Segment} +\subsection{Multicast Data Segment} TreeVNCには、Multicastを利用して起動しているTreeVNCのRoot Nodeの情報の一覧にして表示する接続先自動検索システムという機能がある。この機能によりTreeVNCの起動の際にIPアドレスを入力する手間を省くことができる。 現在のAliceは起動時にTopology ManagerのIPアドレスを入力する必要があり、TreeVNCの接続先自動検索機能が必要と考えられる。 @@ -179,4 +179,6 @@ \begin{table}[htbp] \lstinputlisting[label=src:Receivemessage, caption=multicast DSMに対してsetKeyを行う]{source/ReceiveTask.java} -\end{table} \ No newline at end of file +\end{table} + +\subsection{圧縮機能} \ No newline at end of file diff -r 0127effb8fcd -r e13be99f69b6 paper/chapter5.tex --- a/paper/chapter5.tex Tue May 05 15:36:41 2015 +0900 +++ b/paper/chapter5.tex Tue May 05 16:37:38 2015 +0900 @@ -1,153 +1,3 @@ -\chapter{分散フレームワーク Alice の評価} \label{chapter:chapter5} -この章では第\ref{chapter:chapter4}章で行った効果の測定、先行研究であるFedarated Lindaとの性能比較を行い、評価を行う。TreeVNCとAliceVNCの比較をコードの観点からも評価を行う。 - -\section{機能の確認} -水族館の例題でノードを意図的に切断した結果トポロジーの再構成が行わることを確認した。 -そして、切断したノードが再接続を行えることを確認した。 -また、再接続の挙動を変更するAPIによりMMORPGにあるような、前回の魚の位置から再開させることに成功した。 - - -\section{並列環境の改善効果の測定} -第\ref{chapter:chapter4}章 の並列環境における改善効果をbitonic sortによる実験によって測定を行なう。 - -\subsubsection{実験環境} -コア数が少ないマシンでは、同時に走るCode Segmentが少ないことから、メニコア環境で実験を行った。 -\begin{table}[htbp] -\caption{実行環境の詳細} -\label{tb:MacPro} -\begin{center} -\begin{tabular} {|l|l|} - \hline - {\bf CPU}&Intel Xeon E5-1650 v2 @3.50GHz\\ - \hline - {\bf 物理コア数}&6\\ - \hline - {\bf CPU キャッシュ}&12MB\\ - \hline - {\bf Memory}&16GB\\ - \hline -\end{tabular} -\end{center} -\end{table} -\subsubsection{実験結果} -100万の要素をもつ配列のSortにかかる時間を計測する。同時に走るCode Segmentが物理コア数と同じになるように、分割数は4個で行った。 - -\begin{table}[html] -\caption{bitonic sortの結果} -\label{tb:result3} -\begin{center} -\begin{tabular}{|l|l|l|} -\hline - & 改善前 & 改善後 \\ - \hline - 実行時間 (ms)& 164.8 & 112.1 \\ -\hline -\end{tabular} -\end{center} -\end{table} - -\section{分散環境の改善効果の測定} -第\ref{chapter:chapter4}章 の分散環境における改善効果をリングトポロジーによる実験によって測定を行なう。 -また、先行研究であるFederated Lindaとの比較も行う。 - -\subsubsection{実験概要} -リングのトポロジーを構成し、メッセージが 100 周する時間を計り、1周あたりの平均時間を求める実験である。(図 \ref{fig:topologyring}) - -\begin{figure}[htbp] - \begin{center} - \includegraphics[width=120mm]{images/topologyring.pdf} - \end{center} - \caption{100周にかかる時間を計測し、1周あたりの平均時間を求める} - \label{fig:topologyring} -\end{figure} - -実験では、トポロジーの構築時間は実験に含めてはいない。 - -\subsubsection{実験環境} -学科にある共用のブレードサーバ上の仮想マシンによる仮想クラスタ環境を用いて実験を行った。他の利用者とリソースが競合しないためにTORQUEジョブスケジューラを利用している。 - -ブレードサーバーと仮想マシンの性能はそれぞれ表 \ref{tb:blade}、表 \ref{tb:virtual}である。 - -\begin{table}[htbp] -\caption{ブレードサーバーの詳細} -\label{tb:blade} -\begin{center} -\begin{tabular} {|l|l|} - \hline - {\bf マシン台数}&8台\\ - \hline - {\bf CPU}&Intel(R) Xeon(R) X5650 @ 2.67GHz\\ - \hline - {\bf 物理コア数}&12\\ - \hline - {\bf 論理コア数}&24\\ - \hline - {\bf CPU キャッシュ}&12MB\\ - \hline - {\bf Memory}&132GB\\ - \hline -\end{tabular} -\end{center} -\end{table} - -\begin{table}[htbp] -\caption{仮想クラスタの詳細} -\label{tb:virtual} -\begin{center} -\begin{tabular} {|l|l|} - \hline - {\bf マシン台数}&48台\\ - \hline - {\bf CPU}&Intel(R) Xeon(R) X5650 @ 2.67GHz\\ - \hline - {\bf 物理コア数}&2\\ - \hline - {\bf 仮想コア数}&4\\ - \hline - {\bf CPU キャッシュ}&12MB\\ - \hline - {\bf Memory}&8GB\\ - \hline -\end{tabular} -\end{center} -\end{table} - - -\subsubsection{改善効果とFederated Lindaとの比較} -データのサイズは10Bと100KBで実験を行った。10Bの結果は図\ref{fig:compare_10B}、100KBの結果は図\ref{fig:compare_100KB}である。 -\begin{figure}[htbp] - \begin{center} - \includegraphics[width=140mm]{images/compare_10B.pdf} - \end{center} - \caption{10 bytes のデータを 100 周させたときの 1 周にかかる平均時間} - \label{fig:compare_10B} - - \begin{center} - \includegraphics[width=140mm]{images/compare_100KB.pdf} - \end{center} - \caption{100 Kbytes のデータを 100 周させたときの 1 周にかかる平均時間} - \label{fig:compare_100KB} -\end{figure} - -10Bと100KBの両方の結果でAliceに行った改善の効果を確認することができる。 -45台を使用した実験では10Bの小さいパットの場合では17%、100KBの大きいパケットの場合では12%程度高速化することができた。 -Federated Lindaと改善後の比較では、10Bの場合でAliceのほうが20%程遅い。しかし、100KBの場合ほとんど差がないことがわかる。 - -\subsubsection{TCP\_NODELAY有無の比較} -TCPはデフォルトで、Nagleアルゴリズムを使用している。Nagleアルゴリズムは、小さいパケットを集めてまとめて送信することで、送信するパケット数を減らし効率性をあげるアルゴリズムである。このアルゴリズムの有無により実験結果に影響はないことを確認した。 - -\section{考察} -今回の結果から、Aliceは先行研究であるFederated Lindaと同等の性能を持つことが確認できた。 -また、並列性能の改善と分散性能の改善の両方に効果があることを確認できた。 -両方に共通して行った改善として、複数のSEDAのステージをまとめて1つのステージにしたことがあげられる。 -SEDAが実行結果に大きく影響を与えていることが分かる。 - -10Bの実験でFederated Lindaに及ばない理由としてもSEDAが原因と考えられる。 -リングの実験は並列処理を行なう部分がないシーケンシャルな実験であるため、全ての処理は直列的に実行される。SEDAによるThreadの切り替えが発生する分Aliceの実行速度は遅くなる。 -100KBの実験ではData Segmentの送受信にかかる時間に比べ、Threadの切り替えの時間が無視できる程度小さいため、Federated Lindaと同じグラフとなる。 - -AliceがFederated Lindaに対して優位な点は、マルチコアによる並列実行である。従って、複数のCode Segmentが同時に走る実験では、小さなパケットの場合でもFederated Lindaに勝つことができると予想される。 - \section{TreeVNCとのCodeの比較} ここでは授業向け画面共有システムであるTreeVNCとそれをAlice上で実装したAliceVNCをソースコードの面から比較した。 TreeVNCとAliceVNCのソースコードに対してwcを行い、TightVNCからどの程度コードが増加しているかを調べた。(表\ref {tb:diffwordCount}) diff -r 0127effb8fcd -r e13be99f69b6 paper/sigos.dvi Binary file paper/sigos.dvi has changed diff -r 0127effb8fcd -r e13be99f69b6 paper/sigos.log --- a/paper/sigos.log Tue May 05 15:36:41 2015 +0900 +++ b/paper/sigos.log Tue May 05 16:37:38 2015 +0900 @@ -1,4 +1,4 @@ -This is e-pTeX, Version 3.1415926-p3.4-110825-2.6 (utf8.euc) (TeX Live 2013) (format=platex 2014.4.14) 5 MAY 2015 15:30 +This is e-pTeX, Version 3.1415926-p3.4-110825-2.6 (utf8.euc) (TeX Live 2013) (format=platex 2014.4.14) 5 MAY 2015 16:35 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -77,6 +77,21 @@ LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <10> not available (Font) Font shape `JY1/gt/m/n' tried instead on input line 880. ))) +(/usr/local/texlive/2013/texmf-dist/tex/latex/graphics/color.sty +Package: color 2005/11/14 v1.0j Standard LaTeX Color (DPC) + +(/usr/local/texlive/2013/texmf-dist/tex/latex/latexconfig/color.cfg +File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive +) +Package color Info: Driver file: dvipdfmx.def on input line 130. + +(/usr/local/texlive/2013/texmf-dist/tex/latex/dvipdfmx-def/dvipdfmx.def +File: dvipdfmx.def 2013/05/27 v3.2 LaTeX graphics driver for dvipdfmx (TeX Live +/ChoF) +) +(/usr/local/texlive/2013/texmf-dist/tex/latex/graphics/dvipsnam.def +File: dvipsnam.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR) +)) (/usr/local/texlive/2013/texmf-dist/tex/latex/graphics/graphicx.sty Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR) @@ -93,19 +108,12 @@ (/usr/local/texlive/2013/texmf-dist/tex/latex/latexconfig/graphics.cfg File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live ) -Package graphics Info: Driver file: dvipdfm.def on input line 91. - - -! LaTeX Error: File `dvipdfm.def' not found. - -Type X to quit or to proceed, -or enter new name. (Default extension: def) - -Enter file name: +Package graphics Info: Driver file: dvipdfmx.def on input line 91. ) \Gin@req@height=\dimen139 \Gin@req@width=\dimen140 -) (/usr/local/texlive/2013/texmf-dist/tex/latex/url/url.sty +) +(/usr/local/texlive/2013/texmf-dist/tex/latex/url/url.sty \Urlmuskip=\muskip10 Package: url 2006/04/12 ver 3.3 Verb mode for urls, etc. ) @@ -148,69 +156,70 @@ (/usr/local/texlive/2013/texmf-dist/tex/latex/listings/lstmisc.sty File: lstmisc.sty 2007/02/22 1.4 (Carsten Heinz) ) - -! LaTeX Error: File `dummy.tex' not found. - -Type X to quit or to proceed, -or enter new name. (Default extension: tex) - -Enter file name: -(./sigos.aux) +(./dummy.tex) (./sigos.aux) \openout1 = `sigos.aux'. -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 32. -LaTeX Font Info: ... okay on input line 32. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 32. -LaTeX Font Info: ... okay on input line 32. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 32. -LaTeX Font Info: ... okay on input line 32. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 32. -LaTeX Font Info: ... okay on input line 32. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 32. -LaTeX Font Info: ... okay on input line 32. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 32. -LaTeX Font Info: ... okay on input line 32. -LaTeX Font Info: Checking defaults for JY1/mc/m/n on input line 32. -LaTeX Font Info: ... okay on input line 32. -LaTeX Font Info: Checking defaults for JT1/mc/m/n on input line 32. -LaTeX Font Info: ... okay on input line 32. +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 33. +LaTeX Font Info: ... okay on input line 33. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 33. +LaTeX Font Info: ... okay on input line 33. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 33. +LaTeX Font Info: ... okay on input line 33. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 33. +LaTeX Font Info: ... okay on input line 33. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 33. +LaTeX Font Info: ... okay on input line 33. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 33. +LaTeX Font Info: ... okay on input line 33. +LaTeX Font Info: Checking defaults for JY1/mc/m/n on input line 33. +LaTeX Font Info: ... okay on input line 33. +LaTeX Font Info: Checking defaults for JT1/mc/m/n on input line 33. +LaTeX Font Info: ... okay on input line 33. \c@lstlisting=\count111 LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <14.4> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 85. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 82. LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <14.4> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 85. +(Font) Font shape `JY1/gt/m/n' tried instead on input line 82. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <10.95> on input line 85. +(Font) <10.95> on input line 82. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <8> on input line 85. +(Font) <8> on input line 82. LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <12> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 85. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 82. LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <12> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 85. - - -LaTeX Font Warning: Font shape `JT1/mc/m/sc' undefined -(Font) using `JT1/mc/m/n' instead on input line 85. - - -LaTeX Font Warning: Font shape `JY1/mc/m/sc' undefined -(Font) using `JY1/mc/m/n' instead on input line 85. - +(Font) Font shape `JY1/gt/m/n' tried instead on input line 82. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <7> on input line 85. +(Font) <7> on input line 82. LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <9> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 99. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 96. LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <9> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 99. -[1 +(Font) Font shape `JY1/gt/m/n' tried instead on input line 96. + [1 ] +File: images/remote_datasegment.pdf Graphic file (type pdf) + LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <7> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 130. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 117. LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <7> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 130. - [2] (./source/StartCodeSegment.java +(Font) Font shape `JY1/gt/m/n' tried instead on input line 117. + +Overfull \hbox (10.66351pt too wide) in paragraph at lines 130--131 +[]\OT1/cmtt/m/n/9 void update(String managerKey, String key, + [] + + +Overfull \hbox (1.21362pt too wide) in paragraph at lines 135--136 +[]\OT1/cmtt/m/n/9 void take(String managerKey, String key) + [] + + +Overfull \hbox (1.21362pt too wide) in paragraph at lines 140--141 +[]\OT1/cmtt/m/n/9 void peek(String managerKey, String key) + [] + +(./source/StartCodeSegment.java LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <8> not available (Font) Font shape `JT1/gt/m/n' tried instead on input line 1. LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <8> not available @@ -223,39 +232,41 @@ LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <8> not available (Font) Font shape `OMS/cmsy/m/n' tried instead on input line 1. ) -(./source/TestCodeSegment.java) -Overfull \hbox (53.18802pt too wide) in paragraph at lines 185--186 -[]\OT1/cmtt/m/n/9 void put(String managerKey, String key, Object val) - [] - - -Overfull \hbox (67.36285pt too wide) in paragraph at lines 186--187 -[]\OT1/cmtt/m/n/9 void update(String managerKey, String key, Object val) - [] - - -Overfull \hbox (10.66351pt too wide) in paragraph at lines 211--212 +(./source/TestCodeSegment.java) [2] +Overfull \hbox (10.66351pt too wide) in paragraph at lines 194--195 []\OT1/cmtt/m/n/9 void setKey(String managerKey, String key) [] -[3] (./chapter2.tex -Overfull \hbox (6.058pt too wide) in paragraph at lines 2--4 +[3] +Overfull \hbox (6.058pt too wide) in paragraph at lines 233--235 []\OT1/cmr/m/n/9 AliceVNC \JY1/mc/m/n/9 は 、 当研究室で開発を行 っ ている \OT1 /cmr/m/n/9 TreeVNC [] -) [4] (./sigos.aux) +File: images/vnc.pdf Graphic file (type pdf) + +Overfull \hbox (22.76657pt too wide) in paragraph at lines 240--241 + [] + [] -LaTeX Font Warning: Some font shapes were not available, defaults substituted. +File: images/treestructure.pdf Graphic file (type pdf) + +Overfull \hbox (136.57759pt too wide) in paragraph at lines 248--249 + [] + [] + +[4] (./sigos.aux) + +LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. ) Here is how much of TeX's memory you used: - 2678 strings out of 494008 - 35822 string characters out of 6154472 - 195195 words of memory out of 5000000 - 6129 multiletter control sequences out of 15000+600000 + 2952 strings out of 494008 + 40365 string characters out of 6154472 + 198399 words of memory out of 5000000 + 6393 multiletter control sequences out of 15000+600000 17628 words of font info for 68 fonts, out of 8000000 for 9000 745 hyphenation exceptions out of 8191 - 33i,10n,58p,1180b,1457s stack positions out of 5000i,500n,10000p,200000b,80000s + 33i,11n,58p,1163b,1465s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on sigos.dvi (4 pages, 28632 bytes). +Output written on sigos.dvi (4 pages, 29600 bytes). diff -r 0127effb8fcd -r e13be99f69b6 paper/sigos.pdf Binary file paper/sigos.pdf has changed diff -r 0127effb8fcd -r e13be99f69b6 paper/sigos.tex --- 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}