# HG changeset patch # User Nobuyasu Oshiro # Date 1390931598 -32400 # Node ID 63eca978482f96dd98215bf3144459622dbd8bba # Parent 559589aec976274b4bb6702eb5ad5819d662f10a Writed description of experiment diff -r 559589aec976 -r 63eca978482f paper/chapter1.tex --- a/paper/chapter1.tex Wed Jan 29 01:26:47 2014 +0900 +++ b/paper/chapter1.tex Wed Jan 29 02:53:18 2014 +0900 @@ -38,8 +38,8 @@ \section{Cassandra} -Cassandra は2008年7月に Facebook によってオープンソースとして公開された Key-Value なデータベースである. -Amazon の Dynamo という分散キーバリューデータベースの影響を受けて作られている. +Cassandra\cite{cassandra} は2008年7月に Facebook によってオープンソースとして公開された Key-Value なデータベースである. +Amazon の Dynamo\cite{dynamo} という分散キーバリューデータベースの影響を受けて作られている. スキーマレスな NoSQL データベースになる. Cassandra はサーバノードの配置にコンシステント・ハッシングアルゴリズムを用いる. diff -r 559589aec976 -r 63eca978482f paper/chapter3.tex --- a/paper/chapter3.tex Wed Jan 29 01:26:47 2014 +0900 +++ b/paper/chapter3.tex Wed Jan 29 02:53:18 2014 +0900 @@ -87,7 +87,7 @@ % java Program -host mass00.cs.ie.u-ryukyu.ac.jp -port 10000 \end{lstlisting} -\section{Aliceを用いての分散実装} +\section{Alice を用いての分散実装} 形成されたトポロジー上でのデータの送受信を行う部分について述べる. diff -r 559589aec976 -r 63eca978482f paper/chapter4.tex --- a/paper/chapter4.tex Wed Jan 29 01:26:47 2014 +0900 +++ b/paper/chapter4.tex Wed Jan 29 02:53:18 2014 +0900 @@ -1,8 +1,129 @@ -\chapter{分散木構造データーベースJungleの評価} +\chapter{分散木構造データーベース Jungle の評価} +前章では Jungle における分散データベースの詳細な実装について述べた. +本章では実装を行った Jungle に対して Cassandra との性能比較を行い評価をする. +性能比較の為に簡易な掲示板プログラムを Jungle と Cassandra それぞれに作成した. +複数のノードに繋がっている状態においても性能を測りたいため, 学科提供する +VMWare の並列環境を利用する. また, 我々の研究室が利用しているブレードサーバ +上で動いている KVM もノードとして利用する. \section{実験方法} +実験は同じ機能を提供している簡易掲示板プログラムを Jungle と Cassandra それぞれで +動かし, HTTPリクエストにより負荷をかけて行う. +レスポンスが帰ってくるまでの時間をはかる. -\section{実験環境} +また, 実験は2つ行う. +まず行う実験は, 複数のノードで起動してるうちの1つのノードに負荷をかける方法である. +これはノードの数に比例してレスポンスが遅くなっていないか確かめるためである. +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.70]{figures/jungle_experiment.pdf} + \caption{複数起動中のJungle の1ノードへの負荷} + \label{fig:jungle_exp} + \end{center} +\end{figure} + +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.70]{figures/cas_experiment.pdf} + \caption{複数起動中のCassandra の1ノードへの負荷} + \label{fig:cas_exp} + \end{center} +\end{figure} + +次に行う実験は複数のノードに対し複数のクライアントから負荷をかける方法である. +それぞれ大量のHTTPリクエストをだし, 全てのリクエストの処理にかかる時間を測定する. + +クライアントの数に比例してノードを増やすことでレスポンスを維持できるか +スケーラビリティを調べるためである. +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.70]{figures/clients_request_servers.pdf} + \caption{複数のクライアントから複数のノードへの負荷} + \label{fig:clients_servers} + \end{center} +\end{figure} + +\subsection{weighttp} +最初の実験で1つのノードに負荷をかけるプログラムはウェブサーバの測定ツールであるweighttpを使用する. +weighttpは総リクエスト数, 同時接続数, ネイティブスレッド数をオプションとして指定することができる. + + +\subsection{掲示板プログラム} +今回使用する掲示板プログラムは組み込み用ウェブサーバであるJettyをフロントエンドとして利用し, バックエンド +に Jungle と Cassandra を利用している. + + +\subsection{実験環境} + +\subsubsection{ノードを実行させるサーバの仕様} +使用するVMWareとKVMのクラスタの使用を以下に示す. +クラスタは仕様を表\ref{tab:cluster_spec_vmware}と表\ref{tab:cluster_spec_kvm}に示す. + +\begin{table}[!htbp] +\caption{ノードを実行させるVMWareクラスタの仕様} +\label{tab:cluster_spec_vmware} +\begin{center} +\begin{tabular}{|c||c|} \hline +名前 & 概要 \\ \hline \hline +CPU & Intel(R) Xeon(R) CPU X5650@2.67GHz \\ \hline +Memory & 8GB \\ \hline +OS & CentOS 5.8 \\ \hline +HyperVisor & VMWare ESXi \\ \hline +\end{tabular} +\end{center} +\end{table} + +\begin{table}[!htbp] +\caption{ノードを実行させるKVMクラスタの仕様} +\label{tab:cluster_spec_kvm} +\begin{center} +\begin{tabular}{|c||c|} \hline +名前 & 概要 \\ \hline \hline +CPU & Intel(R) Xeon(R) CPU X5650@2.67GHz \\ \hline +Memory & 8GB \\ \hline +OS & CentOS 5.8 \\ \hline +HyperVisor & KVM \\ \hline +\end{tabular} +\end{center} +\end{table} + +\subsubsection{1台に負荷をかけるブレードサーバの仕様} +最初の実験で負荷をかける側としてブレードサーバを使用する. +ブレードサーバの仕様を表\ref{tab:server_spec_1}に示す + +\begin{table}[!htbp] +\caption{} +\label{tab:server_spec_1} +\begin{center} +\begin{tabular}{|c||c|} \hline +名前 & 概要 \\ \hline \hline +CPU & Intel(R) Xeon(R) CPU X5650@2.67GHz \\ \hline +物理コア数 & 12 \\ \hline +論理コア数 & 24 \\ \hline +Memory & 132GB \\ \hline +OS & Fedora 16 \\ \hline +JavaVM & Java(TM) SE Runtime Environment (build 1.6.0\_39-b04) \\ \hline +\end{tabular} +\end{center} +\end{table} + + + +\subsubsection{サーバの環境} +HTTPによりノードに負荷を掛ける場合気をつけることがある. +それはサーバの設定によりコネクション数やファイル記述子の制限である. +この2つの値はデフォルトでは小さなものとなっており, そのままではカーネル +の設定がネックとなったベンチマーク結果がでる可能性がある. +そこで次のようにコマンドを実行することでコネクション数の制限を増やすことができる. +\begin{lstlisting}[frame=lrbt,label=src:maxconn_up,caption=コネクション数を増やす,numbers=left] +% sudo sysctl -w net.core.somaxconn=10000 +\end{lstlisting} +ファイル記述子の制限を増やす場合は次のコマンドを実行する +\begin{lstlisting}[frame=lrbt,label=src:max_up_filedisc,caption=ファイル記述子の制限を増やす,numbers=left] +% ulimit -n 10000 +\end{lstlisting} + + \section{実験結果} diff -r 559589aec976 -r 63eca978482f paper/master_paper.pdf Binary file paper/master_paper.pdf has changed