Mercurial > hg > Papers > 2010 > jsst-kazz
view presen/index.html @ 17:cd3f414ceff9 default tip
add presen
author | kazz <kazz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 01 Oct 2010 20:02:54 +0900 |
parents | |
children |
line wrap: on
line source
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Meta Engine を用いた Federated Linda の実験</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="copyright" content="Copyright © 2010 Kazuki AKAMINE" /> <meta name="font-size-adjustment" content="-1" /> <link rel="stylesheet" href="./res/w3c-blue2.css" type="text/css" media="screen, projection, print" /> <script src="./res/slidy.js" type="text/javascript"> </script> </head> <body> <!-- this defines the slide background --> <div class="background"> <div class="header"> <!-- sized and colored via CSS --> </div> <!-- hidden style graphics to ensure they are saved with other content --> <img class="hidden" src="./res/bullet.png" alt="" /> <img class="hidden" src="./res/fold.bmp" alt="" /> <img class="hidden" src="./res/unfold.bmp" alt="" /> <img class="hidden" src="./res/fold-dim.bmp" alt="" /> <img class="hidden" src="./res/nofold-dim.bmp" alt="" /> <img class="hidden" src="./res/unfold-dim.bmp" alt="" /> <img class="hidden" src="./res/bullet-fold.gif" alt="" /> <img class="hidden" src="./res/bullet-unfold.gif" alt="" /> <img class="hidden" src="./res/bullet-fold-dim.gif" alt="" /> <img class="hidden" src="./res/bullet-nofold-dim.gif" alt="" /> <img class="hidden" src="./res/bullet-unfold-dim.gif" alt="" /> <div class="footer"> <!-- modify the following text as appropriate --> Presentation Name<br /> Event, Location, Month Year </div> </div> <div class="slide cover"> <div class="header"> <div class="block"> <h1>Meta Engine を用いた Federated Linda の実験</h1> <div class="name">琉球大学理工学研究科 情報工学専攻 並列信頼研 M1 赤嶺一樹</div> </div> </div> </div> <div class="slide"> <h1>研究目的</h1> <p class="subhead">スケーラブルな分散プログラミングモデルの開発</p> <ul> <li>並列分散プログラムの需要はますます高まってきている</li> <li>しかし、スケーラビリティの確保は難しい</li> <li>スケーラビリティとは、サービスの大きさが増えてもリソースの追加のみでサービスの質を維持できること</li> <li>クライアントの数に従って、自然にスケールするモデルがよい</li> <li>提案したプロトコルを玩具的に実験できるフレームワークがほしい</li> <li><strong>→Linda を拡張した Federated Linda を開発</strong></li> </div> <div class="slide"> <h1>Federated Linda を用いた設計</h1> <p class="subhead">スケーラブルな分散プログラミングモデルの設計</p> <ul> <li>複数のサーバーを接続することで負荷を分散する</li> <li>情報を取捨しながら伝搬する</li> <ul> <li>すべてのデータをレプリケーションする必要はない</li> <li>サーバーがクライアントの必要な情報とは何かを把握する</li> </ul> </ul> </div> <div class="slide"> <h1>FederatedLinda</h1> <p class="subhead">FederatedLinda</p> <p> 本研究室では、スケーラビリティを備えた分散プログラミングモデルを提供する FederatedLinda を開発している </p> <p class="subhead">Linda</p> <div style="float: left; margin-left: 2em; width: 59%;"> <p> Linda は、以下のAPIを用いてタプルスペース上のデータの更新を行う </p> <table> <tr> <th>in(id)</th> <td>データをタプルから取り出す<br>タプルにデータは残らない</td> </tr> <tr> <th>rd(id)</th> <td>データをタプルから取り出す<br>タプルにデータが残る</td> </tr> <tr> <th>out(id,data)</th> <td>データをタプルへ書き込む</td> </tr> </table> </div> <img src="./img/linda_server.png" style="display: block; width: 27%; margin-right: 10%; float: right;"/> </div> <div class="slide"> <h1>ゲームの例題</h1> <p class="subhead">水族館ゲーム</p> <div style="float: left; margin-left: 2em; width: 49%;"> <p> 本研究では、ネットワークゲームを例題として用いる。 </p> <ul> <li>複数のプレイヤーの画面を並べる</li> <li>魚が1匹ずつプレイヤーに与えられる</li> <li>画面の端まで行くと、隣のプレイヤーの画面に移動する</li> <li></li> </ul> </div> <img src="./img/fedaqua.png" style="display: block; width: 37%; margin-right: 10%; float: right;"/> </div> <div class="slide"> <h1>FederatedLinda</h1> <div style="display: block; float: left; width: 60%;"> <p> FederatedLinda とは、タプルスペースを複数個つなげて、タプルの伝搬を基にデータを共有するモデルである </p> <ul> <li>タプルスペース間には データの伝搬などを管理する Protocol Engine と呼ばれるプログラムが存在</li> <li>しかしタプルスペースと Protocol Engine は別プロセスであるため、同一サーバー上であってもソケットによる接続が必要だった。 </li> </ul> </div> <img src="./img/prefedlinda.png" style="display: block; width: 37%; margin: auto; float: right; margin-right: 3%; margin-top: 5%;"/> </div> <div class="slide"> <h1>FederatedLinda</h1> <div style="display: block; float: left; width: 60%;"> <ul> <li>Meta Engine と呼ばれる Protocol Engine の代替となるプログラムを、タプルスペースと同プロセス上に設置</li> <li><strong>直接タプルスペースにアクセス可能になった</strong></li> </ul> </div> <img src="./img/metafedlinda.png" style="display: block; width: 37%; margin: auto; float: right; margin-right: 3%; margin-top: 5%;"/> </div> <div class="slide"> <h1>Meta Engine を用いた設計例</h1> <p class="subhead">ツリー型トポロジーを用いた負荷分散</p> <div style="display: block; float: left; width: 60%;"> <ul> <li>ツリー型トポロジーを用いて、負荷を分散する</li> <li>末端にクライアントを接続する</li> <li>末端のノードは、クライアントから受け取った座標情報をクライアントが必要か判断する</li> <ul> <li>必要ならば、その Linda サーバーのみで通信は完結</li> <li>必要でないなら、親に判断を委ねるため、親に伝搬</li> </ul> <li>伝搬された上位ノードは、子のノードが必要か判断し、子に伝搬するか、親に伝搬するかを決定する</li> <li><strong>データを必要としているマシンのみにデータを伝搬する</strong></li> </ul> </div> <img src="./img/treetopology.png" style="display: block; width: 37%; margin: auto; float: right; margin-right: 3%; margin-top: 5%;"/> </div> <div class="slide"> <h1>タプルの伝搬</h1> <div class="incremental" style="position: relative;"> <div style="position: absolute; left: 10%;"> <img src="img/relay1.png" style="display: block; width: 80%;"> </div> <div style="position: absolute; left: 10%;"> <img src="img/relay2.png" style="display: block; width: 80%;"> </div> <div style="position: absolute; left: 10%;"> <img src="img/relay3.png" style="display: block; width: 80%;"> </div> <div style="position: absolute; left: 10%;"> <img src="img/relay4.png" style="display: block; width: 80%;"> </div> <div style="position: absolute; left: 10%;"> <img src="img/relay5.png" style="display: block; width: 80%;"> </div> </div> </div> <div class="slide"> <h1>update API の追加</h1> <p class="subhead">in/out による更新</p> <div style="display: block; float: left; width: 60%;"> <p> 現在の Linda では、タプルのデータを更新するために、 in/out を順に実行する必要がある。 </p> <ol> <li>in によって、データを削除</li> <li>out によって、更新データを送信</li> <li>はじめに実行した in の reply がもどってくる</li> </ol> </div> <img src="./img/apiinout.png" style="display: block; width: 37%; margin: auto; float: right; margin-right: 3%; margin-top: 5%;"/> </div> <div class="slide"> <h1>update API の追加</h1> <p class="subhead">update による更新</p> <div style="display: block; float: left; width: 60%;"> <p> 本研究では、更新を行うための新しい API である update を作成した。 </p> <ol> <li>update によって、更新データを送信</li> <li>更新前のデータの reply がもどってくる</li> </ol> </div> <img src="./img/apiupdate.png" style="display: block; width: 37%; margin: auto; float: right; margin-right: 3%; margin-top: 5%;"/> </div> <div class="slide"> <h1>評価</h1> <p class="subhead">update API の検証</p> <div style="display: block; float: left; width: 60%;"> <ul> <li>update と in/out の双方を用いた場合で比較を行った</li> <li>それぞれの API で N 回の更新を行う処理を2台のマシンを用いて計測</li> <li><strong>update と in/out のどちらを用いても、処理速度に影響は見られない</strong></li> <li>大量のマシンを使ってアクセスを集中すると差が出たかもしれない。</li> </ul> </div> <img src="./img/apigraph.png" style="display: block; width: 37%; margin: auto; float: right; margin-right: 3%; margin-top: 5%;"/> </div> <div class="slide"> <h1>評価</h1> <p class="subhead">TCP No Delay の検証</p> <div style="display: block; float: left; width: 60%;"> <ul> <li><strong>TCP No Delay</strong>: 短いパケットの送信を遅延させる動作の制御フラグ</li> <li>TORQUE を利用して N 台のクラスタ上に Federated Linda でリング型トポロジーを構築</li> <li>100周にかかった時間から、1周にかかる時間を平均して求めた</li> <li>5台から45台まで5台刻みで計測</li> <li><strong>TCP No Delay を用いても通信速度に特に効果は見られなかった。</strong></li> </ul> </div> <img src="./img/tcpnodelaygraph.png" style="display: block; width: 37%; margin: auto; float: right; margin-right: 3%; margin-top: 5%;"/> </div> <div class="slide"> <h1>まとめと今後の課題</h1> <ul> <li>Meta Engine を用いることによって同一サーバー上のタプルスペースに直接アクセスできるようになり、プログラミングをしやすくなった。</li> <li>update API の追加により、更新処理の記述がシンプルになった</li> <li>ツリー型トポロジーの実装を通して、 Federated Linda の問題点を洗い出したい</li> <li>サーバーの接続処理を毎回書いて、接続を管理するより、ライブラリを作ってまとめたい</li> <li>複数の Federated Linda サーバーをデバッグするのは難しいので、スケーラブルなデバッグ方法を考えていく必要がある</li> </ul> </div> <!-- <div class="slide"> --> <!-- <h1>ご清聴ありがとうございました</h1> --> <!-- <img src="./img/nadeko.png" style="display: block; width: 80%; margin: auto"/> --> <!-- </div> --> </body> </html>