Mercurial > hg > Papers > 2010 > jsst-kazz
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