view paper/chapter5.tex @ 0:0127effb8fcd

first commit
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Tue, 05 May 2015 15:36:41 +0900
parents
children e13be99f69b6
line wrap: on
line source

\chapter{分散フレームワーク Alice の評価} \label{chapter:chapter5}
この章では第\ref{chapter:chapter4}章で行った効果の測定、先行研究であるFedarated Lindaとの性能比較を行い、評価を行う。TreeVNCとAliceVNCの比較をコードの観点からも評価を行う。

\section{機能の確認}
水族館の例題でノードを意図的に切断した結果トポロジーの再構成が行わることを確認した。
そして、切断したノードが再接続を行えることを確認した。
また、再接続の挙動を変更するAPIによりMMORPGにあるような、前回の魚の位置から再開させることに成功した。


\section{並列環境の改善効果の測定}
第\ref{chapter:chapter4}章 の並列環境における改善効果をbitonic sortによる実験によって測定を行なう。

\subsubsection{実験環境}
コア数が少ないマシンでは、同時に走るCode Segmentが少ないことから、メニコア環境で実験を行った。
\begin{table}[htbp]
\caption{実行環境の詳細}
\label{tb:MacPro}
\begin{center}
\begin{tabular} {|l|l|}
  \hline
  {\bf CPU}&Intel Xeon E5-1650 v2 @3.50GHz\\
  \hline
  {\bf 物理コア数}&6\\
  \hline
  {\bf CPU キャッシュ}&12MB\\
  \hline
  {\bf Memory}&16GB\\
  \hline
\end{tabular}
\end{center}
\end{table}
\subsubsection{実験結果}
100万の要素をもつ配列のSortにかかる時間を計測する。同時に走るCode Segmentが物理コア数と同じになるように、分割数は4個で行った。

\begin{table}[html]
\caption{bitonic sortの結果}
\label{tb:result3}
\begin{center}
\begin{tabular}{|l|l|l|}
\hline
 & 改善前 & 改善後 \\ 
 \hline
 実行時間 (ms)& 164.8 & 112.1 \\ 
\hline
\end{tabular} 
\end{center}
\end{table}

\section{分散環境の改善効果の測定}
第\ref{chapter:chapter4}章 の分散環境における改善効果をリングトポロジーによる実験によって測定を行なう。
また、先行研究であるFederated Lindaとの比較も行う。

\subsubsection{実験概要}
リングのトポロジーを構成し、メッセージが 100 周する時間を計り、1周あたりの平均時間を求める実験である。(図 \ref{fig:topologyring})

\begin{figure}[htbp]
  \begin{center}
    \includegraphics[width=120mm]{images/topologyring.pdf}
  \end{center}
  \caption{100周にかかる時間を計測し、1周あたりの平均時間を求める}
  \label{fig:topologyring}
\end{figure}

実験では、トポロジーの構築時間は実験に含めてはいない。

\subsubsection{実験環境}
学科にある共用のブレードサーバ上の仮想マシンによる仮想クラスタ環境を用いて実験を行った。他の利用者とリソースが競合しないためにTORQUEジョブスケジューラを利用している。

ブレードサーバーと仮想マシンの性能はそれぞれ表 \ref{tb:blade}、表 \ref{tb:virtual}である。

\begin{table}[htbp]
\caption{ブレードサーバーの詳細}
\label{tb:blade}
\begin{center}
\begin{tabular} {|l|l|}
  \hline
  {\bf マシン台数}&8台\\
  \hline
  {\bf CPU}&Intel(R) Xeon(R) X5650 @ 2.67GHz\\
  \hline
  {\bf 物理コア数}&12\\
  \hline
  {\bf 論理コア数}&24\\
  \hline
  {\bf CPU キャッシュ}&12MB\\
  \hline
  {\bf Memory}&132GB\\
  \hline
\end{tabular}
\end{center}
\end{table}

\begin{table}[htbp]
\caption{仮想クラスタの詳細}
\label{tb:virtual}
\begin{center}
\begin{tabular} {|l|l|}
  \hline
  {\bf マシン台数}&48台\\
  \hline
  {\bf CPU}&Intel(R) Xeon(R) X5650 @ 2.67GHz\\
  \hline
  {\bf 物理コア数}&2\\
  \hline
  {\bf 仮想コア数}&4\\
  \hline
  {\bf CPU キャッシュ}&12MB\\
  \hline
  {\bf Memory}&8GB\\
  \hline
\end{tabular}
\end{center}
\end{table}


\subsubsection{改善効果とFederated Lindaとの比較}
データのサイズは10Bと100KBで実験を行った。10Bの結果は図\ref{fig:compare_10B}、100KBの結果は図\ref{fig:compare_100KB}である。
\begin{figure}[htbp]
  \begin{center}
    \includegraphics[width=140mm]{images/compare_10B.pdf}
  \end{center}
  \caption{10 bytes のデータを 100 周させたときの 1 周にかかる平均時間}
  \label{fig:compare_10B}

  \begin{center}
    \includegraphics[width=140mm]{images/compare_100KB.pdf}
  \end{center}
  \caption{100 Kbytes のデータを 100 周させたときの 1 周にかかる平均時間}
  \label{fig:compare_100KB}
\end{figure}

10Bと100KBの両方の結果でAliceに行った改善の効果を確認することができる。
45台を使用した実験では10Bの小さいパットの場合では17%、100KBの大きいパケットの場合では12%程度高速化することができた。
Federated Lindaと改善後の比較では、10Bの場合でAliceのほうが20%程遅い。しかし、100KBの場合ほとんど差がないことがわかる。

\subsubsection{TCP\_NODELAY有無の比較}
TCPはデフォルトで、Nagleアルゴリズムを使用している。Nagleアルゴリズムは、小さいパケットを集めてまとめて送信することで、送信するパケット数を減らし効率性をあげるアルゴリズムである。このアルゴリズムの有無により実験結果に影響はないことを確認した。

\section{考察}
今回の結果から、Aliceは先行研究であるFederated Lindaと同等の性能を持つことが確認できた。
また、並列性能の改善と分散性能の改善の両方に効果があることを確認できた。
両方に共通して行った改善として、複数のSEDAのステージをまとめて1つのステージにしたことがあげられる。
SEDAが実行結果に大きく影響を与えていることが分かる。

10Bの実験でFederated Lindaに及ばない理由としてもSEDAが原因と考えられる。
リングの実験は並列処理を行なう部分がないシーケンシャルな実験であるため、全ての処理は直列的に実行される。SEDAによるThreadの切り替えが発生する分Aliceの実行速度は遅くなる。
100KBの実験ではData Segmentの送受信にかかる時間に比べ、Threadの切り替えの時間が無視できる程度小さいため、Federated Lindaと同じグラフとなる。

AliceがFederated Lindaに対して優位な点は、マルチコアによる並列実行である。従って、複数のCode Segmentが同時に走る実験では、小さなパケットの場合でもFederated Lindaに勝つことができると予想される。

\section{TreeVNCとのCodeの比較}
ここでは授業向け画面共有システムであるTreeVNCとそれをAlice上で実装したAliceVNCをソースコードの面から比較した。
TreeVNCとAliceVNCのソースコードに対してwcを行い、TightVNCからどの程度コードが増加しているかを調べた。(表\ref {tb:diffwordCount})

\begin{table}[htbp]
\begin{center}
\begin{tabular} {|l|r|r|}
  \hline
   {\bf }&行数&単語数\\
  \hline
  {\bf TreeVNC}&5049&14191\\
  \hline
  {\bf AliceVNC}&989&2355\\
  \hline
\end{tabular}
\end{center}
\caption{コードの増加量}
\label{tb:diffwordCount}
\end{table}

AliceVNCはTreeVNCの20\%の行数で記述できることがわかる。コード量が少なければ管理する手間が少ないためプログラマー負担を減らすことができる。つまり、Aliceを使うことでプログラマーの負担を80\%減らすことができる。