changeset 60:927df4d4c4d5

fix
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Sun, 23 Feb 2014 20:19:51 +0900
parents d6f83dd6301f
children 35248cabb84d
files paper/chapter4.tex paper/thesis-paper.pdf preliminary/final-thesis.pdf preliminary/final-thesis.tex
diffstat 4 files changed, 34 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter4.tex	Sat Feb 22 23:31:55 2014 +0900
+++ b/paper/chapter4.tex	Sun Feb 23 20:19:51 2014 +0900
@@ -36,7 +36,7 @@
         \hline
         int fd &  読み込むファイルのファイルディスクリプタ\\
         \hline
-        off\_t offset & ファイル読み込みの先頭からの開始位置 \\
+        off\_t offset & ファイル先頭からの読み込み開始位置 \\
         \hline
       \end{tabular}
       \caption{mmap 関数の概要}
@@ -60,8 +60,35 @@
 \caption{mmap image}
 \label{fig:mmap} \end{figure} 
 
+
 \section{Bloked Read の設計と実装}
-Blocked Read とは、読み込みの Task と、それに対する何らかの処理の Task を切り離すための実装方法で、pread 関数で実装した。
+Blocked Read とは、読み込みの Task と、それに対する何らかの処理の Task を切り離すための実装方法で、pread 関数にて実装した。
+pread 関数は、unistd.h に含まれているので、UNIX 専用の関数である。ファイルディスクリプタで指定したファイルの先頭 から 
+offset 分ずれた場所を基準として、その基準から count バイトを読み込み、それを buf に格納する。\ref{table:pread}
+
+\begin{tiny}
+  \begin{table}[ht]
+    \begin{center}
+      \label{table:pread}
+      \small
+      ssize\_t pread(int d, void *buf, size\_t nbyte, off\_t offset);
+
+      \begin{tabular}[t]{c|l}
+        \hline
+        int d & 読み込むファイルのファイルディスクリプタ\\
+        \hline
+        void *buf & 読み込んだファイルの格納場所 \\
+        \hline
+        size\_t nbyte & 読み込むファイル量\\
+        \hline
+        off\_t offset & ファイル先頭からの読み込み開始位置\\
+        \hline
+      \end{tabular}
+      \caption{pread 関数の概要}
+    \end{center}
+  \end{table}
+\end{tiny}
+
 mmap での実装との違いは、ファイルの読み込みがどのタイミングで起こるかである。
 mmap で実装したときは、Task 1つ 1つが読み込みを行ってから処理を行う。
 それに対して、Blocked Readは、読み込み専用の Read Task と、処理専用の Task を別々に生成する。
@@ -99,7 +126,6 @@
 
 
 
-
 \section{I/O 専用 thread の実装}
 Cerium Task Manager では、各種 Task にデバイスを設定することができる。デバイスとは、GPU や CPU であり、GPUを利用するときは GPU\_ANY、CPU を利用するときは SPE\_ANYと設定することによってデバイスを利用できる。
 
@@ -116,7 +142,10 @@
 \label{fig:speany}
 \end{figure}
 
-この問題を解決するために、Task Manager に新しいデバイス設定を追加した。
+この問題を解決するために、Task Manager に IO\_0という新しいデバイス設定を追加した。
+この設定は他のデバイス設定よりも priority を高く設定している。SPE\_ANY よりも高く設定しているので、SPE\_ANY で設定した Task に割り込まれることがなくない。
+
+Read Task には IO\_0、文字列検索の Task には SPE\_ANY でデバイスの設定を行うと、Read Task の隙間時間に 文字列検索の Task が割り込むことはなくなる。
 
 ・ Cerium の Task に CPU Type を設定することができる。しかし、同じCPU Type を使用すると、IO を担当している CPU に Task が割り振られて、read 全体の速度が遅くなってしまう。
 ・ Cerium では ptherad で並列処理を記述している
Binary file paper/thesis-paper.pdf has changed
Binary file preliminary/final-thesis.pdf has changed
--- a/preliminary/final-thesis.tex	Sat Feb 22 23:31:55 2014 +0900
+++ b/preliminary/final-thesis.tex	Sun Feb 23 20:19:51 2014 +0900
@@ -70,7 +70,7 @@
 
 \subsection{Blocked Read の設計と実装}
 Blocked Read とは、あるサイズずつで読み込む処理と、それらに文字列検索行う処理を分離させるための実装方法である。
-この方法では、読み込み専用の Blocked Read と、文字列検索を行う Task Blocks をを別々に生成し処理を行う。
+この方法では、読み込み専用の Blocked Read と、文字列検索を行う Task Blocks を別々に生成し処理を行う。
 Read Task はファイル全体を一度に読み込むのではなく、ある程度の大きさで分割を行い、読み込みされ次第それぞれの文字列検索が行われる。
 
 Task は 1つずつ起動すると、起動した Task でメモリを圧迫してしまうため、Task を複数まとめたブロック単位で起動を行う。