view paper/chapter5.tex @ 75:eaa8a657efe2

fix
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Wed, 26 Feb 2014 04:15:25 +0900
parents 1ff5dde6decf
children
line wrap: on
line source

\chapter{ベンチマーク}
\label{chap:poordirection}


\section{実験環境}

\begin{itemize}
\item Mac OS X 10.9.1
\item 2*2.66 GHz 6-Core Intel Xeon
\item Memory 16GB 1333MHz DDR3
\item HHD 1TB
\item file size 10 GB
\item CPU num 12
\item Boyer-Moore String Search で pattern がいくつ含まれているか検索
\item ファイルを読み込みから結果が返ってくるまでを測定
\end{itemize}

\section{結果}

以下の表に実行結果を示す。

\begin{tiny}
  \begin{table}[ht]
    \begin{center}
      \label{table:result}
      \small
      \begin{tabular}[t]{c|r}
        \hline
        読み込み方法 & 平均実行速度(s)\\
        \hline
        mmap & 154.6 \\
        \hline
        一括 Read & 114.9 \\
        \hline
        Blocked Read \& SPE\_ANY & 106.0 \\
        \hline
        Blocked Read \& IO\_0 & 99.2 \\
        \hline
        mmap (CPU num:2) & 106.2 \\
        \hline
      \end{tabular}
      \caption{実行結果}
    \end{center}
  \end{table}
\end{tiny}

実験結果より、mmap より Blocked Read \& IO\_0 の実行速度が 36 \% 改善された。
また、Blocked Read の CPU Type も SPE\_ANY から IO\_0 に変更することによって更に 4 \% の改善が見られた。

\section{考察}
mmap より Blocked Read で実装したほうが速くなったが、これは mmap の読み込み方法が問題であると考える。

I/O を含む例題の場合、シングルコアでの逐次実行であれば、mmap や pread で実装しても、Task は 読み込みを行って文字列検索を行うというシンプルな動作になる。
しかし、マルチコアの並列実行であれば、mmap で実装してしまうと、Task それぞれで読み込みを行ってしまうので競合が発生してしまう。

読み込みの競合が起こらないように Blocked Read にて読み込み部分と文字列検索部分を分けた結果、こちらのほうが速度が向上した。