OpenPBSのインストール


●ダウンロード
http://www.openpbs.org/
(登録(無料)が必要.登録後,ダウンロード出来るまでに数日かかる)


●makeとインストール
1) OpenPBS_2_3_16.tar.gzを解凍
2)このままではmake出来ない.(Redhat 7.2や8.0でkernelやシステムのアップデートをしている場合について確認.rpm版もあるが,インストールに失敗した)
http://bellatrix.pcl.ox.ac.uk/〜ben/pbs/
から
openpbs-gcc32.patchをダウンロード.OpenPBS_2_3_16ディレクトリに置く.
patch -p1 < openpbs-gcc32.patch
でパッチを当てる
3)configure
./configure --prefix=/opt/pbs --enable-server -set-default_server=server --set-server-home=/var/spool/PBS
4)makeとinstall
make
スーパーユーザーで
make install

●シェルの設定
.bashrcに下記の内容を追加する
export PBS_HOME=/var/spool/PBS
export PATH=/opt/pbs/sbin:/opt/pbs/bin:$PATH
export MANPATH=/opt/pbs/man:$MANPATH

●/etc/services に下記の行を追加
#
# services for OpenPBS
#
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

●デーモンの自動起動スクリプトを書き込む
下記を,/etc/rc.d/init.dにコピーして,pbsという名前のファイルを作る.


#!/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/PBS

# let see how we were called
case "$1" in
start)
echo "Starting PBS daemons: "
if [ -x /opt/pbs/sbin/pbs_mom ] ; then
if [ -f $PBS_HOME/mom_priv/config ] ; then
echo -n "Starting pbs_mom: "
daemon /opt/pbs/sbin/pbs_mom
echo
fi
fi
if [ -x /opt/pbs/sbin/pbs_sched ] ; then
if [ -d $PBS_HOME/sched_priv ] ; then
echo -n "Starging pbs_sched: "
daemon /opt/pbs/sbin/pbs_sched
echo
fi
fi
if [ -x /opt/pbs/sbin/pbs_server ] ; then
if [ -d $PBS_HOME/server_priv ] ; then
echo -n "Starting pbs_server: "
daemon /opt/pbs/sbin/pbs_server -a true
echo
fi
fi
;;
stop)
echo "Shutting down PBS: "
if [ -x /opt/pbs/sbin/pbs_server ] ; then
if [ -d $PBS_HOME/server_priv ] ; then
echo -n "Stopping pbs_server: "
killproc pbs_server
echo
fi
fi
if [ -x /opt/pbs/sbin/pbs_sched ] ; then
if [ -d $PBS_HOME/sched_priv ] ; then
echo -n "Stopping pbs_sched: "
killproc pbs_sched
echo
fi
fi
if [ -x /opt/pbs/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


これを自動起動スクリプトとして登録.
# chkconfig --add pbs
# chkconfig pbs on
# chkconfig --list pbs

●pbs_serverの設定
1)データベースの初期化(最初の一回だけ)
# /opt/pbs/sbin/pbs_server -t create
2)nodeの登録
# qmgr
Qmgr: create node barton:ts
(tsはタイムシェアリングノード)
3)queueの登録(queueの名称をlargeとする)
Qmgr:
create queue large
set queue large queue_type = Execution
set queue large max_queuable = 16 (最大16個queueを登録)
set queue large max_running = 1  (同時に走るのは1個だけ)
set queue large resources_max.cput = 72:00:00 (CPU時間が最大72時間=3日)
set queue large enabled = True
set queue large started = True

---------------------------------------------------------------------

以下は私の研究室での設定.

何故かmax_running = 1だと上手くいかず,2にするとJobが一つづつ走った.
下記をファイルに保存して
cat <ファイル>|qmgr
で一括で設定できる.

--------------------------------------------------------------------

#
# Create queues and set their attributes.
#
#
# Create and define queue large
#
create queue large
set queue large queue_type = Execution
set queue large max_queuable = 16
set queue large max_running = 2
set queue large resources_max.cput = 72:00:00
set queue large enabled = True
set queue large started = True
#
# Set server attributes.
#
set server scheduling = True
set server max_user_run = 1
set server default_queue = large
set server log_events = 511
set server mail_from = adm
set server query_other_jobs = True
set server scheduler_iteration = 600
set server default_node = barton

------------------------------------------------------------

4)設定の確認
Qmgr: list queue large
5)キューの状態の表示
qstat -q
qstat -Q

●pbs_monitorの設定
----------------------------------------------------------------
$PBS_HOME/mom_priv/configを編集する

$logevent 0x1ff
$clienthost server (serverを,実際のサーバー名に書き換える)
----------------------------------------------------------------
$PBS_HOME/server_nameを編集する

server  (serverを,実際のサーバー名に書き換える)
----------------------------------------------------------------

●キューサーバーの起動
/etc/rc.d/init.d/pbs restart

●Materials Studioの設定

アカウントaccelrysにて

/home/accelrys/MaterialsStudio/Gateway/config/configure queue -queuepath PBS/dsd_pbs -activate
でqueuing system用の設定になる

正しく設定されると
/home/accelrys/MaterialsStudio/Gateway/root_default/dsd/conf/gw-info.sbd
に下記の行が加わる
queuingsystem=PBS/dsd_pbs
(NQSだけだと認識しない)

また,
/home/accelrys/MaterialsStudio/Gateway/root_default/dsd/conf/gwparams.cfg
にも同様に
gw_queuingsystem=PBS

となる.

設定後,Gatewayの再起動が必要.(rootで行う)
/etc/rc.d/init.d/msgateway_control_18888 restart

●アカウントaccelrysの.cshrcの設定

下記の行をアカウントaccelrysの.cshrcに追加する.起動シェルはc-shellになっていること.

set path = ($path /opt/pbs/sbin /opt/pbs/bin $HOME/bin /home/accelrys/MaterialsStudio/Discover/bin)
set PBS_HOME=(/var/spool/PBS)
set MANPATH=(/opt/pbs/man)


standaloneモードでのバッチ処理の仕方(OpenPBS)

1)下記の内容のシェルスクリプトを作成する
例)POM.sh(POM.car, POM.mdf, POM.inpが作成済みであるとする)
#!/bin/sh
#
#PBS -e $HOME
#PBS -o $HOME
cd $PBS_O_WORKDIR
RunDiscover.sh POM.inp

2)実行
qsub POM.sh

3)実行状況の確認
qstat
qstat -q
qstat -Q
4)queueの削除
qdel <Job ID>
(Job IDはqstatで確認出来る.<数字>.barton のようになっている)