changeset 7:bbd40ab63def

unicode...
author kazz <kazz@cr.ie.u-ryukyu.ac.jp>
date Wed, 25 Aug 2010 20:50:55 +0900
parents 791dea86a2ec
children f1a4957b9d98
files paper/jsst-kazz.tex
diffstat 1 files changed, 105 insertions(+), 105 deletions(-) [+]
line wrap: on
line diff
--- a/paper/jsst-kazz.tex	Wed Aug 25 20:44:46 2010 +0900
+++ b/paper/jsst-kazz.tex	Wed Aug 25 20:50:55 2010 +0900
@@ -4,122 +4,122 @@
 
 % Preamble
 %
-% $B!V%3%s%T%e!<%?%=%U%H%&%'%"!W;o$K7G:\$5$l$kO@J8$N>l9g!$<!$G(B
-% $B4,?t!$9f?t!$3+;O%Z!<%8!$=*N;%Z!<%8$r;XDj$9$k!%(B
+% 「コンピュータソフトウェア」誌に掲載される論文の場合,次で
+% 巻数,号数,開始ページ,終了ページを指定する.
 %\volNoPp{16}{5}{78}{83}
 
-% $B%o!<%/%7%g%C%W$K$h$k?dA&O@J8$N>l9g!$%o!<%/%7%g%C%WL>$r;XDj$9$k!%(B
-% \suisen{$B%o!<%/%7%g%C%WL>(B}
+% ワークショップによる推薦論文の場合,ワークショップ名を指定する.
+% \suisen{ワークショップ名}
 
-% $BFC=8$N>l9g!$FC=8$N%?%$%H%k$rM?$($k!%(B
-% \tokushu{$BFC=8$N%?%$%H%k(B}
+% 特集の場合,特集のタイトルを与える.
+% \tokushu{特集のタイトル}
 
-% $BBg2qO@J8$N>l9g!$(B\taikai $B$G3+:EG/$r;XDj$9$k!%$3$3$G;XDj$7$?G/$+$i(B
-% $BBg2q$N2s?t$O7W;;$5$l$k!%(B
+% 大会論文の場合,\taikai で開催年を指定する.ここで指定した年から
+% 大会の回数は計算される.
 \taikai{2010}
 
-% $B$3$3$K!$;HMQ$9$k%Q%C%1!<%8$rNs5s$9$k!%(B
+% ここに,使用するパッケージを列挙する.
 \usepackage[dvips]{graphics}
 
-% $B%f!<%6$,Dj5A$7$?%^%/%m$J$I$O$3$3$KCV$/!%$?$@$73X2q;o$N%9%?%$%k$N(B
-% $B:FDj5A$O86B'$H$7$FHr$1$k$3$H!%(B
+% ユーザが定義したマクロなどはここに置く.ただし学会誌のスタイルの
+% 再定義は原則として避けること.
 
 \begin{document}
 
-% $BO@J8$N%?%$%H%k(B
-\title{Meta Engine $B$rMQ$$$?(B Federated Linda $B$N<B83(B}
+% 論文のタイトル
+\title{Meta Engine を用いた Federated Linda の実験}
 
-% $BCx<T(B
-% $BOBJ8O@J8$N>l9g!$@+$HL>$N4V$K$OH>3Q%9%Z!<%9$rF~$l!$(B
-% $BJ#?t$NCx<T$N4V$OA43Q%9%Z!<%9$G6h@Z$k(B
+% 著者
+% 和文論文の場合,姓と名の間には半角スペースを入れ,
+% 複数の著者の間は全角スペースで区切る
 %
-\author{$B@VNf(B $B0l<y!!2OLn(B $B??<#(B
+\author{赤嶺 一樹 河野 真治
 %
-% $B$3$3$K%?%$%H%k1QLu(B ($B1QJ8$N>l9g$OOBLu(B) $B$r=q$/!%(B
+% ここにタイトル英訳 (英文の場合は和訳) を書く.
 %
 \ejtitle{Experiment of Federated Linda with Meta Engine}
 %
-% $B$3$3$KCx<T1QJ8I=5-(B ($B1QJ8$N>l9g$OOBJ8I=5-(B) $B$*$h$S(B
-% $B=jB0(B ($BOBJ8$*$h$S1QJ8(B) $B$r=q$/!%(B
-% $BJ#?tCx<T$N=jB0$O$^$H$a$F$h$$!%(B
+% ここに著者英文表記 (英文の場合は和文表記) および
+% 所属 (和文および英文) を書く.
+% 複数著者の所属はまとめてよい.
 %
-\shozoku{Kazuki Akamine}{$BN05eBg3XM}9)3X8&5f2J>pJs9)3X@l96(B}%
+\shozoku{Kazuki Akamine}{琉球大学理工学研究科情報工学専攻}%
 {Information Engineering Course, Faculty of Engineering Graduate School
 of Engineering and Science, University of the Ryukyus}
 %
-% $B=PE5>pJs$O(B \shutten $B$H$9$l$P=PNO$5$l$k!%(B
+% 出典情報は \shutten とすれば出力される.
 %\shutten
 %
-% $B<uIUG/7nF|!$5-;v%+%F%4%j$J$I$O<+F0E*$K@8@.$5$l$k!%(B
+% 受付年月日,記事カテゴリなどは自動的に生成される.
 %\uketsuke{1999}{8}{3}
 %
-% $B$=$NB>!$5SCm$KF~$l$k$b$N$,$"$l$P!$(B\note $B$K5-=R$9$k!%(B
-%\note{$B5SCm$KF~$l$kFbMF(B}
+% その他,脚注に入れるものがあれば,\note に記述する.
+%\note{脚注に入れる内容}
 }
 
 %
-% $BOBJ8%"%V%9%H%i%/%H(B
+% 和文アブストラクト
 \Jabstract{%
-$BK\8&5f<<$G$O!"J,;67?%?%W%k%9%Z!<%9$N<B83MQ$K(B Federated Linda $B$r(B
-$BDs0F$7!"<BAu$7$F$-$?!#=>Mh$N(B Federated Linda $B$O3F%N!<%I$N4V$KG[CV$5$l$?(B
-Protocol Engine $B$K$h$C$F8_$$$KO"7H$9$k$,!"%W%m%;%9$,0[$J$k$?$aL5BL$JDL?.(B
-$B$,B8:_$7$?!#$=$3$G(B Federated Linda $B$HF10l%W%m%;%9>e$GF0:n$9$k(B Meta Engine
-$B$rDs0F$7!"<BAu$7$F$-$?!#K\8&5f$G$O!"%/%i%9%?!<>e$G(B Meta Engine $B$rMQ$$$?<B(B
-$B83MQ%H%]%m%8!<$r9=C[$7!"(BMetaEngine $B$N;HMQNc$r<($9!#(B
+本研究室では、分散型タプルスペースの実験用に Federated Linda を
+提案し、実装してきた。従来の Federated Linda は各ノードの間に配置された
+Protocol Engine によって互いに連携するが、プロセスが異なるため無駄な通信
+が存在した。そこで Federated Linda と同一プロセス上で動作する Meta Engine
+を提案し、実装してきた。本研究では、クラスター上で Meta Engine を用いた実
+験用トポロジーを構築し、MetaEngine の使用例を示す。
 }
 %
-% $B1QJ8%"%V%9%H%i%/%H!JBg2qO@J8$K$OI,MW$J$7(B)
+% 英文アブストラクト(大会論文には必要なし)
 % \Eabstract{}
 %
 \maketitle
 
-\section{$B$O$8$a$K(B}
+\section{はじめに}
 
-twitter $B$r$O$8$a$H$9$kBg?M?t;22C7?(B Web $B%5!<%S%9$d(B MMORPG $B$J$I$NBg?M?t;2(B
-$B2C7?%j%"%k%?%$%`%M%C%H%o!<%/%2!<%`$,!"$3$l$^$G0J>e$KBg5,LO$J$b$N$H$J$C$F(B
-$B$$$/$?$a$K$O!"J,;6%M%C%H%o!<%/%W%m%0%i%`$NH/E8$,IT2D7g$G$"$k!#(B
+twitter をはじめとする大人数参加型 Web サービスや MMORPG などの大人数参
+加型リアルタイムネットワークゲームが、これまで以上に大規模なものとなって
+いくためには、分散ネットワークプログラムの発展が不可欠である。
 
-$B$7$+$7!"J,;6%M%C%H%o!<%/%W%m%0%i%`$K$*$1$k%9%1!<%i%S%j%F%#!<$N3NJ]$O(B
-$BFq$7$$!#$3$3$G8@$&%9%1!<%i%S%j%F%#!<$H$O!"%5!<%S%9$NBg$-$5$,A}$($?$H$-$K(B
-$B%5!<%P!<$J$I$N%j%=!<%9$rDI2C$9$k$3$H$N$_$G%5!<%S%9$N<A$r%j%K%"$K0];}$G$-(B
-$B$k$3$H$r;X$9!#(B
+しかし、分散ネットワークプログラムにおけるスケーラビリティーの確保は
+難しい。ここで言うスケーラビリティーとは、サービスの大きさが増えたときに
+サーバーなどのリソースを追加することのみでサービスの質をリニアに維持でき
+ることを指す。
 
-$B$9$J$o$AM}A[E*$J%b%G%k$O!"J#?t$N%5!<%P!<$r@\B3$9$k$3$H$GIi2Y$rJ,;6$7!"%/(B
-$B%i%$%"%s%H$N?t$K=>$C$F%5!<%S%9$,<+A3$K%9%1!<%k$9$k$b$N$G$J$/$F$O$J$i$J$$!#(B
+すなわち理想的なモデルは、複数のサーバーを接続することで負荷を分散し、ク
+ライアントの数に従ってサービスが自然にスケールするものでなくてはならない。
 
-$BNc$($P!"8=:_$NJ,;65;=Q$r=u$1$F$$$k(B Key-Value Store $B$J$I$G$O!"$9$Y$F$N%G!<(B
-$B%?$N%l%W%j%1!<%7%g%s$rJ#?tBfMQ0U$9$k$H$$$&<jK!$,$H$i$l$F$$$k!#(B
-$B$7$+$7$J$,$i!"Bg?M?t$,;22C$9$k%5!<%S%9$K$*$$$F!"A40w$,8D?M$N$H$"$k%G!<%?(B
-$B$r;}$C$F$$$kI,MW@-$O$J$$!#<+J,$H4XO"$N$"$k?MJ*$N>pJs$5$(<hF@$G$-$k$h$&$K(B
-$B$J$C$F$$$l$P$h$$$N$G$"$k!#$D$^$j!"A4%G!<%?$N%l%W%j%1!<%7%g%s$rMQ0U$9$kI,(B
-$BMW$O$J$/!"%5!<%P!<$,%/%i%$%"%s%H$NI,MW$J>pJs$H$O2?$+$rGD0.$7!">pJs$r<h<N(B
-$B$7$J$,$iEAHB$7$F$$$/I,MW$,$"$k!#(B
+例えば、現在の分散技術を助けている Key-Value Store などでは、すべてのデー
+タのレプリケーションを複数台用意するという手法がとられている。
+しかしながら、大人数が参加するサービスにおいて、全員が個人のとあるデータ
+を持っている必要性はない。自分と関連のある人物の情報さえ取得できるように
+なっていればよいのである。つまり、全データのレプリケーションを用意する必
+要はなく、サーバーがクライアントの必要な情報とは何かを把握し、情報を取捨
+しながら伝搬していく必要がある。
 
-$BK\8&5f<<$G$O!"%?%W%k%9%Z!<%9$r@)8f$9$k(B Linda $B%W%m%H%3%k$r:NMQ$7$?!#$5$i(B
-$B$K!"J#?tBf$N(B Linda $B%5!<%P!<$r@\B3$7$?%b%G%k$G$"$kJ,;67?%?%W%k%9%Z!<%9(B
-Federated Linda $B$rDs0F$7!"<BAu$7$F$-$?!#K\8&5f$G$O!"(BLinda $B$N%W%m%H%3%k$N(B
-$B8+D>$7$H!"(B Federated Linda $B$rMQ$$$?%"%W%j%1!<%7%g%s$N<BAu$r9T$$!"8=:_$N(B
-$B%7%9%F%`$NLdBjE@$r@v$$=P$9$3$H$K$9$k!#(B
+本研究室では、タプルスペースを制御する Linda プロトコルを採用した。さら
+に、複数台の Linda サーバーを接続したモデルである分散型タプルスペース
+Federated Linda を提案し、実装してきた。本研究では、Linda のプロトコルの
+見直しと、 Federated Linda を用いたアプリケーションの実装を行い、現在の
+システムの問題点を洗い出すことにする。
 
-\section{$B%2!<%`$NNcBj(B}
+\section{ゲームの例題}
 
-\subsection{$B?eB24[%2!<%`(B}\label{subsection:aquarium}
-$BK\8&5f$G$O!"%M%C%H%o!<%/%2!<%`$rNcBj$H$7$FMQ$$$k$3$H$K$7$?!#$=$N%2!<%`$O!"(B
-$BJ#?t$N%/%i%$%"%s%H$N%G%#%9%W%l%$$rJB$Y$F;HMQ$9$k!#3F%W%l%$%d!<$O(B1$BI$$:$D(B
-$B5{$N%*%V%8%'%/%H$,M?$($i$l!"$=$l$r<+M3$KA`:n$9$k$3$H$,=PMh$k!#$^$?!"5{$O(B
-$B2hLL$NC<$^$G0\F0$9$k$H!"<+J,$N2hLL>e$+$i$O>C$(!"NY$N%W%l%$%d!<$N2hLL$NC<(B
-$B$+$i5{$,=P$F$/$k!#(B
+\subsection{水族館ゲーム}\label{subsection:aquarium}
+本研究では、ネットワークゲームを例題として用いることにした。そのゲームは、
+複数のクライアントのディスプレイを並べて使用する。各プレイヤーは1匹ずつ
+魚のオブジェクトが与えられ、それを自由に操作することが出来る。また、魚は
+画面の端まで移動すると、自分の画面上からは消え、隣のプレイヤーの画面の端
+から魚が出てくる。
 
-TODO: $B$3$3$K%/%i%$%"%s%H$N2hLL$rJB$Y$??^$rF~$l$k!#(B
+TODO: ここにクライアントの画面を並べた図を入れる。
 
 
 \section{Federated Linda}
 
-\subsection{Linda $B$H$O(B}\label{subsection:linda}
-Linda $B$O!"%?%W%k%9%Z!<%9$H$$$&(B ID $B$G6h2h$5$l$?%G!<%?%9%H%"$K!"0J2<$N(B API
-($BI=(B\ref{tab:lindaapi})
-$B$rMQ$$$F%G!<%?$r=P$7F~$l$9$k$3$H$K$h$C$F!"30It$H$NDL?.$r9T$&J,;6%W%m%0%i(B
-$B%_%s%0%b%G%k$G$"$k!#(B
+\subsection{Linda とは}\label{subsection:linda}
+Linda は、タプルスペースという ID で区画されたデータストアに、以下の API
+(表\ref{tab:lindaapi})
+を用いてデータを出し入れすることによって、外部との通信を行う分散プログラ
+ミングモデルである。
 
 \begin{table}[htbp]
 \begin{center}
@@ -127,72 +127,72 @@
 \label{tab:lindaapi}
 \begin{tabular}[t]{|l|l|}
 \hline
-in(id)&$B%?%W%k6u4V$+$i<h$j=P$9!#(B\\&$B%?%W%k6u4V$K%?%W%k$O;D$i$J$$!#(B\\
+in(id)&タプル空間から取り出す。\\&タプル空間にタプルは残らない。\\
 \hline
-rd(id)&$B%?%W%k6u4V$+$i<h$j=P$9!#(B\\&$B%?%W%k6u4V$K%?%W%k$,;D$k!#(B\\
+rd(id)&タプル空間から取り出す。\\&タプル空間にタプルが残る。\\
 \hline
-out(id,data)&$B%?%W%k6u4V$K%?%W%k$rF~$l$k!#(B \\
+out(id,data)&タプル空間にタプルを入れる。 \\
 \hline
 \end{tabular}
 \end{center}
 \end{table}
 
-\subsection{Federated Linda $B$H$O(B}\label{subsection:fedlinda}
-Federated Linda $B$O(B Linda $B%5!<%P!<$rJ#?tBf!"Aj8_$K@\B3$9$k$3$H$K$h$C$F!"(B
-$BJ,;6%W%m%0%i%_%s%0$r<B8=$9$k!#3F%5!<%P!<$O!"@\B3$7$?(B Linda $B%5!<%P!<Fb$N(B
-$B%?%W%k%9%Z!<%9$X%G!<%?$N(Bin/out $B$r9T$&$3$H$K$h$C$F!"%G!<%?$rEAHB$9$k!#(B
+\subsection{Federated Linda とは}\label{subsection:fedlinda}
+Federated Linda は Linda サーバーを複数台、相互に接続することによって、
+分散プログラミングを実現する。各サーバーは、接続した Linda サーバー内の
+タプルスペースへデータのin/out を行うことによって、データを伝搬する。
 
 \begin{figure}[htbp]
 \begin{center}
 \scalebox{0.50}{\includegraphics{./pic/fedlinda.eps}}
 \end{center}
-\caption{Federate Linda $B$N@\B3%b%G%k(B}
+\caption{Federate Linda の接続モデル}
 \label{fig:fedlinda}
 \end{figure}
 
 
-\subsection{Meta Engine $B$H$O(B}\label{subsection:metaengine}
+\subsection{Meta Engine とは}\label{subsection:metaengine}
 
-Federated Linda $B$O!"%5!<%P!<4V$K@_CV$5$l$?!"(B Protocol Engine $B$H8F$P$l$k(B
-$B%W%m%0%i%`$K$h$C$F!"%?%W%k%9%Z!<%9$NA`:n$d!"B>%5!<%P!<$X$N%?%W%k$NEAHB$J$I$r9T$C$F$*$j!"(B
-$B%?%W%k%9%Z!<%9$H$OJL$N%W%m%;%9$H$7$F!"%5!<%P!<>e$KB8:_$7$F$$$?!#$7$+$7!"(B
-$BJL$N%W%m%;%9$G$"$k$?$a!"%?%W%k%9%Z!<%9$X$N%"%/%;%9$K$OF10l%5!<%P!<>e$G$"$C(B
-$B$F$b!"%=%1%C%HDL?.$rMQ$$$F$$$?!#(B
+Federated Linda は、サーバー間に設置された、 Protocol Engine と呼ばれる
+プログラムによって、タプルスペースの操作や、他サーバーへのタプルの伝搬などを行っており、
+タプルスペースとは別のプロセスとして、サーバー上に存在していた。しかし、
+別のプロセスであるため、タプルスペースへのアクセスには同一サーバー上であっ
+ても、ソケット通信を用いていた。
 
-$B$=$3$G!"K\8&5f<<$G$O!"(B Meta Engine $B$H8F$P$l$k%W%m%0%i%`$rDs0F$7<BAu$7$F(B
-$B$-$?!#(B Meta Engine $B$O!"(B $B%?%W%k%9%Z!<%9$HF10l%W%m%;%9>e$KAH$_9~$^$l$?(B
-Protocol Engine $B$G$"$k!#(B($BI=(B\ref{fig:fedlinda})$B$9$J$o$A!"%?%W%k%9%Z!<%9$H(B
-$BF1$8%a%b%j6u4V$K$"$k$?$a!"%=%1%C%HDL?.$rMQ$$$k$3$H$J$/D>@\(B Linda $B$N(B API
-$B$r;HMQ$7$F!"%?%W%k%9%Z!<%9$K%"%/%;%9$9$k$3$H$,=PMh$k!#(B
+そこで、本研究室では、 Meta Engine と呼ばれるプログラムを提案し実装して
+きた。 Meta Engine は、 タプルスペースと同一プロセス上に組み込まれた
+Protocol Engine である。(表\ref{fig:fedlinda})すなわち、タプルスペースと
+同じメモリ空間にあるため、ソケット通信を用いることなく直接 Linda の API
+を使用して、タプルスペースにアクセスすることが出来る。
 
-\section{Linda API $B$N8+D>$7(B}
-\subsection{update() API $B$NDI2C(B}\label{subsection:update}
-$B8=>u$N(B Linda API $B$G$O!"%?%W%kFb$N%G!<%?$r99?7$9$k$?$a$K$O(B in() $B$r<B9T$7(B
-$B$F%G!<%?$r<h$j=P$7$F:o=|$7$?$"$H$K!"(Bout() $B$r<B9T$7$F%G!<%?$r=q$-9~$`I,MW(B
-$B$,$"$C$?!#:#2s9M$($F$$$k?eB24[$NNcBj$G$b!"A`:n$,$"$C$?$H$-$K$O%?%W%k%9%Z!<(B
-$B%9$N:BI8>pJs$r:G?7$N%G!<%?$K99?7$9$kI,MW$,$"$k!#(B
+\section{Linda API の見直し}
+\subsection{update() API の追加}\label{subsection:update}
+現状の Linda API では、タプル内のデータを更新するためには in() を実行し
+てデータを取り出して削除したあとに、out() を実行してデータを書き込む必要
+があった。今回考えている水族館の例題でも、操作があったときにはタプルスペー
+スの座標情報を最新のデータに更新する必要がある。
 
-$B$=$3$G!":#2s!"?7$7$/(B update() API $B$rDI2C$9$k$3$H$K$7$?!#(Bupdate() $B$r<B9T(B
-$B$9$k$H!"8=:_B8:_$9$k%?%W%k$O:o=|$5$l!"?7$7$$%G!<%?$G>e=q$-$5$l$k!#(B
+そこで、今回、新しく update() API を追加することにした。update() を実行
+すると、現在存在するタプルは削除され、新しいデータで上書きされる。
 
-$B0z?t$O!"(B out() $B$HF1$8$/(B update(id,data) $B$N$h$&$K!"(B id $B$H(B data $B$rEO$9!#(B
+引数は、 out() と同じく update(id,data) のように、 id と data を渡す。
 
-\section{Meta Engine $B$rMQ$$$?%5!<%P!<$N@_7W$H<BAu(B}
-\subsection{$B%D%j!<7?%H%]%m%8!<$rMQ$$$?Ii2YJ,;6(B}\label{subsection:treetopology}
+\section{Meta Engine を用いたサーバーの設計と実装}
+\subsection{ツリー型トポロジーを用いた負荷分散}\label{subsection:treetopology}
 
-\section{$BI>2A(B}
-\subsection{update() API $B$N8!>Z(B}\label{subsection:updateverification}
-\subsection{$B%D%j!<7?%H%]%m%8!<$K$h$kIi2YJ,;6$N8!>Z(B}\label{subsection:treetopologyverification}
+\section{評価}
+\subsection{update() API の検証}\label{subsection:updateverification}
+\subsection{ツリー型トポロジーによる負荷分散の検証}\label{subsection:treetopologyverification}
 
 
-\section{$B$^$H$a$H:#8e$N2]Bj(B}
+\section{まとめと今後の課題}
 
 %
 \begin{adjustvboxheight} % needed only when Appendix follows
 \begin{thebibliography}{99}
-\bibitem{LS86} test %Lanin, V. and Shasha, D.$B!'(BA Symmetric Concurrent B-Tree
+\bibitem{LS86} test %Lanin, V. and Shasha, D.:A Symmetric Concurrent B-Tree
 %Algorithm,
-%Proc.\ 1986 Fall Joint Computer Conference, IEEE, 1986, pp.~380--389$B!%(B
+%Proc.\ 1986 Fall Joint Computer Conference, IEEE, 1986, pp.~380--389.
 \end{thebibliography}
 \end{adjustvboxheight} % needed only when Appendix follows