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 &#169; 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>