OpenPBSでのジョブの実行

OpenPBSで構築した複数ワークステーションからなるバッチシステムにジョブを依頼して、計算結果を得る方法を確認します。

内容

2003-07-16改訂1
2003-03-09桑村 潤

OpenPBSへのジョブの依頼

OpenPBSによるバッチシステム環境は既に構築されていることとします。

サーバと実行ホストの設定が終わったら、ジョブを依頼(投入)してみます。キューサーバとすべての実行ホストにジョブを投入するユーザのアカウントをつくり、SSH系のリモートアクセスが自動的に可能になるように設定します(設定の仕方はVMNetを参照ください)。この際に、FQDN(フルクォリファイド・ドメインネーム)のホスト名でもアクセスできるようにしておいたほうが無難なようです。 ここでは、作成したアカウントのユーザIDを www とし、そのホームディレクトリを /home/www とします。

プログラム実行シェルの作成

ジョブとして投入するプロシージャを記述したシェルを用意します。ここでは、簡単なコマンドを実行してみます。次のようなfindtest.shというシェルをつくりました。

$ cat findtest.sh 
#!/bin/sh
#PBS  -e /home/www/spool
#PBS  -o /home/www/spool
#PBS  -m be                                 
pwd
cd ${HOME}
pwd
find / -name \"*~\" -print
sleep 60
echo ${HOSTNAME}
echo findtest

はじめの数行、"#PBS" で始まる行は PBS へのコマンドです。

出力用のディレクトリを用意しておきます。ここではホームディレクトリ下の spool ディレクトリです。

$ mkdir ~/spool

ジョブの依頼

ジョブの依頼(投入)は qsub コマンドで行います。

$ qsub findtest.sh

いくつかジョブを投入してみました。

ジョブの状態確認

ジョブの状態は qstat コマンドでみることができます。

$ qstat 
Job id           Name             User             Time Use S Queue
---------------- ---------------- ---------------- -------- - -----
78.server        findtest.sh      www                     0 R dque
79.server        findtest.sh      www                     0 R dque
80.server        findtest.sh      www                     0 R dque

通知メール

開始時のメールは次のような内容です。

Date: Fri, 28 Feb 2003 21:10:04 +0900
From: adm <adm@server.vmnet.rccm.jp>
To: www@server.vmnet.rccm.jp
Subject: PBS JOB 78.server.vmnet.rccm.jp

PBS Job Id: 78.server.vmnet.rccm.jp
Job Name:   findtest.sh
Begun execution

終了後のメールは次のような内容です。

Date: Fri, 28 Feb 2003 21:11:05 +0900
From: adm <adm@server.vmnet.rccm.jp>
To: www@server.vmnet.rccm.jp
Subject: PBS JOB 78.server.vmnet.rccm.jp

PBS Job Id: 78.server.vmnet.rccm.jp
Job Name:   findtest.sh
Execution terminated
Exit_status=0
resources_used.cput=00:00:00
resources_used.mem=2840kb
resources_used.vmem=12144kb
resources_used.walltime=00:01:01

実行結果

実行結果は指定したディレクトリに標準出力ファイルがリモートコピーされます。

$ cat /home/www/spool/78.server.s.OU 
/home/www
/home/www
linux2.vmnet.rccm.jp
findtest

qsub 実行時のエラーについて

pbs_iff: cannot connect to host
No Permission.
qsub: cannot connect to server server (errno=15007)

chmod u+s $PBS_ROOT/sbin/pbs_iff

pbs_iff: error returned: 15008
pbs_iff: Access from host not allowed, or unknown host
No Permission.
qsub: cannot connect to server server (errno=15007)

set server acl_host_enable = True

set server acl_hosts = *.vmnet.rccm.jp

set server acl_hosts + client.ether.rccm.jp

qsub: Unauthorized Request 

set server acl_user_enable = True

set server acl_users = adm@server.vmnet.rccm.jp

set server acl_users + www@server.vmnet.rccm.jp

set server acl_users + www@client.ether.rccm.jp

qsub: Bad UID for job execution

echo "client.ether.rccm.jp" >> ~www/.rhosts