view final_main/chapter5/chapter5.tex @ 8:0ad9752c0c85

add chapter5 and 6
author akahori
date Mon, 18 Feb 2019 18:35:32 +0900
parents 7ab85a536778
children
line wrap: on
line source

% 今後の課題
%\input{/Users/e155753/.tex/setup}

%%文書開始****************************
\begin{document} 
%%**************************************
\chapter{評価}

本研究では, 実際にコンセンサスアルゴリズムPaxosを分散環境上で実行した. 分散環境上で動かすため, JobSchedulerの一種であるTorque Resource Manager(Torque)を使った. ここではTorqueとはなにか, どのような評価をしたかを述べる.

\section{Torqueとは}

PCクラスタ上でプログラムの実験を行う際には, 他のプログラムとリソースを取り合う懸念がある. それを防ぐためにTorqueを使用する. Torqueはjobという単位でプログラムを管理し, リソースを確保できたら実行する. jobはqsubというコマンドを使って複数登録することができる. また, 実行中の様子もqstatというコマンドを打つことで監視ができる.


Torqueには主に3つのNodeの種類がある. 

\begin{description}
\item[Master Node] pbs\_serverを実行しているノード. 他のノードの役割とも併用できる.
\item[Submit/Interactive Nodes] クライアントがjobを投入したり監視したりするノード. qsubやqstatのようなクライアントコマンドが実行できる.
\item[Computer Nodes] 投入されたjobを実際に実行するノード. pbs\_momが実行されており, それによってjobをstart, kill, 管理する.
\end{description}

今回は図\ref{fig:kvm}のように, 学科のKVM上にMaster Node, Submit/Interactive Nodeの役割を持つVM1台と, Computer Nodesとして15台のVMを用意し, jobの投入を行った.

\begin{figure}[H]
\centering
  \fbox{
   \includegraphics[scale=0.5]{./images/kvm.pdf}
  }
\caption{実験環境}
\label{fig:kvm}
\end{figure}

jobはシェルスクリプトの形で与えることができる. ソースコード\ref{code:torque-example}を例としてあげる. 

\lstinputlisting[caption=torque-example.sh,label=code:torque-example]{./src/torque-example.sh}


「\#PBS オプション」とすることにより実行環境を設定できる. 使用できるオプションは参考文献\cite{qsub-doc}に書かれてある. このスクリプトでは, ノード数10(vm0からvm9まで), jobの名前を「ExampleJob」という形で実行する設定をしている. もし, このコードを投入した場合, Submit/Interactive Nodesが各vmにsshし, hostnameコマンドを実行する. 
実行後はstdout, stderrorの出力を「job名.o数字」, 「job名.e数字」というファイルに書き出す.

\section{PCクラスタ上でのPaxosの実験}

PCクラスタ上で実際にPaxosを動かしてみる. 今回は単純化し, proposerの数を2, acceptorの数を3, learnerの数を1としてPaxosを動かし, 値が一意に決まるかどうかを見る. また, わかりやすいように提案の値を整数とし, 各proposerごとに異なった値とした. 正確には, 「proposer + 数字」 の数字の部分を値とし, コンセンサスを取るようにした.

実験を3回行い, シーケンス図で結果を示したものを図\ref{fig:paxos1}, 図\ref{fig:paxos2}, 図\ref{fig:paxos3}に示す. なおこの結果はプログラム中のLog4j2を用いたlogの出力を元にLeanerが値を選択するまでを図にしたものである. 

\begin{figure}[H]
\centering
  \fbox{
   \includegraphics[scale=0.5]{./images/paxos1.pdf}
  }
\caption{実験1回目のPaxos}
\label{fig:paxos1}
\end{figure}


\begin{figure}[H]
\centering
  \fbox{
   \includegraphics[scale=0.8]{./images/paxos2.pdf}
  }
\caption{実験2回目のPaxos}
\label{fig:paxos2}
\end{figure}


\begin{figure}[H]
\centering
  \fbox{
   \includegraphics[scale=0.8]{./images/paxos3.pdf}
  }
\caption{実験3回目のPaxos}
\label{fig:paxos3}
\end{figure}

いずれも一意の値を決めることができている. また, Learnerが値を選択した後でも, Paxosは常に決めた値を持ち続けるアルゴリズムである. 参照したLog4j2の出力では提案番号25, 31まで提案を続けていたが, 値がこれ以降に覆ることはなかった.

今回はわかりやすいように値を数字で行った実験だったが, これをトランザクション, ブロックに応用することで, ブロックチェーンにおけるコンセンサス部分を完成させることができる.


%%文書終了****************************
\end{document}