changeset 30:110e54772bf9

fix slide
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Tue, 06 May 2014 15:01:45 +0900
parents ec6c5c55a19b
children 9b043cb87ee9
files slide/April_25th.html slide/index.html
diffstat 2 files changed, 490 insertions(+), 364 deletions(-) [+]
line wrap: on
line diff
--- a/slide/April_25th.html	Mon May 05 23:10:01 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,364 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="content-type" content="text/html;charset=utf-8"> 
-  <title>slide</title>
-
-<!-- 
-   Notes on CSS media types used:
- 
-   1) projection -> slideshow mode (display one slide at-a-time; hide all others)
-   2) screen     -> outline mode (display all slides-at-once on screen) 
-   3) print      -> print (and print preview)
-  
-   Note: toggle between projection/screen (that is, slideshow/outline) mode using t-key
-
-   Questions, comments?
-   - send them along to the mailinglist/forum online @ http://groups.google.com/group/webslideshow    
--->
-
-<!-- styles  -->
-<style media="screen,projection">
-
-html,
-body,
-.presentation { margin: 0; padding: 0; }
-
-.slide { display: none;
-         position: absolute;
-         top: 0; left: 0; 
-         margin: 0;
-         border: none;
-         padding: 2% 4% 0% 4%;         /* css note: order is => top right bottom left  */
-         -moz-box-sizing: border-box;
-         -webkit-box-sizing: border-box;
-         box-sizing: border-box;
-         width: 100%; height: 100%;    /* css note: lets use border-box; no need to add padding+border to get to 100% */
-         overflow-x: hidden; overflow-y: auto;
-         z-index: 2;
-       }
-
-.slide.current { display: block; }  /* only display current slide in projection mode */
-
-.slide .stepcurrent { color: black; }
-.slide .step        { color: silver; } /* or hide next steps e.g. .step { visibility: hidden; } */
-
-.slide {
-/*
-  background-image: -webkit-linear-gradient(top, blue, aqua, blue, aqua);
-  background-image: -moz-linear-gradient(top, blue, aqua, blue, aqua);
-*/
-}
-</style>
-
-<style media="screen">
-.slide             { border-top: 1px solid #888; }
-.slide:first-child { border: none;  }
-</style>
-
-<style media="print">
-.slide    { page-break-inside: avoid; }
-.slide h1 { page-break-after:  avoid; }
-.slide ul { page-break-inside: avoid; }
-</style>
-
-
-<!-- add js lib (jquery) -->
-<script src="js/jquery-1.7.min.js"></script>
-
-<!-- S6 JS -->
-<script src="js/jquery.slideshow.js"></script>
-<script src="js/jquery.slideshow.counter.js"></script>
-<script src="js/jquery.slideshow.controls.js"></script>
-<script>
-  $(document).ready( function() {
-    Slideshow.init();
-    
-    // Example 2: Start Off in Outline Mode
-    // Slideshow.init( { mode: 'outline' } );
-    
-    // Example 3: Use Custom Transition
-    // Slideshow.transition = transitionScrollUp;
-    // Slideshow.init();
-
-    // Example 4: Start Off in Autoplay Mode with Custom Transition
-    // Slideshow.transition = transitionScrollUp;
-    // Slideshow.init( { mode: 'autoplay' } );
-  } );
-</script>
-
-</head>
-<body>
-
-
-<div class="presentation">
-
-  <div class='slide cover'>
-  <table width="90%" height="90%" border="0" align="center">
-  <tr>
-  <td><div align="center">
-      <h1>Cerium による並列処理向け I/O の設計と実装</h1>
-      </div>
-  </td>
-  </tr>
-      <tr>
-      <td><div align="right">
-          <name>琉球大学大学院 古波倉 正隆,河野 真治</name>
-      </div></td>
-      </tr>
-  </tr>
-  </table>
-  </div>
-
-
-
-  <div id="cover">
-
-    <h3>I/Oを含むアプリケーションの並列化</h3>
-    I/O を含む Task は ディスクかの読み込む時間がかかる。<br>
-    -> <font color = red>I/O をどうにか速くできないか?</font>
-    <p>
-    Cerium : <br>
-    CellおよびLinux、 Mac OS X 上で動く並列プログラミングフレームワーク
-    </p>
-    <img src='images/resources.png' style="height:170px" align="middle">
-    <ul>
-    <li><font color=red>ファイル読み込みとアプリケーションの分離</font> </li>
-    <li><font color=red>I/O専用の Threadを追加</font></li>
-    </ul>
-    mmap 実装と比較して1.5倍の速度を得た
-
-  </div>
-
-  <div id="cover">
-
-    <h3>Cerium Task Manager の構造</h3>
-    <table  border="0" cellpadding="0" cellspacing="0">
-        <tbody>
-            <tr>
-            <td><img src='images/ceriumtaskmanager.png' style="height:280px"></td>
-            <td>
-                <ol>
-                    <li>Taskを生成</li>
-                    <li>依存関係のチェック</li>
-                    <li>Schedulerに転送</li>
-                    <li>並列実行</li>
-                </ol>
-            </td>
-            </tr>
-        </tbody>
-    </table>
-    <p>
-    ファイルを読みながら、Word Count や grep などを<br>
-    並列実行したい
-    </p>
-    <p>
-    計算よりも読み込みを優先しなければならない。読み込みで待ちが入ってしまうので、IO Thread を追加
-    </p>
-
-  </div>
-  <!-- add slides here; example -->
-
-  <div class='cover'>
-    <h3>Block 単位の読み込みと並列計算</h3>
-    <br>
-    <img src='images/includeIOTask.png' style="height:270px" align="middle">
-    <ol>
-        <li>ファイルをある一定の大きさで読み込む</li>
-        <li>読み込んだテキストファイルに対して、それぞれ計算を行う</li>
-        <li>計算した結果を集計する</li>
-    </ol>
-  </div>
-
-
-  <div class='cover'>
-    <h3>mmap の特徴</h3>
-    従来では mmap を使って読み込んでいた
-    <table  border="0" cellpadding="0" cellspacing="0">
-        <tbody>
-            <tr>
-                <td><img src='images/mmap.png' style="height:350px" align="middle"></td>
-                <td>
-                    <ul>
-                        <font size = 5>
-                            <li>
-                            mmap は、ファイルを直接メモリ空間に map する。<br>
-                            アクセスされたメモリ部分を OS が自動的に読み込む。<br>
-                            </li>
-                            <li>
-                            code がシンプルだが、読み込み終わるまで待たされる。 <br>
-                            </li>
-                        </font>
-                    </ul>
-                </td>
-            </tr>
-        </tbody>
-    </table>
-  </div>
-
-
-  <div class='cover'>
-    <h3>読み込みながら計算を行う</h3>
-    <br>
-    <img src='images/divide_read.png' style="height:250px" align="middle" >
-    <br>
-
-    <ul>
-        <li> Read は 連続で動作しファイルを読み込む </li>
-        <li> Read の待ちは CPU を消費しない </li>
-        <li> 読み込み終わったブロックに対して、<br>並列 Task を起動する </li>
-    </ul>
-  </div>
-
-
-  <div class='cover'>
-    <h3>Blocked Read の実装</h3>
-    <br>
-    <img src='images/blockread.png' style="height:250px"align="middle">
-    <br>
-
-    <ul>
-        <li>
-        Task を一度に生成するとメモリを圧迫する。<br>
-        Block 単位で徐々に起動していく。
-        </li>
-        <li>
-        Blocked Read Task が読み込み終わるまで、<br>Task Blockを待たせる
-        </li>
-        <li>
-        待ち合わせには Cerium の wait for を使用する。
-        </li>
-    </ul>
-  </div>
-
-  <div class='cover'>
-    <h3>I/O 専用 thread での Blocked Read の実装</h3>
-    <br>
-    <img src='images/IO_0blockread.png' style="height:350px">
-    <ul>
-        <li>priority が最優先されるので、Blocked Read Task に割り込みが行われなくなる<br>
-        <li>pthread_setschedparam にて実装<br>
-        </li>
-    </ul>
-  </div>
-
-  <div class="cover">
-    <h3>I/O 専用の thread を使用しない場合</h3>
-    <br>
-    <img src='images/SPE_ANYblockread.png' style="height:350px">
-    <ul>
-        <li>Blocked Read は連続で行われなければならない。<br>しかし、Task が割り振られてしまう可能性がある。 </li>
-    </ul>
-  </div>
-
-  <div class='cover'>
-<h3>実験環境</h3>
-<br>
-<ul>
-    <li> Mac OS X 10.9.1</li>
-    <li> 2*2.66 GHz 6-Core Intel Xeon</li>
-    <li> Memory 16GB 1333MHz DDR3</li>
-    <li> HHD 1TB</li>
-    <li> file size : 約 10 GB</li>
-    <li> ファイルに対して Boyer-Moore String Seaech で文字列検索をかける </li>
-    <li> ファイルの読み込みから結果までを測定</li>
-</ul>
-  </div>
-
-
-  <div class='cover'>
-<table  border="2" cellpadding="0" cellspacing="0">
-    <tbody>
-        <tr>
-            <td>read mode</td>
-            <td>CPU num</td>
-            <td>ave time(s)</td>
-        </tr>
-        <tr>
-            <td>mmap</td>
-            <td>2</td>
-            <td>106.2</td>
-        </tr>
-        <tr>
-            <td bgcolor="#ffffcc">mmap</td>
-            <td bgcolor="#ffffcc">12</td>
-            <td bgcolor="#ffffcc">154.6</td>
-        </tr>
-        <tr>
-            <td>一括Read</td>
-            <td>12</td>
-            <td>114.9</td>
-        </tr>
-        <tr>
-            <td>Blocked Read(SPE_ANY)</td>
-            <td>12</td>
-            <td>106.0</td>
-        </tr>
-        <tr>
-            <td bgcolor="#ffffcc">Blocked Read(IO_0)</td>
-            <td bgcolor="#ffffcc">(IO) 1 + (Task) 11</td>
-            <td bgcolor="#ffffcc">99.2</td>
-        </tr>
-    </tbody>
-</table>
-
-    <ul>
-        <li> Blocked Read & IO_0 が mmap より<font color=red>1.55倍</font>速度が向上<br> </li>
-        <li> Blocked Read を IO 専用 thread で実装すると、<font color=red>6%</font>改善<br> </li>
-        <!--
-        <li> mmap では 1つ1つの Task がファイルの読み込みを行ってしまうため、読み込み回数が多くなり実行速度が遅くなったと考えられる。 </li>
-        
-        -->
-        <li> mmap で並列の Task で走らせると 1つ1つの Task がファイルを読み込み、ランダムアクセスとなって<br>しまうため速度が遅くなってしまう。</li>
-    </ul>
-  </div>
-
-
-  <div class='cover'>
-    <h3>まとめ</h3>
-    <ul>
-        <li> I/O と Task を分離し、同時に動くように改良した。 </li>
-        <li> I/O 専用の Thread の追加 </li>
-        <li>
-        I/O を含む Task をで並列実装するときに mmap では不向きであり、
-        Blocked Read で読み込みを制御したほうが効果的。
-        </li>
-    </ul>
-    <h3 class="yellow">今後の課題</h3>
-    <ul>
-        <li> Cerium の API として実装 </li>
-        <li>
-        様々な実装の試み<br>(I/O threads を 2つ、分割 mmap・・・)
-        </li>
-        <li>
-        grepの実装
-        </li>
-    </ul>
-  </div>
-
-  <div class='cover'>
-  </div>
-
-  <div class="cover">
-  </div>
-
-  <div class='cover'>
-  </div>
-
-
-  <div class='cover'>
-  </div>
-
-
-  <div class='cover'>
-  </div>
-
-  <div class='cover'>
-  </div>
-
-  <div class="cover">
-  </div>
-
-</div> <!-- presentation -->
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/slide/index.html	Tue May 06 15:01:45 2014 +0900
@@ -0,0 +1,490 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8"> 
+  <title>slide</title>
+
+<!-- 
+   Notes on CSS media types used:
+ 
+   1) projection -> slideshow mode (display one slide at-a-time; hide all others)
+   2) screen     -> outline mode (display all slides-at-once on screen) 
+   3) print      -> print (and print preview)
+  
+   Note: toggle between projection/screen (that is, slideshow/outline) mode using t-key
+
+   Questions, comments?
+   - send them along to the mailinglist/forum online @ http://groups.google.com/group/webslideshow    
+-->
+
+<!-- styles  -->
+<style media="screen,projection">
+
+html,
+body,
+.presentation { margin: 0; padding: 0; }
+
+.slide { display: none;
+         position: absolute;
+         top: 0; left: 0; 
+         margin: 0;
+         border: none;
+         padding: 2% 4% 0% 4%;         /* css note: order is => top right bottom left  */
+         -moz-box-sizing: border-box;
+         -webkit-box-sizing: border-box;
+         box-sizing: border-box;
+         width: 100%; height: 100%;    /* css note: lets use border-box; no need to add padding+border to get to 100% */
+         overflow-x: hidden; overflow-y: auto;
+         z-index: 2;
+       }
+
+.slide.current { display: block; }  /* only display current slide in projection mode */
+
+.slide .stepcurrent { color: black; }
+.slide .step        { color: silver; } /* or hide next steps e.g. .step { visibility: hidden; } */
+
+.slide {
+/*
+  background-image: -webkit-linear-gradient(top, blue, aqua, blue, aqua);
+  background-image: -moz-linear-gradient(top, blue, aqua, blue, aqua);
+*/
+}
+</style>
+
+<style media="screen">
+.slide             { border-top: 1px solid #888; }
+.slide:first-child { border: none;  }
+</style>
+
+<style media="print">
+.slide    { page-break-inside: avoid; }
+.slide h1 { page-break-after:  avoid; }
+.slide ul { page-break-inside: avoid; }
+</style>
+
+
+<!-- add js lib (jquery) -->
+<script src="js/jquery-1.7.min.js"></script>
+
+<!-- S6 JS -->
+<script src="js/jquery.slideshow.js"></script>
+<script src="js/jquery.slideshow.counter.js"></script>
+<script src="js/jquery.slideshow.controls.js"></script>
+<script>
+  $(document).ready( function() {
+    Slideshow.init();
+    
+    // Example 2: Start Off in Outline Mode
+    // Slideshow.init( { mode: 'outline' } );
+    
+    // Example 3: Use Custom Transition
+    // Slideshow.transition = transitionScrollUp;
+    // Slideshow.init();
+
+    // Example 4: Start Off in Autoplay Mode with Custom Transition
+    // Slideshow.transition = transitionScrollUp;
+    // Slideshow.init( { mode: 'autoplay' } );
+  } );
+</script>
+
+</head>
+<body>
+
+
+<div class="presentation">
+
+  <div class='slide cover'>
+  <table width="90%" height="90%" border="0" align="center">
+  <tr>
+  <td><div align="center">
+      <h1>Cerium による並列処理向け I/O の実装</h1>
+      </div>
+  </td>
+  </tr>
+      <tr>
+      <td><div align="right">
+          <name>古波倉 正隆,河野 真治</name>
+      </div></td>
+      </tr>
+  </tr>
+  </table>
+  </div>
+
+  <div id="cover">
+    <h3>I/Oを含むアプリケーションの並列化</h3>
+
+    ファイル内の文字列検索を行うようなプログラムを走らせたとき、
+    <font color = red>文字列検索よりもファイルの読み込みに時間がかかる</font>ことが多い。
+
+    I/O は、ディスクからの読み込む時間がかかる。<br>
+    -> <font color = red>I/O をどうにか速くできないか?</font>
+    <p>
+    Cerium : <br>
+    CellおよびLinux、 Mac OS X 上で動く並列プログラミングフレームワーク
+    </p>
+    <img src='images/resources.png' style="height:170px" align="middle">
+    <ul>
+    <li><font color=red>ファイル読み込みとアプリケーションの分離</font> </li>
+    <li><font color=red>I/O専用の Threadを追加</font></li>
+    </ul>
+    mmap 実装と比較して1.5倍の速度を得た
+  </div>
+
+  <div id="cover">
+
+    <h3>Cerium Task Manager の構造</h3>
+    <table  border="0" cellpadding="0" cellspacing="0">
+        <tbody>
+            <tr>
+            <td><img src='images/ceriumtaskmanager.png' style="height:280px"></td>
+            <td>
+                <ol>
+                    <li>Taskを生成</li>
+                    <li>依存関係のチェック</li>
+                    <li>Schedulerに転送</li>
+                    <li>並列実行</li>
+                </ol>
+            </td>
+            </tr>
+        </tbody>
+    </table>
+    <p>
+    ファイルを読みながら、Word Count や grep などを<br>
+    並列実行したい
+    </p>
+    <p>
+    計算よりも読み込みを優先しなければならない。読み込みで待ちが入ってしまうので、IO Thread を追加
+    </p>
+
+  </div>
+  <!-- add slides here; example -->
+  <div class='cover'>
+  <h3>Cerium の例題 : WordCount</h3>
+
+  </div>
+
+
+  <div class='cover'>
+    <h3>Block 単位の読み込みと並列計算</h3>
+    <br>
+    <img src='images/includeIOTask.png' style="height:270px" align="middle">
+    <ol>
+        <li>ファイルをある一定の大きさで読み込む</li>
+        <li>読み込んだテキストファイルに対して、それぞれ計算を行う</li>
+        <li>計算した結果を集計する</li>
+    </ol>
+  </div>
+
+
+  <div class='cover'>
+    <h3>mmap の特徴</h3>
+    従来では mmap を使って読み込んでいた
+    <table  border="0" cellpadding="0" cellspacing="0">
+        <tbody>
+            <tr>
+                <td><img src='images/mmap.png' style="height:350px" align="middle"></td>
+                <td>
+                    <ul>
+                        <font size = 5>
+                            <li>
+                            mmap は、ファイルを直接メモリ空間に map する。<br>
+                            アクセスされたメモリ部分を OS が自動的に読み込む。<br>
+                            </li>
+                            <li>
+                            code がシンプルだが、読み込み終わるまで待たされる。 <br>
+                            </li>
+                        </font>
+                    </ul>
+                </td>
+            </tr>
+        </tbody>
+    </table>
+  </div>
+
+
+  <div class='cover'>
+    <h3>読み込みながら計算を行う</h3>
+    <br>
+    <img src='images/divide_read.png' style="height:250px" align="middle" >
+    <br>
+
+    <ul>
+        <li> Read は 連続で動作しファイルを読み込む </li>
+        <li> Read の待ちは CPU を消費しない </li>
+        <li> 読み込み終わったブロックに対して、<br>並列 Task を起動する </li>
+    </ul>
+  </div>
+
+
+  <div class='cover'>
+    <h3>Blocked Read の実装</h3>
+    <br>
+    <img src='images/blockread.png' style="height:250px"align="middle">
+    <br>
+
+    <ul>
+        <li>
+        Task を一度に生成するとメモリを圧迫する。<br>
+        Block 単位で徐々に起動していく。
+        </li>
+        <li>
+        Blocked Read Task が読み込み終わるまで、<br>Task Blockを待たせる
+        </li>
+        <li>
+        待ち合わせには Cerium の wait for を使用する。
+        </li>
+    </ul>
+  </div>
+
+  <div class='cover'>
+    <h3>I/O 専用 thread での Blocked Read の実装</h3>
+    <br>
+    <img src='images/IO_0blockread.png' style="height:350px">
+    <ul>
+        <li>Task とは別に Thread を割り当てているので、Read Task に割り込みが行われなくなる<br></li>
+        <li>pthread_setschedparam にて実装<br>
+        </li>
+    </ul>
+  </div>
+
+  <div class="cover">
+    <h3>I/O 専用の thread を使用しない場合</h3>
+    <br>
+    <img src='images/SPE_ANYblockread.png' style="height:350px">
+    <ul>
+        <li>Blocked Read は連続で行われなければならない。<br>しかし、Task が割り振られてしまう可能性がある。 </li>
+    </ul>
+  </div>
+
+  <div class='cover'>
+<h3>実験概要</h3>
+<p>実験環境</p>
+<ul>
+    <li> Mac OS X 10.9.1</li>
+    <li> 2*2.66 GHz 6-Core Intel Xeon</li>
+    <li> Memory 16GB 1333MHz DDR3</li>
+    <li> HDD 1TB 7200 rpm SATA 3.0 Gbps </li>
+    <li> ファイルに Word Count をかける</li>
+    <li> ファイルの読み込みから結果までを測定</li>
+</ul>
+  </div>
+
+  <div class='cover'>
+  <h3>実験 : CPU 数での比較</h3>
+
+  <p>表内の数値の単位は全て秒である。</p>
+
+division size = 128k , 48 Task num / 1 Block
+<table  border="2" cellpadding="0" cellspacing="0">
+    <tbody>
+        <tr>
+            <td>read mode \ CPU num</td>
+            <td></td>
+            <td>CPU 1</td>
+            <td>CPU 4</td>
+            <td>CPU 8</td>
+            <td>CPU 12</td>
+        </tr>
+        <tr>
+            <td>mmap</td>
+            <td></td>
+            <td>20.179</td>
+            <td>22.861</td>
+            <td>22.789</td>
+            <td>22.713</td>
+        </tr>
+        <tr>
+            <td>read</td>
+            <td></td>
+            <td>21.351</td>
+            <td>15.737</td>
+            <td>14.785</td>
+            <td>12.520</td>
+        </tr>
+        <tr>
+            <td>Blocked Read(SPE_ANY)</td>
+            <td></td>
+            <td>18.531</td>
+            <td>15.646</td>
+            <td>15.287</td>
+            <td>14.028</td>
+        </tr>
+        <tr>
+            <td>Blocked Read(IO_0)</td>
+            <td></td>
+            <td>13.930</td>
+            <td>14.634</td>
+            <td>14.774</td>
+            <td>10.295</td>
+            <!--
+            <td bgcolor="#ffffcc">Blocked Read(IO_0)</td>
+            <td bgcolor="#ffffcc">99.2</td>
+            -->
+        </tr>
+    </tbody>
+</table>
+
+    <ul>
+        <li> CPU 12 のとき、Blocked Read(IO_0) が mmap より<font color=red>2.21倍</font> 速度が向上した。<br> </li>
+        <li> Blocked Read を IO 専用 thread で実装すると、<font color=red>1.36 倍</font> の改善が見られた。<br> </li>
+        <li> mmap で並列の Task で走らせると 1つ1つの Task がファイルを読み込み、ランダムアクセスとなって<br>しまうため速度が遅くなってしまう。</li>
+    </ul>
+
+  <h3>実験 : division size を変更してみる</h3>
+
+division size = <font color=red>16k</font> , 48 Task num / 1 Block
+<table  border="2" cellpadding="0" cellspacing="0">
+    <tbody>
+        <tr>
+            <td>read mode \ CPU num</td>
+            <td></td>
+            <td>CPU 1</td>
+            <td>CPU 4</td>
+            <td>CPU 8</td>
+            <td>CPU 12</td>
+        </tr>
+        <tr>
+            <td>mmap</td>
+            <td></td>
+            <td>15.353</td>
+            <td>11.287</td>
+            <td>11.707</td>
+            <td>11.137</td>
+        </tr>
+        <tr>
+            <td>read</td>
+            <td></td>
+            <td>16.846</td>
+            <td>11.730</td>
+            <td>11.487</td>
+            <td>11.437</td>
+        </tr>
+        <tr>
+            <td>Blocked Read(SPE_ANY)</td>
+            <td></td>
+            <td>13.297</td>
+            <td>11.984</td>
+            <td>10.887</td>
+            <td>11.146</td>
+        </tr>
+        <tr>
+            <td>Blocked Read(IO_0)</td>
+            <td></td>
+            <td>11.503</td>
+            <td>11.437</td>
+            <td>11.365</td>
+            <td>11.412</td>
+            <!--
+            <td bgcolor="#ffffcc">Blocked Read(IO_0)</td>
+            <td bgcolor="#ffffcc">99.2</td>
+            -->
+        </tr>
+    </tbody>
+</table>
+
+  </div>
+
+  <div class='cover'>
+<h3>実験 : 使用 CPU 数での比較</h3>
+
+<table  border="2" cellpadding="0" cellspacing="0">
+    <tbody>
+        <tr>
+            <td>read mode \ CPU num</td>
+            <td></td>
+            <td>CPU 1</td>
+            <td>CPU 4</td>
+            <td>CPU 8</td>
+            <td>CPU 12</td>
+        </tr>
+        <tr>
+            <td>mmap</td>
+            <td></td>
+            <td></td>
+            <td></td>
+            <td></td>
+            <td></td>
+        </tr>
+        <tr>
+            <td>read</td>
+            <td></td>
+            <td></td>
+            <td></td>
+            <td></td>
+            <td></td>
+        </tr>
+        <tr>
+            <td>Blocked Read(SPE_ANY)</td>
+            <td></td>
+            <td></td>
+            <td></td>
+            <td></td>
+            <td></td>
+        </tr>
+        <tr>
+            <td>Blocked Read(IO_0)</td>
+            <td></td>
+            <td></td>
+            <td></td>
+            <td></td>
+            <td></td>
+            <!--
+            <td bgcolor="#ffffcc">Blocked Read(IO_0)</td>
+            <td bgcolor="#ffffcc">99.2</td>
+            -->
+        </tr>
+    </tbody>
+</table>
+
+    <ul>
+        <li></li>
+        <li></li>
+        <li></li>
+    </ul>
+  </div>
+
+  <div class='cover'>
+    <h3>まとめ</h3>
+    <ul>
+        <li> I/O と Task を分離し、同時に動くように改良した。 </li>
+        <li> I/O 専用の Thread の追加 </li>
+        <li>
+        I/O を含む Task をで並列実装するときに mmap では不向きであり、
+        Blocked Read で読み込みを制御したほうが効果的。
+        </li>
+    </ul>
+    <h3 class="yellow">今後の課題</h3>
+    <ul>
+        <li> Cerium の API として実装 </li>
+        <li>
+        様々な実装の試み<br>(I/O threads を 2つ、分割 mmap・・・)
+        </li>
+        <li>
+        grepの実装
+        </li>
+    </ul>
+  </div>
+
+  <div class="cover">
+  </div>
+
+  <div class='cover'>
+  </div>
+
+
+  <div class='cover'>
+  </div>
+
+
+  <div class='cover'>
+  </div>
+
+  <div class='cover'>
+  </div>
+
+  <div class="cover">
+  </div>
+
+</div> <!-- presentation -->
+</body>
+</html>