Mercurial > hg > Papers > 2015 > sugi-master
view paper/appendix1.tex @ 27:a27c97e0bb15
add appendix
author | sugi |
---|---|
date | Wed, 04 Feb 2015 21:13:48 +0900 |
parents | |
children | 46a09e9020a3 |
line wrap: on
line source
\clearpage \addcontentsline{toc}{chapter}{付録} \appendix \def\thesection{付録\Alph{section}} \section[ TORQUE Resource Manager を用いた実験方法]{TORQUE Resource Manager を用いた実験方法} 分散環境の実験する際に、学科にある共用のブレードサーバーを用いた。 TORQUE Resource Manager (\url{http://www.adaptivecomputing.com/products/torque.php})というジョブスケジューラーによって、他の利用者とのリソースが競合しないように管理されている。 \subsubsection {TORQUE Resource Manager} TORQUE は、1台のマスターと複数台のスレーブで構成される。(図 \ref{fig:torque}) スレーブは、マスターへ現在の自身のリソースの利用状況を報告する。 \begin{figure}[htbp] \begin{center} \includegraphics[width=80mm]{images/torque.pdf} \end{center} \caption{TORQUE の構成} \label{fig:torque} \end{figure} ユーザーはマスターを用いてTORQUEを利用する。ジョブを記述したシェルスクリプトを用意し、スケジューラーに投入する。投入するタイミングで、利用したいマシン台数、CPUコア数を指定することができる。(ソースコード \ref {src:torque}) TORQUE は、ジョブに必要なマシンが揃い次第、受け取ったジョブを実行する。 \subsubsection {TORQUE のジョブの書き方} TORQUEのジョブは、シェルスクリプトにより記述する。 TORQUEのジョブは実行される際に、環境変数が与えられる。 \begin{itemize} \item {\ttfamily PBS\_NODEFILE}\\ すべての参加マシンが列挙されているファイルへのパス \item {\ttfamily PBS\_NUM\_NODES}\\ 全ての参加マシン数 \item{\ttfamily PBS\_NUM\_PPN}\\ 参加マシン一台あたりのコア数 \item{\ttfamily PBS\_JOBNAME}\\ ジョブの名前 \end{itemize} これらの環境変数は、ジョブを投入する際にオプションでも変更することができる。 \begin{lstlisting}[label=src:torque1, caption=指定されたマシンにログインして hostname コマンドを走らせる例] function run() { while read node do ssh $node hostname < /dev/null done wait } run < $PBS_NODEFILE \end{lstlisting} ソースコード \ref{src:torque1}はスレーブに、{\ttfamily PBS\_NODEFILE} に記述されているマシン名の順番にログインさせ、hostnameコマンドを実行させる例題である。 \begin{table}[html] \lstinputlisting[label=src:torque, caption=10台(1台あたり4コア)で走らせる例]{source/Torque.sh} \end{table} \newpage \def\thesection{付録\Alph{section}} \section[ Topology Manager]{Topology Manager} Aliceは複数のノードで構成され、相互に接続される。通信するノードはURLにより直接指定するのではなくTopology Managerで管理する。 Topology Managerはトポロジーファイルを読み込み、参加を表明したクライアント(以下、Topology Node)に接続するべきTopology NodeのIPアドレス、ポート番号、接続名を送りトポロジーファイルに記述されたとおりにトポロジーを作成する。(図\ref{fig:topologymanager}) \begin{figure}[htbp] \begin{center} \includegraphics[width=70mm]{images/topologymanager.pdf} \end{center} \caption{Topology Manager はトポロジーファイルの記述に従ってトポロジーを生成する} \label{fig:topologymanager} \end{figure} CS内部でRemote DSMにアクセスする場合はToplogyManagerによって指定されたノード内部だけで有効なlabel(文字列)を使う。これにより特定のURLがCS内部に記述されることを防いでいる。 トポロジーファイルはグラフ構造を表現するデータ記述する言語の一種であるDOT Languageと呼ばれる言語で記述する。また、dotコマンドを用いてトポロジーファイルを可視化することができる。 \subsubsection{Topology Managerの参加表明処理} Topology Managerへの参加表明は、Topology Node起動時にコマンドライン引数からTopology ManagerのIPアドレスとポート番号を指定すればよい。 参加表明を行ってからリングトポロジーができるまでのコミュニケーションダイアグラムを示す。 \begin{figure}[htbp] \begin{center} \includegraphics[width=100mm]{images/topologymanagerandnode1.pdf} \end{center} \caption{参加表明したノードに対して抽象名を返す} \label{fig:topologymanagerandnode1} \end{figure} \begin{enumerate} \item 指定されたTopology Managerに接続を行うと、Topology Manager側のキー"hosts"に、自分自身のIPアドレスとポート番号をputする。 \item 参加表明を受け取ったTopology Managerは、抽象名を参加表明したTopology Nodeのキー"host"にputする。 \end{enumerate} \begin{figure}[htbp] \begin{center} \includegraphics[width=100mm]{images/topologymanagerandnode2.pdf} \end{center} \caption{Topology Nodeは接続すべきNodeの情報をTopology Managerに要求する} \label{fig:topologymanagerandnode2} \end{figure} \begin{enumerate} \setcounter{enumi}{3} \item Topology NodeはTopology Managerに対してtakeを行う。指定するkeyは"host"に投入された文字列である。 \item takeへの応答として接続すべきTopology Nodeの情報(IP アドレス、ポート番号等)がreplyされる。 \end{enumerate} \begin{figure}[htbp] \begin{center} \includegraphics[width=100mm]{images/topologymanagerandnode3.pdf} \end{center} \caption{リングトポロジーの完成} \label{fig:topologymanagerandnode3} \end{figure} \begin{enumerate} \setcounter{enumi}{5} \item replyされた情報に対して接続処理を行う。 \item 3から5を繰り返し行うことでリングトポロジーが完成する。 \end{enumerate} 全ての接続処理が終わるとTopology ManagerからTopology Nodeに対してStart CSの実行命令が出され、アプリケーションが開始される。