Torque(サーバ編)


「OpenPBS」から派生した「Torque」のインストール及び設定を行います。

・Torque公式
http://www.clusterresources.com/products/torque-resource-manager.php

「Torque」はリポジトリを設定すれば「yum」でインストールする事が可能です。
(CentOSの場合は、rpmforge、Fdoraの場合は、RPM Fusion)

ここでは、ソースからインストールする方式を取ります。

(1)「Torque」をダウンロードする。
[root@kanri ~]# wget http://www.clusterresources.com/downloads/torque/torque-2.4.8.tar.gz

)2010年05月9日時点での最新版は、「2.4.8」です。最新版をインストールする際は、http://www.clusterresources.com/downloads/torque/】を確認してください。

(2)ダウンロードしてきた「Torque」を解凍する。
[root@kanri ~]# tar zxvf torque-2.4.8.tar.gz

(3)「Torque」のインストールを行う。
[root@kanri ~]$ cd torque-2.4.8
[root@kanri torque-2.4.8]# ./configure --prefix=/usr/local/torque --with-default-server=kanri.local --with-server-home=/var/spool/torque --with-rcp=/usr/bin/rcp
[root@kanri torque-2.4.8]# make && make install

–prefixオプション:インストール先ディレクトリを指定する
–with-default-serverオプション:管理サーバを指定する
–with-serer-homeオプション:「Torqu」の設定ファイル保存先ディレクトリを指定する。
–with-rcpオプション:「Torque」は、デフォルトで「SCP」を使うことになっています。今回は、「SCP」を使わず「RCP」を使うためこのオプションを指定する。

(4)無事に「configure」が終了すれば「make」「make install」を実行する。
[root@kanri torque-2.4.8]# make && make install

(5)「Torque」が使うポートを「/etc/services」に記述する。
[root@kanri ~]# vi /etc/services
pbs             15001/tcp               # pbs server (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

(6)インストール後、「Torque」のデータベースを初期化する。
[root@kanri ~]# /usr/local/torque/sbin/pbs_server -t create

(7)上記コマンドの実行で、「pbs_server」はデータベースを初期化すると同時にデーモンプロセスとして走り、「qmgr(キューマネージャー)」からの命令で設定が可能となる。「qmgr」を実行すると次のようにプロンプトが表示される。
[root@kanri ~]# /usr/local/torque/bin/qmgr
Max open servers: 4
Qmgr:

(8)「qmgr」が操作できる状態を確認できれば、「queue」の作成を行う。テストキューとして「tqueue」と言う名前で作成してみる。
[root@kanri ~]# /usr/local/torque/bin/qmgr
Max open servers: 4
Qmgr: create queue tqueue queue_type = execution
Qmgr: set queue tqueue enabled = true
Qmgr: set queue tqueue started = true
Qmgr: set server default_queue = tqueue
Qmgr: set server scheduling = true
Qmgr: set queue tqueue resources_max.ncpus = 2 ← # ここにはキューに割り当てるCPU数を指定しています。各自環境に合わせてください。
Qmgr: set queue tqueue resources_max.nodes = 2 ← # ここにはキューに割り当てるノース数を指定しています。各自環境に合わせてください。

(9)作成した「queue」の確認を行う。
Qmgr: print server
Max open servers: 4
Qmgr: print server
#
# Create queues and set their attributes.
#
#
# Create and define queue tqueue
#
create queue tqueue
set queue tqueue queue_type = Execution
set queue tqueue resources_max.ncpus = 2
set queue tqueue resources_max.nodes = 2
set queue tqueue enabled = True
set queue tqueue started = True
#
# Set server attributes.
#
set server scheduling = True
set server acl_hosts = kanri.local
set server default_queue = tqueue
set server log_events = 511
set server mail_from = adm
set server scheduler_iteration = 600
set server node_check_rate = 150
set server tcp_timeout = 6

上の結果のように「tqueue」が作成されていれば大丈夫です。 

(10)この設定を保存したい場合は、「qmgr」コマンドを標準入力から与えてリダイレクトすることができる。そして逆に、このファイルをリダイレクトで「qmgr」コマンドへ与えるとファイルからの設定ができるので、初期化して作り直す時には便利。
[root@kanri ~]# echo "p s" | /usr/local/torque/bin/qmgr > print_server.out
[root@kanri ~]# cat print_server.out
Max open servers: 4
#
# Create queues and set their attributes.
#
#
# Create and define queue tqueue
#
create queue tqueue
set queue tqueue queue_type = Execution
set queue tqueue resources_max.ncpus = 2
set queue tqueue resources_max.nodes = 2
set queue tqueue enabled = True
set queue tqueue started = True
#
# Set server attributes.
#
set server scheduling = True
set server acl_hosts = kanri.local
set server default_queue = tqueue
set server log_events = 511
set server mail_from = adm
set server scheduler_iteration = 600
set server node_check_rate = 150
set server tcp_timeout = 6

設定を戻す場合
[root@kanri ~]# /usr/local/torque/bin/qmgr < print_server.out

(11)「qmgr」の「list」コマンドで「queue」の属性が表示できる。
[root@kanri ~]# /usr/local/torque/bin/qmgr
Qmgr: list queue tqueue
Queue tqueue
        queue_type = Execution
        total_jobs = 0
        state_count = Transit:0 Queued:0 Held:0 Waiting:0 Running:0 Exiting:0
        resources_max.ncpus = 2
        resources_max.nodes = 2
        mtime = Mon May 10 20:56:14 2010
        enabled = True
        started = True

Qmgr:

(12)「Torque」のデフォルト構成では、FIFOスケジューラが利用可能となる。このスケジューラの設定は「$Torque/sched_priv/sched_config」で行える。「Torque」では、ノード毎にジョブの本数制限ができないので、ここではロードバランシングでジョブの本数制限をかける。また、ジョブの大小によるソートはしない。
[root@kanri ~]# vi /var/spool/torque/sched_priv/sched_config
load_balancing: false ALL
↓# 変更
load_balancing: true ALL

sort_by: shortest_job_first ALL
↓# 変更
sort_by: no_sort ALL

(13)「queue server(pbs_server)」を停止する。
「pbs_server」と「pbs_sched」の設定が整ったら、データベース初期化のために走らせた「pbs_server」を一旦停止する。

[root@kanri ~]# killall pbs_server

(14)「Torque」の起動スクリプトを作成する。
[root@kanri ~]# vi /etc/rc.d/init.d/torque
#!/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

(15)計算に使用するノードファイルを作成する。
[root@kanri ~]# vi /var/spool/torque/server_priv/nodes
node1 np=1
node2 np=1

npオプション:ノードが搭載しているCPU(コア)の数を指定する。 

(16)「Torque」を起動する。
[root@kanri ~]# chmod 755 /etc/rc.d/init.d/torque
[root@kanri ~]# /etc/rc.d/init.d/torque start
Starting PBS daemons:
Starging pbs_sched:                                        [  OK  ]
Starting pbs_server:                                       [  OK  ]

(17)「Torque」のパスを通す。パスの通し方は、以下URL(4)を参照のこと。
http://www.kurobuti.com/linux_server/?page_id=147

以上が管理サーバ側に必要な設定です。
起動時に自動起動が必要な場合は応じて設定してください。

ここでは、管理サーバは計算ノードの部類には含みません。
もし、管理サーバも計算ノードと同じように処理に使いたい場合は、計算ノード側設定を参照のこと。

Comments are closed.