Mercurial > hg > Papers > 2009 > axmo-thesis
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 |