# HG changeset patch # User Tatsuki IHA # Date 1455357618 -32400 # Node ID 84e12a138c3760e1f0e2dd328c740214c5a06aa4 # Parent bcd8506cd151a99f5d22092fcecdf60c5a41e9ef Add TreeVNC theory diff -r bcd8506cd151 -r 84e12a138c37 paper/main.pdf Binary file paper/main.pdf has changed diff -r bcd8506cd151 -r 84e12a138c37 paper/main.tex --- 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{まとめ}