view paper/final_main/prepaper/finalPre.tex @ 31:68dfd08c74ba

fix
author suruga
date Tue, 20 Feb 2018 20:36:26 +0900
parents fb2cbbed0f05
children 39ac37db0018
line wrap: on
line source

\documentclass[twocolumn,twoside,9.5pt]{jarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{picins}
\usepackage{fancyhdr}
\usepackage{abstract}
\usepackage{url}
%\pagestyle{fancy}
\lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究発表会}
\rhead{}
\cfoot{}

\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
\setlength{\headheight}{0mm}
\setlength{\headsep}{5mm}
\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
\setlength{\textwidth}{181mm}
\setlength{\textheight}{261mm}
\setlength{\footskip}{0mm}
\pagestyle{empty}

\input{dummy.tex}
\renewcommand{\abstractname}{Abstract}
\begin{document}
\title{分散版Jungleデータベースの性能測定方法}
%\title{Supporting NAT in Screen Sharing System TreeVNC}
\author{145762E 氏名 {仲松}{栞} 指導教員 : 河野 真治}
\date{}
\twocolumn [
\maketitle
\begin{onecolabstract}
%アブスト
\end{onecolabstract}]
\thispagestyle{fancy} 

\section{研究背景}
スマートフォンやタブレット端末の普及にともない、年々Webサービスの利用者は増加した一方で、データ量が増大し、サーバ側への負荷も増加している。
これを解決するため、Webサービスには、よりシステムの処理能力を拡張する性質である、スケーラビリティが求められてきている。

スケーラビリティとは、高性能のマシンを用意したり、複数のマシンに処理を分散させたりすることで、システムの処理能力を向上させる性能を指す。本実験で指すスケーラビリティとは、後者の方である。Webサービスにスケーラビリティを付与する方法の1つに、データベースにスケーラビリティを持たせる事が考えられる。

そこで、当研究室ではスケーラビリティを持つデータベースとして木構造を持つ分散データベースJungleを開発している。方法としては、分散環境上で複数のデータベースJungleを起動することで、処理を分散させる。

研究の積み重ねにより、Jungleの性能は上がっている。しかし、分散環境上でJungleの性能を測定する方法が確立されていなかった。これまでに行われた分散環境上でのJungleの性能を検証する実験[2]では、使用するテストプログラムのフロントエンドにWebサーバーJettyが使用されており、純粋なJungleの性能は測定できていなかった。今回は、新たに改良されたJungleの性能を、Webサーバーを取り除いたTestプログラムを用いて測定する。

本研究では、最新版Jungleの分散性能を測定する環境を構築することを目的とする。

\section{分散データベースJungle}
Jungleは、当研究室で開発を行っている木構造の分散データベースで、Javaを用いて実装されている。

Jungleは名前付きの複数の木の集合からなり、木は複数のノードの集合でできている。ノードは自身の子のリストと属性名、属性値を持ち、データベースのレコードに相応する。通常のレコードと異なるのは、ノードに子供となる複数のノードが付くところである。

通常のRDBと異なり、Jungleは木構造をそのまま読み込むことができる。例えば、XMLやJsonで記述された構造を、データベースを設計することなく読み込むことが可能である。また、この木を、そのままデータベースとして使用することも可能である。しかし、木の変更の手間は木の構造に依存する。特に非破壊木構造\cite{jungle:2015}を採用しているJungleでは、木構造の変更の手間はO(1)からO(n)となりえる。つまり、アプリケーションに合わせて木を設計しない限り、十分な性能を出すことはできない。逆に、正しい木の設計を行えば高速な処理が可能である。

Jungleはデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとしてTreeOperationLog\cite{log:2013}に残している。Jungleの分散ノード間の通信は木の変更のTreeOperationLogを交換することによって、分散データベースを構成するよう設計されている。

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

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

トポロジー構成後、Jungle間の通信でのデータ形式にはTreeOperationLogを利用する。TreeOperationLogには、ノードの編集の履歴などの情報が入っている。TreeOperationLogをAliceによって他のJungleへ送ることで、送信元のJungleと同じ編集を行う。こうして、Jungle間でのデータの同期を可能にしている。
\begin{figure}[!htbp]
    \centering
    \includegraphics[width=70mm]{pic/topologymanager3.pdf}
    \caption{AliceによるJungleの木構造トポロジーの形成}
    \label{fig:topologymanager}
\end{figure}
\section{TORQUE Resource Manager}
分散環境上でのJungleの性能を測定するにあたり、VM32台にJungleを起動させた後、それぞれでデータを書き込むプログラムを動作させる。プログラムを起動する順番やタイミングは、TORQUE Resource Manager\cite{torque:2014}というジョブスケジューラーによって管理する。

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

ユーザーはジョブを記述したシェルスクリプトを用意し、スケジューラーに投入する。その際に、利用したいマシン数やCPUコア数を指定する。TORQUEは、ジョブに必要なマシンが揃い次第、受け取ったジョブを実行する。
\section{性能測定用プログラム}
これまでの分散環境上でのJungleの性能を測定する実験で使われたテストプログラムは、フロントエンドにJettyというWebサーバーが使われていた。
しかし、Webサーバーが仲介した測定結果となってしまい、純粋なJungleの性能を測定できないという問題がある。
そこで、Webサーバーを取り除き、これまでの研究により純粋にJungleの性能を測定するプログラムを作成した。

まず、Jungleを起動する際に、木構造における子ノードに、データを複数書き込む機能である、-write オプション、書き込む回数を指定できる -count オプション を実装した。

複数の子ノードにデータをそれぞれ書き込み、最終的にrootノードへデータをmergeしていく。また、今回性能を測定するにあたり、rootノードに到達したデータが書き込まれた時間を計測し、出力結果に時間を表示するプログラムを、Aliceに実装した。この機能は、TopologyManagerを起動するコマンドに- showTime オプションをつけることで起動する。

\section{評価実験}
Jungleの分散性能を測定するにあたり、複数台のJungleを通信させ、JungleからJungleに対する書き込みにかかる時間を計測する。複数台のJungleを分散させる為に、学内共用の仮想マシンを32台使用した。分散したJungle同士の通信部分には、当研究室で開発している分散フレームワークAliceの機能であるTopologyManagerを使用する。TopologyManagerの起動には、仮想マシン32台のうちの1台を使用する。
学科の仮想マシン31台上でそれぞれ1台ずつJungleを立ち上げ、ツリー型のトポロジーを構成する。そのうち16台のJungleに対して100回ずつデータを書き込む。子ノードのJungleは、次々と親ノードのJungleへデータを書き込む。最終的にルートノードのJungleへデータが到達し、書き込まれた時間を計測し、平均を取る。31台中16台のJungleから書き込まれたデータがルートノードのJungleへ書き込まれる、一回あたりの時間を計測する実験である。(図\ref{fig:gaiyou} )

\begin{figure}[!htbp]
    \begin{center}
        \includegraphics[width=70mm]{./pic/gaiyou.pdf}
    \end{center}
        \caption{複数のjungleに書き込まれたデータがrootのjungleへ到達する時間を計測する}
         \label{fig:gaiyou}
\end{figure}

\section{まとめ}
本研究では、Jungleの純粋な性能を測定するためのプログラムをJungle,Aliceに実装した。また、それらの機能を使用し、実際にJungleの性能評価を行なった。

Jungleへの書き込みを行う機能である -write オプションと、書き込みの回数を指定できる -count オプションの実装を行なった。

ツリートポロジーを構成したJungleの分散環境上で、子ノードのJungleに書き込まれたデータが、rootノードのJungleに到達し、書き込みが終了するまでの時間を表示する、 --showtime オプションの実装を行なった。

今回Jungleの分散性能の評価を行い、()がわかった。

今後の課題として、今回確立した測定環境で、実際に現在のJungleの性能をそくていする。
また、Jungleは、トポロジー構成中に接続が切れてしまったとき、再接続するとnodeの中のデータが消えているため、データを再ロードする必要がある。その再ロードのプロトコルを定義したい。方法としては、接続した他のノード、もしくはデータを書き出すディスクを作り、そのディスクからデータを読み込みたい。その際に、ディスク上にしかないツリートポロジーを徐々に読み出すプロトコルを作りたい。
\nocite{*}
\bibliographystyle{junsrt}
\bibliography{reference}
\end{document}