comparison paper/conclusion.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
comparison
equal deleted inserted replaced
11:14ce22f649d9 12:6f6f482b9f12
1 \section{まとめと今後の課題} 1 \section{まとめと今後の課題}
2 2 本研究では、Task と 読み込みが並列に動作するように Blocked Read の実装を行った。
3 本研究では、I/Oを含む Task の並列処理の動作改善を行った。 3 またそれだけだと、Blocked Read に Task が割り込まれるので、I/O 専用 thread の追加を行った。
4 ファイルを mmap にて読み込むと、WordCount を行う Task がそれぞれ読み込みを行う。 4 Blocked Read に I/O 専用 thread を割り当てると、さらに速くなった。
5
6 読み込みが各 Task それぞれに割り当てられてしまうので、すべての Task が読み込み待ちとなってしまう。
7 それを解決する方法として、Read Task と文字列処理を行う Task を分けるように Blocked Read の設計と実装を行った。
8
9 Blocked Read である程度の大きさを読み込んだら Task が順次起動するように実装したのだが、それだけだと、順次読み込んでいる Blocked Read に Task が割り込まれてしまう。
10 そのようなことが起こらないように、Cerium Task Manager に新しいデバイスの設定 IO\_0 というタイプを追加した。
11 5
12 I/O が含まれるときの並列処理は、I/O のコントロールをプログラマが実装することで動作改善に繋がる。 6 I/O が含まれるときの並列処理は、I/O のコントロールをプログラマが実装することで動作改善に繋がる。
13 7
14 本来読み込みを行ったファイルは、一度プログラムを実行したあとでもキャッシュとしてメモリ上にテキストがそのまま残っている。 8 本来読み込みを行ったファイルは、一度プログラムを実行したあとでもキャッシュとしてメモリ上にテキストがそのまま残っている。
15 %キャッシュとは、使用頻度の高いデータを高速なデバイスに蓄えておくことによって読み込みのオーバーヘッドを少なくするための機能である。 9 %キャッシュとは、使用頻度の高いデータを高速なデバイスに蓄えておくことによって読み込みのオーバーヘッドを少なくするための機能である。
16 mmap で実装を行うと、同じファイルに対して複数回検索を行うときに 2回目以降のプログラムの処理は速くなる。 10 mmap で実装を行うと、同じファイルに対して複数回検索を行うときに 2回目以降のプログラムの処理は速くなる。
17 それに対して、 11 それに対して、
18 Blocked Read も 2回目以降の実行速度は mmap と同様に速くなるのだが、ある一定のファイルサイズを越えてしまうとキャッシュが無効となってしまう。 12 Blocked Read も 2回目以降の実行速度は mmap と同様に速くなるのだが、ある一定のファイルサイズを越えてしまうとキャッシュが無効となってしまう。
19 10GB のファイルではそのようなことが発生することは確認しているが、どれくらいの大きさからキャッシュが無効になるのか不明である。 13 10GB のファイルではそのようなことが発生することは確認したが、なぜこのようなことが発生するのか調査する。
20 14
21 キャッシュが無効になってしまうと、Blocked Read で実装した文字列検索は複数回実行するときに不利となる。 15 さらに、pread による複数 read を実装したが、複数 mmap に関してはまだ実装・計測を行っていない。これらの計測を行って、どちらが最高速に動作するかどうか調べる必要がある。
22 なぜこのようなことが起こるのか調査して、それが起こらないように実装する必要がある。 16
17 また、Blocked Read のコードを記述するのは煩雑で、これらを毎回記述することは大変である。
18 これを Cerium の API として落としこむことによって、簡単に利用できるようにしたい。