Mercurial > hg > Papers > 2011 > kazz-jssst
changeset 10:4788fc826bbb
wirting new design
author | kazz <kazz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 10 Aug 2011 19:55:12 +0900 |
parents | 36bb3196031c |
children | 814d8ebcac76 |
files | alice.mm paper/kazz-jssst.tex |
diffstat | 2 files changed, 115 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/alice.mm Mon Aug 08 21:51:08 2011 +0900 +++ b/alice.mm Wed Aug 10 19:55:12 2011 +0900 @@ -37,6 +37,58 @@ </node> </node> </node> +<node CREATED="1312885269266" ID="Freemind_Link_1985948961" MODIFIED="1312885274303" POSITION="right" TEXT="Paper"> +<node CREATED="1312885278286" ID="Freemind_Link_275707742" MODIFIED="1312885303162" TEXT="スケーラブルな分散フレームワークの提案"/> +<node CREATED="1312885303718" ID="Freemind_Link_197612844" MODIFIED="1312885307785" TEXT="FederatedLinda"> +<node CREATED="1312885308510" ID="Freemind_Link_1518808259" MODIFIED="1312885311298" TEXT="Linda とは"/> +<node CREATED="1312885311581" ID="Freemind_Link_283464494" MODIFIED="1312885597004" TEXT="FederatedLinda とは"/> +<node CREATED="1312885597457" ID="Freemind_Link_566508673" MODIFIED="1312885615246" TEXT="MetaEngine とは"/> +<node CREATED="1312885616153" ID="Freemind_Link_1164866045" MODIFIED="1312885627596" TEXT="FederatedLinda の問題点"/> +</node> +<node CREATED="1312885635552" ID="Freemind_Link_214281535" MODIFIED="1312885784115" TEXT="DataSegment を用いた新設計"> +<node CREATED="1312885793774" ID="Freemind_Link_1192811976" MODIFIED="1312885832498" TEXT="MessagePack によるデータの型付け"/> +<node CREATED="1312885833204" ID="Freemind_Link_755248730" MODIFIED="1312885872736" TEXT="ProtocolEngine の代わりに CodeSegment を利用"> +<node CREATED="1312885880947" ID="Freemind_Link_843111860" MODIFIED="1312885886570" TEXT="並列実行が可能になる"/> +</node> +<node CREATED="1312885889435" ID="Freemind_Link_1890016354" MODIFIED="1312885909959" TEXT="Geometric Routing"> +<node CREATED="1312885912827" ID="Freemind_Link_1917397478" MODIFIED="1312885923983" TEXT="Configuration の複雑さを解消"/> +</node> +<node CREATED="1312885926243" ID="Freemind_Link_1665377236" MODIFIED="1312885982783" TEXT="Key Value Store に合わせた API"/> +<node CREATED="1312885983801" ID="Freemind_Link_1794803767" MODIFIED="1312886398721" TEXT="CodeSegment の使い方"> +<node CREATED="1312886403787" ID="Freemind_Link_948877136" MODIFIED="1312886420024" TEXT="InputDataSegment を指定"> +<node CREATED="1312886424587" ID="Freemind_Link_296328785" MODIFIED="1312886425453" TEXT="ID"/> +<node CREATED="1312886425698" ID="Freemind_Link_1117456351" MODIFIED="1312886434749" TEXT="MessagePackClass"/> +<node CREATED="1312886440672" ID="Freemind_Link_1061792106" MODIFIED="1312886442621" TEXT="Type"> +<node CREATED="1312886443361" ID="Freemind_Link_1288575730" MODIFIED="1312886454740" TEXT="Persistent"/> +<node CREATED="1312886455360" ID="Freemind_Link_1405304601" MODIFIED="1312886463396" TEXT="Local"/> +<node CREATED="1312886463760" ID="Freemind_Link_586643406" MODIFIED="1312886465420" TEXT="Remote"/> +</node> +</node> +<node CREATED="1312886487424" ID="Freemind_Link_682076087" MODIFIED="1312886493709" TEXT="OutputDataSegment を指定"> +<node CREATED="1312886500272" ID="Freemind_Link_853317480" MODIFIED="1312886510363" TEXT="Remote は自動的に allocate"/> +</node> +<node CREATED="1312886706190" ID="Freemind_Link_1204743905" MODIFIED="1312886720129" TEXT="InputDataSegment が揃ったら実行開始"/> +<node CREATED="1312886737412" ID="Freemind_Link_1120371754" MODIFIED="1312886785169" TEXT="実行中の CodeSegment 内で次の CodeSegment を create する"/> +</node> +<node CREATED="1312887291002" ID="Freemind_Link_192478749" MODIFIED="1312887307440" TEXT="競合的な DataSegment の書き出し"> +<node CREATED="1312887312539" ID="Freemind_Link_1025011380" MODIFIED="1312887324806" TEXT="MetaCodeSegment が取り扱う"/> +<node CREATED="1312887332913" ID="Freemind_Link_1371490640" MODIFIED="1312961883582" TEXT="OverWrite"/> +<node CREATED="1312887339785" ID="Freemind_Link_1543005272" MODIFIED="1312887343500" TEXT="Queue"/> +<node CREATED="1312887344064" ID="Freemind_Link_1563554174" MODIFIED="1312887346068" TEXT="Priority"/> +</node> +<node CREATED="1312887199275" ID="Freemind_Link_426035557" MODIFIED="1312887204286" TEXT="TaskManager"> +<node CREATED="1312887204907" ID="Freemind_Link_1741442260" MODIFIED="1312887217847" TEXT="CodeSegment List を持っている"/> +<node CREATED="1312887221067" ID="Freemind_Link_1611942594" MODIFIED="1312887246455" TEXT="実行可能な CodeSegment を各プロセッサーに割り当て"/> +</node> +</node> +<node CREATED="1312887379856" ID="Freemind_Link_615630569" MODIFIED="1312887383268" TEXT="まとめ"> +<node CREATED="1312887383993" ID="Freemind_Link_1445101485" MODIFIED="1312887393170" TEXT="実装方法"> +<node CREATED="1312887393841" ID="Freemind_Link_563412136" MODIFIED="1312887398363" TEXT="Java(Scala)"/> +<node CREATED="1312887399576" ID="Freemind_Link_1478830780" MODIFIED="1312887403251" TEXT="CbC"/> +<node CREATED="1312887403552" ID="Freemind_Link_324337094" MODIFIED="1312887406091" TEXT="C++"/> +</node> +</node> +</node> <node CREATED="1312620426720" ID="Freemind_Link_250769322" MODIFIED="1312620435104" POSITION="left" TEXT="今までの FederatedLinda"> <node CREATED="1312620436255" ID="Freemind_Link_1514220397" MODIFIED="1312620456026" TEXT="Level"> <node CREATED="1312620459711" ID="Freemind_Link_1952809264" MODIFIED="1312620464994" TEXT="Level.1">
--- a/paper/kazz-jssst.tex Mon Aug 08 21:51:08 2011 +0900 +++ b/paper/kazz-jssst.tex Wed Aug 10 19:55:12 2011 +0900 @@ -144,8 +144,70 @@ \end{enumerate} Polling base の場合は、通信が行われる都度、記述した Tuple の内容をチェックするため、負荷が大きくなる。そのため、 Callback function base を用いて記述する方が効率はよくなる。しかし、 Callback function 同士の繋がりがツリー状に構成されるため、利用者がそのツリー同士の接続管理を行わなくてはならない。また、 Callback function 間のデータの共有も難しい。 Callback function で記述されたコード群をシーケンシャルに読むことも難しくなる。 +\section{DataSegment を用いた新設計} +\label{"datasegment"} + +FederatedLinda の経験を踏まえて、新しい分散フレームワークの設計を行う。主なターゲットとしては、ネットワークゲームを考えている。 +ネットワークゲームで通信されるデータは色々な型を持っている。今までの FederatedLinda ではその型をうまく定義することが出来なかった。ここでは、 MessagePack \cite{MessagePack} を型付けに利用する。通信されるデータをここでは DataSegment と呼ぶ。 + +DataSegment はネットワーク上でやり取りされるので、その場所を表す ID を持っている。 FederatedLinda にはなかった Persistency を導入するために Persistent Storage Class を導入する。 DataSegment の ID に Persistent Storage Class を指定することにより、 Cassandra などのような分散データベースのレコードを直接指し示す。自サーバー上にある DataSegment は Local Storage Class を指定する。他のサーバー上にある DataSegment は Remote Storage Class を指定する。 + +DataSegment を処理するタスクを CodeSegment と呼ぶ。 CodeSegment はシングルスレッドでトランザクションに相当する。今までの FederatedLinda では、 ProtocolEngine と呼ばれていた部分である。 FederatedLinda の Callback による実行ではなく、 TaskManager により、 InputDataSegment がすべて揃った段階で実行される。 + +タスクは OutputDataSegment に書き込みを行うが、その ID が Remote の場合は、その DataSegment があるサーバーへ転送を行う。 これが FederatedLinda の out() に相当する。 + +\subsection{MessagePack によるデータの型付け} +\label{"msgpack"} + +FederatedLinda では、 Tuple の中の型は binary のみであったため、マシンごとに浮動小数点のフォーマットが異なっていたり、複数の変数をまとめて構造体として扱うことを、利用者がすべて管理する必要があった。 + +\subsection{ProtocolEngine の代わりに CodeSegment を利用} +\label{"codesegment"} + +\subsection{GeometricRouting} +\label{"routing"} + +\subsection{Key Value Store に合わせたAPI} +\label{"kvsapi"} + +\subsection{CodeSegment の使い方} +\label{"usecodesegment"} + +\subsubsection{InputDataSegment を指定} +\label{"inputdatasegment"} + +ID + +MessagePackClass +Type + Persistent + Local + Remote + +\subsubsection{OutputDataSegment を指定} +Remote は自動的に allocate + +\subsubsection{InputDataSegment が揃ったら実行開始} + +\subsubsection{実行中の CodeSegment 内で次の CodeSegment を生成する} + +\subsection{競合的な DataSegment の書き出し} +MetaCodeSegment が取り扱う + +OverWrite + +Queue + +Priority + +\subsection{TaskManager} +\label{"TaskManager"} +CodeSegment List を持っている +実行可能な CodeSegment を各プロセッサーに割り当て \section{まとめと今後の課題} - +Java(Scala) +CbC +C++ {\bf 謝辞}\ %