Mercurial > hg > Papers > 2008 > fuchita-master
diff paper/evaluation.tex @ 6:d2f357e68afe
Chapter 5
author | fuchita |
---|---|
date | Thu, 14 Feb 2008 09:07:37 +0900 |
parents | c6eefabf35c0 |
children | f249657a801d |
line wrap: on
line diff
--- a/paper/evaluation.tex Thu Feb 14 07:26:47 2008 +0900 +++ b/paper/evaluation.tex Thu Feb 14 09:07:37 2008 +0900 @@ -123,7 +123,7 @@ そうなると本当の意味での同期が取られていないということになり、バグ再現の為の条件が一定の通信状態 を要求する場合において問題がある。 -\section{分散デバッグの機能} +\section{分散デバッグ機能の検討} これまで二分法による逐次アルゴリズムのデバッグと分散環境におけるデバッグの問題点を述べた。 ここでは、Federated Lindaに必要なデバッグ機能を提案するために、分散アルゴリズムにおいてデバッグ すべき要素を挙げ、それらをデバッグ可能な機能としてスナップショットを用いた分散デバッグを説明する。 @@ -233,8 +233,9 @@ ーフェースを用いるべきかを説明する。 \subsubsection{大域的なプログラム状態とは} -Federated Lindaにおける大域的なプログラム状態とは、各ノードのメモリ状態(あるいはそれに類するデータ -構造)を持つ事を第一としている。このメモリ状態を各スナップショットでのタイミングごとに正確に +Federated Lindaにおける大域的なプログラム状態には二つの要素があり、各ノードのメモリ状態 +(あるいはそれに類するデータ構造)を持つ事を第一としている。 +このメモリ状態を各スナップショットでのタイミングごとに正確に 取得することにより、プログラムの大域変数や局所変数を用いたバグの特定を可能とする。 例えば、 @@ -251,7 +252,7 @@ \begin{center} \begin{verbatim} スナップショット取得のタイミング = T -パケット受信先でのスナップショット取得のタイミング = T' +通信受信先でのスナップショット取得のタイミング = T' \end{verbatim} \end{center} } @@ -285,14 +286,76 @@ 説明した。ここでは、分散環境で取得したスナップショットをどのように用いてデバッグを行うべきかを 検討する。 +\subsubsection{スナップショットのモニターツールと逐次デバッガによるデバッグ} +スナップショットを取得した場合、そのスナップショット・ログは膨大である。 +よって、実際にスナップショット・ログからデバッグを行う為には様々な切り口で +情報を取捨選択できるモニターツールが必要であると考える。 +図\ref{snapdeb}にスナップショットのモニタツールを用いたデバッグの様子を示す。 +\begin{figure}[htbp] +\begin{center} +\includegraphics[width=12cm]{fig/pdf/snapdeb.pdf} +\caption{スナップショット・ログを用いたデバッグ} +\label{snapdeb} +\end{center} +\end{figure} + +上記の図ではスナップショット・ログより、大域的プログラム状態の項で +説明したプログラムのメモリー状態とスナップショット取得のタイミングにおける通信状態を同期させる +ことによってFederated Lindaの大域的状態を取得している。 +また、同期されたスナップショット・ログをモニタツールという、ユーザーが必要なデバッグ情報を取捨 +選択するツールを用いる事を考える。ユーザーはモニタツールを用いて(例えば二文法によるバグ箇所の +検知などを利用)、どのプロセスから出力と入力があったタプルにバグの原因があるのかを特定するこ +とができる。そうすれば、その後のバグの修正においては逐次デバッガによるデバッグが可能となる。 + +\subsection{分散デバッグ機能のスケーラビリティ} +全ノードに対してデバッグプロセスを走らせてデバッグを行うような +手法は、デバッグのインターフェースにおけるスケーラビリティを考慮してはいない。 + +事実、システム資源の異なるノードに対してネットワークを介したリモートデバッグの手法は +数多く開発されていても、それが大規模システムを想定した分散プログラムに対してスケーラビリティを +保ったままデバッグ可能という解を得てはいない。 + +Federated Lindaはタプルのリレーという、より分散プログラムを意識したモデルであることから、デバッグ +インターフェースの大域的状態の取得にもスケーラビリティを持った実装を目指す。 +その基本的なアイデアは、デバッグ情報を取得するインターフェースに対してもLindaプロトコルによるタプ +ルの伝搬を利用して実装するというものである。 + +下図\ref{FDLindaDebug}に示すように、Federated Lindaを用いたデバッグインターフェースは、デバッガ +プロセスからあるノードに対してデバッグ情報の取得を指示するオペレーションを発行し、デバッグ情報の +取得を行うデバッグプロトコルとしてタプル間を伝搬させる。 +デバッガが受け取る結果はFederared Linda内のスナップショットとしての大域的状態であり、それを元に +デバッグを行う。このような仕組みをとる事で、大規模な分散プログラム環境であってもスケーラビリティ +を保ったままデバッグを行う事が可能となる。 + +\begin{figure}[htbp] +\begin{center} +\includegraphics[width=14cm]{fig/pdf/FDLindaDebug.pdf} +\caption{スケーラビリティを意識したデバッグインターフェース} +\label{FDLindaDebug} +\end{center} +\end{figure} + +\section{通信状態デバッグインターフェースの実装} +ここまで、Federated Lindaを用いた分散環境環境における分散デバッグインターフェースの機能の検討 +を行った。その結果、Federated Lindaで用いられるべき分散デバッグインターフェースはスナップショット +を用いて、デッドロック、ライブロック、スケーラビリティ、通信の集中、大量のパケットの送信、といった +要素のデバッグを行う事が必要との結論を得た。 + +しかし、検討したスナップショットでのデバッグインターフェースの実装の為には、現実装の +Federated Lindaで用いられるProtocol Engineには更なる改良が必要である。なぜならば、現在のProtocol + Engineはルーティングテーブルを内部データとして保持することから、Federated Lindaの大域的状態を +取得するにはProtocol Engineまでのスナップショットが必要となるからである。 +これを解消する為にはProtocol Engineの内部状態をステートレスに実装し、その挙動はやり取りするXML +に全て埋め込むという実装が求められる。 + +本論文ではスナップショットではなく、前述した分散アルゴリズムにおいてデバッグすべき対象のうちから、 +通信の集中を検知するデバッグインターフェースについて実装を行った。 +このデバッグインターフェースを用いる事により、3章で提示したCompact Routingを用いるFederated Linda +において、meshトポロジで起こったデバッグ困難な通信の集中を伴う状態の検知を行う事を目標とする。 +以下にその実装の詳細を示す。 - %\subsection{分散デバッグ機能のスケーラビリティ} - - - -\section{通信状態のデバッグインターフェース} \subsection{Java版Linda サーバーへの機能実装} \begin{center}