Mercurial > hg > Papers > 2018 > suruga-thesis
changeset 40:9978f2fd4954
slide fix
author | suruga |
---|---|
date | Wed, 21 Feb 2018 21:21:29 +0900 |
parents | 48fbb9e3c335 |
children | cd2d73cb6b2c |
files | paper/.DS_Store paper/final_main/.DS_Store paper/final_main/pic/topologymanager2.graffle paper/final_main/result/result.txt paper/slides/sample.html paper/slides/sample.markdown paper/slides/sample.pdf.html |
diffstat | 7 files changed, 354 insertions(+), 146 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/final_main/result/result.txt Wed Feb 21 18:16:11 2018 +0900 +++ b/paper/final_main/result/result.txt Wed Feb 21 21:21:29 2018 +0900 @@ -356,9 +356,8 @@ hostname: node14 time = 20 hostname: node14 time = 19 hostname: node14 time = 18 -hostname: node14 time = 18 -hostname: node14 time = 5 -hostname: node14 time = 4 +hostname: node14 time = 5 +hostname: node14 time = 4 LogUpdator: write to node parent from local !-write 2
--- a/paper/slides/sample.html Wed Feb 21 18:16:11 2018 +0900 +++ b/paper/slides/sample.html Wed Feb 21 21:21:29 2018 +0900 @@ -86,7 +86,7 @@ <!-- === 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) + on 2018-02-21 21:20:30 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -105,8 +105,8 @@ <h1 id="section-1">研究背景(2/2)</h1> <ul> <li>一般的なウェブサイトの構造は大体が木構造であるため、Jungleはデータ構造として木構造を採用している</li> - <li>JungleはNoSQLで開発されており、木構造をそのまま読み込むことが可能</li> - <li>Jungle はデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとして TreeOperationLog に残している。</li> + <li>JungleはNoSQLを元に開発されており、木構造等の複雑なデータをそのまま読み込むことができる</li> + <li>Jungle はデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとして TreeOperationLog に残している</li> <li>Jungleの分散機構には、当研究室で開発している分散フレームワークAliceを使用している</li> </ul> @@ -117,7 +117,7 @@ <h1 id="section-2">問題提起</h1> <ul> <li>これまでJungleの分散性能を測定する方法はWebサーバー込みで行われていた</li> - <li>Jungleの単体の分散性能を測定したい</li> + <li>出力結果がWebサーバーの性能に依存する為、Jungleの単体の分散性能を測定できなかった</li> </ul> @@ -126,9 +126,10 @@ <!-- _S9SLIDE_ --> <h1 id="section-3">研究目的</h1> <ul> - <li>Jungleを用いるデータの伝搬方式や、トランザクションのmergeに関する研究開発をしやすくする為 -木構造に構築したJungleのノード上で、いくつかのノードから書き込みを伝搬させて、 -変更が全体に伝搬するまでの実験をできるようにする</li> + <li>Jungle単体の分散性能を測定できる環境を構築したい</li> + <li>また、Jungleを用いるデータの伝搬方式や、トランザクションのmergeに関する研究開発をしやすくしたい</li> + <li>本研究では、Webサーバーを取り除き、木構造に構築したJungleのノード上で、いくつかのノードから書き込みを伝搬させて、 +変更が全体に伝搬するまでの実験を行なった</li> </ul> @@ -138,7 +139,7 @@ <h1 id="jungle">JUngleデータベースの構造</h1> <ul> <li>一般的なウェブサイトの構造は大体が木構造であるため、データ構造として木構造を採用している</li> - <li>NoSQLを元に開発されている為、RDBと異なり、木構造をそのまま読み込める</li> + <li>NoSQLを元に開発されている為、RDBと異なり、木構造等の複雑なデータをそのまま読み込める</li> <li>Jungle はデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとして TreeOperationLog に残している</li> </ul> @@ -148,8 +149,8 @@ <!-- _S9SLIDE_ --> <h1 id="jungle12">Jungleの分散機構(1/2)</h1> <ul> - <li>ノード間でデータの衝突が起きるのを避ける為、Mergeの機能が実装されている</li> - <li>Jungleの分散機構には、当研究室で開発している分散フレームワークAliceのTopologyManagerという機能を使用している</li> + <li>Jungleの分散機構には、当研究室で開発している分散フレームワークAliceを使用している</li> + <li>並列環境上のノード間でデータの衝突が起きるのを避ける為、JungleにはMergeの機能が実装されている</li> </ul> @@ -160,8 +161,20 @@ <ul> <li>Jungleの分散機構はツリートポロジーを想定している</li> <li>ツリー型であれば、データの整合性をとる場合、一度トップまでデータを伝搬させることで行える</li> - <li>ノード間でデータの衝突が生じても、Mergeして改めて送り直せばいいからである -<img src="./pictures/tree.pdf" alt="tree" width="60%" /></li> + <li>ノード間でデータの衝突が生じても、Mergeして改めて送り直せばいいからである</li> +</ul> + +<div align="center"><img src="./pictures/tree.pdf" style="center" /></div> + + +</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> @@ -172,10 +185,11 @@ <ul> <li>学科から16台のVMを借り,15台でJungleを1つずつ起動し、分散させる</li> <li>15台のJungleはAliceのTopologyManagerでツリートポロジーを形成する</li> - <li>1~7台の子ノードのJungleに書き込んだデータがrootノードのJungleへMergeし終わるまでの時間を計測する -(画像)</li> + <li>1~7台の子ノードのJungleに書き込んだデータがrootノードのJungleへMergeし終わるまでの時間を計測する</li> </ul> +<div align="center"><img src="./pictures/gaiyou.pdf" style="center" /></div> + </div> <div class='slide '> @@ -185,6 +199,19 @@ <li>学科のKVM上の仮想マシンによる仮想クラスタ環境を用いて実験を行った</li> <li>他の利用者とリソースが競合しないよう、TORQUEジョブスケジューラーを利用している</li> </ul> +<table style="border-collapse: collapse;border:1px solid #000000;"> + <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">マシン台数</th> + <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">OS</th> + <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">CPU</th> + <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">Memory</th> + + <tr> + <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">16台</td> + <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">CentOS Linux release 7.2.1511 (Core) </td> + <td style="border:1px solid #000000;padding:5px 15px 5px 15px;"></td> + <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">16GB</td> + </tr> +</table> </div> @@ -196,20 +223,31 @@ <li>本実験では、TORQUEを用いて、計測用に作成したperlスクリプトを15台のJungleに一度に投入するジョブスクリプトを投入した</li> </ul> +<div align="center"><img src="./pictures/torque.pdf" style="center" /></div> + </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="torque">TORQUEの使い方</h1> -<ul> +<ul lang="c"> <li>ジョブはqsubで投入</li> +</ul> +<pre><code>$ qsub scripts/LogupdateTest-qsub.sh +</code></pre> +<ul lang="c"> <li>ジョブの処理状況はqstatで確認できる <ul> - <li>その際、Rは処理中であり、Cは処理完了を表している -(ジョブの状態のテキストを貼る)</li> + <li>その際、Rは処理中であり、Cは処理完了を表している</li> </ul> </li> </ul> +<pre><code>$ qstat + +Job ID Name User Time Use S Queue +------------------------- ---------------- --------------- -------- - ----- +563.tino-VM1 LogUpdateTest ie-user 0 C jungle +</code></pre> </div> @@ -220,7 +258,7 @@ <li>TORQUEで測定するにはJungleのノードを15台全部起動して、全部終了するようにしないといけない</li> <li>実験が終了したらタスクを終了させるコードを実装した <ul> - <li>書き込みの最後にnullLogを送ると全体が終了するコードを実装した</li> + <li>データ書き込みの最後にnullLogを送ると全体が終了するコードを実装した</li> </ul> </li> </ul> @@ -247,74 +285,105 @@ <li>本実験ではTopologyManagerにツリー型のトポロジーファイルを渡すことで、15台のJUngleでツリートポロジーを構成させた。</li> </ul> +<div align="center"><img src="./pictures/topologymanager6.pdf" style="center" /></div> + </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="treeoperationlog">TreeOperationLog</h1> +<h1 id="section-6">結果/本研究で工夫した所</h1> <ul> - <li>TreeOperationLogには、Jungleのノード編集の履歴が入っている。</li> - <li>TreeOperationLogはAliceでも扱えるようシリアライズされている</li> - <li>Aliceによって他のノードへTreeOperationLogを送り、そこでTreeOperationLogと同じ編集をさせることで、トポロジー上でのデータの整合性を取る。</li> + <li>無事7台の子ノードJungleからデータが書き込まれ、rootノードJungleへデータがmergeされた時間を計測できた</li> + <li>JungleとAliceで生じていたJava等のバージョンのズレを修正した</li> + <li>測定用に、任意のnodeと任意のトポロジーを形成するperlスクリプトを作成した</li> + <li>mavenリポジトリのキャッシュをクリアし、アップデートできた</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-6">用意したスクリプト</h1> +<h1 id="section-7">今後の課題</h1> <ul> - <li>任意のnodeと任意のトポロジーを形成するperlスクリプトを作成した</li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="section-7">結果</h1> -<ul> - <li>無事7台の子ノードJungleからデータが書き込まれ、ルートノードJungleへデータがmergeされた時間を計測できた</li> + <li>今回構築した測定環境で、現在のJungleのmergeや分散アルゴリズムを研究したい</li> + <li>再接続時に、Jungleのノードのデータを再ロードできるプロトコルを定義したい + <ul> + <li>方法としては、他のノード、もしくはディスクからデータを読み込む</li> + </ul> + </li> + <li>ディスク上にあるツリートポロジーを読み出すプロトコルを定義したい</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> +<h1 id="section-8">計測結果(1/2)</h1> +<ul lang="c"> + <li>1台に書き込み/1回書き込み</li> </ul> +<pre><code>TopologymanagerTime = 5285 + +hostname: node6 time = 214 +</code></pre> +<ul lang="c"> + <li>7台に書き込み/1回書き込み</li> +</ul> +<pre><code>TopologymanagerTime = 5115 + +hostname: node9 time = 98 + +</code></pre> </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> +<h1 id="section-9">計測結果(2/2)</h1> +<ul lang="c"> + <li>1台に書き込み/100回書き込み</li> </ul> +<pre><code>TopologymanagerTime = 5425 + +hostname: node14 time = 278 +hostname: node14 time = 210 + ... +hostname: node14 time = 5 +hostname: node14 time = 4 +</code></pre> +<ul lang="c"> + <li>7台に書き込み/100回書き込み</li> +</ul> +<pre><code>TopologymanagerTime = 5351 + +hostname: node10 time = 290 +hostname: node10 time = 209 + ... +hostname: node10 time = 17 +hostname: node10 time = 16 +</code></pre> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-10">計測結果</h1> - +<h1 lang="c" id="section-10">ジョブスクリプト</h1> +<pre><code>#!/bin/sh +#PBS -q jungle +#PBS -N LogUpdateTest +#PBS -l nodes=16,walltime=00:08:00 -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="section-11">ジョブスクリプト</h1> +cd /mnt/data/jungle_workspace/Log +/usr/bin/perl /mnt/data/jungle_workspace/scripts/LogupdateTest.pl +</code></pre> +<ul> + <li>-q … queueを指定。</li> + <li>-N … 実行結果の出力ファイル名</li> + <li>nodes … 使用するnodeの台数、</li> + <li>walltime … 実行制限時間</li> + <li>Logディレクトリに移動し,今回政策したperlスクリプトを実行している</li> + <li>実行結果がLogディレクトリに吐き出される</li> +</ul> <style type="text/css"> <!--
--- a/paper/slides/sample.markdown Wed Feb 21 18:16:11 2018 +0900 +++ b/paper/slides/sample.markdown Wed Feb 21 21:21:29 2018 +0900 @@ -9,59 +9,95 @@ # 研究背景(2/2) * 一般的なウェブサイトの構造は大体が木構造であるため、Jungleはデータ構造として木構造を採用している -* JungleはNoSQLで開発されており、木構造をそのまま読み込むことが可能 -* Jungle はデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとして TreeOperationLog に残している。 +* JungleはNoSQLを元に開発されており、木構造等の複雑なデータをそのまま読み込むことができる +* Jungle はデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとして TreeOperationLog に残している * Jungleの分散機構には、当研究室で開発している分散フレームワークAliceを使用している # 問題提起 * これまでJungleの分散性能を測定する方法はWebサーバー込みで行われていた -* Jungleの単体の分散性能を測定したい +* 出力結果がWebサーバーの性能に依存する為、Jungleの単体の分散性能を測定できなかった # 研究目的 -* Jungleを用いるデータの伝搬方式や、トランザクションのmergeに関する研究開発をしやすくする為 - 木構造に構築したJungleのノード上で、いくつかのノードから書き込みを伝搬させて、 - 変更が全体に伝搬するまでの実験をできるようにする +* Jungle単体の分散性能を測定できる環境を構築したい +* また、Jungleを用いるデータの伝搬方式や、トランザクションのmergeに関する研究開発をしやすくしたい +* 本研究では、Webサーバーを取り除き、木構造に構築したJungleのノード上で、いくつかのノードから書き込みを伝搬させて、 + 変更が全体に伝搬するまでの実験を行なった # JUngleデータベースの構造 * 一般的なウェブサイトの構造は大体が木構造であるため、データ構造として木構造を採用している -* NoSQLを元に開発されている為、RDBと異なり、木構造をそのまま読み込める +* NoSQLを元に開発されている為、RDBと異なり、木構造等の複雑なデータをそのまま読み込める * Jungle はデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとして TreeOperationLog に残している # Jungleの分散機構(1/2) -* ノード間でデータの衝突が起きるのを避ける為、Mergeの機能が実装されている -* Jungleの分散機構には、当研究室で開発している分散フレームワークAliceのTopologyManagerという機能を使用している - +* Jungleの分散機構には、当研究室で開発している分散フレームワークAliceを使用している +* 並列環境上のノード間でデータの衝突が起きるのを避ける為、JungleにはMergeの機能が実装されている #Jungleの分散機構(2/2) * Jungleの分散機構はツリートポロジーを想定している * ツリー型であれば、データの整合性をとる場合、一度トップまでデータを伝搬させることで行える * ノード間でデータの衝突が生じても、Mergeして改めて送り直せばいいからである -![tree](./pictures/tree.pdf){:width="60%"} + +<div align="center"><img src="./pictures/tree.pdf" style="center"></div> + +#TreeOperationLog +* TreeOperationLogには、Jungleのノード編集の履歴が入っている。 +* TreeOperationLogはAliceでも扱えるようシリアライズされている +* Aliceによって他のノードへTreeOperationLogを送り、そこでTreeOperationLogと同じ編集をさせることで、トポロジー上でのデータの整合性を取る。 + + #評価実験 * 学科から16台のVMを借り,15台でJungleを1つずつ起動し、分散させる * 15台のJungleはAliceのTopologyManagerでツリートポロジーを形成する * 1~7台の子ノードのJungleに書き込んだデータがrootノードのJungleへMergeし終わるまでの時間を計測する -(画像) + +<div align="center"><img src="./pictures/gaiyou.pdf" style="center"></div> # 実験環境 * 学科のKVM上の仮想マシンによる仮想クラスタ環境を用いて実験を行った * 他の利用者とリソースが競合しないよう、TORQUEジョブスケジューラーを利用している +<table style="border-collapse: collapse;border:1px solid #000000;"> + <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">マシン台数</th> + <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">OS</th> + <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">CPU</th> + <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">Memory</th> + + <tr> + <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">16台</td> + <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">CentOS Linux release 7.2.1511 (Core) </td> + <td style="border:1px solid #000000;padding:5px 15px 5px 15px;"></td> + <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">16GB</td> + </tr> +</table> + + #TORQUE Resource Manager * TORQUEはジョブを管理・投下・実行する3つのデーモンで構 成されており、ジョブの管理・投下を担うデーモンが稼働しているヘッダーノードから、 ジョブの実行を担うデーモンが稼働している計算ノードへジョブが投下される * 本実験では、TORQUEを用いて、計測用に作成したperlスクリプトを15台のJungleに一度に投入するジョブスクリプトを投入した +<div align="center"><img src="./pictures/torque.pdf" style="center"></div> + #TORQUEの使い方 * ジョブはqsubで投入 +```c +$ qsub scripts/LogupdateTest-qsub.sh +``` * ジョブの処理状況はqstatで確認できる * その際、Rは処理中であり、Cは処理完了を表している -(ジョブの状態のテキストを貼る) +```c +$ qstat + +Job ID Name User Time Use S Queue +------------------------- ---------------- --------------- -------- - ----- +563.tino-VM1 LogUpdateTest ie-user 0 C jungle +``` + #TORQUEを使うにあたり工夫した所 * TORQUEで測定するにはJungleのノードを15台全部起動して、全部終了するようにしないといけない * 実験が終了したらタスクを終了させるコードを実装した - * 書き込みの最後にnullLogを送ると全体が終了するコードを実装した + * データ書き込みの最後にnullLogを送ると全体が終了するコードを実装した #分散フレームワークAlice * Aliceは当研究室で開発している並列分散フレームワークである @@ -73,38 +109,73 @@ * TopologyManagerにトポロジーの内容が書かれたトポロジーファイルを渡すことで、任意のトポロジーを構成させることができる。 * 本実験ではTopologyManagerにツリー型のトポロジーファイルを渡すことで、15台のJUngleでツリートポロジーを構成させた。 -#TreeOperationLog -* TreeOperationLogには、Jungleのノード編集の履歴が入っている。 -* TreeOperationLogはAliceでも扱えるようシリアライズされている -* Aliceによって他のノードへTreeOperationLogを送り、そこでTreeOperationLogと同じ編集をさせることで、トポロジー上でのデータの整合性を取る。 +<div align="center"><img src="./pictures/topologymanager6.pdf" style="center"></div> -#用意したスクリプト -* 任意のnodeと任意のトポロジーを形成するperlスクリプトを作成した - -#結果 -* 無事7台の子ノードJungleからデータが書き込まれ、ルートノードJungleへデータがmergeされた時間を計測できた - - -# まとめ +# 結果/本研究で工夫した所 +* 無事7台の子ノードJungleからデータが書き込まれ、rootノードJungleへデータがmergeされた時間を計測できた * JungleとAliceで生じていたJava等のバージョンのズレを修正した * 測定用に、任意のnodeと任意のトポロジーを形成するperlスクリプトを作成した -* mavenリポジトリのキャッシュをクリアすることアップデートできた +* mavenリポジトリのキャッシュをクリアし、アップデートできた # 今後の課題 * 今回構築した測定環境で、現在のJungleのmergeや分散アルゴリズムを研究したい - * 再接続時に、Jungleのノードのデータを再ロードできるプロトコルを定義したい * 方法としては、他のノード、もしくはディスクからデータを読み込む - -* ディスク上にしかないツリートポロジーを読み出すプロトコルを定義したい +* ディスク上にあるツリートポロジーを読み出すプロトコルを定義したい -#計測結果 +#計測結果(1/2) +* 1台に書き込み/1回書き込み +```c +TopologymanagerTime = 5285 + +hostname: node6 time = 214 +``` +* 7台に書き込み/1回書き込み +```c +TopologymanagerTime = 5115 + +hostname: node9 time = 98 + +``` +#計測結果(2/2) +* 1台に書き込み/100回書き込み +```c +TopologymanagerTime = 5425 + +hostname: node14 time = 278 +hostname: node14 time = 210 + ... +hostname: node14 time = 5 +hostname: node14 time = 4 +``` +* 7台に書き込み/100回書き込み +```c +TopologymanagerTime = 5351 + +hostname: node10 time = 290 +hostname: node10 time = 209 + ... +hostname: node10 time = 17 +hostname: node10 time = 16 +``` #ジョブスクリプト - +```c +#!/bin/sh +#PBS -q jungle +#PBS -N LogUpdateTest +#PBS -l nodes=16,walltime=00:08:00 - +cd /mnt/data/jungle_workspace/Log +/usr/bin/perl /mnt/data/jungle_workspace/scripts/LogupdateTest.pl +``` +* -q ... queueを指定。 +* -N ... 実行結果の出力ファイル名 +* nodes ... 使用するnodeの台数、 +* walltime ... 実行制限時間 +* Logディレクトリに移動し,今回政策したperlスクリプトを実行している +* 実行結果がLogディレクトリに吐き出される <style type="text/css"> <!--
--- a/paper/slides/sample.pdf.html Wed Feb 21 18:16:11 2018 +0900 +++ b/paper/slides/sample.pdf.html Wed Feb 21 21:21:29 2018 +0900 @@ -70,7 +70,7 @@ <!-- === 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) + on 2018-02-21 21:20:30 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -89,8 +89,8 @@ <h1 id="section-1">研究背景(2/2)</h1> <ul> <li>一般的なウェブサイトの構造は大体が木構造であるため、Jungleはデータ構造として木構造を採用している</li> - <li>JungleはNoSQLで開発されており、木構造をそのまま読み込むことが可能</li> - <li>Jungle はデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとして TreeOperationLog に残している。</li> + <li>JungleはNoSQLを元に開発されており、木構造等の複雑なデータをそのまま読み込むことができる</li> + <li>Jungle はデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとして TreeOperationLog に残している</li> <li>Jungleの分散機構には、当研究室で開発している分散フレームワークAliceを使用している</li> </ul> @@ -101,7 +101,7 @@ <h1 id="section-2">問題提起</h1> <ul> <li>これまでJungleの分散性能を測定する方法はWebサーバー込みで行われていた</li> - <li>Jungleの単体の分散性能を測定したい</li> + <li>出力結果がWebサーバーの性能に依存する為、Jungleの単体の分散性能を測定できなかった</li> </ul> @@ -110,9 +110,10 @@ <!-- _S9SLIDE_ --> <h1 id="section-3">研究目的</h1> <ul> - <li>Jungleを用いるデータの伝搬方式や、トランザクションのmergeに関する研究開発をしやすくする為 -木構造に構築したJungleのノード上で、いくつかのノードから書き込みを伝搬させて、 -変更が全体に伝搬するまでの実験をできるようにする</li> + <li>Jungle単体の分散性能を測定できる環境を構築したい</li> + <li>また、Jungleを用いるデータの伝搬方式や、トランザクションのmergeに関する研究開発をしやすくしたい</li> + <li>本研究では、Webサーバーを取り除き、木構造に構築したJungleのノード上で、いくつかのノードから書き込みを伝搬させて、 +変更が全体に伝搬するまでの実験を行なった</li> </ul> @@ -122,7 +123,7 @@ <h1 id="jungle">JUngleデータベースの構造</h1> <ul> <li>一般的なウェブサイトの構造は大体が木構造であるため、データ構造として木構造を採用している</li> - <li>NoSQLを元に開発されている為、RDBと異なり、木構造をそのまま読み込める</li> + <li>NoSQLを元に開発されている為、RDBと異なり、木構造等の複雑なデータをそのまま読み込める</li> <li>Jungle はデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとして TreeOperationLog に残している</li> </ul> @@ -132,8 +133,8 @@ <!-- _S9SLIDE_ --> <h1 id="jungle12">Jungleの分散機構(1/2)</h1> <ul> - <li>ノード間でデータの衝突が起きるのを避ける為、Mergeの機能が実装されている</li> - <li>Jungleの分散機構には、当研究室で開発している分散フレームワークAliceのTopologyManagerという機能を使用している</li> + <li>Jungleの分散機構には、当研究室で開発している分散フレームワークAliceを使用している</li> + <li>並列環境上のノード間でデータの衝突が起きるのを避ける為、JungleにはMergeの機能が実装されている</li> </ul> @@ -144,8 +145,20 @@ <ul> <li>Jungleの分散機構はツリートポロジーを想定している</li> <li>ツリー型であれば、データの整合性をとる場合、一度トップまでデータを伝搬させることで行える</li> - <li>ノード間でデータの衝突が生じても、Mergeして改めて送り直せばいいからである -<img src="./pictures/tree.pdf" alt="tree" width="60%" /></li> + <li>ノード間でデータの衝突が生じても、Mergeして改めて送り直せばいいからである</li> +</ul> + +<div align="center"><img src="./pictures/tree.pdf" style="center" /></div> + + +</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> @@ -156,10 +169,11 @@ <ul> <li>学科から16台のVMを借り,15台でJungleを1つずつ起動し、分散させる</li> <li>15台のJungleはAliceのTopologyManagerでツリートポロジーを形成する</li> - <li>1~7台の子ノードのJungleに書き込んだデータがrootノードのJungleへMergeし終わるまでの時間を計測する -(画像)</li> + <li>1~7台の子ノードのJungleに書き込んだデータがrootノードのJungleへMergeし終わるまでの時間を計測する</li> </ul> +<div align="center"><img src="./pictures/gaiyou.pdf" style="center" /></div> + </div> <div class='slide '> @@ -169,6 +183,19 @@ <li>学科のKVM上の仮想マシンによる仮想クラスタ環境を用いて実験を行った</li> <li>他の利用者とリソースが競合しないよう、TORQUEジョブスケジューラーを利用している</li> </ul> +<table style="border-collapse: collapse;border:1px solid #000000;"> + <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">マシン台数</th> + <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">OS</th> + <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">CPU</th> + <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">Memory</th> + + <tr> + <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">16台</td> + <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">CentOS Linux release 7.2.1511 (Core) </td> + <td style="border:1px solid #000000;padding:5px 15px 5px 15px;"></td> + <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">16GB</td> + </tr> +</table> </div> @@ -180,20 +207,31 @@ <li>本実験では、TORQUEを用いて、計測用に作成したperlスクリプトを15台のJungleに一度に投入するジョブスクリプトを投入した</li> </ul> +<div align="center"><img src="./pictures/torque.pdf" style="center" /></div> + </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="torque">TORQUEの使い方</h1> -<ul> +<ul lang="c"> <li>ジョブはqsubで投入</li> +</ul> +<pre><code>$ qsub scripts/LogupdateTest-qsub.sh +</code></pre> +<ul lang="c"> <li>ジョブの処理状況はqstatで確認できる <ul> - <li>その際、Rは処理中であり、Cは処理完了を表している -(ジョブの状態のテキストを貼る)</li> + <li>その際、Rは処理中であり、Cは処理完了を表している</li> </ul> </li> </ul> +<pre><code>$ qstat + +Job ID Name User Time Use S Queue +------------------------- ---------------- --------------- -------- - ----- +563.tino-VM1 LogUpdateTest ie-user 0 C jungle +</code></pre> </div> @@ -204,7 +242,7 @@ <li>TORQUEで測定するにはJungleのノードを15台全部起動して、全部終了するようにしないといけない</li> <li>実験が終了したらタスクを終了させるコードを実装した <ul> - <li>書き込みの最後にnullLogを送ると全体が終了するコードを実装した</li> + <li>データ書き込みの最後にnullLogを送ると全体が終了するコードを実装した</li> </ul> </li> </ul> @@ -231,74 +269,105 @@ <li>本実験ではTopologyManagerにツリー型のトポロジーファイルを渡すことで、15台のJUngleでツリートポロジーを構成させた。</li> </ul> +<div align="center"><img src="./pictures/topologymanager6.pdf" style="center" /></div> + </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="treeoperationlog">TreeOperationLog</h1> +<h1 id="section-6">結果/本研究で工夫した所</h1> <ul> - <li>TreeOperationLogには、Jungleのノード編集の履歴が入っている。</li> - <li>TreeOperationLogはAliceでも扱えるようシリアライズされている</li> - <li>Aliceによって他のノードへTreeOperationLogを送り、そこでTreeOperationLogと同じ編集をさせることで、トポロジー上でのデータの整合性を取る。</li> + <li>無事7台の子ノードJungleからデータが書き込まれ、rootノードJungleへデータがmergeされた時間を計測できた</li> + <li>JungleとAliceで生じていたJava等のバージョンのズレを修正した</li> + <li>測定用に、任意のnodeと任意のトポロジーを形成するperlスクリプトを作成した</li> + <li>mavenリポジトリのキャッシュをクリアし、アップデートできた</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-6">用意したスクリプト</h1> +<h1 id="section-7">今後の課題</h1> <ul> - <li>任意のnodeと任意のトポロジーを形成するperlスクリプトを作成した</li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="section-7">結果</h1> -<ul> - <li>無事7台の子ノードJungleからデータが書き込まれ、ルートノードJungleへデータがmergeされた時間を計測できた</li> + <li>今回構築した測定環境で、現在のJungleのmergeや分散アルゴリズムを研究したい</li> + <li>再接続時に、Jungleのノードのデータを再ロードできるプロトコルを定義したい + <ul> + <li>方法としては、他のノード、もしくはディスクからデータを読み込む</li> + </ul> + </li> + <li>ディスク上にあるツリートポロジーを読み出すプロトコルを定義したい</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> +<h1 id="section-8">計測結果(1/2)</h1> +<ul lang="c"> + <li>1台に書き込み/1回書き込み</li> </ul> +<pre><code>TopologymanagerTime = 5285 + +hostname: node6 time = 214 +</code></pre> +<ul lang="c"> + <li>7台に書き込み/1回書き込み</li> +</ul> +<pre><code>TopologymanagerTime = 5115 + +hostname: node9 time = 98 + +</code></pre> </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> +<h1 id="section-9">計測結果(2/2)</h1> +<ul lang="c"> + <li>1台に書き込み/100回書き込み</li> </ul> +<pre><code>TopologymanagerTime = 5425 + +hostname: node14 time = 278 +hostname: node14 time = 210 + ... +hostname: node14 time = 5 +hostname: node14 time = 4 +</code></pre> +<ul lang="c"> + <li>7台に書き込み/100回書き込み</li> +</ul> +<pre><code>TopologymanagerTime = 5351 + +hostname: node10 time = 290 +hostname: node10 time = 209 + ... +hostname: node10 time = 17 +hostname: node10 time = 16 +</code></pre> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-10">計測結果</h1> - +<h1 lang="c" id="section-10">ジョブスクリプト</h1> +<pre><code>#!/bin/sh +#PBS -q jungle +#PBS -N LogUpdateTest +#PBS -l nodes=16,walltime=00:08:00 -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="section-11">ジョブスクリプト</h1> +cd /mnt/data/jungle_workspace/Log +/usr/bin/perl /mnt/data/jungle_workspace/scripts/LogupdateTest.pl +</code></pre> +<ul> + <li>-q … queueを指定。</li> + <li>-N … 実行結果の出力ファイル名</li> + <li>nodes … 使用するnodeの台数、</li> + <li>walltime … 実行制限時間</li> + <li>Logディレクトリに移動し,今回政策したperlスクリプトを実行している</li> + <li>実行結果がLogディレクトリに吐き出される</li> +</ul> <style type="text/css"> <!--