annotate preliminary/final-thesis.tex @ 0:7e7094064d57

add somefiles
author MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
date Thu, 11 Jun 2015 00:39:50 +0900
parents
children 3520a4a36c6f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 \documentclass[twocolumn,twoside,9.5pt]{jarticle}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 \usepackage[dvipdfmx]{graphicx}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 \usepackage{picins}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 \usepackage{fancyhdr}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 \pagestyle{fancy}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 \lhead{\parpic{\includegraphics[height=1zw,clip,keepaspectratio]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究発表会}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 \rhead{}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 \cfoot{}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 \setlength{\headheight}{0mm}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 \setlength{\headsep}{5mm}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 \setlength{\textwidth}{181mm}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 \setlength{\textheight}{261mm}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 \setlength{\footskip}{0mm}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 \pagestyle{empty}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 \begin{document}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 \title{Cerium による並列処理向け I/O の設計と実装}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 \author{085726C {古波倉}{正隆} 指導教員 : 河野真治}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 \date{}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 \maketitle
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 \thispagestyle{fancy}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 \section{研究背景と目的}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 近年、CPU 1 コア当たりのクロック数が頭打ちとなっているため、シングルコアでの処理能力はほとんど上がっていない。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 それを解決した結果、シングルコアからマルチコアへの移行によって CPU 性能が向上している。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 しかし、マルチコア CPU を最大限に活かすためには、プログラムの並列度を向上させなければならない。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 そこで当研究室では、並列プログラミング用フレームワーク、Cerium 及び Cerium Task Manager の開発を行い、提供することによって並列プログラミングを容易にしている。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 先行研究による Task の並列化によって、プログラム全体の処理速度は飛躍的に向上しているが\cite{kinjyo} 、
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 ファイル読み込み等の I/O 処理と Task が並列で動作するようには実装されていない。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 本研究では I/O処理 と Task が並列に動作するような設計、実装によってプログラム全体の並列度、及び処理速度を上げていく。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 \section{Cerium Task Manager}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 Cerium Task Managerは、並列処理をTask単位で記述する。関数やサブルーチンをTaskとして扱い、そのTaskに対してInput Data、Output Data及び依存関係を設定する。そして、それに基づいた設定の元で Task Manager に管理され実行される。本稿で述べるInput Dataとは、検索対象となるテキストファイルのことである。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 Cerium Task ManagerはPlayStation 3/Cell、Mac OS X及びLinux上で利用することができる。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 \section{I/O を含む Task の概要}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 ファイルを読み込んで一定の大きさでファイルを分割し (File Read)、それらに対してそれぞれ文字列検索等の処理 (Task)を行う。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 そしてそれぞれの処理から返されたの結果 (Output Data)を最後に集計をして結果を返す(Result Task)。(図\ref{fig:includeio})
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 \begin{figure}[htbp]
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 \begin{center}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 \includegraphics[width=0.5\textwidth]{pic/includeio.pdf}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 \end{center}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 \caption{I/O を含む Task}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 \label{fig:includeio}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 \end{figure}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 \section{並列処理向け I/O の設計と実装}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 \subsection{mmap での実装の問題点}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 先行研究では mmap によるファイルの読み込みを行っていた。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 mmap でファイルを読み込むタイミングは、mmap 関数が呼ばれたときではなく、mmap した領域に対して何らかのアクセスをしたときに初めてファイルが読み込まれる。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 つまり、分割された Task は文字列検索をすぐに行うのではなく、文字列検索を行おうとした時に初めてファイルが格納される。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 Task は複数一斉に実行されることが望ましいが、mmap ではそれぞれの Task で読み込みが起こってしまうため、I/O ネックによる Task の待ちが発生する。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 \subsection{Blocked Read の設計と実装}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 Blocked Read とは、あるサイズずつで読み込む処理と、それらに文字列検索を行う処理を分離させるための実装方法である。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 この方法では、読み込み専用の Blocked Read と、文字列検索を行う Task Blocks を別々に生成し処理を行う。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 Read Task はファイル全体を一度に読み込むのではなく、ある程度の大きさで分割を行い、読み込みされ次第それぞれの文字列検索が行われる。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 Task は 1つずつ起動すると、起動した Task でメモリを圧迫してしまうため、Task を複数まとめたブロック単位で起動を行う。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 この1つのブロックで処理されるテキストファイルを、Blocked Read で読み込んでいき、読み込みが終わったら読み込まれた範囲の Task Blocks を起動する。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 もし、Blocked Read で読み込まれる前にその範囲を担当する Task が起動してしまうと、正しい結果が返ってこない。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 それを防止するために、Task Blocks は必ず Blocked Read が行われてから起動するように wait をかけている。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 (図\ref{fig:blockedreadwait})
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 \begin{figure}[htbp]
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 \begin{center}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 \includegraphics[width=0.5\textwidth]{pic/blockedreadwait.pdf}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 \end{center}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 \caption{Wait for Blocked Read}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 \label{fig:blockedreadwait}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 \end{figure}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 \subsection{I/O 専用 thread の実装}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 Cerium Task Manager では Task 単位で CPU Type の設定を変更することができる。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 SPE\_ANY という Type を設定すると、Cerium Task Manager 側が自動的に CPU を割り振る。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 しかし、今回の実装でこの Type を使用してしまうと、Blocked Read Task に割り込んで Task が割り振られてしまう問題がある。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 その問題を解決するために、IO\_0 という I/O 専用の thread を実装した。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 この Thread は I/O を最優先に実行されるようにチューニングを行った。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 (図\ref{fig:io0})
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 %%
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 %(図\ref{fig:speany})
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 %
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 %\begin{figure}[htbp]
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 %\begin{center}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 %\includegraphics[width=0.4\textwidth]{pic/speany.pdf}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 %\end{center}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 %\caption{SPE\_ANYでの設定時}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 %\label{fig:speany}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 %\end{figure}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
98
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
99
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 \begin{figure}[htbp]
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 \begin{center}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 \includegraphics[width=0.4\textwidth]{pic/io0.pdf}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 \end{center}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 \caption{IO\_0 での実装時}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 \label{fig:io0}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 \end{figure}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
107
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 \newpage
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
109
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 \section{ベンチマーク}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
111
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 \begin{itemize}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 \item Mac OS X Mavericks (10.9.1)
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 \item HDD 1TB、Memory 16GB、CPU 2*2.66 GHz 6-Core Intel Xeon
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 \item CPU NUM 12
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 \item 10GB のファイルに対して Booye-Moore String Search をかけ、検索文字列がいくつ含まれているのかカウント
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 \item 測定はファイルの読み込みから結果が返ってくるまでの時間
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 \end{itemize}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
119
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 %以下の表\ref{table:result}に実行結果を示す。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 以下の表1に実行結果を示す。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
122
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 \begin{tiny}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 \begin{table}[ht]
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 \begin{center}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 \label{table:result}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 \small
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 \begin{tabular}[t]{c|r}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 \hline
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 読み込み方法 & 平均実行速度(s)\\
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 \hline
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 mmap & 154.6 \\
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 \hline
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 一括 Read & 114.9 \\
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 \hline
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 Blocked Read \& SPE\_ANY & 106.0 \\
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 \hline
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 Blocked Read \& IO\_0 & 99.2 \\
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 \hline
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 \end{tabular}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 \caption{実行結果}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 \end{center}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 \end{table}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 \end{tiny}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
145
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 %\ref{table:result}より、mmap より Blocked Read \& IO\_0 の実行速度が 36 \% 改善された。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 表1より、mmap より Blocked Read \& SPE\_ANY の実行速度が 31\% 改善された。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 また、Blocked Read の CPU Type も SPE\_ANY から IO\_0 に変更することによって更に 4 \% の改善が見られた。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 これより、I/O を含む並列処理を行う場合は、mmap で実装することによって自動的に読み込ませるのではなく、自分自身で読み込みを制御したほうが速くなることがわかる。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
150
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 \section{まとめ}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 mmap で I/O を含む Task を実装するとき、mmap した領域に対して何らかの処理が加わった時にしか読み込みが行わないので、それぞれの Task に読み込みを任せてしまうことになる。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 それを解決する方法として、Blocked Read と Task を並列に行う実装を行った。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 また、Blocked Read が、他の Task に割り込まれないように改善した結果、35 \% の実行速度の改善が見られた。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 本研究より、I/O を含む Task は、チューニング次第で更に改善する余地があると考える。
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
156
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
157
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 \thispagestyle{fancy}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 \begin{thebibliography}{9}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
160
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 \bibitem{kinjyo}金城裕、河野真治、多賀野海人、小林佑亮 (琉球大学)\\
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 ゲームフレームワーク Cerium Task Manager の改良\\
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 情報処理学会システムソフトウェアとオペレーティング・システム研究会 (OS), April 2011
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
164
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 \end{thebibliography}
7e7094064d57 add somefiles
MasaKoha <kogagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 \end{document}