view paper/slides/sample.html @ 39:48fbb9e3c335

fix slides
author suruga
date Wed, 21 Feb 2018 18:16:11 +0900
parents 254dce6f6501
children 9978f2fd4954
line wrap: on
line source

<!DOCTYPE html>
<html>
<head>
   <meta http-equiv="content-type" content="text/html;charset=utf-8">
   <title>分散版 Jungle データベースの性能測定方法</title>

<meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.4.0 (2016-12-24) [x86_64-darwin14]">
<meta name="author"    content="仲松栞" >

<!-- style sheet links -->
<link rel="stylesheet" href="s6/themes/projection.css"   media="screen,projection">
<link rel="stylesheet" href="s6/themes/screen.css"       media="screen">
<link rel="stylesheet" href="s6/themes/print.css"        media="print">
<link rel="stylesheet" href="s6/themes/blank.css"        media="screen,projection">

<!-- JS -->
<script src="s6/js/jquery-1.11.3.min.js"></script>
<script src="s6/js/jquery.slideshow.js"></script>
<script src="s6/js/jquery.slideshow.counter.js"></script>
<script src="s6/js/jquery.slideshow.controls.js"></script>
<script src="s6/js/jquery.slideshow.footer.js"></script>
<script src="s6/js/jquery.slideshow.autoplay.js"></script>

<!-- prettify -->
<link rel="stylesheet" href="scripts/prettify.css">
<script src="scripts/prettify.js"></script>

<script>
  $(document).ready( function() {
    Slideshow.init();

    $('code').each(function(_, el) {
      if (!el.classList.contains('noprettyprint')) {
        el.classList.add('prettyprint');
      }
    });
    prettyPrint();
  } );

  
</script>

<!-- Better Browser Banner for Microsoft Internet Explorer (IE) -->
<!--[if IE]>
<script src="s6/js/jquery.microsoft.js"></script>
<![endif]-->



</head>
<body>

<div class="layout">
  <div id="header"></div>
  <div id="footer">
    <div align="right">
      <img src="s6/images/logo.svg" width="200px">
    </div>
  </div>
</div>

<div class="presentation">

  <div class='slide cover'>
    <table width="90%" height="90%" border="0" align="center">
      <tr>
        <td>
          <div align="center">
            <h1><font color="#808db5">分散版 Jungle データベースの性能測定方法</font></h1>
          </div>
        </td>
      </tr>
      <tr>
        <td>
          <div align="left">
            仲松栞
            琉球大学 工学部 情報工学科  河野研
            <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;">
          </div>
        </td>
      </tr>
    </table>
  </div>

<div class='slide '>
<!-- === begin markdown block ===

      generated by markdown/1.2.0 on Ruby 2.4.0 (2016-12-24) [x86_64-darwin14]
                on 2018-02-21 18:15:45 +0900 with Markdown engine kramdown (1.13.2)
                  using options {}
  -->

<!-- _S9SLIDE_ -->
<h1 id="section">研究背景(1/2)</h1>
<ul>
  <li>スマートフォン等の普及により、Webサービスの利用者が増え、Webサーバーにかかる負荷も増大している</li>
  <li>この問題を解決する為に当研究室では、スケーラビリティを持つ分散データベースとしてJungleを開発している</li>
  <li>ここで言うスケーラビリティとは、複数のマシンに処理を分散させたりすることで、システムの処理能力を向上させる性能を指す</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-1">研究背景(2/2)</h1>
<ul>
  <li>一般的なウェブサイトの構造は大体が木構造であるため、Jungleはデータ構造として木構造を採用している</li>
  <li>JungleはNoSQLで開発されており、木構造をそのまま読み込むことが可能</li>
  <li>Jungle はデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとして TreeOperationLog に残している。</li>
  <li>Jungleの分散機構には、当研究室で開発している分散フレームワークAliceを使用している</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-2">問題提起</h1>
<ul>
  <li>これまでJungleの分散性能を測定する方法はWebサーバー込みで行われていた</li>
  <li>Jungleの単体の分散性能を測定したい</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-3">研究目的</h1>
<ul>
  <li>Jungleを用いるデータの伝搬方式や、トランザクションのmergeに関する研究開発をしやすくする為
木構造に構築したJungleのノード上で、いくつかのノードから書き込みを伝搬させて、
変更が全体に伝搬するまでの実験をできるようにする</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="jungle">JUngleデータベースの構造</h1>
<ul>
  <li>一般的なウェブサイトの構造は大体が木構造であるため、データ構造として木構造を採用している</li>
  <li>NoSQLを元に開発されている為、RDBと異なり、木構造をそのまま読み込める</li>
  <li>Jungle はデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとして TreeOperationLog に残している</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="jungle12">Jungleの分散機構(1/2)</h1>
<ul>
  <li>ノード間でデータの衝突が起きるのを避ける為、Mergeの機能が実装されている</li>
  <li>Jungleの分散機構には、当研究室で開発している分散フレームワークAliceのTopologyManagerという機能を使用している</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="jungle22">Jungleの分散機構(2/2)</h1>
<ul>
  <li>Jungleの分散機構はツリートポロジーを想定している</li>
  <li>ツリー型であれば、データの整合性をとる場合、一度トップまでデータを伝搬させることで行える</li>
  <li>ノード間でデータの衝突が生じても、Mergeして改めて送り直せばいいからである
<img src="./pictures/tree.pdf" alt="tree" width="60%" /></li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-4">評価実験</h1>
<ul>
  <li>学科から16台のVMを借り,15台でJungleを1つずつ起動し、分散させる</li>
  <li>15台のJungleはAliceのTopologyManagerでツリートポロジーを形成する</li>
  <li>1~7台の子ノードのJungleに書き込んだデータがrootノードのJungleへMergeし終わるまでの時間を計測する
(画像)</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-5">実験環境</h1>
<ul>
  <li>学科のKVM上の仮想マシンによる仮想クラスタ環境を用いて実験を行った</li>
  <li>他の利用者とリソースが競合しないよう、TORQUEジョブスケジューラーを利用している</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="torque-resource-manager">TORQUE Resource Manager</h1>
<ul>
  <li>TORQUEはジョブを管理・投下・実行する3つのデーモンで構 成されており、ジョブの管理・投下を担うデーモンが稼働しているヘッダーノードから、 ジョブの実行を担うデーモンが稼働している計算ノードへジョブが投下される</li>
  <li>本実験では、TORQUEを用いて、計測用に作成したperlスクリプトを15台のJungleに一度に投入するジョブスクリプトを投入した</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="torque">TORQUEの使い方</h1>
<ul>
  <li>ジョブはqsubで投入</li>
  <li>ジョブの処理状況はqstatで確認できる
    <ul>
      <li>その際、Rは処理中であり、Cは処理完了を表している
(ジョブの状態のテキストを貼る)</li>
    </ul>
  </li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="torque-1">TORQUEを使うにあたり工夫した所</h1>
<ul>
  <li>TORQUEで測定するにはJungleのノードを15台全部起動して、全部終了するようにしないといけない</li>
  <li>実験が終了したらタスクを終了させるコードを実装した
    <ul>
      <li>書き込みの最後にnullLogを送ると全体が終了するコードを実装した</li>
    </ul>
  </li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="alice">分散フレームワークAlice</h1>
<ul>
  <li>Aliceは当研究室で開発している並列分散フレームワークである</li>
  <li>Alice は、ネットワーク上の複数のサーバーノードにトポロジーを形成させ、通信する機能を提供する</li>
  <li>本実験では、Aliceを用いて15台のJungleにツリートポロジーを形成させ、子ノードとJungleノード間のデータの通信を行なった</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="topologymanager">TopologyManager</h1>
<ul>
  <li>TopologyManagerは、ネットワーク上の複数のサーバーノードにトポロジーを形成さる機能である</li>
  <li>TopologyManagerにトポロジーの内容が書かれたトポロジーファイルを渡すことで、任意のトポロジーを構成させることができる。</li>
  <li>本実験ではTopologyManagerにツリー型のトポロジーファイルを渡すことで、15台のJUngleでツリートポロジーを構成させた。</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="treeoperationlog">TreeOperationLog</h1>
<ul>
  <li>TreeOperationLogには、Jungleのノード編集の履歴が入っている。</li>
  <li>TreeOperationLogはAliceでも扱えるようシリアライズされている</li>
  <li>Aliceによって他のノードへTreeOperationLogを送り、そこでTreeOperationLogと同じ編集をさせることで、トポロジー上でのデータの整合性を取る。</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-6">用意したスクリプト</h1>
<ul>
  <li>任意のnodeと任意のトポロジーを形成するperlスクリプトを作成した</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-7">結果</h1>
<ul>
  <li>無事7台の子ノードJungleからデータが書き込まれ、ルートノードJungleへデータがmergeされた時間を計測できた</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-8">まとめ</h1>
<ul>
  <li>JungleとAliceで生じていたJava等のバージョンのズレを修正した</li>
  <li>測定用に、任意のnodeと任意のトポロジーを形成するperlスクリプトを作成した</li>
  <li>mavenリポジトリのキャッシュをクリアすることアップデートできた</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-9">今後の課題</h1>
<ul>
  <li>
    <p>今回構築した測定環境で、現在のJungleのmergeや分散アルゴリズムを研究したい</p>
  </li>
  <li>再接続時に、Jungleのノードのデータを再ロードできるプロトコルを定義したい
    <ul>
      <li>方法としては、他のノード、もしくはディスクからデータを読み込む</li>
    </ul>
  </li>
  <li>ディスク上にしかないツリートポロジーを読み出すプロトコルを定義したい</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-10">計測結果</h1>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-11">ジョブスクリプト</h1>

<style type="text/css">
<!--
*{
	font:nomal 100% 'PT Sans';
}

ul > li{
	list-style-type:disc;
}

.slide h1{
	text-align:left;
	color:#777777;
	font:bold 40px/1.13 'PT Sans', sans-serif;
	margin-bottom: 50px;
}

div#slide1 h1{
	text-align:left;
	color:#777777;
	font:bold 60px 'PT Sans', sans-serif;
	margin-bottom: 50px;
}

pre > code{
	font-family:'Droid Sans Mono', 'Courier New', monospace;
}

img[alt="opt"]{
	display: block;
	margin-left: auto;
	margin-right: auto;
}

img[alt="right"]{
	margin-right: 0;
}

table {
	margin-left: auto;
	margin-right: auto;
}

th {
    font-size: 120%;
}
-->
</style>

<!-- === end markdown block === -->
</div>


</div><!-- presentation -->
</body>
</html>