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="&#x30b9;&#x30b1;&#x30fc;&#x30e9;&#x30d6;&#x30eb;&#x306a;&#x5206;&#x6563;&#x30d5;&#x30ec;&#x30fc;&#x30e0;&#x30ef;&#x30fc;&#x30af;&#x306e;&#x63d0;&#x6848;"/>
+<node CREATED="1312885303718" ID="Freemind_Link_197612844" MODIFIED="1312885307785" TEXT="FederatedLinda">
+<node CREATED="1312885308510" ID="Freemind_Link_1518808259" MODIFIED="1312885311298" TEXT="Linda &#x3068;&#x306f;"/>
+<node CREATED="1312885311581" ID="Freemind_Link_283464494" MODIFIED="1312885597004" TEXT="FederatedLinda &#x3068;&#x306f;"/>
+<node CREATED="1312885597457" ID="Freemind_Link_566508673" MODIFIED="1312885615246" TEXT="MetaEngine &#x3068;&#x306f;"/>
+<node CREATED="1312885616153" ID="Freemind_Link_1164866045" MODIFIED="1312885627596" TEXT="FederatedLinda &#x306e;&#x554f;&#x984c;&#x70b9;"/>
+</node>
+<node CREATED="1312885635552" ID="Freemind_Link_214281535" MODIFIED="1312885784115" TEXT="DataSegment &#x3092;&#x7528;&#x3044;&#x305f;&#x65b0;&#x8a2d;&#x8a08;">
+<node CREATED="1312885793774" ID="Freemind_Link_1192811976" MODIFIED="1312885832498" TEXT="MessagePack &#x306b;&#x3088;&#x308b;&#x30c7;&#x30fc;&#x30bf;&#x306e;&#x578b;&#x4ed8;&#x3051;"/>
+<node CREATED="1312885833204" ID="Freemind_Link_755248730" MODIFIED="1312885872736" TEXT="ProtocolEngine &#x306e;&#x4ee3;&#x308f;&#x308a;&#x306b; CodeSegment &#x3092;&#x5229;&#x7528;">
+<node CREATED="1312885880947" ID="Freemind_Link_843111860" MODIFIED="1312885886570" TEXT="&#x4e26;&#x5217;&#x5b9f;&#x884c;&#x304c;&#x53ef;&#x80fd;&#x306b;&#x306a;&#x308b;"/>
+</node>
+<node CREATED="1312885889435" ID="Freemind_Link_1890016354" MODIFIED="1312885909959" TEXT="Geometric Routing">
+<node CREATED="1312885912827" ID="Freemind_Link_1917397478" MODIFIED="1312885923983" TEXT="Configuration &#x306e;&#x8907;&#x96d1;&#x3055;&#x3092;&#x89e3;&#x6d88;"/>
+</node>
+<node CREATED="1312885926243" ID="Freemind_Link_1665377236" MODIFIED="1312885982783" TEXT="Key Value Store &#x306b;&#x5408;&#x308f;&#x305b;&#x305f; API"/>
+<node CREATED="1312885983801" ID="Freemind_Link_1794803767" MODIFIED="1312886398721" TEXT="CodeSegment &#x306e;&#x4f7f;&#x3044;&#x65b9;">
+<node CREATED="1312886403787" ID="Freemind_Link_948877136" MODIFIED="1312886420024" TEXT="InputDataSegment &#x3092;&#x6307;&#x5b9a;">
+<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 &#x3092;&#x6307;&#x5b9a;">
+<node CREATED="1312886500272" ID="Freemind_Link_853317480" MODIFIED="1312886510363" TEXT="Remote &#x306f;&#x81ea;&#x52d5;&#x7684;&#x306b; allocate"/>
+</node>
+<node CREATED="1312886706190" ID="Freemind_Link_1204743905" MODIFIED="1312886720129" TEXT="InputDataSegment &#x304c;&#x63c3;&#x3063;&#x305f;&#x3089;&#x5b9f;&#x884c;&#x958b;&#x59cb;"/>
+<node CREATED="1312886737412" ID="Freemind_Link_1120371754" MODIFIED="1312886785169" TEXT="&#x5b9f;&#x884c;&#x4e2d;&#x306e; CodeSegment &#x5185;&#x3067;&#x6b21;&#x306e; CodeSegment &#x3092; create &#x3059;&#x308b;"/>
+</node>
+<node CREATED="1312887291002" ID="Freemind_Link_192478749" MODIFIED="1312887307440" TEXT="&#x7af6;&#x5408;&#x7684;&#x306a; DataSegment &#x306e;&#x66f8;&#x304d;&#x51fa;&#x3057;">
+<node CREATED="1312887312539" ID="Freemind_Link_1025011380" MODIFIED="1312887324806" TEXT="MetaCodeSegment &#x304c;&#x53d6;&#x308a;&#x6271;&#x3046;"/>
+<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 &#x3092;&#x6301;&#x3063;&#x3066;&#x3044;&#x308b;"/>
+<node CREATED="1312887221067" ID="Freemind_Link_1611942594" MODIFIED="1312887246455" TEXT="&#x5b9f;&#x884c;&#x53ef;&#x80fd;&#x306a; CodeSegment &#x3092;&#x5404;&#x30d7;&#x30ed;&#x30bb;&#x30c3;&#x30b5;&#x30fc;&#x306b;&#x5272;&#x308a;&#x5f53;&#x3066;"/>
+</node>
+</node>
+<node CREATED="1312887379856" ID="Freemind_Link_615630569" MODIFIED="1312887383268" TEXT="&#x307e;&#x3068;&#x3081;">
+<node CREATED="1312887383993" ID="Freemind_Link_1445101485" MODIFIED="1312887393170" TEXT="&#x5b9f;&#x88c5;&#x65b9;&#x6cd5;">
+<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="&#x4eca;&#x307e;&#x3067;&#x306e; 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 謝辞}\
 %