annotate resume/handout.tex @ 21:b08bada75d18

*** empty log message ***
author fuchita
date Wed, 20 Feb 2008 12:57:29 +0900
parents 0635935ce1f9
children 0805e6e510d4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
1 \documentclass[twocolumn, a4j, twoside]{jarticle}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
2 \usepackage{master_proc}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
3 %\usepackage[dvips]{graphicx}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
4 \usepackage[dvipdfm]{graphicx}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
5
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
6 % dvipdfm を使って PDF ファイルに日本語の栞をつける
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
7 % \usepackage[dvipdfm]{color}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
8 % \usepackage[dvipdfm,bookmarks=true,bookmarksnumbered=true,%
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
9 % bookmarkstype=toc]{hyperref}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
10
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
11 \jtitle{分散プログラミングモデル Federated Linda と 分散デバッグ} %和文タイトル
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
12 \etitle{Distributed Programming Model : Federated Linda and Distributed debugging}%英文タイトル
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
13 \author{渕田 良彦} %著者名
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
14 \studentid{068514D} %学籍番号
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
15 \teacher{河野 真治} %指導教官
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
16
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
17 \begin{document}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
18 \maketitle
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
19 \section{はじめに}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
20 並列・分散環境におけるプログラミングは、今後ますますその重要性が高まっていくと考えられる。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
21 しかし、分散プログラム開発において、スケーラビリティを確保することは難しい。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
22 スケーラビリティとは、参加ノードの数が小規模から大規模に変化しても性能が劣化しない
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
23 という性能基準のことを示す。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
24 %スケーラビリティ等を確保したまま、分散プログラムを正しく記述することやデバッグ
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
25 %を行う為に、これまで多くの分散プログラミングモデルが開発されてきたが、それらは
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
26 %遂次プログラミングモデルの延長であったり、アプリケーション開発者が複雑で理解しにくい
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
27 %記述を熟知しなければならなかった。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
28 そこで本研究室では、自然にスケールする分散プログラミン
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
29 グモデルを提供することを目的として Federated Linda を開発した。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
30 Federated Lindaは実験的に分散アルゴリズムを実装し、そのスケーラビリティを測る
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
31 ことができる分散プログラミングモデルである。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
32
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
33 本研究では、本研究室で開発した分散プログラミングモデル Federated Linda を用いた
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
34 分散アルゴリズムの記述事例として、Compact Routing の実装を行い、
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
35 その開発によって得られた知見から本モデルに必要な機能の拡張を提案する。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
36 本モデルへの機能拡張としてまず最初の段階で、Federated Linda の実装をC言語から
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
37 Java言語へと移行した。その上で、分散デバッグ機能について検討を行い、
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
38 実際に分散デバッグ機能を実装する。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
39 実装した分散デバッグ機能の評価として、Federated Linda での
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
40 分散アルゴリズムにおけるバグの特定を行い、その有用性を示す。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
41 \section{Federated Linda}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
42 Federated Lindaは本研究室で開発された非同期型Lindaで構築される。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
43 非同期型Lindaは、タプルというデータ単位をネットワーク上の「タプル空間」に
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
44 出し入れする事で通信を行うLindaという通信モデルを用い、その通信を、明確な
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
45 待ちを行わない非同期的な通信によって行う。しかし、集中型の通信を行う
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
46 非同期型Lindaはスケーラビリティをもたない。そこで、複数のタプル空間を接続し、
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
47 ノード間にてタプルを中継させる分散モデルとしてFederated Lindaを提案する。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
48 これによって、通信の集中型モデルから脱し、スケーラビリティを得る。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
49 また、分散プログラムにおける構成要素を、3つに分離することで、各要素毎に
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
50 切り替えが可能となり、ポータビリティが向上する。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
51
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
52 3つに分離されるFederated Lindaの構成要素には以下の3つがある。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
53 {\small
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
54 \begin{verbatim}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
55 Local Access Protocol
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
56 ・'in','read','out'といったLindaのAPI、ユーザープログラ
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
57  ムからの通信、プロトコルへのアクセス
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
58 Protocol Engine
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
59 ・分散アルゴリズムを内包するエージェントプログラム、タプル
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
60  空間から別ノードのタプル空間へとタプルを転送する
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
61 Link Configuration
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
62 ・タプル空間やProtocol Engineの接続をXMLで表し、そのXML
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
63 に沿ったコネクション確立処理を行う
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
64 \end{verbatim}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
65 }
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
66 Federated Lindaでは、玩具的に分散アルゴリズムを実装し、実験する事が可能であり、
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
67 その教育的な利用も考えられる。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
68
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
69 \section{Compact Routingの実装と評価}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
70 Federated Lindaにおける分散アルゴリズム、つまりProtocol Engineの実装として
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
71 Distance Vector Routingの実装が先行研究[1]によって行われた。これは、自ノードから
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
72 宛先ノードまで、距離が最短のルーティングを行う分散アルゴリズムであるが、ネットワーク
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
73 が複雑になるほど経路の情報量が増え、スケーラビリティに劣ると考えられた。よって
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
74 今回、階層型ルーティングを用いた、ルーティングテーブル収束速度や、ネットワーク
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
75 のスケーラビリティに対して優位な分散アルゴリズムである'Compact Routing'[3]の実装を
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
76 行った。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
77
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
78 評価としてDistance Vector RoutingとCompact Routingそれぞれにおけるルーティングテーブル構築
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
79 時間の比較を行い、表\ref{routingtime}に示す結果となった。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
80 \vspace{-7mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
81 \begin{table}[htbp]
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
82 \begin{center}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
83 \caption{ルーティングテーブル構築にかかる時間}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
84 \label{routingtime}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
85 {\small
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
86 \begin{tabular}{|c|c|c|}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
87 \hline \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
88 \multicolumn{3}{|c|}{Compact Routing} \\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
89 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
90 トポロジ & ノード数 & かかった時間(sec)\\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
91 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
92 Line & 10 & 1.19 \\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
93 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
94 Tree & 10 & 2.40 \\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
95 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
96 Line & 20 & 5.18 \\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
97 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
98 Tree & 20 & 6.95 \\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
99 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
100 Line & 30 & 7.56 \\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
101 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
102 Tree & 30 & 26.26 \\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
103 \hline \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
104 \multicolumn{3}{|c|}{Distance Vector Routing} \\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
105 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
106 トポロジ & ノード数 & かかった時間(sec)\\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
107 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
108 Line & 10 & 2.66 \\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
109 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
110 Tree & 10 & 4.54 \\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
111 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
112 Line & 20 & 89.66 \\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
113 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
114 Tree & 20 & 29.91 \\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
115 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
116 Line & 30 & 8634.50 \\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
117 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
118 Tree & 30 & 127.55 \\
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
119 \hline
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
120 \end{tabular}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
121 }
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
122 \end{center}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
123 \end{table}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
124 \vspace{-8mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
125
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
126 比較の結果、Distance Vector Routingではルーティングテーブル構築時間が、ノード
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
127 数の増加に対して大幅に増加する結果となったのに対し、Compact Routingでは、
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
128 階層型ルーティングを用い、ノード数の増加に対するルーティングテーブルのサイズや、
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
129 更新量を抑えることによってルーティングテーブルの構築時間が短くなる事を確認できた。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
130 以上の結果より、Compact RoutingはDistance Vector Routingよりもスケーラビリティに
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
131 優れる分散アルゴリズムであると言える。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
132 \vspace{-6mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
133 \subsection{問題点}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
134 今回の評価実験において、Distance Vector RoutingとCompact Routingの両実装を
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
135 格子状のメッシュ型トポロジにおいて用いた所、何らかのバグが原因と考えられる
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
136 問題点が明らかとなった。しかし、当時のFederated Lindaにおける開発環境が、多数の
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
137 ターミナルによって全プロセスを起動するテスト駆動開発であり、それらに対して逐次的
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
138 デバッグを行うことではバグ要因を特定する事は困難であった。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
139
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
140 よって、Federated Lindaの機能を拡張し、分散プログラム開発に適した'分散デバッグ機能'を
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
141 実装することを提案し、その機能の検討と実装を行った。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
142
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
143
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
144 \section{Java言語への移行と分散デバッグ機能の実装}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
145 \subsection{Java言語への移行}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
146 Federated Lindaへ分散デバッグ機能を実装する為に、これまでのC言語によるLindaサーバーや
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
147 Linda APIの実装を、Java言語での実装へ移行した。そのことにおける利点を以下に示す。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
148 {\small
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
149 \begin{verbatim}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
150 1. Java言語への移行において設計や仕様の見直しを行い、機能拡
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
151 張を行いやすい実装とする
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
152 2. オブジェクト指向、自動化されたリファクタリングを用いること
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
153 による開発の効率化
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
154 3. マルチプラットホームへの対応
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
155 4. デュアルスタック化によるIPv4/IPv6の同時接続に対応
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
156 \end{verbatim}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
157 }
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
158 %\vspace{-3mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
159 \subsection{分散デバッグ機能の検討}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
160 分散環境におけるプログラムのデバッグでは、多くの場合、逐次デバッガ(gdb等)を用いた
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
161 二分法でデバッグ可能である。しかし、通信の状態が全体に依存する場合では、単体のデバッグ
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
162 では全体の正しさをデバッグできないという状況が存在する。その状況を示した図を以下に示す。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
163 \vspace{-2mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
164 \begin{figure}[htbp]
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
165 \begin{center}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
166 \includegraphics[width=5.5cm]{fig/nonseqdeb.pdf}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
167 \vspace{-5mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
168 \caption{逐次デバッグが困難な通信の例}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
169 \label{nonseqdeb}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
170 \end{center}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
171 \end{figure}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
172 \vspace{-8mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
173
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
174 図\ref{nonseqdeb}に示す様に、通信が全体に影響し、その順序に任意性が存在する場合
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
175 (分散プログラムの非決定性)、逐次型デバッガによるデバッグを用いることは出来ない。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
176 よって、全体の通信を止めずにデバッグが行える仕組みが必要であると考える。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
177
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
178 \subsection{通信状態のデバッグ機能}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
179 Federated Lindaの分散デバッグ機能として、Java版Lindaサーバーの機能を拡張し、
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
180 通信状態のデバッグを、全体の通信を止める事無く行う機能を実装した。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
181 この機能は以下の2点からなる。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
182 \vspace{-3mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
183 {\small
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
184 \begin{verbatim}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
185 1. Federated Lindaにおける全体の通信を止める事無く、通信状
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
186 態のログを取得する機能
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
187 2. 取得したログを用いて通信状態を視覚的に表示し、ステップ実行
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
188 によって通信の状態を確認できるモニターツール
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
189 \end{verbatim}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
190 }
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
191 \vspace{-3mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
192
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
193 \section{評価}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
194 実装した分散デバッグ機能の評価として、以前デバッグが困難であった、格子状メッシュ型トポロジ
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
195 におけるルーティングアルゴリズムのデバッグを行った。用いた実験は以下の2つである。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
196 \vspace{-3mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
197 {\small
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
198 \begin{verbatim}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
199 ・6ノードの格子状メッシュ型トポロジにおけるDistance Vector
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
200 Routingのルーティングテーブル構築
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
201 ・6ノードの格子状メッシュ型トポロジにおけるCompact Routing
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
202 のルーティングテーブル構築
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
203 \end{verbatim}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
204 }
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
205 \vspace{-3mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
206 上記2点のFederated Lindaにおけるルーティングテーブル構築を行い、
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
207 その通信状態のログを取得した。その取得したログに対して、モニターツールを
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
208 用いた通信状態の確認よるデバッグを行い、バグ要因の特定を行う。その様子を
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
209 図\ref{exec1},図\ref{exec2}に示す。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
210
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
211 \begin{figure}[htbp]
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
212 \begin{tabular}{cc}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
213 \begin{minipage}{0.5\hsize}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
214 \begin{center}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
215 \includegraphics[width=4.25cm]{fig/debug1.pdf}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
216 \vspace{-5mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
217 \caption{トポロジ及び通信イベントの表示}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
218 \label{exec1}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
219 \end{center}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
220 \end{minipage}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
221 \begin{minipage}{0.5\hsize}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
222 \begin{center}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
223 \includegraphics[width=4.25cm]{fig/debug2.pdf}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
224 \vspace{-5mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
225 \caption{実行シーケンスでの転送タプル内容を表示}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
226 \label{exec2}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
227 \end{center}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
228 \end{minipage}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
229 \end{tabular}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
230 \end{figure}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
231
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
232 \subsection{バグ要因の発見}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
233 通信状態ログのモニターツールを用いてデバッグを行った結果、Link Configuratetionが
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
234 正常終了していない為に、ルーティングテーブル構築時の通信量が増えているというバグ要因を特定した。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
235
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
236 \newpage
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
237 このバグは、Distance Vector RoutingとCompact Routingの両実装に見られ、格子状のメッシュ型トポロジに
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
238 おける問題の原因となっていた。図\ref{bug}にその状況を示す。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
239
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
240 \vspace{-2mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
241 \begin{figure}[htbp]
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
242 \begin{center}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
243 \includegraphics[width=8.5cm]{fig/bug.pdf}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
244 \vspace{-5mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
245 \caption{別経路からのLink Configuration}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
246 \label{bug}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
247 \end{center}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
248 \end{figure}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
249 \vspace{-8mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
250
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
251 以上のことより、以前のFederated Linda における開発環境ではデバッグが困難な状況を、
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
252 通信状態のデバッグ機能を実装することによって解消したと評価する。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
253
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
254 \section{他の分散プログラミングモデルとの比較}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
255 Federated Lindaと他の分散プログラミングモデルとの比較を、Overlay Weaver, StarBEDを対象に行う、
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
256 以下にその結果を示す。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
257 \vspace{-2mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
258 \begin{figure}[htbp]
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
259 \begin{center}
21
b08bada75d18 *** empty log message ***
fuchita
parents: 20
diff changeset
260 \includegraphics[width=9cm]{fig/table2.pdf}
20
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
261 \vspace{-5mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
262 \caption{他の分散プログラミングモデルとの比較}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
263 \label{table}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
264 \end{center}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
265 \end{figure}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
266 \vspace{-8mm}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
267
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
268 \section{まとめと今後の課題}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
269 本研究では、自然にスケールする分散プログラミングモデルを実現する為、
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
270 実験的に分散アルゴリズムを実装し、スケーラビリティを測ること
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
271 ができる分散モデルとしてFederated Lindaを提案した。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
272 Federated Lindaにおける分散アルゴリズムの実装としてCompat Routingを実装し、評価した。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
273 また、その実装の経験から必要と分かった分散デバッグ機能について検討し、実装と評価を行った。
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
274 本研究における今後の課題としては、スナップショットを用いた分散デバッグ機能の実装が挙げられる
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
275
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
276 {\small
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
277 \begin{thebibliography}{9}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
278 \bibitem{dinamicrouting}安村 恭一, 河野 真治,
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
279 動的ルーティングによりタプル配信を行なう分散タプルスペース Federated Linda,
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
280 日本ソフトウェア科学会第22回大会, 2005.
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
281
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
282 \bibitem{dinamicrouting_compact}渕田 良彦, 河野 真治,
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
283 連邦型タプルスペースを使ったコンパクトルーティングの実験,
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
284 情報処理学会プログラミング研究会, 2007.
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
285
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
286 \bibitem{compactrouting}L. J . Cowen,
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
287 Compact Routing with Minimum Stretch, Proc. SODA’99, pp.255-260 (1999).
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
288
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
289 \end{thebibliography}
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
290 }
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
291
0635935ce1f9 Initial revision
fuchita
parents:
diff changeset
292 \end{document}