diff paper/appendix1.tex @ 28:46a09e9020a3

modify chapter1
author sugi
date Thu, 05 Feb 2015 04:23:37 +0900
parents a27c97e0bb15
children 9d3fadcc379d
line wrap: on
line diff
--- a/paper/appendix1.tex	Wed Feb 04 21:13:48 2015 +0900
+++ b/paper/appendix1.tex	Thu Feb 05 04:23:37 2015 +0900
@@ -21,13 +21,13 @@
   \label{fig:torque}
 \end{figure}
 
-ユーザーはマスターを用いてTORQUEを利用する。ジョブを記述したシェルスクリプトを用意し、スケジューラーに投入する。投入するタイミングで、利用したいマシン台数、CPUコア数を指定することができる。(ソースコード \ref {src:torque})
-
+ユーザーはマスターを用いてTORQUEを利用する。ジョブを記述したシェルスクリプトを用意し、スケジューラーに投入する。投入するタイミングで、利用したいマシン台数、CPUコア数を指定することができる。
 TORQUE は、ジョブに必要なマシンが揃い次第、受け取ったジョブを実行する。
 
 \subsubsection {TORQUE のジョブの書き方}
 TORQUEのジョブは、シェルスクリプトにより記述する。
 TORQUEのジョブは実行される際に、環境変数が与えられる。
+これらの環境変数は、ジョブを投入する際にオプションでも変更することができる。
 
 \begin{itemize}
 \item {\ttfamily PBS\_NODEFILE}\\
@@ -39,8 +39,8 @@
 \item{\ttfamily PBS\_JOBNAME}\\
 ジョブの名前
 \end{itemize}
-これらの環境変数は、ジョブを投入する際にオプションでも変更することができる。
 
+ソースコード \ref{src:torque1}はスレーブに、{\ttfamily PBS\_NODEFILE} に記述されているマシン名の順番にログインさせ、hostnameコマンドを実行させる例題である。
 \begin{lstlisting}[label=src:torque1, caption=指定されたマシンにログインして hostname コマンドを走らせる例]
 function run() {
     while read node
@@ -52,12 +52,50 @@
 run < $PBS_NODEFILE
 \end{lstlisting}
 
-ソースコード \ref{src:torque1}はスレーブに、{\ttfamily PBS\_NODEFILE} に記述されているマシン名の順番にログインさせ、hostnameコマンドを実行させる例題である。
+{\ttfamily PBS\_NODEFILE} の中に含まれるマシン名はコア数分重複しているので扱う際に注意が必要である。
 
+ジョブを投入するには、 qsub コマンドを用いる。(ソースコード \ref{src:torque2})
 \begin{table}[html]
-\lstinputlisting[label=src:torque, caption=10台(1台あたり4コア)で走らせる例]{source/Torque.sh}
+\lstinputlisting[label=src:torque2, caption=10台(1台あたり4コア)で走らせる例]{source/Torque.sh}
 \end{table}
 
+実際にAliceのリングトポロジーによる実験を行うタスクはソースコード \ref{src:torque5}である
+
+\begin{lstlisting}[label=src:torque5, caption=Alice でリングトポロジーの実験に使ったジョブ]
+#!/bin/bash
+#
+# Alice Ring Topology
+#
+#PBS -q dque
+#PBS -N AliceRingTopology
+#PBS -l walltime=00:05:00
+
+alicepath=/home/mass/share/student/k138563
+node_num=`expr $PBS_NUM_NODES - 1` # TopologyManager の分を1引く
+port=10000    # 利用するポート番号
+count=100     # リングを回る回数
+size=4096     # リングを回すメッセージのサイズ
+
+function run() {
+    read serv
+    ssh $serv "ruby $alicepath/ring.rb $node_num > /tmp/ring.dot" < /dev/null
+    ssh $serv killall java < /dev/null
+    # トポロジーマネージャーの起動
+    ssh $serv java -cp $alicepath/Alice.jar alice.topology.manager.TopologyManager -p $port -conf /tmp/ring.dot < /dev/null &
+    cnt=0
+    while read node # 用意されたスレーブがなくなるまで繰り返す
+    do
+      ssh $node killall java < /dev/null
+      # トポロジーマネージャーに対して参加表明を行う
+      ssh $node java -cp $alicepath/Alice.jar alice.test.topology.ring.RingTopology -host $serv -port $port -p $port  -count $count -size $size -nodeNum $node_num < /dev/null &
+      cnt=`expr $cnt + 1`
+    done
+    wait
+}
+
+uniq $PBS_NODEFILE /tmp/nodes #重複しているノード名の削除
+run < /tmp/nodes
+\end{lstlisting}
 
 \newpage
 \def\thesection{付録\Alph{section}}