view 10.tex @ 7:624a45b40bfe

done.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 28 Mar 2009 13:45:19 +0900
parents
children 6be2afd7063c
line wrap: on
line source

\section{ Simulation}

デバッグプロトコルを実装するために、PCクラスタによるシミュレーション
を行なった。メタエンジン上にリングを構成し、その周回時間をパケットの
大きさを変えて調べる。これにより、リングを使うことによるデバッグの
ユーザへの応答性能と、デバッグを行なう情報を交換する時のパケットの
適切な大きさを調べることができる。これらの数値は、その時その時の
技術に依存している。

本稿では
分散通信に影響を最低限にするために、Ringで性能を評価する。
3台のLinda Server間でMeta Engineがデータをやり取りする場合
のUMLシーケンス図は
図\ref{ringthree}のようになる。
\begin{figure}[htbp]
\begin{center}
\includegraphics[scale=0.2]{fig/meta_ring_three.eps}
\caption{3台間の通信}
\label{ringthree}
\end{center}
\end{figure}

Ring では通信パケットは一つのみであり、デバッグ対象への
影響が小さい。
しかし、スナップショットや一時停止などの
デバッグ操作をするためには、全ノードを周回する必要がある。
%これはo(n)であり、十分にスケーラビリティがあるとは言えない。
%しかし、もっとも影響が少ない方法なので、どの程度まで使える
%かを測定することには意味がある。

ここでは、通信パケットの大きさを変えて、
3〜100までの台数でデータが1周(図\ref{metaring})する時間、
および1000周(図\ref{metaring1000})した時に掛かった時間を測定する。
前者では接続の手間を含む通信時間、後者では通信のみの時間を
計ることが出来る。

実験は、
琉球大学
情報工学科のクラスタ上(Core Duo 2GHz,メモリ1GB)で、
クラスタジョブ管理システム
Torqueを用いて行なった。
ネットワークはAlaxalA Gigabit Ethernet Switchで構成されている。
クラスタ自体は180台あるが、
安定して動作する100台までを使用して測定を行なった。

\begin{figure}[htbp]
\begin{center}
\includegraphics[scale=0.3]{fig/metaring1.eps}
\caption{接続を含む一周の時間}
\label{metaring}
\end{center}
\end{figure}

X軸が台数、Y軸がミリ秒、ラインの色が通信するデータサイズを表す。
両図から見てわかる通り、データの量にはあまり依存する事はなくほぼ同じラインを形作っている。
データを1周のみした場合は1サイクルあたり約14000ms、一台あたり約140ms掛かっている計算になる。
これは、TCPの接続時間がかなり大ききことを示している。1MB程度の通信を
隠すほど接続時間のオーバヘッドは大きい。
14秒はインタラクティブな
デバッガとしては容認できないと思われる。
従って、毎回、新しく接続するようなHTMLのような
通信を採用することはできないことがわかる。


\begin{figure}[htbp]
\begin{center}
\includegraphics[scale=0.3]{fig/metaring1000.eps}
\caption{千周の平均周回時間}
\label{metaring1000}
\end{center}
\end{figure}

それに対し1000周した際に掛かった時間は、1サイクルおよそ60ms、一台につき約0.6msとなっている。
これより、一度、接続してしまえば、
Meta Engine での通信は実際に100台程度のデバッグに使用するのに十分な性能を
持っていることが確認出来た。

パケット1KBから100KBまでの差は2倍程度であり、それ以上はパケットサイズに
リニアに時間がかかる。従って、数十KB程度以下にデータを抑えることは、
応答時間的には意味がない。