annotate federated-linda.ind @ 14:35f802ff2842 default tip

fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 24 Apr 2009 17:41:24 +0900
parents 624a45b40bfe
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 -title: 連邦型Lindaによる分散アルゴリズムをデバッグするためのメタプロトコル
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 --author: 赤嶺悠太, 小野雅俊, 河野真治
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
5 --はじめに
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
6
4
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
7 分散アプリケーションが多数開発されている近年、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
8 ノードやネットワークの動的な変化、故障、性能の多様性を考慮した
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
9 フレームワークが必要である。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
10 分散環境ではスケーラビリティを確保すること重要である。ここでの
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
11 スケーラビリティとはノードの規模の増大にも関わらず、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
12 アプリケーションの性能を維持できることを指す。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
13 分散アルゴリズムの作成には、論理的なプログラムの正しさだけでなく、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
14 スケーラビリティのデバッグを可能にする必要がある。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
15 つまり、デバッガ自体をスケーラブルに作る必要がある。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
16 そのため、分散
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
17 フレームワークとして本研究室が提案しているFederated Lindaに、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
18 スケーラビリティなデバッグを行う為のメタな通信を行うプロトコルエンジン
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
19 を設計し実装した。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
20
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
21 分散プログラムの
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
22 デバッグを行う際には通信は必須であるが、その通信によって
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
23 本来の通信に影響を及ぼす恐れがある。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
24 ここでは、スケーラビリティには若干問題があるが、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
25 本来の通信に影響を与えないように、一つのトークンをリング上に
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
26 流す方法を提案\cite{kono03f,kono03d}している。本論文ではPCクラスタ上で実際の通信を行ない、100台程度の
4
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
27 分散プログラムでの評価を行なった。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
28
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
29 --Scaleする分散プログラム
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
30
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
31 Internet 上で動作している分散プログラムは、例えば、DNS、
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
32 SMTP、NNTP、あるいは、さまざまなP2PやDHTなどがある。
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
33 これらのサービスで重要なのは、Scalability つまり、
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
34 サービスの規模が大きくなっても、応答速度などの要求仕様を
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
35 満たすことである。このようなプログラムは、一つのコンピュータ
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
36 に閉じた逐次型のプログラムや、マルチスレッドのプログラムとは
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
37 様相が異なる。
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
38
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
39 Federated Linda\cite{kono05b,kono05f} は、計算モデルが明解なLinda\cite{linda} を
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
40 複数接続することで、分散プログラムの作り方を明確なモデル
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
41 上で学ぶことができるようにするように設計されている。
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
42
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
43 我々は、この上で投票システムやCompact Routing\cite{Abraham04compactname-independent,kono08c} 等を
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
44 実装して来たが、分散プログラムは、それ自体が複雑なだけで
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
45 なく、デバッグ自体の困難さが問題であることがわかってきた。
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
46
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
47 最初の目標は、琉大情報工学科にある200台規模のPCクラスタ
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
48 上で、Federated Linda を用いた分散プログラムを作成し
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
49 デバッグすることである。
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
50
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
51 分散プログラムは正しい答えを出すだけでなく、Scalability
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
52 があるかどうかを調べることが必要である。PCクラスタ上の
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
53 デバッグでは、デバッグ自体に通信が必要であり、その通信が
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
54 Scalability に影響しないようにする必要がある。
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
55
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
56
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
57 --プロトコルエンジンとタプル空間
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
58
4
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
59 Federated Lindaとは、複数のタプル空間を相互に
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
60 結ぶプロトコルエンジンによって
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
61 接続する分散プログラミングモデルである。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
62 Lindaと同じAPIを持つが、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
63 Lindaが一つのタプル空間を共有するのに対し、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
64 Federated Lindaは複数のタプル空間を個別に持つ。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
65 クライアントのアクセス数に対応して、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
66 タプルスペースの数を増やし処理を分散させる事により、スケーラビリティを保つ。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
67
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
68 % タプルスペース内の情報はプロトコルエンジンが切断されても
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
69 % そこに残る。プロトコルエンジンは、再接続することにより、自然に
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
70 % 計算を再開できる。このように、Federated Linda は実際のインターネット
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
71 % 上で起きる通信切断に強いフレームワークとなっている。
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
72
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
73 % この耐切断性を実現するためには、タプルスペースの持続性(Persistency)
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
74 % が重要であるが、一方で、プロトコルエンジンが状態を持たないように
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
75 % することが望ましい。
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
76 % ってことは、プロトコルエンジンがトランザクションをサポート
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
77 % した方が良いってことだよな〜
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
78
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
79
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
80 --プログラミング例
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
81
4
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
82 Federated Lindaは以下の様にして通信を行う。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
83
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
84 \begin{itemize}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
85 \item public PSXLinda open(String \_host,int \_port)
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
86
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
87 Linda Serverに対し、接続を行う。引数はホスト名とポート番号をとる。返り値はタプルスペースの番号となる。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
88
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
89 \item public PSXReply in(int id)
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
90
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
91 タプルスペース番号より引数で指定したidのタプルの受け取りを要求する。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
92 受け取りは、返値のPSXReplyをチェックすることにより非同期に行なう。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
93 in では待ち合わせは行なわれない。Call back 形式でタプルを受け取る
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
94 ことも出来る。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
95
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
96 \item public PSXReply out(int id, ByteBuffer data)
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
97
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
98 引数で指定したidでByteBuffer内のデータを送信する。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
99
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
100 \item public int sync(long mtimeout)
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
101
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
102 接続しているLinda Serverとタプルの送受信のポーリングを行う。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
103
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
104 \end{itemize}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
105
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
106 Protocol Engineとはタプルスペースを介してデータをやり取りするEngineである。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
107 二つのサーバー間でやり取りを行う場合、以下のようなプログラムとなる。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
108 \begin{verbatim}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
109 FederatedLinda fdl;
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
110 PSXLinda getpsx;
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
111 PSXLinda sendpsx;
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
112 PSXReply in;
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
113 ByteBuffer data = ByteBuffer.allocate(10);
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
114
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
115 //通信を初期化する
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
116 fdl = FederatedLinda.init();
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
117 //データを取ってくるホストと受け渡すホストとの接続開始
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
118 getpsx = fdl.open("cs100",10000);
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
119 sendpsx = fdl.open("cs101",10001);
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
120 //取ってくるホストからinを指定してデータを取得
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
121 in = getpsx.in(10)
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
122 data = in.getData();
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
123 //受け渡すホストに対しデータとidを指定して同期
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
124 sendpsx.out(10,data);
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
125 fdl.sync();
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
126 \end{verbatim}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
127
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
128 callback のAPIも用意されていて、{\tt fdl.sync() } した時に、
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
129 {\tt in, rd} の結果が戻っていれば、そのcallback が実行される
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
130 ようになっている。
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
131
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
132 --デバッグするには?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
133
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
134 Federated Linda 上でデバッグする一つの方法は、デバッガ
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
135 からタプルスペースへ問い合わせの通信を行なうことである(図\ref{集中型デバッガ})。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
136 <center><img src="fig/comDebug.jpg" alt="集中型デバッガ"></center>
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
137
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
138 この方法では、Linda Serverのad-hocな改変が必要であり、
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
139 デバッガは各Linda Serverへ1対多の集中的な通信を行なう
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
140 必要がある。この方法では、デバッガはLinda Server への
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
141 直接の通信路を持つ必要があるが、分散環境では、ファイアウォール
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
142 などの関係で、それが可能であるとは限らない。
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
143
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
144 デバッグ自体は、
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
145 タプル空間に直接アクセス出来るプロトコルエンジンと
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
146 考えることができ、Federated Lindaのメタエンジン
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
147 ととらえることができる。メタエンジンのAPIを
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
148 Linda にそろえることにより、Linda Serverへの
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
149 ad-hoc な改変を、決まったAPI上のデバッグプロトコル
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
150 の設計にすることができる(図\ref{Debugger})。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
151 <center><img src="fig/debugger.jpg" alt="Debugger"></center>
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
152
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
153 デバッグ自体をScalableにして、分散計算への影響を少なく
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
154 するためには、デバッグ用の通信自体がScalable である必要が
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
155 ある。
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
156
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
157 それには、デバッグプロトコル自体が、Federated Linda に
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
158 よってScalable だと示されたプロトコルであることが望ましい。
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
159 つまり、最初に情報収集などに適したプロトコルをFederated
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
160 Linda で作成し、それをそのままデバッガのプロトコルに
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
161 採用できることが望ましい。
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
162 <center><img src="fig/obj2meta.jpg" alt="メタへの移行"></center>
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
163
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
164
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
165
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
166
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
167 --メタエンジン
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
168
4
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
169 デバッグ用の通信はLinda Server内部に直接アクセス出来なければ
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
170 ならない。これをLinda Server内のMeta Protocol Engine に
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
171 よって実現する(図\ref{メタエンジン})。
4
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
172
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
173 Meta Engine は、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
174 通常のFederatedLindaと同様のin/out APIを持つ。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
175 Meta Engine では、\verb+sync()+が、属するLinda Server
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
176 自体のポーリングを行なう。\verb+sync()+の間は、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
177 通信は行なわれず タプル空間は変化しない。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
178 Meta Engine は安全にタプル空間にアクセス出来る。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
179 Meta Engine のプログラムは、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
180 Linda Serverのメインループで指定することが出来、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
181 Server 毎に独自の動作をさせることが可能である。
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
182 <center><img src="fig/meta.jpg" alt="メタエンジン"></center>
4
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
183
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
184 --メタエンジンの実装
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
185
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
186 ここでの Linda Server は、Single Thread に実装されており、
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
187 Java nio のselect で待ち、通信パケットを受け取って処理する
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
188 というメインループを持っている。
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
189 メタエンジンは、このメインループを置き換える形で
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
190 実装した。つまり、メタエンジン自体が{\tt sync()}
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
191 しながらループするという構造を持っている(図\ref{メタエンジン})。
5
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
192
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
193 メタエンジンは、Linda serverの立ち上げ時、または、
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
194 メタエンジンそのものから、特殊なものに置き換えるAPI
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
195 を用意する。
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
196
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
197 APIは、通常のLindaのAPIだが、メタエンジンでは、
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
198 タプルスペースに対して直接アクセスする。
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
199
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
200 Single Thread Server上のメインループの一部として
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
201 実現されているので、タプルスペースをlockすることなく
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
202 自由にアクセスすることができる。ここでのLinda API
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
203 は{\tt in,rd}で待ち合わせしない仕様になっていて、
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
204 待ち合わせは、{\tt sync()}とポーリング、または、
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
205 call back によって実現されている。従って、
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
206 メインループの一部としても、{\tt in,rd}の待ち合わせ
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
207 によってデッドロックするようなことはない。
10a3bdd4166c intermidiate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
208
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
209
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
210 --分散プログラムのデバッグ手法
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
211
6
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
212 Federated Linda では、プロトコルエンジンは、
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
213 タプルスペース(Linda Server)から、
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
214 タプルを受け取って、それに計算を施して、
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
215 他のタプルスペースへ引き渡す。従って、
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
216 バグは、あるタプルを受け取って、どのような
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
217 タプルを出力するかというのを見ることになる。
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
218
6
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
219 個々のプロトコルエンジンの計算が正しくても、
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
220 大域的なエラーが起きる場合も存在するので、
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
221 個々の処理だけでなく、全体的な状態の情報も
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
222 必要となる場合がある。
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
223
6
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
224 通信状態を含めた大域的な状態は分散スナップショット
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
225 と呼ばれる。分散スナップショットを取ること自体に
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
226 通信が必要である。また、分散スナップショットは、
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
227 未来からの通信が含まれている場合は、
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
228 再実行可能でないことがある。再実行可能なスナップ
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
229 ショットを取るためには、通常の通信に制限をかける
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
230 ことが必要である。
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
231
6
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
232 デバッグプロトコルには、個々のTuple Space の情報収集
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
233 とともに、スナップショットを取る機能が必要である。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
234 スナップショットが取れれば、そのイメージを
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
235 調べることによりデッドロック検出も可能となる。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
236
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
237 Scalability の検証では、通信の集中を見つける必要がある。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
238 そのためには、タプルスペース側での通信のlogの監視を
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
239 行なう必要がある。すべてのlog情報を一ヶ所に集める
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
240 ことなく、通信の集中を調べる機能が必要である。
6
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
241
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
242 --デバッグプロトコル
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
243
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
244 分散環境で情報を集めるには、デバッグのための通信そのものが
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
245 分散プログラムになる。ここでは、PCクラスタ上でのシミュレーション
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
246 を想定して、ターゲットの通信を妨げないデバッグ通信を考える。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
247 200台規模では、単一のリング上の通信が良いと考えている。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
248
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
249 メタエンジン上にリングを構成し、デバッガフロントエンドは、
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
250 そのリングを通して、コマンドを送ったり情報を収集したりする
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
251 構成である(図\ref{Debugger})。
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
252
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
253 --Simulation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
254
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
255 デバッグプロトコルを実装するために、PCクラスタによるシミュレーション
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
256 を行なった。メタエンジン上にリングを構成し、その周回時間をパケットの
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
257 大きさを変えて調べる。これにより、リングを使うことによるデバッグの
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
258 ユーザへの応答性能と、デバッグを行なう情報を交換する時のパケットの
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
259 適切な大きさを調べることができる。これらの数値は、その時その時の
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
260 技術に依存している。
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
261
4
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
262 本稿では
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
263 分散通信に影響を最低限にするために、Ringで性能を評価する。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
264 3台のLinda Server間でMeta Engineがデータをやり取りする場合
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
265 のUMLシーケンス図は
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
266 図\ref{ringthree}のようになる。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
267 \begin{figure}[htbp]
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
268 \begin{center}
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
269 \includegraphics[scale=0.2]{fig/meta_ring_three.eps}
4
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
270 \caption{3台間の通信}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
271 \label{ringthree}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
272 \end{center}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
273 \end{figure}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
274
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
275 Ring では通信パケットは一つのみであり、デバッグ対象への
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
276 影響が小さい。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
277 しかし、スナップショットや一時停止などの
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
278 デバッグ操作をするためには、全ノードを周回する必要がある。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
279 %これはo(n)であり、十分にスケーラビリティがあるとは言えない。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
280 %しかし、もっとも影響が少ない方法なので、どの程度まで使える
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
281 %かを測定することには意味がある。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
282
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
283 ここでは、通信パケットの大きさを変えて、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
284 3〜100までの台数でデータが1周(図\ref{metaring})する時間、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
285 および1000周(図\ref{metaring1000})した時に掛かった時間を測定する。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
286 前者では接続の手間を含む通信時間、後者では通信のみの時間を
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
287 計ることが出来る。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
288
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
289 実験は、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
290 琉球大学
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
291 情報工学科のクラスタ上(Core Duo 2GHz,メモリ1GB)で、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
292 クラスタジョブ管理システム
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
293 Torqueを用いて行なった。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
294 ネットワークはAlaxalA Gigabit Ethernet Switchで構成されている。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
295 クラスタ自体は180台あるが、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
296 安定して動作する100台までを使用して測定を行なった。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
297
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
298 \begin{figure}[htbp]
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
299 \begin{center}
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
300 \includegraphics[scale=0.3]{fig/metaring1.eps}
4
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
301 \caption{接続を含む一周の時間}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
302 \label{metaring}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
303 \end{center}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
304 \end{figure}
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
305
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
306 X軸が台数、Y軸がミリ秒、ラインの色が通信するデータサイズを表す。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
307 両図から見てわかる通り、データの量にはあまり依存する事はなくほぼ同じラインを形作っている。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
308 データを1周のみした場合は1サイクルあたり約14000ms、一台あたり約140ms掛かっている計算になる。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
309 これは、TCPの接続時間がかなり大ききことを示している。1MB程度の通信を
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
310 隠すほど接続時間のオーバヘッドは大きい。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
311 14秒はインタラクティブな
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
312 デバッガとしては容認できないと思われる。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
313 従って、毎回、新しく接続するようなHTMLのような
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
314 通信を採用することはできないことがわかる。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
315
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
316
4
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
317 \begin{figure}[htbp]
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
318 \begin{center}
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
319 \includegraphics[scale=0.3]{fig/metaring1000.eps}
4
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
320 \caption{千周の平均周回時間}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
321 \label{metaring1000}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
322 \end{center}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
323 \end{figure}
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
324
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
325 それに対し1000周した際に掛かった時間は、1サイクルおよそ60ms、一台につき約0.6msとなっている。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
326 これより、一度、接続してしまえば、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
327 Meta Engine での通信は実際に100台程度のデバッグに使用するのに十分な性能を
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
328 持っていることが確認出来た。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
329
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
330 パケット1KBから100KBまでの差は2倍程度であり、それ以上はパケットサイズに
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
331 リニアに時間がかかる。従って、数十KB程度以下にデータを抑えることは、
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
332 応答時間的には意味がない。
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
333
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
334
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
335 --比較
4
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
336
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
337
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
338 本稿ではデバッグを行う為に通常通信とは他に、Metaで通信するMeta Protocol Engineを実装し評価した。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
339 今回は、スナップショットなどの実際のデバッグ機能を実装することは出来なかった。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
340 通信の実験においても、
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
341 同クラスタ上で別のRing通信や他のMetaLinda通信等があった場合の干渉の程度
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
342 などを測定する必要があると考えられる。
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
343
d428bfbe24de add yoko
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
344