view presen/presen.rst @ 6:61923a48c02d

add presen
author axmo
date Thu, 26 Feb 2009 01:21:47 +0900
parents
children 4cd62fbbc89c
line wrap: on
line source

.. include:: s5defs.txt
.. include:: <mmlalias.txt>

================================================
分散プログラムにおけるデバッグツールの設計と実装
================================================

*発表者*
  **小野雅俊**

*指導教官*
  **河野真治**

*所属*
  **琉球大学 工学部 情報工学科**



研究の背景と目的
===================

背景

- 分散プログラム作成時にクラスタのネットワーク上の問題を考慮する必要がある。

- 分散プログラム用のデバッグ環境の必要性が増している。

- その上でスケーラビリティを確保しなくてはならない。


目的 

- Federated Linda上で通常のタプル通信とは別にメタな通信を行うプロトロルエンジンの設計と実装
 


発表の流れ
======================

- Federated Linda
- Linda API (JAVA)
- Protocol Engine
- Meta Protocol Engine
- Meta Protocol Engineの性能評価
- 測定
- まとめと今後の課題

Federated Linda
===========================

- Linda

  - idで番号されたデータ(タプル)をタプル空間を通してやり取りする。

.. image:: img/7.jpg
   :align: center


Federated Linda
===========================

- Federated Linda

  - 複数のタプル空間を相互に接続する

.. image:: img/fedlinda.jpg
   :align: center


Linda API (JAVA)
========================

- public PSXLinda open(String host,int port)

  - Linda Serverに対して接続を行う。

- public PSXReply in(int id) 

  - 指定したIDのタプルの受け取りを要求する。

- public PSXReply out(int id, ByteBuffer data)

  - 指定したIDにByteBufferのデータを送信する。

- public int sync(long mtimeout) 

  - 接続しているServerとのタプルの送受信を行う。

Protocol Engine
=======================

- タプル空間とタプル空間のデータをやり取りする

- 前述のAPIを用いた例題

.. raw:: html

  <table>
    <tr>
      <td>

.. class::small

::

    fdl = FederatedLinda.init();

    getpsx = fdl.open(localhost,10000); 
    sendpsx = fdl.open(localhost,10001);

    in = getpsx.in(10);

    data = in.getData(); 
    sendpsx.out(10,data);

    fdl.sync(); 

.. raw:: html

      </td>
      <td align="center">

.. image:: img/uml.jpg
   :width: 360px

.. raw:: html

      </td>
     </tr>
   </table>


Meta Protocol Engine
================================

.. raw:: html

  <table>
    <tr>
      <td>

- 前述のProtocol Engineではデバッグを行う際に逐次Protocol Engineを用意する必要がある。

- スケーラビリティを確保する為に、Linda Server内に直接Protocol Engineを追加する。

- Meta Protocol Engine

  - Protocol Engineと同じ様にServerに接続する事が出来る。

  - 追加されているサーバー自身にアクセスする事が出来る。

  - 通常の通信とは違うMetaな通信を行う事が出来る。

.. raw:: html

      </td>
      <td align="center">

.. image:: img/3.jpg
   :align: center
   :width: 360px

.. raw:: html

      </td>
     </tr>
   </table>


Meta Protocol Engineの性能評価
==============================
提案、実装したMeta Protocl Engineの性能を評価するため、Ringを用いて評価を行う。

.. raw:: html

  <table>
    <tr>
      <td>

- Ring

  - 通信パケットは一つ。
  - 通信を行う経路が決まっている。
  - 分散通信に余り影響を与えない。

- 環境

  - クラスター、100台
  - データサイズを1Kb〜1Mb
  - Torqueを用いた

.. raw:: html

      </td>
      <td align="center">

.. image:: img/5.jpg
   :align: center

.. raw:: html

      </td>
     </tr>
   </table>


測定結果
========================

.. raw:: html

  <center>
  <table>
    <tr>
      <td align="center">

.. image:: img/metaring1.jpg
   :align: center

.. raw:: html

   <p><font size="5">一台あたり 約40ms<br /><br />
   open/closeの時間が影響</font></p>

      </td>
      <td align="center">

.. image:: img/metaring1000.jpg
   :align: center

.. raw:: html

   <p><font size="5">一台あたり 約0.6ms<br />
   open/closeの影響を受けない<br />
   デバッグ通信に耐えうる事が出来る</font></p> 
      </td>
     </tr>
   </table>
   </center>


まとめ
=========================

- 通常通信に影響を及ぼさない為、スケーラビリティを保持する為
  Metaな通信を行うMeta Protocol Engineを提案した。

- デバッグを行う都度にProtocol Engineを用意する事なく
  Serverが増減しても対応出来る。

- Metaな通信速度からデバッグに使用するのに耐え得る性能を保持している。


今後の課題
=======================

- 同じクラスタ上で別のMeta Protocol Engineが動作している場合、相互に影響を及ぼさないか。

- 実際にMetaなタプルを通信した場合、通常の通信との影響はあるのか。


==============