Mercurial > hg > Papers > 2014 > masakoha-sigos
changeset 40:e47b86ad3214
fix
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 13 May 2014 17:25:59 +0900 |
parents | 3e23bbe3abe3 |
children | 46dd50de6f90 |
files | presen/s6/index.html |
diffstat | 1 files changed, 18 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/presen/s6/index.html Tue May 13 17:00:04 2014 +0900 +++ b/presen/s6/index.html Tue May 13 17:25:59 2014 +0900 @@ -92,7 +92,7 @@ </tr> <tr> <td><div align="left"> - Masataka Kohagura + Masataka Kohagura,Shinji Kono, <script> var date = new Date(); var year = date.getFullYear(); @@ -286,8 +286,8 @@ <img src='images/includeIOTask.png' style="height:330px" align="middle"> <ol> <li>ファイルをある一定の大きさずつ読み込む</li> - <li>読み込んだテキストファイルに対して、それぞれ 並列計算 を行う</li> - <li>並列計算の結果を集計する</li> + <li>読み込んだテキストファイルに対して、それぞれ 並列に計算 を行う</li> + <li>計算の結果を集計する</li> </ol> </div> @@ -317,30 +317,20 @@ </ul> </div> + <div class='slide'> - <h2>Blocked Read 間に Task が割り込まれないようにする</h2> + <h2>I/O 専用 thread での Blocked Read の実装</h2> <br> - <img src='images/read_break.png' style="height:300px"align="middle"> - <!-- UML 形式にして --> - <br> - + <!--<img src='images/IO_0blockread.png' style="height:350px">--> <ul> <li> I/O を含むアプリケーションの実行時間は、ほとんどが I/O ネックとなることが多い。 </li> <li> - 読み込みの間に Task が割り込まれると、全体の実行速度が遅くなってしまう。 + 読み込みの間に Task が割り込まれると、下の図のように全体の実行速度が遅くなってしまう。 </li> - </ul> - </div> - - <div class='slide'> - <h2>I/O 専用 thread での Blocked Read の実装</h2> - <br> - <img src='images/IO_0blockread.png' style="height:350px"> - <ul> - <li>SPE_ANYは TaskManager 側が自動的に CPU を Task に割り振ってくれる。</li> - <li>Blocked Read Task は Word Count とは別に Thread を割り当てることにより、Blocked Read Task 間に Word Count が割り込まれないようにした。</li> + <br><img src='images/read_break.png' style="height:300px"align="middle"><br> + <li>Blocked Read Task に I/O 専用 thread を用意して、 Word Count とは別に Thread を割り当てることにより、Blocked Read Task 間に Word Count が割り込まれないようにした。</li> <li>Thread レベルで割り込まれないように、pthread_setschedparam にて IO_0 の priority を設定している。<br> </li> </ul> @@ -861,29 +851,33 @@ mmap での実行時は、Blocked Read size を小さくしたほうが速度が向上した。これは、まとめと読み込むサイズが小さくなればなるほど、sequential access に近い動作になるからであると考えられる。 </p> <p> - I/O の読み込みと並列計算を分離して、同時に処理させたほうが、全体的に安定した速度がでる。mmapだと、一度に読み込む大きさが大きくなってしまうと遅くなる。 + I/O の読み込みと並列計算を分離して、同時に処理させたほうが、全体的に安定した速度がでるが、mmapだと一度に読み込む大きさが小さければ速い。 </p> <p> - mmap は OS での読み込み依存のため、環境によって左右されやすい。 + mmapは読み込みの大きさによって全体の速度が変わってしまうが、どんな大きさでも安定した速度で改良する余地があると思われる。 </p> <p> - mmap の読み込み方法を指定することができるが、default である MADV_NORMAL でも充分に速くなる。 + </p> </div> <div class='slide'> <h2>まとめ</h2> <ul> - <li> I/O と Task を分離し、同時に動くように改良した。 </li> + <li> I/O と Task を分離し、同時に動くように改良し、どの環境でも安定した速度が出た。 </li> <li> I/O 専用の Thread の追加 </li> <li> + mmap でも一度に読み込む大きさを小さくすれば、Blocked Read とほぼ同じ速度が出る。 </li> </ul> <h2 class="yellow">今後の課題</h2> <ul> <li> Cerium の API として実装 </li> <li> - 様々な実装の試み<br>(I/O threads を 2つ、分割 mmap・・・) + 様々な実装の試み<br>(I/O threads を 2つ使用したプログラム、分割 mmap) + </li> + <li> + 様々な環境での測定 </li> <li> grepの実装