Mercurial > hg > Papers > 2009 > kazz-thesis
view presen/index.html @ 15:866492f5ca25 default tip
presentation
author | kazz <kazz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 18 Feb 2010 15:04:52 +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>FederatedLinda におけるデバッグツールの開発と実装</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>FederatedLinda における<br>デバッグツールの開発と実装</h1> <div class="name">琉球大学工学部情報工学科 並列信頼研 B4 赤嶺一樹</div> </div> </div> </div> <div class="slide"> <h1>研究背景</h1> <p class="subhead">並列分散プログラムの需要はますます高まってきている</p> <ul> <li>しかし、スケーラビリティの確保は難しい</li> <ul> <li>スケーラビリティとは、サービスの大きさが増えてもリソースの追加のみでサービスの質を維持できること</li> </ul> <li>分散プログラムのデバッグは難しい</li> <ul> <li>複数のプログラムが同時に走り、それらが相互に関わりをもつため、gdb などを用いる通常の方法では太刀打ちできない</li> </ul> </ul> </div> <div class="slide"> <h1>研究目的</h1> <p class="subhead">スケーラブルな分散プログラミングモデルの設計</p> <ul> <li>複数のサーバーを接続することで負荷を分散する</li> <li>クライアントの数によって自然にスケールする</li> </ul> <p class="subhead">条件</p> <ul> <li>現実的にデバッグが可能なモデルであること</li> </ul> <p class="subhead">提案</p> <ul> <li><strong>リング型のトポロジーを他のネットワークと同時に構築して、デバッグ情報を集める方法</strong></li> </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>FederatedLinda</h1> <div style="display: block; float: left; width: 60%;"> <p> FederatedLinda とは、タプルスペースを複数個つなげて、タプルの伝搬を基にデータを共有するモデルである </p> <ul> <li>タプルスペース間には データの伝搬などを管理する ProtocolEngine と呼ばれるプログラムが存在</li> <li>しかし、デバッガはサーバ内の情報を取得する必要があるため、同一メモリ空間に配置できる MetaProtocolEngine を実装</li> </ul> </div> <img src="./img/fedlinda.png" style="display: block; width: 37%; margin: auto; float: right; margin-right: 3%; margin-top: 5%;"/> </div> <div class="slide"> <h1>デバッグツールの概要</h1> <p> <ul> <li>今回の研究ではツリー型のトポロジーを例題として挙げる。(実線)</li> <li>デバッグ用として、リング型のトポロジーを構築する。(破線)</li> </ul> </p> <img src="./img/treeandring.png" style="display: block; width: 60%; margin: auto"/> </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>トポロジーの接続</h1> <img src="./img/routing.png" style="display: block; width: 70%; margin: auto"/> <p> <ul> <li>Manager は、各ノードから起動したことを通知されると、接続命令を XML 形式で各ノードに伝える</li> </ul> </p> </div> <div class="slide"> <h1>トポロジーの接続</h1> <img src="./img/routing1.png" style="display: block; width: 70%; margin: auto"/> <p> <ul> <li>受け取った XML データをもとに、ノードは接続を行う</li> <li>接続が終了したら Manager に通知</li> </ul> </p> </div> <div class="slide"> <h1>デバッグ用トークン</h1> <img src="./img/debugring.png" style="display: block; width: 60%; margin: auto"/> <p> <ul> <li>リング上にデバッグ用のトークンを流して、デバッグ情報を集める</li> </ul> </p> </div> <div class="slide"> <h1>デバッグツールの検証</h1> <p> <ul> <li>TORQUE で管理されたクラスタ30台を利用</li> <li>ツリーの先頭ノードから末端、末端から先頭ノードへのリレーを 100 周行って、時間を計測した</li> <li>また、それと同時に、デバッグ用のリングノードでリングを流し続ける場合の時間も計測した</li> </ul> </p> <img src="./img/treeandring.png" style="display: block; width: 60%; margin: auto"/> </div> <div class="slide"> <h1>デバッグツールの検証</h1> <p> <ul> <li>100周の実験を行って、ツリーを 1 周する平均時間を求めた</li> </ul> </p> <table> <tr> <th>デバッグエンジンの有無</th> <td style="text-align: center">無</td> <td style="text-align: center">有</td> </tr> <tr> <th>1周にかかった平均時間[ms]</th> <td>11.38</td> <td>12.35</td> </tr> </table> <p> <ul> <li>デバッグエンジンを利用すると、通常より 8.5% ほど、時間がかかるようになった</li> <li><strong>ツリーのパフォーマンスにそこまで影響を与えていない</strong></li> </ul> </p> </div> <div class="slide"> <h1>まとめ</h1> <p> <ul> <li>今回の研究では、リング型のトポロジーでデバッグ用のトークンを回してデバッグ情報を集めた</li> <li>隣にデータを伝搬するだけのシンプルな構成となっているため、一極集中を避けられる</li> <li><strong>スケーラブルなデバッグツールとなるのではないか</strong></li> </ul> </p> </div> <div class="slide"> <h1>ご清聴ありがとうございました</h1> <img src="./img/nadeko.png" style="display: block; width: 80%; margin: auto"/> </div> <div class="slide"> <h1>Linda の相互接続</h1> <p> <ul> <li>FederatedLinda の接続は、互いの MetaProtocolEngine が相互に接続することで成り立っている</li> <li>接続するときに、1つのタプルを専用の受信用タプルとして設定することで、そこのタプルにデータが書き込まれたらその接続先からデータが来たということを把握することができる</li> <li>in() には、コールバック関数を指定することができ、MetaProtocolEngine が先に in() して、タプルが送られてくるのを待つ</li> <li>そのコールバックに、他のサーバに伝搬をする処理を記述する</li> </ul> </p> <img src="./img/poll.png" style="display: block; width: 60%; margin: auto"/> </div> </body> </html>