[Torque]
    #
    Torqueとは
Torqueは、Job Schedulerである。Job Schedulerは、クラスターに次々と投入されるジョブを、キューなどを用い、スケジューリングを行って管理してくれる。~
クラスターを利用して、実験を行う際には、Job Schedulerを用いる必要がある。~
それは、他のクラスターユーザーが存在する場合に、同時に別スレッドで処理を実行してしまうならば、CPUなどのリソースを取り合うことになるため、台数効果などの実験結果が正確に得られないからである。~
それでは、Torqueの使い方を見てみよう。
    #
    Torqueの設定
以下のチュートリアルに進む前にTorqueの設定方法について学び、設定する必要がある。~
マシンの準備は[kvm]を参考に差分ディスク管理で作成するといいかも。
    #
    インストール
ソースからインストールする方法を紹介する。(yum等でもインストールすることは可能だけれど)。 ~
まずはダウンロード(公式 http://www.adaptivecomputing.com/ を参考に最新版を取得すること!)
| 1
 | # wget http://adaptive.wpengine.com/resources/downloads/torque/torque-4.2.0.tar.gz
 | 
 
解凍
| 1
 | # tar zxvf torque-4.2.0.tar.gz
 | 
 
インストール
| 1
2
3
 | # cd torque-4.2.0
# ./configure --prefix=<インストール先> --with-default-server=<管理サーバ> --with-server-home=<設定ファイルの保存先>
# make && make install
 | 
 
- torqueはデフォルトではscpを用いるが、rcpを用いたい時には configureを実行する時点で –with-rcpオプションを指定し、=<rcpの場所>としなければならない。
    #
    ポートの設定
Torqueが使用するポートについて/etc/servicesに記述する。以下に記述例を示す。
| 1
2
3
4
5
 | pbs             15001/tcp               # pbs_server
pbs_mom         15002/tcp               # mom to/from server
pbs_resmom      15003/tcp               # mom resource management requests
pbs_resmom      15003/udp               # mom resource management requests
pbs_sched       15004/tcp               # scheduler
 | 
 
ここまで完了したら一度以下のコマンドを実行してデータベースの初期化を行う。実行するとpbs_serverがデーモンプロセスとして実行され、qmgrを実行することで設定が行えるようになる。
| 1
 | # <インストールした場所>/sbin/pbs_server -t create
 | 
 
qmgrを実行すると以下のような表示がでる。
| 1
2
3
 | # <インストールした場所>/bin/qmgr
Max open servers: 4
Qmgr:
 | 
 
    #
    スケジューラの設定(サーバー側)
スケジューラの設定は$Torque/sched_priv/sched_configで行える。デフォルトではFIFOスケージューら。
    #
    設定の反映(サーバー側)
サーバーとスケジューラの設定を反映させるために一度pbs_serverを停止させなければならない。
    #
    ノードファイルの作成(サーバー側)
$Torque/sched_priv/nodes を編集する。以下に例を示す。
| 1
2
3
 | nodeA np=1
nodeB np=1
nodeC np=1
 | 
 
user側からはpbsnodesで見ることができる。
    #
    計算ノード用のconfigファイル作成(計算ノード側)
$Torque/mom_priv/config を編集。編集例を以下に示す。
| 1
2
3
4
 | logevent 0x1ff
max_load 1.2 
ideal_load 1.0
clienthost <管理サーバー>
 | 
 
- logevent
- max_load
- ideal_load
- 使用するCPU資源の最適値。cpu数に合わせると良い。
 
- clienthost
    #
    起動スクリプトの作成
以下のようなスクリプトを作り、/etc/rc.d/init.d以下に保存する。
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 | #!/bin/sh
#
# pbs          This script will start and stop the PBS daemons
#
# chkconfig: 345 85 85
# description: PBS is a batch versitle batch system for SMPs and clusters
#
# Source the library functions
. /etc/rc.d/init.d/functions
PBS_HOME=/var/spool/torque
# let see how we were called
case "$1" in
start)
       echo "Starting PBS daemons: "
       if [ -x /usr/local/torque/sbin/pbs_mom ] ; then
       if [ -f $PBS_HOME/mom_priv/config ] ; then
       echo -n "Starting pbs_mom: "
       daemon /usr/local/torque/sbin/pbs_mom
       echo
fi
fi
       if [ -x /usr/local/torque/sbin/pbs_sched ] ; then
       if [ -d $PBS_HOME/sched_priv ] ; then
       echo -n "Starging pbs_sched: "
       daemon /usr/local/torque/sbin/pbs_sched
       echo
fi
fi
       if [ -x /usr/local/torque/sbin/pbs_server ] ; then
       if [ -d $PBS_HOME/server_priv ] ; then
       echo -n "Starting pbs_server: "
       daemon /usr/local/torque/sbin/pbs_server -a true
       echo
fi
fi
;;
stop)
       echo "Shutting down PBS: "
       if [ -x /usr/local/torque/sbin/pbs_server ] ; then
       if [ -d $PBS_HOME/server_priv ] ; then
       echo -n "Stopping pbs_server: "
       killproc pbs_server
       echo
fi
fi
       if [ -x /usr/local/torque/sbin/pbs_sched ] ; then
       if [ -d $PBS_HOME/sched_priv ] ; then
       echo -n "Stopping pbs_sched: "
       killproc pbs_sched
       echo
fi
fi
       if [ -x /usr/local/torque/sbin/pbs_mom ] ; then
       if [ -f $PBS_HOME/mom_priv/config ] ; then
       echo -n "Stopping pbs_mom: "
       killproc pbs_mom
       echo
fi
fi
;;
status)
       status pbs_server
       status pbs_mom
       status pbs_sched
;;
restart)
       echo "Restarting PBS"
       $0 stop
       $0 start
       echo "done."
;;
*)
       echo "Usage: pbs {start|stop|restart|status}"
       exit 1
esac
 | 
 
このように、“ノード名 np=<ノードのcpu数>と記述する。
    #
    実行
先ほど作成したスクリプトから実行する。
| 1
 | # /etc/rc.d/init.d/torque start
 | 
 
    #
    パスを通す
.zshrcなどに以下のように記述する。
| 1
 | PATH=<インストールした場所>/bin:$PATH
 | 
 
    #
    エラーについて
    #
    Head側からnodeが見えてないエラー
/var/spool/torque/mom_logs にエラーの詳細が記される。(例えば以下のような)
| 1
2
3
4
 | 02/11/2013 20:29:24;0002;   pbs_mom;Svr;pbs_mom;Torque Mom Version = 2.5.5, loglevel = 0
02/11/2013 20:29:24;0001;   pbs_mom;Svr;pbs_mom;LOG_ERROR::Operation not permitted (1) in chk_file_sec, Security violation with "config" - config is not owned by admin user
02/11/2013 20:29:24;0002;   pbs_mom;Svr;read_config;ALERT:  cannot open config file - permissions
02/11/2013 20:29:24;0002;   pbs_mom;Svr;setpbsserver;mass00.cr.ie.u-ryukyu.ac.jp
 | 
 
このなかの
| 1
 | LOG_ERROR::Operation not permitted (1) in chk_file_sec, Security violation with "config" - config is not owned by admin user
 | 
 
がエラーを示す一文となっており、configファイルの所有者にadmin権限が無いことが原因となっていることがわかる。(このときはrootにしておかなければならないものをmassとしていた。)