view suruga-thesis/final_main/chapter3.tex @ 3:8faea9c319ed

add thesis
author suruga
date Thu, 15 Feb 2018 14:46:18 +0900
parents
children
line wrap: on
line source

\chapter{評価実験}
本研究は、Jungleの分散環境上での性能を正しく評価するための実験を行う。
本章では実験の概要について述べる。
まず、本研究の目的について述べ、
次に、分散フレームワーク Aliceによる、本研究の分散機構を構成する方法について述べる。
次に、木構造上に立ち上げたJungleを制御するジョブスケジューラーであるTORQUEについて述べる。
最後に、本実験の測定用プログラムについて述べる。
\section{実験目的}
これまでの分散環境上でのJungleの性能を測定する実験で使われたテストプログラムは、フロントエンドにJettyというWebサーバーが使われていた。
しかし、この測定方法では、Webサーバーが仲介した測定結果となってしまい、純粋なJungleの性能を測定できないという問題がある。
そこで、Webサーバーを取り除き、純粋なJungleの性能を測定するテストプログラムを作成する。

テストプログラムは、木構造における子ノードに、データを複数書き込む機能を提供する。
末端の複数の子ノードにデータをそれぞれ書き込み、最終的にrootノードへデータをmergeしていく(図\ref{fig:logupdatetest} )。

測定範囲は、
\begin{itemize}
 \item 末端ノードからrootノードへデータが到達する時間
 \item 末端Jungleからrootノードを介して別の末端ノードへデータが到達する時間
\end{itemize}
の2点を計測する予定である。
\begin{figure}[H]
    \centering
    \includegraphics[width=100mm]{pic/logupdatetest.pdf}
    \caption{テストプログラムによるJungleの性能測定}
    \label{fig:logupdatetest}
\end{figure}

\newpage


\section{分散フレームワーク Alice による分散環境の構築}
本研究では、分散環境上でのJungleの性能を確認する為、VM32台分のサーバーノードを用意し、それぞれでJungleを起動することで、Jungle間で通信をする環境をつくる。
Jungleを起動したサーバーノード間の通信部分を、当研究室で開発している並列分散フレームワークAlice[1]にて再現する。

Aliceには、ネットワークのトポロジーを構成するTopologyManager[2]という機能が備わっている。TopologyManagerに参加表明をしたサーバーノードに順番に、接続先のサーバーノードのIPアドレス、ポート番号、接続名を送り、受け取ったサーバーノードはそれらに従って接続する。
今回、TopologyManagerはJungleをのせたVM32台分のサーバーノードを、木構造を形成するように采配する(図\ref{fig:topologymanager} )。

トポロジー構成後、Jungle間の通信でのデータ形式にはTreeOperationLogを利用する。TreeOperationLogには、ノードの編集の履歴などの情報が入っている。TreeOperationLogをAliceによって他のJungleへ送ることで、送信元のJungleと同じ編集を行う。こうして、Jungle間でのデータの同期を可能にしている。
\begin{figure}[H]
    \centering
    \includegraphics[width=70mm]{pic/topologymanager.pdf}
    \caption{AliceによるJungleの木構造トポロジーの形成}
    \label{fig:topologymanager}
\end{figure}

\newpage
\section{TORQUE Resource Manager}
分散環境上でのJungleの性能を測定するにあたり、VM32台にJungleを起動させた後、それぞれでデータを書き込むプログラムを動作させる。プログラムを起動する順番やタイミングは、TORQUE Resource Managerというジョブスケジューラーによって管理する。

TORQUE Resource Manager は、ジョブを管理・投下・実行する3つのデーモンで構成されており、
ジョブの管理・投下を担うデーモンが稼働しているヘッダーノードから、ジョブの実行を担うデーモンが稼働している計算ノードへジョブが投下される(図\ref{fig:torque} )。
  \begin{figure}[ht]
    \begin{center}
        \includegraphics[width=100mm]{./pic/torque.pdf}
    \end{center}
        \caption{TORQUEの構成}
         \label{fig:torque}
\end{figure}

ユーザーはジョブを記述したシェルスクリプトを用意し、スケジューラーに投入する。その際に、利用したいマシン数やCPUコア数を指定する。TORQUEは、ジョブに必要なマシンが揃い次第、受け取ったジョブを実行する。

\newpage

\section{Jungleの分散性能測定用テストプログラム}
これまでの分散環境上でのJungleの性能を測定する実験で使われたテストプログラムは、フロントエンドにJettyというWebサーバーが使われていた。
しかし、Webサーバーが仲介した測定結果となってしまい、純粋なJungleの性能を測定できないという問題がある。
そこで、Webサーバーを取り除き、これまでの研究により純粋にJungleの性能を測定するテストプログラムを作成する。

テストプログラムは、木構造における子ノードに、データを複数書き込む機能を提供する。
末端の複数の子ノードにデータをそれぞれ書き込み、最終的にrootノードへデータをmergeしていく(図\ref{fig:logupdatetest} )。

測定範囲は、
\begin{itemize}
 \item 末端ノードからrootノードへデータが到達する時間
 \item 末端Jungleからrootノードを介して別の末端ノードへデータが到達する時間
\end{itemize}
の2点を計測する予定である。
\begin{figure}[H]
    \centering
    \includegraphics[width=100mm]{pic/logupdatetest.pdf}
    \caption{TestプログラムによるJungleの性能測定}
    \label{fig:logupdatetest}
\end{figure}

\section{LogupdateTree.sh}
LogupdateTree.shは、Aliceのトポロジーマネージャー起動後、引数で渡した数の分だけnodeを立ち上げる。複数のnodeのうち、1つをルートノードとして立ち上げ、残りを子ノードとして、ルートノードの下にツリー上に接続されていく。(図\ref{fig:LogupdateTree.pdf})
\begin{figure}[H]
    \centering
    \includegraphics[width=100mm]{pic/LogupdateTree.pdf}
    \caption{ルートノードと子ノードによって構成されるツリー構造}
    \label{fig:LogupdateTree.pdf}
\end{figure}
\section{killLogupdate.sh}