view chapter7.tex @ 4:3ac8c8d97fea

2/16
author tatsuki
date Mon, 16 Feb 2015 17:56:08 +0900
parents 470dc248d615
children b0fd781e3b05
line wrap: on
line source

\chapter{実装の評価}
前章では、Jungle上にmaTrixを構築する方法と、構築に必要なAPIの実装について述べた。
本章では、実装を行ったJungleの性能評価を行う。
\label{chap:poordirection}

\section{実験環境}

\begin{table}[h]
\caption{実験環境}
\label{list:VM}
\begin{center}
\begin{tabular}{|l|l|} \hline
名前   & 概要      ~ \\ \hline 
CPU    &           ~ \\  \hline
Memory &           ~ \\ \hline
OS     &           ~ \\ \hline
JavaVM & 1.8.0-25  ~ \\ \hline
\end{tabular}
\end{center}
\end{table}

\newpage
\section{検索のAPIの測定}
Jungleに対する検索APIの測定を行う。
測定には、maTrixが保持しているデータにアクセスする際に用いる関数のうちの1つである、boolen isActive(String personId,String version)という関数を用いる。
isActiveは、第一引数で与えたPersonIdを持つ人物が、第二引数で与えられた構成情報モデルのversionに対応した人物Treeにいるかどうかを調べる関数である。
実験の結果は図\ref{fig:isActive}となる。横軸は人物Treeにいる人の数を表しており、縦軸は探索にかかった時間を表している。


\begin{figure}[h]
\begin{center}
\includegraphics[bb=0 0 360 252]{fig/isActive.pdf}
\caption{inActiveの実行時間}
\label{fig:isActive}
\end{center}
\end{figure}

isActiveの実行時間は、Indexを使用しない場合は、Personの数が増えると比例して増えていくのに対し、Indexを使用するとPersonの数が増えても実行時間は変わらなかった。
この結果より、JungleのIndexの計算量はO(logn)であることがわかる。

\clearpage
\section{read\&writeの測定}
1秒間の間Jungleに対し書き込みと、データの検索を同時に行い、Jungleの書き込みがどの程度検索に影響をおよぼすかを調べる。
測定の条件は、Jungleが保持しているPerson数は100、書き込みに1Thread使用し、読み込みを行うThreadは1から12個まで使用する。read関数は実験1と同じく関数isActiveを用いた。
実験の結果は図\ref{fig:thread}となる。横軸はJungleに対し、readを行うthread数、縦軸はreadを行った回数を表す。

\begin{figure}[h]
\begin{center}
\includegraphics[bb=0 0 360 252]{fig/readMaltiThread.pdf}
\caption{read\&writeの測定}
\label{fig:thread}
\end{center}
\end{figure}

Jungleは書き込みを行う際、読み込みに対するロックをかけないため、書き込みを行ってもほとんど読み込みに影響を及ぼさない。
しかし、書き込みと読み込みを同時に行っているread\&writeの方は、書き込み分の負荷が多くかかっているため、やはりreadのみと比べると多少遅くなっている。


図\ref{fig:thread}でもThreadCount5まではほとんど差は開いていない。
しかし、6Thread目以降はread\&writeの、8Thread目以降ではreadOnlyのreadCountの上昇量がゆるやかになり、差が開きだしている。
理由として、Jungleの処理限界が来たためであると推測でき、read\&writeがreadOnlyより早く処理限界が来た理由は、writeの分readOnlyよりリソースを多く使用しているためだと推測できる。

本実験で、Jungleは書き込み中でも高速に検索が行えることがわかった。
これはつまり、スケールアウトを行うためにデータのコピーを行う際、データベースをロックすること無く行えるということである。