view paper/chapter5.tex @ 17:675939a7f983

change experiment picture
author sugi
date Fri, 23 Jan 2015 16:43:48 +0900
parents 8e0b26d962cc
children 6b470aab9a41
line wrap: on
line source

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

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

\subsection{実験環境}
コア数が少ないマシンでは、同時に走る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}
\subsection{実験結果}
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{section:distribute}章 の分散環境における改善効果をリングトポロジーによる実験によって測定を行なう。
また、先行研究であるFederated Lindaとの比較も行なう。

\subsection{TORQUE Resource Manager を用いた実験方法}
分散環境の実験する際に、学科にある共用のブレードサーバーを用いた。TORQUE Resource Manager (\url{http://www.adaptivecomputing.com/products/torque.php})というジョブスケジューラーによって、他の利用者とのリソースが競合しないように管理されている。

\subsubsection {TORQUE Resource Manager}
TORQUE は、1台のマスターと複数台のスレーブで構成される。(図 \ref{fig:torque})
スレーブは、マスターへ現在の自身のリソースの利用状況を報告する。

\begin{figure}[htbp]
  \begin{center}
    \includegraphics[width=80mm]{images/torque.pdf}
  \end{center}
  \caption{TORQUE の構成}
  \label{fig:torque}
\end{figure}

ユーザーはマスターを用いてTORQUEを利用する。ジョブを記述したシェルスクリプトを用意し、スケジューラーに投入する。投入するタイミングで、利用したいマシン台数、CPUコア数を指定することができる。(ソースコード \ref {src:torque})

TORQUE は、ジョブに必要なマシンが揃い次第、受け取ったジョブを実行する。

\begin{table}[html]
\lstinputlisting[label=src:torque, caption=10台(1台あたり4コア)で走らせる例]{source/Torque.sh}
\end{table}

\subsection{実験概要}
リングのトポロジーを構成し、メッセージが 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}

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

\subsection{実験環境}
ブレードサーバー(表 \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}

\subsection{実験結果}
\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の場合ほとんど差がないことがわかる。
\newpage
\subsubsection{no-tcp-delay有無の比較}
TCPはデフォルトで、Nagleアルゴリズムを使用している。Nagleアルゴリズムは、小さいパケットを集めてまとめて送信することで、送信するパケット数を減らし効率性をあげるアルゴリズムである。このアルゴリズムにより、実験結果に影響があるか調査した。

\begin{figure}[htbp]
  \begin{center}
    \includegraphics[width=140mm]{images/compareTcpDelay.pdf}
  \end{center}
  \caption{TCP\_NODELAYの有無の比較}
  \label{fig:TcpNoDelay}
\end{figure}

図\ref{fig:TcpNoDelay}からTCP\_NODELAYにおける影響はないことがわかる。

\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と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を使うことでプログラマーの負担を20\%減らせる。