changeset 14:84e12a138c37

Add TreeVNC theory
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Sat, 13 Feb 2016 19:00:18 +0900
parents bcd8506cd151
children 1890002fd43b
files paper/main.pdf paper/main.tex
diffstat 2 files changed, 61 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
Binary file paper/main.pdf has changed
--- a/paper/main.tex	Fri Feb 12 16:59:01 2016 +0900
+++ b/paper/main.tex	Sat Feb 13 19:00:18 2016 +0900
@@ -107,7 +107,7 @@
     \begin{center}
         \includegraphics[scale=0.8]{./images/vnc.pdf}
     \end{center}
-    \caption{VNC}
+    \caption{VNCの構造}
     \label{fig:vnc}
 \end{figure}
 
@@ -134,14 +134,34 @@
 \end{figure}
 
 \section{TreeVNC の原理}
-TreeVNC のの原理を書く予定
-\begin{itemize}
-    \item 従来のVNC : Node数 * データ量
-    \item TreeVNC   : (2(子供の数) + 1) * データ量
-\end{itemize}
-% 従来のVNCはNode数に比例
-% TreeVNCはNode数に関係なく一定
-% 計算式 従来 N * データ量, TreeVNC (M+1) * データ量
+従来の VNC と TreeVNC の構造を比較を図\ref{fig:treeVncTheory}に示す。
+
+\begin{figure}[htbp]
+    \begin{center}
+        \includegraphics[scale=0.5]{./images/treeVncTheory}
+    \end{center}
+    \caption{構成される木構造}
+    \label{fig:treeVncTheory}
+\end{figure}
+
+表\ref{tb:treeVncTheory}はポート一本あたりの通信量である。
+通常の VNC の場合、クライアント数に比例してポート一本あたりの負荷が増えている。
+TreeVNC の場合は1つの Node に対して2台の Node が接続するため、クライアント数関係なく一定である。
+
+送信するデータ量も通常の VNC の場合 Node 数に比例した量のデータを送信する必要があり、 CPU に負荷がかかってしまう。
+それに対して TreeVNC はクライアントが増えても送信するデータはクライアント毎に分散されているため、1台の CPU に掛かる負荷は一定となる。
+そのため、性能が低下せずに画面配信を行うことが出来る。
+
+\begin{table}[htbp]
+    \begin{center}
+    \caption{ポート一本あたりの通信量(N はノード数)}
+    \begin{tabular}{|l|l|l|} \hline
+               & 通常の VNC   & TreeVNC \\ \hline
+        通信量 & N * データ量 & (2 + 1) * データ量 \\ \hline
+    \end{tabular}
+    \label{tb:treeVncTheory}
+    \end{center}
+\end{table}
 
 \section{圧縮形式}
 TreeVNC は ZRLEE\cite{taninari:2012a} というエンコードでデータのやり取りを行う。
@@ -189,7 +209,7 @@
 RFBプロトコルで提供されているメッセージに加え、 TreeVNC 独自のメッセージを使用している。
 TreeVNC で使用されるメッセージの一覧を表\ref{tb:message}に示す。
 
-\begin{table}[htb]
+\begin{table}[htbp]
     \caption{通信経路とメッセージ一覧}
     \scriptsize
     \begin{tabular}{|l|l|l|} \hline
@@ -337,6 +357,8 @@
 そのため、 TreeVNC が複数のネットワーク別に木構造を構成することが可能となる。
 
 \chapter{NAT 対応}
+\section{遠隔地からの接続}
+TreeVNC は 木構造を所属しているネットワークでしか生成しておらず
 \section{DirectConnection}
 遠隔地からでもゼミや授業に参加できるよう、 NATを越えたネットワークから TreeVNC への接続を可能にした。
 
@@ -360,7 +382,7 @@
     \end{center}
 \end{figure}
 
-\chapter{TreeVNC の追加機能}
+\chapter{TreeVNC のリファクタリング}
 \section{マルチディスプレイ対応}
 画面配信側のPCがマルチディスプレイの場合 VNC サーバーからは複数の画面全体の画像データが送信されてしまう。
 授業やゼミ等でTreeVNCを使用する場合、複数画面の表示は必要ない。
@@ -393,7 +415,6 @@
 切り替えが完了した後に、 現在配信中の画面を停止し、画面の切替を行う。
 切り替え用のスレッドを用意することで、配信状況を維持したままスムーズな画面切り替えが可能になった。
 
-\section{ネックになっているノードへの対処}
 
 \section{クライアントへのエラー通知}
 TreeVNC には接続しているクライアントへのエラーの通知を行うことが出来なかった。
@@ -437,44 +458,56 @@
 データ計算方法を以下の Code \ref{calc}に記述する。 この変数 time は CHECK\_DELAY\_REPLY に付いている CHEKC\_DELAY の送信時刻である。
 
 \begin{lstlisting}[label=calc, caption=遅延時間の計算方法]
-    Long delay = System.currentTimeMillis() - time;
+Long delay = System.currentTimeMillis() - time;
 \end{lstlisting}
 
 \section{結果}
 バイナリツリーで木を構成した場合、 Node 数が17台だと深さが4となる。
 各木構造の階層毎に、画像データの伝搬にかかった時間を測定した。
 
-図\ref{fig:depth1}は遅延の分布を示した散布図である。
+図\ref{fig:depth1}, \ref{fig:depth2}, \ref{fig:depth3}, \ref{fig:depth4}は遅延の分布を示した散布図である。
 X軸はメッセージ伝達にかかった秒数(ms)、 Y軸は画像データのサイズ(Byte)である。
 
 画像データの伝達はほぼ1秒以内に収まっているが、容量が小さい場合でも時間がかかる場合がある。
 それはその送信の前に大容量の画像を送信した後の回線のDelayが残っているためだと考えられる。
 
 また、深さ3で極端に遅い場合がある。 遅い原因として、1つの Node がボトルネックになっていることが判明している。
-このような極端に遅い Node をそのまま木に配置した場合、その Node の子 Node 以下に影響を及ぼす場合がある。
-そのため、遅い Nodeを検出して、木の最後尾に移動させる機能が必要である。
+このような極端に遅い Node をそのまま木に配置した場合、その Node の子 Node 以下に影響を及ぼすおそれがある。
 
-\begin{figure}[ht]
+\begin{figure}[htbp]
     \begin{center}
-        \includegraphics[scale=0.8]{./images/depth1.eps}
+        \includegraphics[scale=0.7]{./images/depth1.eps}
     \end{center}
-    \begin{center}
-        \includegraphics[scale=0.8]{./images/depth2.eps}
-    \end{center}
-    \caption{深さ1,2のデータサイズと遅延の関係}
+    \caption{データサイズと遅延の関係 : 深さ1}
     \label{fig:depth1}
 \end{figure}
 
-\begin{figure}[ht]
+\begin{figure}[htbp]
     \begin{center}
-        \includegraphics[scale=0.8]{./images/depth3.eps}
+        \includegraphics[scale=0.7]{./images/depth2.eps}
     \end{center}
-    \begin{center}
-        \includegraphics[scale=0.8]{./images/depth4.eps}
-    \end{center}
-    \caption{深さ3, 4のデータサイズと遅延の関係}
+    \caption{データサイズと遅延の関係 : 深さ2}
     \label{fig:depth2}
 \end{figure}
+
+\begin{figure}[htbp]
+    \begin{center}
+        \includegraphics[scale=0.7]{./images/depth3.eps}
+    \end{center}
+    \caption{データサイズと遅延の関係 : 深さ3}
+    \label{fig:depth3}
+\end{figure}
+
+\begin{figure}[htbp]
+    \begin{center}
+        \includegraphics[scale=0.7]{./images/depth4.eps}
+    \end{center}
+    \caption{データサイズと遅延の関係 : 深さ4}
+    \label{fig:depth4}
+\end{figure}
+
+\section{ボトルネックになっているノードへの対処}
+
 % 今後の課題
 
 \chapter{まとめ}