changeset 31:9b043cb87ee9

add some experiments result
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Thu, 08 May 2014 02:20:01 +0900
parents 110e54772bf9
children a33defe57134
files paper/images/sigos.graffle slide/index.html
diffstat 2 files changed, 205 insertions(+), 95 deletions(-) [+]
line wrap: on
line diff
--- a/paper/images/sigos.graffle	Tue May 06 15:01:45 2014 +0900
+++ b/paper/images/sigos.graffle	Thu May 08 02:20:01 2014 +0900
@@ -26,7 +26,7 @@
 	<key>MasterSheets</key>
 	<array/>
 	<key>ModificationDate</key>
-	<string>2014-04-22 06:21:56 +0000</string>
+	<string>2014-05-06 07:26:15 +0000</string>
 	<key>Modifier</key>
 	<string>MasaKoha</string>
 	<key>NotesVisible</key>
@@ -856,8 +856,8 @@
 					<integer>38</integer>
 					<key>Points</key>
 					<array>
-						<string>{135.49983525886029, 70.24251661658981}</string>
-						<string>{193.01095137839275, 68.765772274133369}</string>
+						<string>{135.49983442492646, 70.240596872431169}</string>
+						<string>{193.01078976353338, 68.760114008544122}</string>
 					</array>
 					<key>Style</key>
 					<dict>
@@ -14588,6 +14588,94 @@
 			<key>VPages</key>
 			<integer>1</integer>
 		</dict>
+		<dict>
+			<key>ActiveLayerIndex</key>
+			<integer>0</integer>
+			<key>AutoAdjust</key>
+			<true/>
+			<key>BackgroundGraphic</key>
+			<dict>
+				<key>Bounds</key>
+				<string>{{0, 0}, {558.99997329711914, 783}}</string>
+				<key>Class</key>
+				<string>SolidGraphic</string>
+				<key>ID</key>
+				<integer>2</integer>
+				<key>Style</key>
+				<dict>
+					<key>shadow</key>
+					<dict>
+						<key>Draws</key>
+						<string>NO</string>
+					</dict>
+					<key>stroke</key>
+					<dict>
+						<key>Draws</key>
+						<string>NO</string>
+					</dict>
+				</dict>
+			</dict>
+			<key>BaseZoom</key>
+			<integer>0</integer>
+			<key>CanvasOrigin</key>
+			<string>{0, 0}</string>
+			<key>ColumnAlign</key>
+			<integer>1</integer>
+			<key>ColumnSpacing</key>
+			<real>36</real>
+			<key>DisplayScale</key>
+			<string>1 0/72 in = 1.0000 in</string>
+			<key>GraphicsList</key>
+			<array/>
+			<key>GridInfo</key>
+			<dict/>
+			<key>HPages</key>
+			<integer>1</integer>
+			<key>KeepToScale</key>
+			<false/>
+			<key>Layers</key>
+			<array>
+				<dict>
+					<key>Lock</key>
+					<string>NO</string>
+					<key>Name</key>
+					<string>レイヤー 1</string>
+					<key>Print</key>
+					<string>YES</string>
+					<key>View</key>
+					<string>YES</string>
+				</dict>
+			</array>
+			<key>LayoutInfo</key>
+			<dict>
+				<key>Animate</key>
+				<string>NO</string>
+				<key>circoMinDist</key>
+				<real>18</real>
+				<key>circoSeparation</key>
+				<real>0.0</real>
+				<key>layoutEngine</key>
+				<string>dot</string>
+				<key>neatoSeparation</key>
+				<real>0.0</real>
+				<key>twopiSeparation</key>
+				<real>0.0</real>
+			</dict>
+			<key>Orientation</key>
+			<integer>2</integer>
+			<key>PrintOnePage</key>
+			<false/>
+			<key>RowAlign</key>
+			<integer>1</integer>
+			<key>RowSpacing</key>
+			<real>36</real>
+			<key>SheetTitle</key>
+			<string>キャンバス 10</string>
+			<key>UniqueID</key>
+			<integer>10</integer>
+			<key>VPages</key>
+			<integer>1</integer>
+		</dict>
 	</array>
 	<key>SmartAlignmentGuidesActive</key>
 	<string>YES</string>
@@ -14598,7 +14686,7 @@
 	<key>WindowInfo</key>
 	<dict>
 		<key>CurrentSheet</key>
-		<integer>7</integer>
+		<integer>8</integer>
 		<key>ExpandedCanvases</key>
 		<array/>
 		<key>Frame</key>
@@ -14661,6 +14749,11 @@
 				<real>1.1299999952316284</real>
 				<real>1</real>
 			</array>
+			<array>
+				<string>キャンバス 10</string>
+				<real>1.1299999952316284</real>
+				<real>1</real>
+			</array>
 		</array>
 	</dict>
 </dict>
--- a/slide/index.html	Tue May 06 15:01:45 2014 +0900
+++ b/slide/index.html	Thu May 08 02:20:01 2014 +0900
@@ -149,19 +149,14 @@
         </tbody>
     </table>
     <p>
-    ファイルを読みながら、Word Count や grep などを<br>
-    並列実行したい
+    ファイルを読みながら、Word Count や grep などを 並列実行したい。<br>
+        -> 本研究では Word Count にて実装を行った。
     </p>
     <p>
-    計算よりも読み込みを優先しなければならない。読み込みで待ちが入ってしまうので、IO Thread を追加
+    計算よりも読み込みを優先しなければならない。読み込みで待ちが入ってしまうので、IO Thread を追加。
     </p>
 
   </div>
-  <!-- add slides here; example -->
-  <div class='cover'>
-  <h3>Cerium の例題 : WordCount</h3>
-
-  </div>
 
 
   <div class='cover'>
@@ -169,49 +164,46 @@
     <br>
     <img src='images/includeIOTask.png' style="height:270px" align="middle">
     <ol>
-        <li>ファイルをある一定の大きさで読み込む</li>
-        <li>読み込んだテキストファイルに対して、それぞれ計算を行う</li>
-        <li>計算した結果を集計する</li>
+        <li>ファイルをある一定の大きさずつ読み込む</li>
+        <li>読み込んだテキストファイルに対して、それぞれ WordCount を行う</li>
+        <li>WordCount の結果を集計する</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>
+
+    <img src='images/mmap.png' style="height:250px" align="middle" >
+    <br>
+
+    <ul>
+      <li>
+      mmap は、仮想メモリ空間にファイルの中身を対応させ、そのメモリ空間に
+      アクセスされたら、 OS が読み込みを行う。<br>
+      </li>
+      <li>
+      code の記述はシンプルだが、スレッドが読み込み終わるまで待たされる。 <br>
+      </li>
+      <li>
+      読み込みが OS 依存となるので、環境に左右されやすく、読み込みを細かく制御することが難しい。
+      </li>
+    </ul>
   </div>
 
 
   <div class='cover'>
     <h3>読み込みながら計算を行う</h3>
+    <p>mmap を使用せずに、read を独立したスレッドで実行させる。そして、読み込んだ部分に対して Word Count を並列に起動する。
+    </p>
     <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>
+        <li> read は全て読み込み終えるまで連続で動作しファイルを読み込む </li>
+        <li> read の待ちは CPU を消費しない </li>
+        <li> 読み込み終わったブロックに対して、Word Count を起動する </li>
     </ul>
   </div>
 
@@ -224,11 +216,13 @@
 
     <ul>
         <li>
-        Task を一度に生成するとメモリを圧迫する。<br>
-        Block 単位で徐々に起動していく。
+        WordCount Task を一度に全て生成すると、その Task でメモリを圧迫する。
         </li>
         <li>
-        Blocked Read Task が読み込み終わるまで、<br>Task Blockを待たせる
+        ある程度の数でまとめた Block という単位で徐々に Task を起動していく。
+        </li>
+        <li>
+        読み込んでいない部分に Word Count が走らないように、Blocked Read Task が読み込み終わるまで、Task Blockを待たせる。
         </li>
         <li>
         待ち合わせには Cerium の wait for を使用する。
@@ -236,25 +230,39 @@
     </ul>
   </div>
 
+
+<!--
+  <div class="cover">
+    <h3>I/O 専用 thread の実装前</h3>
+    <br>
+    <img src='images/SPE_ANYblockread.png' style="height:300px">
+    <ul>
+        <li>
+        Cerium では、各種 Task にデバイスの設定をすることができる。
+        </li>
+        <li>
+        デバイスの設定を SPE_ANY で行うと、Cerium Task Manager 側で自動的に CPU を割り振ってくれる。
+        </li>
+        <li>
+        自動的に割り振ってしまうと、 Blocked Read の隙間に Word Count が割り込んでしまい、読み込みの時間が伸びてしまう。
+        <font color=red>-> 自動的に割り振られないように、I/O専用 Thread を用意した。</font>
+        </li>
+
+    </ul>
+  </div>
+-->
+
   <div class='cover'>
     <h3>I/O 専用 thread での Blocked Read の実装</h3>
     <br>
-    <img src='images/IO_0blockread.png' style="height:350px">
+    <img src='images/IO_0blockread.png' style="height:300px">
     <ul>
-        <li>Task とは別に Thread を割り当てているので、Read Task に割り込みが行われなくなる<br></li>
-        <li>pthread_setschedparam にて実装<br>
+        <li>Word Count とは別に Thread を割り当てているので、Blocked Read Task 間に Word Count が割り込まれることがない。</li>
+        <li>Thread レベルで割り込まれないように、pthread_setschedparam にて IO_0 の priority を設定している。<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>
@@ -262,7 +270,7 @@
 <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> Memory 16GB</li>
     <li> HDD 1TB 7200 rpm SATA 3.0 Gbps </li>
     <li> ファイルに Word Count をかける</li>
     <li> ファイルの読み込みから結果までを測定</li>
@@ -271,10 +279,13 @@
 
   <div class='cover'>
   <h3>実験 : CPU 数での比較</h3>
+  <p>file size 1GB</p>
 
   <p>表内の数値の単位は全て秒である。</p>
 
-division size = 128k , 48 Task num / 1 Block
+<!-- 1度に読み込む量を書かないといけない -->
+<!-- bldsv 12 ssd あるってよ-->
+Blocked read Task 1つ当たりの読み込み量は 128kbyte * 48
 <table  border="2" cellpadding="0" cellspacing="0">
     <tbody>
         <tr>
@@ -332,7 +343,8 @@
 
   <h3>実験 : division size を変更してみる</h3>
 
-division size = <font color=red>16k</font> , 48 Task num / 1 Block
+
+Blocked read Task 1つ当たりの読み込み量は <font color=red>16kbyte </font>* 48
 <table  border="2" cellpadding="0" cellspacing="0">
     <tbody>
         <tr>
@@ -382,52 +394,72 @@
     </tbody>
 </table>
 
+    <ul>
+        <li>CPU 4つ以上からは、読み込み方法を変えても結果がほとんど同じとなった。</li>
+        <li>mmap はコードがシンプルでもかなり速く動作するが、チューニング次第で Blocked Read のほうが速く動作する。</li>
+    </ul>
+
   </div>
 
+<!-- -->
   <div class='cover'>
-<h3>実験 : 使用 CPU 数での比較</h3>
+<h3>実験 : OS を変更してみる</h3>
+<p>実験環境</p>
+<ul>
+    <li> Cent OS 6.5</li>
+    <li> Core i7-3770 3.40GHz</li>
+    <li> Memory 16GB</li>
+    <li> HDD 2TB 7200 rpm SATA 6.0 Gbps </li>
+    <li> file size 1GB </li>
+</ul>
 
 <table  border="2" cellpadding="0" cellspacing="0">
     <tbody>
-        <tr>
+        <!-- align = rigth 寄ってくれない(´;ω;`)ウッ…-->
+        <tr align="rigth">
             <td>read mode \ CPU num</td>
             <td></td>
             <td>CPU 1</td>
+            <td>CPU 2</td>
+            <td>CPU 3</td>
             <td>CPU 4</td>
-            <td>CPU 8</td>
-            <td>CPU 12</td>
+            <td>Thread 8</td>
         </tr>
         <tr>
             <td>mmap</td>
             <td></td>
-            <td></td>
-            <td></td>
-            <td></td>
-            <td></td>
+            <td>6.852</td>
+            <td>6.765</td>
+            <td>7.632</td>
+            <td>12.504</td>
+            <td>7.649</td>
         </tr>
         <tr>
             <td>read</td>
             <td></td>
-            <td></td>
-            <td></td>
-            <td></td>
-            <td></td>
+            <td>10.545</td>
+            <td>8.699</td>
+            <td>8.667</td>
+            <td>8.152</td>
+            <td>7.607</td>
         </tr>
         <tr>
             <td>Blocked Read(SPE_ANY)</td>
             <td></td>
-            <td></td>
-            <td></td>
-            <td></td>
-            <td></td>
+            <td>8.686</td>
+            <td>10.606</td>
+            <td>12.995</td>
+            <td>11.799</td>
+            <td>14.723</td>
         </tr>
         <tr>
             <td>Blocked Read(IO_0)</td>
             <td></td>
-            <td></td>
-            <td></td>
-            <td></td>
-            <td></td>
+            <td>6.751</td>
+            <td>6.800</td>
+            <td>7.311</td>
+            <td>7.016</td>
+            <td>6.755</td>
             <!--
             <td bgcolor="#ffffcc">Blocked Read(IO_0)</td>
             <td bgcolor="#ffffcc">99.2</td>
@@ -436,11 +468,10 @@
     </tbody>
 </table>
 
-    <ul>
-        <li></li>
-        <li></li>
-        <li></li>
-    </ul>
+    size が小さくなると、シーケンシャルの読み込みに近いので、ランダムだと
+    mmap が遅くなってしまう。 stream 演算
+    I/O の ぷらいおりてぃ 上げないでどうなるかどうか
+    division size = 64k 256k
   </div>
 
   <div class='cover'>
@@ -471,20 +502,6 @@
   <div class='cover'>
   </div>
 
-
-  <div class='cover'>
-  </div>
-
-
-  <div class='cover'>
-  </div>
-
-  <div class='cover'>
-  </div>
-
-  <div class="cover">
-  </div>
-
 </div> <!-- presentation -->
 </body>
 </html>