Mercurial > hg > Papers > 2019 > aka-thesis
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}