Mercurial > hg > Papers > 2014 > masakoha-sigos
view paper/benchmark.tex @ 12:6f6f482b9f12
fix
author | Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 20 Apr 2014 22:21:07 +0900 |
parents | 91662ffcaf0b |
children | 84383e5e2e85 |
line wrap: on
line source
\section{Benchmark} \label{section:benchmark} 例題で紹介した Word Count に Blocked Read を組み込み、1 GB のファイルで計測を行った。 実験環境 \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 CPU num 12 \end{itemize} \subsection{結果} 以下の表に読み込み時間を含めた場合の実行結果を示す。 \begin{tiny} \begin{table}[ht] \begin{center} \label{table:result} \small \begin{tabular}[t]{c|r} \hline 読み込み方法 & 実行速度(s)\\ \hline mmap & 15.875 \\ \hline mmap (CPU num = 1)& 15.294 \\ \hline 一括 Read & 12.520 \\ \hline 一括 Read (CPU num = 1)& 18.758 \\ \hline Blocked Read \& SPE\_ANY & 14.028 \\ \hline Blocked Read \& IO\_0 & 10.295 \\ \hline \end{tabular} \caption{読み込みを含めた実行結果} \end{center} \end{table} \end{tiny} また、キャッシュに入った場合での実行結果を以下に示す。 \begin{tiny} \begin{table}[ht] \begin{center} \label{table:result} \small \begin{tabular}[t]{c|r} \hline 読み込み方法 & 実行速度(s)\\ \hline mmap & 0.878 \\ \hline 一括 Read & 1.469 \\ \hline Blocked Read \& IO\_0 & 0.866 \\ \hline \end{tabular} \caption{キャッシュに入った時の実行結果} \end{center} \end{table} \end{tiny} 読み込みを含めた場合の実験結果より、Blocked Read \& IO\_0 の実行速度が mmap と比較して 1.55 倍向上した。 また、Blocked Read の CPU Type も SPE\_ANY から IO\_0 に変更することによって 1.36 倍向上した。 % mmap だとそれぞれの WordCount の Task が実行されるときに、処理される範囲の読み込みが行われるので、I/O ネックでうまく並列に走ることができずに Blocked Read で WordCount Task と Read Task を分離させた。 Blocked Read Task がファイル読み込みを行っている間も、WordCount Task は読み込んだ範囲に対して並列処理を行うことができた。 その結果、mmap より速く WordCount 処理を行うことができたと考える。 キャッシュに入った時は、mmap のほうが一括 Read と比較して 1.67 倍速くなる。そして、mmap と Blocked Read と mmap は、ほとんど同じ実行速度となった。 %\subsection{考察} % mmap より Blocked Read で実装したほうが速くなったが、これは mmap の読み込み方法が問題であると考える。 % % I/O を含む例題の場合、シングルコアでの逐次実行であれば、mmap や pread で実装しても、Task は 読み込みを行って文字列検索を行うというシンプルな動作になる。 % しかし、マルチコアの並列実行であれば、mmap で実装してしまうと、Task それぞれで読み込みを行ってしまうので競合が発生してしまう。 % % 読み込みの競合が起こらないように Blocked Read にて読み込み部分と文字列検索部分を分けた結果、こちらのほうが速度が向上した。