changeset 3:73334922bd5a

Added png files for slides
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Sun, 02 Feb 2014 14:03:04 +0900
parents d297942c3037
children 916cd38dd037
files .DS_Store images/bldsv12_read_bench.png images/bldsv12_write_bench.png images/cassandra_quorum_write.png images/clients_request_servers.png images/cluster_request_server.png images/distributed_read_bench.png images/distributed_write_bench.png index.html
diffstat 9 files changed, 306 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
Binary file .DS_Store has changed
Binary file images/bldsv12_read_bench.png has changed
Binary file images/bldsv12_write_bench.png has changed
Binary file images/cassandra_quorum_write.png has changed
Binary file images/clients_request_servers.png has changed
Binary file images/cluster_request_server.png has changed
Binary file images/distributed_read_bench.png has changed
Binary file images/distributed_write_bench.png has changed
--- a/index.html	Sun Feb 02 08:36:23 2014 +0900
+++ b/index.html	Sun Feb 02 14:03:04 2014 +0900
@@ -80,9 +80,315 @@
       <article>
         <h3>
 	</h3>
+	<p></p>
+	<p></p>
+      </article>
 
+      <article>
+        <h3>
+	    非破壊的木構造データベースJungleの評価
+	</h3>
+	<p>分散データベースとしてJungleの性能を評価する。</p>
+	<p>分散Key-ValueデーターべースCassandraと比較を行う。</p>
+	<p>比較方法は、Jungle, Cassandra をそれぞれバックエンドとした簡易掲示板を作成する。</p>
+	<p>掲示板に対してHTTP Requestで並列に読み込みと書き込みの負荷をかけ計測する。</p>
       </article>
 
+
+      <article>
+        <h3>
+	    比較方法
+	</h3>
+	<p>実験は以下の2つを行う</p>
+	<small>
+	    <table style="font-size: 0.7em; width:100%;">
+		<tr>
+		    <th>実験1:サーバ単体への負荷</th><th>実験2:複数台のサーバに対する負荷</th>
+		</tr>
+		<tr>
+		    <td><img style="width:400px;" src="./images/cluster_request_server.png"></td>
+		    <td><img style="width:400px;" src="./images/clients_request_servers.png"></td>
+		</tr>
+		<tr>
+		    <td><p>複数のクライアントから単体のサーバへ負荷をかける</p></td>
+		    <td><p>複数のクライアントから複数のサーバへ負荷をかける</p></td>
+		</tr>
+	    </table>
+	    <p>サーバ単体の性能と, 分散環境下における性能の2つを調べる。</p>
+	</small>
+      </article>
+
+      <article>
+        <h3>
+	    実験に使用するブレードサーバの仕様
+	</h3>
+	<p>実験1:単体サーバへの負荷で使用するサーバ側</p>
+    <table style="font-size: 0.7em;">
+     <tr>
+      <th></th><th>ブレードサーバ</th>
+     </tr>
+     <tr>
+      <td>CPU</td>
+      <td>Intel(R) Xeon(R) CPU X5650@2.67GHz</td>
+     </tr>
+     <tr>
+      <td>コア数</td>
+      <td>24</td>
+     </tr>
+     <tr>
+      <td>Memory</td>
+      <td>132GB</td>
+     </tr>
+     <tr>
+      <td>OS</td>
+      <td>Fedora 16</td>
+     </tr>
+     <tr>
+      <td>HyperVisor</td>
+      <td>なし(物理マシン)</td>
+     </tr>
+    </table>
+      </article>
+
+      <article>
+        <h3>
+	    実験に使用する並列環境の仕様
+	</h3>
+	<small>
+	    <p>台数を増やすため学科の提供するVM48台とは別にKVMより12台用意し合計60台用意した。</p>
+	    <p>KVMはクライアントとしてだけ使用する。</p>
+	    <p>並列環境は実験1ではクライアントとして利用し、実験2ではクライアントとサーバ両方で利用する。</p>
+	</small>
+    <table style="font-size: 0.7em"/>
+     <tr>
+      <th></th><th>VMWareクラスタ</th><th>KVMクラスタ</th>
+     </tr>
+     <tr>
+      <td>台数</td><td>48</td><td>12</td>
+     </tr>
+     <tr>
+      <td>CPU</td>
+      <td>Intel(R) Xeon(R) CPU X5650@2.67GHz</td>
+      <td>Intel(R) Xeon(R) CPU X5650@2.67GHz</td>
+     </tr>
+     <tr>
+      <td>コア数</td>
+      <td>4</td>
+      <td>4</td>
+     </tr>
+     <tr>
+      <td>Memory</td>
+      <td>8GB</td>
+      <td>8GB</td>
+     </tr>
+     <tr>
+      <td>OS</td>
+      <td>Fedora 16</td>
+      <td>Fedora 16</td>
+     </tr>
+     <tr>
+      <td>HyperVisor</td>
+      <td>VMWare ESXi</td>
+      <td>KVM (Linux Fedora 16)</td>
+     </tr>
+    </table>
+   </article>
+      </article>
+
+      <article>
+        <h3>
+	    実験1:単体サーバへの負荷
+	</h3>
+	<p style="text-align:center;">
+	    <img style="width:80%;" src="./images/cluster_request_server.png">
+	</p>
+      </article>
+
+      <article>
+       <h3>
+	   実験1:単体サーバへの読み込み
+       </h3>
+       <small>
+	   <p>ブレードサーバ一台に対して複数のクライアントからの負荷</p>
+	   <table style="text-align:center;font-size:0.7em;">
+	   <tr>
+	       <td><img style="height:350px;" src="./images/bldsv12_read_bench.png"/></td>
+	   </tr>
+	   <tr>
+	       <th style="text-align:center;">読み込みの実験結果</th>
+	   </tr>
+	   </table>
+       </small>
+      </article>
+
+      <article>
+       <h3>
+	   実験1:単体サーバへの書き込み
+       </h3>
+       <small>
+	   <p>ブレードサーバ一台に対して複数のクライアントからの負荷</p>
+	   <table style="text-align:center;font-size:0.7em;">
+	   <tr>
+	       <td><img style="height:350px;" src="./images/bldsv12_write_bench.png"/></td>
+	   </tr>
+	   <tr>
+	       <th style="text-align:center;">書き込みの実験結果</th>
+	   </tr>
+	   </table>
+       </small>
+      </article>
+
+      <article>
+        <h3>
+	    実験1の考察
+	</h3>
+	<p>読み込み、書き込みともにJungleの性能がよく。最大2倍以上早い部分もある.</p>
+	<p>特に書き込みに関してはクライアントの数が増えるにつれ差が開いている.</p>
+<!--
+	<p>要因の1つとしてCassandraはディスクへ書き込みを行うが、Jungleは全てのデータをオンメモリで扱っていることもある</p>
+	<p>これはある意味当然だが、もう1つ要因をあげられる</p>
+-->
+	<p>これはJungleが全体的にロックが少ないことが要因としてあげられる</li>
+	<p>Jungleは非破壊でデータの保持をするため、読み込みは自由に行える。書き込み時には木のコピーをとりルートノードを入れ替える
+	ときのみロックが発生する。</p>
+      </article>
+
+      <article>
+       <h3>
+	   実験2:複数台のサーバに対する負荷
+       </h3>
+       <p style="text-align:center;">
+	   <img style="width:80%;" src="./images/clients_request_servers.png">
+       </p>
+      </article>
+
+      <article>
+       <h3>
+	    実験2:分散環境下における読み込み
+       </h3>
+       <small>
+	   <table style="text-align:center;font-size:0.7em;">
+	   <tr>
+	       <td><img style="height:350px;" src="./images/distributed_read_bench.png">
+	   </tr>
+	   <tr>
+	       <th style="text-align:center;">読み込みの実験結果</th>
+	   </tr>
+	   </table>
+	   <p>CassandraはConsistency Level ONE(赤)とQUORUM(緑)両方を測定</p>
+	   <p>Jungleは1秒から5秒をキープ</p>
+       </small>
+      </article>
+
+      <article>
+       <h3>
+	    実験2:分散環境下における書き込み
+       </h3>
+       <small>
+	   <table style="text-align:center;font-size:0.7em;">
+	   <tr>
+	       <td><img style="height:350px;" src="./images/distributed_write_bench.png">
+	   </tr>
+	   <tr>
+	       <th style="text-align:center;">書き込みの実験結果</th>
+	   </tr>
+	   </table>
+	   <p>CassandraはConsistency Level ONE(赤)とQUORUM(緑)両方を測定</p>
+	   <p>Jungleは5.5秒から7.3秒をキープ</p>
+       </small>
+      </article>
+
+
+      <article>
+        <h3>
+	    実験2の考察
+	</h3>
+	<p>こちらもJungleがCassadraのより良い結果を示した。実験1よりも差がでている。</p>
+	<p>Jungleのグラフが横ばいになっていることに注目したい。</p>
+	<p>Cassandraはノードの数が増えるに従いデータを取りにいくノードも増えることでレスポンスが遅くなっている。</p>
+	<p>Jungleはリクエストに対し手元にあるデータを返す。そのためノードの数が増えてもレスポンスの早さを維持できる。</p>
+	<p>Jungleは同期を取らないためデータ全体の整合性は落ちるが、分散管理システムを参考にした設計の有用性を示すことができた。</p>
+      </article>
+
+
+      <article>
+        <h3>
+	    まとめ
+	</h3>
+	<p>本研究では非破壊的木構造Jungleに分散データベースの実装を行った</p>
+	<p>非破壊的木構造における利点を述べ、</p>
+	<p>性能比較の実験のためJungle、Cassandraで利用できる簡易掲示板の作成を行った</p>
+	<p>実験は単体サーバと分散環境下において行い、どちらともCassandraよりよい結果をえることができた</p>
+	<p>特に分散環境下においての実験ではConsistency Level QUORUMのCassandraに倍以上の</p>
+      </article>
+
+      <article>
+        <h3>
+	    今後の課題
+	</h3>
+	<p>push/pull方式による分断耐性の実装</p>
+	<ul>
+	    <li>現実装ではJungleはデータ編集が行われた際に発生するログを非同期で他サーバノードへと送信している</li>
+	    <li>だがこの方法では接続が切れた際に再接続を行ったノードが全てのデータをとることができない</li>
+	    <li>そこで非同期とは別に同期をとり他ノードとに差分となるデータを送るということを行いたい</li>
+	    <li>これは分散管理システムにおけるpush/pull APIにあたる</li>
+	</ul>
+      </article>
+
+      <article>
+        <h3>
+	    今後の課題
+	</h3>
+	<p>データ分割の実装</p>
+	<ul>
+	    <li>現在の実装は全てのノードで全てのデータを持たせている</li>
+	    <li>この方法ではメモリの使用量が高いこととネットワーク帯域への負荷が懸念される</li>
+	    <li>ノード単位で保持するデータを分ける実装が必要</li>
+	    <li>その場合、木構造単位でノード毎にデータを分ける</li>
+	    <li>持っていないデータの要求が来た場合は、データを持っているノードに取りに行くようにする</li>
+	</ul>
+      </article>
+
+      <article>
+        <h3>
+	    今後の課題
+	</h3>
+	<p>Mergeアルゴリズムの設計</p>
+	<ul>
+	    <li>JungleはMergeを使うことで更新データ衝突の問題を解決する</li>
+	    <li>今回実装した掲示板プログラムにおけるMergeは単純なもの</li>
+	    <li>他のアプリケーションではどのようにMergeを行うのか</li>
+	</ul>
+      </article>
+
+
+      <article>
+        <h3>
+	    今後の課題
+	</h3>
+	<p>過去のデータの掃除について</p>
+	<ul>
+	    <li>Jungleは非破壊でデータを保持するため過去のメモリの使用量が大きい</li>
+	    <li>ある程度の単位で過去のデータの掃除を行いたい</li>
+	    <li>そのためにはどのノードがどのデータを持っているかという情報を扱うことが必要</li>
+	    <li>どれくらいデータが古くなると掃除を行うか判断が必要</li>
+	</ul>
+      </article>
+
+      <article>
+        <h3>
+	</h3>
+	<p></p>
+	<ul>
+	    <li></li>
+	    <li></li>
+	    <li></li>
+	</ul>
+      </article>
+
+
+
+
     </section>
 
   </body>