Mercurial > hg > Papers > 2009 > axmo-thesis
view yokou.tex @ 3:89b324bfe227
(no commit message)
author | axmo |
---|---|
date | Wed, 25 Feb 2009 18:49:07 +0900 |
parents | b56af2524c61 |
children | 6190f58cb33e |
line wrap: on
line source
\documentclass[twocolumn,twoside,9.5pt]{jarticle} \usepackage[dvips]{graphicx} \usepackage{fancyhdr} \pagestyle{fancy} \lhead{\parpic{\includegraphics[height=1zw,clip,keepaspectratio]{pic/emblem-bitmap.eps}}琉球大学主催 工学部情報工学科 卒業研究発表会} \rhead{} \cfoot{} \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}} \setlength{\headheight}{0mm} \setlength{\headsep}{5mm} \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}} \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}} \setlength{\textwidth}{181mm} \setlength{\textheight}{261mm} \setlength{\footskip}{0mm} \pagestyle{empty} \begin{document} \title{分散プログラムにおけるデバッグツールの設計と実装} \author{035713J 小野雅俊 {}{} 指導教員 : 河野真治} \date{} \maketitle \thispagestyle{fancy} \section{はじめに} 分散プログラミングが多数開発されている近年、プログラム作成時にクラスタ上のノードやネットワークの動的な変化、故障、性能の多様性を考慮する必要があり、またそれを踏まえた上でのスケーラビリティを確保することが必要とされてきている。\\ スケーラビリティとはリソースを増やしてサービス能力を(理想では)直線的に拡張出来る能力であり、負荷の増加に関してはリソースの追加のみで、アプリケーション自体を変更する必要性がない事を示す。 本稿は分散プログラムにFederated Lindaを用い、スケーラビリティなデバッグを行う為に通常のタプル通信の他にメタな通信を行うプロトコルエンジンの設計と実装について検討する。 \section{分散プログラムの問題点} デバッグを行う際に通常の通信を用いて行うのでは、本来の通信に影響を及ぼす恐れがある。よって、デバックプロトコル自身がスケーラビリティでなければいけない。つまり、サーバーの台数が変動した時に、デバッグプロトコルを別途用意する事なく同じ様に変動しなければならない。\\ 本稿ではsnapshotをRingを使って取る為、Ringの性能テストを評価する。 \section{Federated Linda} Federated Lindaとは、複数のタプル空間を相互に接続する事によって分散プログラムを実現するモデルである。Lindaとは同じ構造ではあるが、Lindaが一つのタプル空間を共有するのに対し、Federated Lindaはタプル空間通しでin/outを行う。\\ クライアントのアクセス数が増えたとしても、タプルスペース等の数を増やし処理を分散させる事により、スケーラビリティを保つ。\\ 本稿では、Linda ServerとProtocol Engineが一体化したtype3で実装を検討する。(図\ref{snap9}) \begin{figure}[htbp] \begin{center} \includegraphics[scale=0.3]{img/type3.eps} \caption{type3} \label{snap9} \end{center} \end{figure} \subsection{Federated Linda Protocol} Federated Lindaは以下の様にして通信を行う。 \begin{itemize} \item open(host,port)\\ Linda Serverに対し、接続を行う。引数はホスト名とポート番号をとる。返り値はタプルスペースの番号となる。 \item in(id)\\ タプルスペース番号より引数で指定したidのタプルの受け取りを要求する。返り値はPSXReplyで用いるユニークな番号となる。 \item out(id,data)\\ 引数で指定したidでデータを送信する。dataはBytebufferでなければならない。 \item sync()\\ 接続しているLinda Serverとタプルの送受信を行う。 \end{itemize} \section{Protocol Engine} type2で実装されているProtocol Engineとはタプルスペースを介してデータをやり取りするEngineである。\\ 二つのサーバー間でやり取りを行う場合、以下のようなプログラムとなる。\\ \\ 例)ポートを変えた、二つのLocal Linda Server間のデータをやり取りする場合 \begin{verbatim} FederatedLinda fdl; PSXLinda getpsx; PSXLinda sendpsx; PSXReply in; ByteBuffer data = ByteBuffer.allocate(10); //通信を初期化する fdl = FederatedLinda.init(); //データを取ってくるホストと受け渡すホストとの接続開始 getpsx = fdl.open(localhost,10000); sendpsx = fdl.open(localhost,10001); //取ってくるホストからinを指定してデータを取得 in = getpsx.in(10) data = in.getData(); //受け渡すホストに対しデータとidを指定して同期 sendpsx.out(10,data); fdl.sync(); \end{verbatim} \section{Meta Protocol Engine} type3ではスケーラビリティを実現する為にLinda Serverに直接Protocol Engineを実装する。このEngineをMemta Protocol Engineと呼ぶ。\\ Linda Serverのメインループにメソッドを追加する事により、Serverが立ち上がると同時にMeta Protocol Engineを起動する事が出来る。\\ \section{測定} Meta Protocol Engineでの通信テスト、データが1000周した時に掛かった時間を測定する。(図\ref{metaring}) \begin{figure}[htbp] \begin{center} \includegraphics[scale=0.3]{img/metaring.eps} \caption{type2} \label{metaring} \end{center} \end{figure} 図\ref{metaring}から見てわかる通り、データの量にはあまり依存する事はなくほぼ同じラインを形作っている。100台用いて1000周した際に掛かった時間は、 1サイクルおよそ60ms、一台につき約0.6msとなっている。 \begin{tabular}{|r|r|} \hline ノード数&Time\\ \hline \end{tabular} \section{終わりに} \thispagestyle{fancy} \begin{thebibliography}{9} \bibitem {}上里献一, 河野真治 SuciライブラリのスナップショットAPIを利用した並列デバッグツールの設計 \bibitem {}渕田 良彦, 河野 真治 分散プログラミングモデルFederated Lindaと分散デバッグ \end{thebibliography} \end{document}