comparison presen/presen.rst @ 11:4cd62fbbc89c

fix presen
author axmo
date Thu, 26 Feb 2009 20:46:08 +0900
parents 61923a48c02d
children
comparison
equal deleted inserted replaced
10:ac2713518049 11:4cd62fbbc89c
1 .. include:: s5defs.txt 1 .. include:: s5defs.txt
2 .. include:: <mmlalias.txt> 2 .. include:: <mmlalias.txt>
3 3
4 ================================================ 4 ====================================================
5 分散プログラムにおけるデバッグツールの設計と実装 5 分散プログラムにおけるデバッグツールの設計と実装
6 ================================================ 6 ====================================================
7 7
8 *発表者* 8 *発表者*
9 **小野雅俊** 9 **小野雅俊**
10 10
11 *指導教官* 11 *指導教官*
12 **河野真治** 12 **河野真治**
13 13
14 *所属* 14 *所属*
15 **琉球大学 工学部 情報工学科** 15 **琉球大学 工学部 情報工学科 並列信頼研**
16 16
17 17
18 18
19 研究の背景と目的 19 研究の目的
20 =================== 20 ===================
21 21
22 背景 22 - 分散アプリケーションの作成時に必要な事
23 23
24 - 分散プログラム作成時にクラスタのネットワーク上の問題を考慮する必要がある。 24 - プログラムの正しさ
25 25 - スケーラビリティを確保
26 - 分散プログラム用のデバッグ環境の必要性が増している。 26
27 27 - スケーラビリティとは
28 - その上でスケーラビリティを確保しなくてはならない。 28
29 29 - ノードの増減に対してアプリケーションの性能が左右されない
30 30
31 目的 31 .. raw:: html
32 32
33 - Federated Linda上で通常のタプル通信とは別にメタな通信を行うプロトロルエンジンの設計と実装 33 <center><font color="red" size="big">スケーラブルなデバッグをしたい</font></center>
34
35 Federated Lindaを用いて、Metaな通信を行うProtocol Engineを提案、実装
34 36
35 37
36 38 Linda
37 発表の流れ 39 ===========================
38 ====================== 40
39 41 - Linda
40 - Federated Linda 42
41 - Linda API (JAVA) 43 - idで番号されたデータ(タプル)をタプル空間を通してやり取りする。Lindaは非同期で動作する。
42 - Protocol Engine 44
43 - Meta Protocol Engine 45 .. raw:: html
44 - Meta Protocol Engineの性能評価 46
45 - 測定 47 <table border="1">
46 - まとめと今後の課題 48 <tr>
49 <td>in(id)</td>
50 <td>タプル空間からタプルを取り出し、データを残さない。</td>
51 </tr>
52 <tr>
53 <td>rd(id)</td>
54 <td>タプル空間からタプルを取り出し、データを残す。</td>
55 </tr>
56 <tr>
57 <td>out(id,out)</td>
58 <td>タプル空間にタプルを入れる。</td>
59 </tr>
60 </table>
61
62 .. image:: img/linda.jpg
63 :align: center
64 :width: 400px
65
47 66
48 Federated Linda 67 Federated Linda
49 =========================== 68 ===========================
50 69
51 - Linda
52
53 - idで番号されたデータ(タプル)をタプル空間を通してやり取りする。
54
55 .. image:: img/7.jpg
56 :align: center
57
58
59 Federated Linda
60 ===========================
61
62 - Federated Linda 70 - Federated Linda
63 71
64 - 複数のタプル空間を相互に接続する 72 - 複数のタプル空間を相互に接続する
65 73
66 .. image:: img/fedlinda.jpg 74 .. image:: img/flinda.jpg
67 :align: center 75 :align: center
76 :width: 600px
68 77
69 78
70 Linda API (JAVA) 79 Linda API (JAVA)
71 ======================== 80 ========================
72 81
73 - public PSXLinda open(String host,int port) 82 class FederatedLinda
74 83
75 - Linda Serverに対して接続を行う。 84 - PSXLinda open(String host,int port)
76 85
77 - public PSXReply in(int id) 86 - Linda Serverに対して接続を行う。返り値はタプルスペースの番号。
87
88 class PSXLinda
89
90 - PSXReply in(int id)
78 91
79 - 指定したIDのタプルの受け取りを要求する。 92 - 指定したIDのタプルの受け取りを要求する。
80 93
81 - public PSXReply out(int id, ByteBuffer data) 94 - PSXReply out(int id, ByteBuffer data)
82 95
83 - 指定したIDにByteBufferのデータを送信する。 96 - 指定したIDにByteBuffer内ののデータを送信する。
84 97
85 - public int sync(long mtimeout) 98 - int sync(long mtimeout)
86 99
87 - 接続しているServerとのタプルの送受信を行う。 100 - 接続しているServerとのタプルの送受信のポーリングを行う。
101
88 102
89 Protocol Engine 103 Protocol Engine
90 ======================= 104 =======================
91 105
92 - タプル空間とタプル空間のデータをやり取りする 106 - タプル空間とタプル空間のデータをやり取りする。
93 107
94 - 前述のAPIを用いた例題 108 - 二つのサーバー間を接続するProtocol Engine。
95 109
96 .. raw:: html 110 .. image:: img/uml2.jpg
97 111 :align: center
98 <table> 112 :width: 600px
99 <tr>
100 <td>
101
102 .. class::small
103
104 ::
105
106 fdl = FederatedLinda.init();
107
108 getpsx = fdl.open(localhost,10000);
109 sendpsx = fdl.open(localhost,10001);
110
111 in = getpsx.in(10);
112
113 data = in.getData();
114 sendpsx.out(10,data);
115
116 fdl.sync();
117
118 .. raw:: html
119
120 </td>
121 <td align="center">
122
123 .. image:: img/uml.jpg
124 :width: 360px
125
126 .. raw:: html
127
128 </td>
129 </tr>
130 </table>
131
132 113
133 Meta Protocol Engine 114 Meta Protocol Engine
134 ================================ 115 ================================
135 116
136 .. raw:: html 117 デバッグ用の通信は、直接Linda Server内にアクセス出来なければならない。
137 118
138 <table> 119 Meta Protocol Engineでこれを実現する。
139 <tr> 120
140 <td> 121 .. raw:: html
141 122
142 - 前述のProtocol Engineではデバッグを行う際に逐次Protocol Engineを用意する必要がある。 123 <table>
143 124 <tr>
144 - スケーラビリティを確保する為に、Linda Server内に直接Protocol Engineを追加する。 125 <td>
145 126
146 - Meta Protocol Engine 127 - 通常のFederated Lindaと同様のin/out APIを持つ。
147 128
148 - Protocol Engineと同じ様にServerに接続する事が出来る。 129 - Linda Server内部に直接アクセスする事が出来る。
149 130
150 - 追加されているサーバー自身にアクセスする事が出来る。 131 - 通常の通信とは違うMetaな通信を行う事が出来る。
151 132
152 - 通常の通信とは違うMetaな通信を行う事が出来る。 133 - Linda Server内のメインループで指定する事が出来る。
153 134
154 .. raw:: html 135 .. raw:: html
155 136
156 </td> 137 </td>
157 <td align="center"> 138 <td align="center">
158 139
159 .. image:: img/3.jpg 140 .. image:: img/meta.jpg
160 :align: center 141 :align: center
161 :width: 360px 142 :width: 360px
143
144 .. raw:: html
145
146 </td>
147 </tr>
148 </table>
149
150 性能測定
151 ==============================
152
153 RingでMeta Protocol Engineの性能を評価する。
154
155 .. raw:: html
156
157 <table>
158 <tr>
159 <td>
160
161 何故Ringか?
162
163 - 実装が簡単である。
164 - 通信パケットが少ない。
165 - 通信を行う経路が決まっている。
166 - 分散通信に余り影響を与えない。
167
168
169 .. raw:: html
170
171 </td>
172 <td align="center">
173
174 .. image:: img/5.jpg
175 :align: center
162 176
163 .. raw:: html 177 .. raw:: html
164 178
165 </td> 179 </td>
166 </tr> 180 </tr>
167 </table> 181 </table>
168 182
169 183
170 Meta Protocol Engineの性能評価 184 Meta Protocol Engineの性能評価
171 ============================== 185 ==============================
172 提案、実装したMeta Protocl Engineの性能を評価するため、Ringを用いて評価を行う。 186
173 187 デバッグ操作等を行うには、全ノードを周回する必要がある。
174 .. raw:: html 188
175 189 ノードの数と送る通信パケットのサイズを変更しながら、データが一周及び千週する通信時間を測定する。
176 <table> 190
177 <tr> 191 動作環境は以下の通り。
178 <td> 192
179 193 - クラスター、最大100台(CoreDuo 2GHz,メモリ1GB)
180 - Ring 194
181 195 - 180台の内安定して使えるクラスタが100台あまりだったため。
182 - 通信パケットは一つ。 196
183 - 通信を行う経路が決まっている。 197 - データサイズ 1KB、10KB、100KB、1MB
184 - 分散通信に余り影響を与えない。 198
185 199 - Torque
186 - 環境 200
187 201 - 複数人でクラスタを使う際に、ジョブの振り分けを行い他人との干渉を避ける事が出来る。
188 - クラスター、100台 202
189 - データサイズを1Kb〜1Mb 203
190 - Torqueを用いた 204
191 205 測定結果(一周)
192 .. raw:: html
193
194 </td>
195 <td align="center">
196
197 .. image:: img/5.jpg
198 :align: center
199
200 .. raw:: html
201
202 </td>
203 </tr>
204 </table>
205
206
207 測定結果
208 ======================== 206 ========================
209 207
210 .. raw:: html 208 .. raw:: html
211 209
212 <center>
213 <table> 210 <table>
214 <tr> 211 <tr>
215 <td align="center"> 212 <td align="center">
216 213
217 .. image:: img/metaring1.jpg 214 .. image:: img/metaring1.jpg
218 :align: center 215 :align: center
219 216 :width: 400px
220 .. raw:: html 217
221 218 .. raw:: html
222 <p><font size="5">一台あたり 約40ms<br /><br /> 219
223 open/closeの時間が影響</font></p> 220 </td>
224 221 <td>
225 </td> 222
223 - 掛かる時間は台数に応じてLinearに増加している。
224
225 - パケットのサイズが変化しても転送速度は違いは見られない。
226
227 - 一周のみなので、open/closeなど接続のコストが大きい。
228
229 - 実際の通信時間が接続コストに隠れていると考えられる。
230
231 .. raw:: html
232
233 </td>
234 </tr>
235 </table>
236
237 測定結果(千周)
238 ========================
239
240 .. raw:: html
241
242 <table>
243 <tr>
226 <td align="center"> 244 <td align="center">
227 245
228 .. image:: img/metaring1000.jpg 246 .. image:: img/metaring1000.jpg
229 :align: center 247 :align: center
230 248 :width: 400px
231 .. raw:: html 249
232 250 .. raw:: html
233 <p><font size="5">一台あたり 約0.6ms<br /> 251
234 open/closeの影響を受けない<br /> 252 </td>
235 デバッグ通信に耐えうる事が出来る</font></p> 253 <td>
236 </td> 254
237 </tr> 255 - 接続コストの影響が小さいため、通信のみの時間。
238 </table> 256
239 </center> 257 - 1MBのデータを100台で通信した場合の一台あたりの時間は約12ms
240 258
241 259 - Ringでのデバッグに使用するのに十分な性能を持っている。
242 まとめ 260
261
262 .. raw:: html
263
264 </td>
265 </tr>
266 </table>
267
268
269 まとめと今後の課題
243 ========================= 270 =========================
244 271
245 - 通常通信に影響を及ぼさない為、スケーラビリティを保持する為 272 - まとめ
246 Metaな通信を行うMeta Protocol Engineを提案した。 273
247 274 - デバッグ通信が通常通信に影響を及ぼさない様なMetaな通信を行うMeta Protocol Engineを提案した。
248 - デバッグを行う都度にProtocol Engineを用意する事なく 275 - Metaな通信速度からデバッグに使用するのに耐え得る性能を保持している。
249 Serverが増減しても対応出来る。 276
250 277 - 今後の課題
251 - Metaな通信速度からデバッグに使用するのに耐え得る性能を保持している。 278
252 279 - 同じクラスタ上で別のMeta Protocol Engineが動作している場合、相互に影響を及ぼさないか。
253 280 - 実際にMetaなタプルを通信した場合、通常の通信との影響はあるのか。
254 今後の課題 281 - Meta Protocol上でデバッグプロトコルを実際に実装してみる。
255 =======================
256
257 - 同じクラスタ上で別のMeta Protocol Engineが動作している場合、相互に影響を及ぼさないか。
258
259 - 実際にMetaなタプルを通信した場合、通常の通信との影響はあるのか。
260 282
261 283
262 ============== 284 ==============
263 285