Mercurial > hg > Papers > 2014 > taninari-master
diff paper/chapter6.tex @ 26:aec4085dd5db
update
author | Taninari YU <you@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 04 Feb 2014 03:50:01 +0900 |
parents | 2d6118b66367 |
children | 7149e38f717c |
line wrap: on
line diff
--- a/paper/chapter6.tex Mon Feb 03 22:14:54 2014 +0900 +++ b/paper/chapter6.tex Tue Feb 04 03:50:01 2014 +0900 @@ -53,7 +53,7 @@ \end{lstlisting} \subsection{Capistrano} -今回の実験では、48台のサーバ上でCUI版のTreeVNCを立ち上げる必要がある。実験する度に、各サーバに一つ一つにログインしてアプリケーションを立ち上げるのは手間がかかりすぎてしまう。Capistranoを使用することで、この問題を解決することができる。\\ +今回の実験では、48台のサーバ上でCUI版のTreeVNCを立ち上げる必要がある。実験する度に、各サーバにログインしてアプリケーションを立ち上げるのは手間がかかりすぎてしまう。Capistranoを使用することで、この問題を解決することができる。\\ Capistranoは複数のサーバ上で同時に処理を実行するためのオープンソースなソフトウェアであり、Rubyを用いて作成されている。\\ Capistranoを実行する際に使用するスクリプトをListing\ref{src:capistrano}に示す。\\ @@ -75,9 +75,9 @@ \end{lstlisting} \section{木の深さによる遅延} -TreeVNCは、クライアントを木構造に配置し画像を配信している。\\ +TreeVNCは、クライアントを木構造に配置し画像を配信している。 木の深さが深くなってしまうと、データが下に届くまでに遅延が発生してしまう可能性がある。 -そこで、木の深さによる遅延がどの程度発生するのかを測定してみた。\\ +そこで、木の深さによる遅延がどの程度発生するのかを測定してみた。 \subsection{遅延の測定方法} RFBプロトコルでは、送られてくるデータの先頭にどのような処理をするかの命令番号が入っている。\\ 表\ref{tb:message}は送られてくるメッセージの一覧である。\\ @@ -97,10 +97,10 @@ \end{center} \end{table} -Listing\ref{src:delay_cli}、Listing\ref{src:delay_serv}は遅延を測るためのプログラムである。 -Root NodeはSystem.currentTimeMillis()を用いて時間を取得し、Nodeへ送信する。\\ -System.currentTimeMillis()は、システムの現在時刻をミリ秒(long型の数値)で取得する関数である。\\ -Nodeはこの値を受け取ると、そのままサーバへ受け取った値を返す。\\ +Listing\ref{src:delay_cli}、Listing\ref{src:delay_serv}は遅延を測るためのプログラムである。\\ +Root NodeはSystem.currentTimeMillis()を用いて時間を取得し、Nodeへ送信する。 +System.currentTimeMillis()は、システムの現在時刻をミリ秒(long型の数値)で取得する関数である。 +Nodeはこの値を受け取ると、そのままサーバへ受け取った値を返す。 Root Nodeはクライアントからの返信を受け取るとSystem.currentTimeMillis()を取り、差分を出してDelayを求める。 遅延を測る頻度は、画像を50回送信するごとに1回である。 \begin{lstlisting}[language=java,frame=lrbt,label=src:delay_cli,caption=遅延を測るプログラム,numbers=left] @@ -131,13 +131,26 @@ \end{center} \end{table} -並列計算環境のVMは高速なネットワークでつながっているので、遅延が少ない可能性がある。 -そこで、実際にOSの授業で、どの程度の遅延があるのかを測ってみた。\\ -OSの際は25Nodeであったので、段数にすると5段である。 -結果は、164ミリ秒と並列計算環境より良い結果が出た。\\ +\begin{figure}[!htbp] +\begin{flushleft} +\includegraphics[scale = 0.8]{images/graph-lost.pdf} +\end{flushleft} +\caption{ + 段差(step)によるデータの遅延 +} +\label{fig:graph-late} +\end{figure} +並列計算環境のVMは高速なネットワークでつながっているので、遅延が少ない可能性がある。 +そこで、実際にOSの授業で、どの程度の遅延があるのかを測定してみた。\\ +OSの授業のときは25Nodeであったので、段数にすると5段である。 +結果は、164ミリ秒と並列計算環境より良い結果が出た。 +図\ref{fig:graph-late} は遅延の分布を示したヒストグラムである。X軸は試行の回数で、Y軸は遅延(ミリ秒)を表している。\\ + + +\newpage \section{画面のフリーズ} データがTimeOutによってどの程度損失しているのかを調べてみた。\\ 今回、測定するために画像データのヘッダーの前にシリアルナンバーを付加した(Listing\ref{src:serial})。これによりNode側は、順番通りに画像が来なかった場合、データが損失したことを知ることができる。 @@ -175,9 +188,8 @@ \section{分木の最適化} 木の分木数が少ないほうが一つ一つのコンピュータにかかるCPU負荷が少なくなる。しかし、分木数を少なくしてしまうと、Nodeが増えたとき、木の深さが深くなり、データの伝搬に遅延が起こる可能性がある。 -上記の実験の結果、木の深さが6のときのデータ伝搬に平均139ミリ秒(0.139秒)の遅延しか起こっていなく、データの欠損も見られなかった。 +上記の実験の結果、木の深さが6のときのデータ伝搬に最遅446ミリ秒(0.446秒)の遅延しか起こっていなく、データの欠損も見られなかった。 分木数を変更してもコネクションの数はかわらないし、スイッチに対する負荷も変わらない。よって、100人程度で使用する場合は2分木が最適であるということがわかった。 -\newpage \section{ZRLEとZRLEEのデータ圧縮率の比較} 作成したTreeVNCでは、従来のVNCで使用されているエンコードを使用しておらず、独自で作成しているZRLEEエンコードを使用している。\\一見ZRLEは辞書が一つでZRLEEは辞書が一つ一つの画像データに付加されていて、データ量はZRLEEのほうが多くなってしまっている可能性があるので、ZRLEEとZRLEのデータ量にどの程度の差が出るのかを調べてみた。