# HG changeset patch # User Daichi TOMA # Date 1374127523 -32400 # Node ID a6d637967b7c899d5dd765ff8ca64086a22c4a07 # Parent 77ee89ae45fb3d6dbb50afa241788fd5521eb389 fix diff -r 77ee89ae45fb -r a6d637967b7c Paper/jssst.tex --- a/Paper/jssst.tex Thu Jul 18 12:13:57 2013 +0900 +++ b/Paper/jssst.tex Thu Jul 18 15:05:23 2013 +0900 @@ -108,13 +108,13 @@ Haskell の軽量スレッドを活かして書かれている。 Haskell の ウェブフレームワーク である Yesod のバックエンドとして用いられており、現在も開発が続けられている。 -\subsection{Warp を用いたウェブサービスの構築} -Warp を用いてウェブサービスを構築する方法について考察する。 +\subsection{Warp を用いたウェブアプリケーションの構築} +Warp を用いてウェブアプリケーションを構築する方法について考察する。 % Source Codeは実行可能な状態でsrcに置いてある % firstline, lastlineで、どの範囲を表示するか指定できる -\lstinputlisting[label=warp_sample, caption=Warpを用いたウェブサービスの例, firstline=9]{src/warp.hs} +\lstinputlisting[label=warp_sample, caption=Warpを用いたウェブアプリケーションの例, firstline=9]{src/warp.hs} -ソースコード \ref{warp_sample}は、URLによって出力する結果を変更するウェブサービスである。 +ソースコード \ref{warp_sample}は、URLによって出力する結果を変更するウェブアプリケーションである。 /hello/worldへアクセスがあった場合は、インクリメントされる counter が表示される。 HTTP サーバを起動するには、Warp の run 関数を利用する。 @@ -296,16 +296,91 @@ スレッドセーフに取り扱う必要があるため、Haskell のソフトウェア・トランザクショナル・メモリを用いて管理している。 \section{木構造データベース Jungle を用いた CMS の検証} -複数のクラスタを利用して、サーバに対して並列にアクセスを行う。 -クラスタの実行平均時間を計測 +木構造データベース Jungle 及び Warp を用いて簡単な掲示板ウェブアプリケーションを作成した。 +同様のウェブアプリケーションを、Java による Jungle 実装 及び Cassandra\cite{cassandra} 上でも動かし性能比較を行う。 +Cassandra は、Facebook が自社のために開発した分散 Key-Value ストアデータベースであり、Dynamo\cite{dynamo}とBigTable\cite{bigtable}を合わせた特徴を持っている。 +Java 版では、組み込みウェブサーバである Jetty を利用する。 + +\subsection{実験方法} +複数のクラスタを利用して、サーバに対して並列にアクセスを 5000 回行い、それぞれクラスタの実行平均時間をとる。 +クラスタ台数を増やすことにより並列度を上昇させ、並列度の実行時間の平均をグラフ化する。 +測定するのは書き込みと読み込みであり、掲示板のメッセージの取得と掲示板のメッセージの編集を行う。 + +\subsection{実験環境} +負荷をかける対象であるサーバは、マルチコア環境が生かされているか確認するためにコア数の多いマシンを用いる。 +サーバの仕様を表\ref{tab:server_spec}に示す。 -簡易掲示板システムについて +\begin{table}[!htbp] +\caption{検証に使用するサーバーの仕様} +\label{tab:server_spec} +\begin{center}\small +\begin{tabular}{|c||c|} \hline +名前 & 概要 \\ \hline \hline +CPU & Intel\textregistered Xeon\textregistered X5650 @2.67GHz * 2 \\ \hline +物理コア数 & 12 \\ \hline +論理コア数 & 24 \\ \hline +Memory & 132GB \\ \hline +OS & Fedora 16 \\ \hline +JavaVM & 1.6.0\_39-b04 \\ \hline +GHC & 7.6.3 \\ \hline +\end{tabular} +\end{center} +\end{table} + +Warp 及び Cassandra, Jetty は表\ref{tab:bulletinboard_components}のバージョンを利用した。 -実験環境 +\begin{table}[!htbp] +\caption{Warp と Cassandra, Jetty のバージョン} +\label{tab:bulletinboard_components} +\begin{center} +\begin{tabular}{|c||c|} \hline +名前 & バージョン \\ \hline \hline +Warp & 1.3.9 \\ \hline +Cassandra & 1.2.6 \\ \hline +Jetty & 6.1.26 \\ \hline +\end{tabular} +\end{center} +\end{table} + +サーバに並列に負荷をかけるクラスタの仕様を表\ref{tab:cluster_spec_vmware}に示す。 +クラスタは最大で45台使用する。 -読み込みの実験結果 +\begin{table}[!htbp] +\caption{検証に利用するクラスタの仕様} +\label{tab:cluster_spec_vmware} +\begin{center}\small +\begin{tabular}{|c||c|} \hline +名前 & 概要 \\ \hline \hline +CPU & Intel\textregistered Xeon\textregistered X5650 @2.67GHz \\ \hline +Memory & 8GB \\ \hline +OS & CentOS 5.6 \\ \hline +HyperVisor & VMWare ESXi \\ \hline +\end{tabular} +\end{center} +\end{table} + +\subsection{実験結果} +読み込みの実験結果を図\ref{fig:read}、書き込みの実験結果を図\ref{fig:write}に示す。 -書き込みの実験結果 +\begin{figure}[!htbp] + \begin{center} + \includegraphics[width=70mm]{./images/read.pdf} + \end{center} + \caption{読み込みの実験結果} + \label{fig:read} +\end{figure} + +\begin{figure}[!htbp] + \begin{center} + \includegraphics[width=70mm]{./images/write.pdf} + \end{center} + \caption{書き込みの実験結果} + \label{fig:write} +\end{figure} + +Haskell版およびJava版のJungleは、ほぼ同程度の速度が出ていることが分かる。 +また、Cassandraと比較して、僅かながらJungleが速く処理を終えている。 +書き込み速度において、Jungle-Javaが 遅延評価の問題