view presen/presen.rst @ 11:4cd62fbbc89c

fix presen
author axmo
date Thu, 26 Feb 2009 20:46:08 +0900
parents 61923a48c02d
children
line wrap: on
line source

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

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

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

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

*所属*
  **琉球大学 工学部 情報工学科 並列信頼研**



研究の目的
===================

- 分散アプリケーションの作成時に必要な事

  - プログラムの正しさ
  - スケーラビリティを確保

- スケーラビリティとは

  - ノードの増減に対してアプリケーションの性能が左右されない

.. raw:: html

   <center><font color="red" size="big">スケーラブルなデバッグをしたい</font></center>

Federated Lindaを用いて、Metaな通信を行うProtocol Engineを提案、実装
 

Linda
===========================

- Linda

  - idで番号されたデータ(タプル)をタプル空間を通してやり取りする。Lindaは非同期で動作する。

.. raw:: html

      <table border="1">
      <tr>
      <td>in(id)</td>
      <td>タプル空間からタプルを取り出し、データを残さない。</td>
      </tr>
      <tr>
      <td>rd(id)</td>
      <td>タプル空間からタプルを取り出し、データを残す。</td>
      </tr>
      <tr>
      <td>out(id,out)</td>
      <td>タプル空間にタプルを入れる。</td>
      </tr>
      </table>

.. image:: img/linda.jpg
   :align: center
   :width: 400px


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

- Federated Linda

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

.. image:: img/flinda.jpg
   :align: center
   :width: 600px


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

class FederatedLinda

- PSXLinda open(String host,int port)

  - Linda Serverに対して接続を行う。返り値はタプルスペースの番号。

class PSXLinda

- PSXReply in(int id) 

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

- PSXReply out(int id, ByteBuffer data)

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

- int sync(long mtimeout) 

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


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

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

- 二つのサーバー間を接続するProtocol Engine。

.. image:: img/uml2.jpg
   :align: center
   :width: 600px

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

デバッグ用の通信は、直接Linda Server内にアクセス出来なければならない。

Meta Protocol Engineでこれを実現する。

.. raw:: html

  <table>
    <tr>
      <td>

- 通常のFederated Lindaと同様のin/out APIを持つ。

- Linda Server内部に直接アクセスする事が出来る。

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

- Linda Server内のメインループで指定する事が出来る。

.. raw:: html

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

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

.. raw:: html

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

性能測定
==============================

RingでMeta Protocol Engineの性能を評価する。

.. raw:: html

  <table>
    <tr>
      <td>

何故Ringか?

- 実装が簡単である。
- 通信パケットが少ない。
- 通信を行う経路が決まっている。
- 分散通信に余り影響を与えない。


.. raw:: html

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

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

.. raw:: html

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


Meta Protocol Engineの性能評価
==============================

デバッグ操作等を行うには、全ノードを周回する必要がある。

ノードの数と送る通信パケットのサイズを変更しながら、データが一周及び千週する通信時間を測定する。

動作環境は以下の通り。

- クラスター、最大100台(CoreDuo 2GHz,メモリ1GB)

  - 180台の内安定して使えるクラスタが100台あまりだったため。

- データサイズ 1KB、10KB、100KB、1MB

- Torque

  - 複数人でクラスタを使う際に、ジョブの振り分けを行い他人との干渉を避ける事が出来る。



測定結果(一周)
========================

.. raw:: html

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

.. image:: img/metaring1.jpg
   :align: center
   :width: 400px

.. raw:: html

      </td>
      <td>

- 掛かる時間は台数に応じてLinearに増加している。

- パケットのサイズが変化しても転送速度は違いは見られない。

- 一周のみなので、open/closeなど接続のコストが大きい。

- 実際の通信時間が接続コストに隠れていると考えられる。

.. raw:: html

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

測定結果(千周)
========================

.. raw:: html

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

.. image:: img/metaring1000.jpg
   :align: center
   :width: 400px

.. raw:: html

      </td>
      <td>

- 接続コストの影響が小さいため、通信のみの時間。

- 1MBのデータを100台で通信した場合の一台あたりの時間は約12ms

- Ringでのデバッグに使用するのに十分な性能を持っている。


.. raw:: html

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


まとめと今後の課題
=========================

- まとめ

  - デバッグ通信が通常通信に影響を及ぼさない様なMetaな通信を行うMeta Protocol Engineを提案した。
  - Metaな通信速度からデバッグに使用するのに耐え得る性能を保持している。

- 今後の課題

  - 同じクラスタ上で別のMeta Protocol Engineが動作している場合、相互に影響を及ぼさないか。
  - 実際にMetaなタプルを通信した場合、通常の通信との影響はあるのか。
  - Meta Protocol上でデバッグプロトコルを実際に実装してみる。


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