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 へのコマンドです。

  • "#PBS -e <dirname>" はエラー出力先のディレクトリを指定します。ホスト名の指定が無い場合はジョブを投入したホストになります。
  • "#PBS -o <dirname>" は標準出力先のディレクトリを指定します。
    • 出力先は mom の構成でリモートコピーの代わりにローカルなコピーとすることも可能です。
  • "#PBS -m [abe]" はメールで通知するタイミングを指定します。a: ジョブアボート時、b: ジョブ開始時、e: ジョブ終了時で、組合せ指定が可能です。
    • オプションについては qsub のオンラインマニュアルをご覧ください(man qsub)。

出力用のディレクトリを用意しておきます。ここではホームディレクトリ下の 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
  • エラー出力があった場合は .ER という拡張子のファイルに出力されます。

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

pbs_iff: cannot connect to host
No Permission.
qsub: cannot connect to server server (errno=15007)
  • $PBS_ROOT/sbin/pbs_iff が setuid 0 になっていないか、オーナが root になっていない。

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)
  • サーバホストで acl_hosts の登録名に間違い。
  • あるいは、 /etc/hosts に登録していたホスト名が間違いかも。

set server acl_host_enable = True

set server acl_hosts = *.vmnet.rccm.jp

set server acl_hosts + client.ether.rccm.jp

qsub: Unauthorized Request 
  • サーバホストで acl_users の設定に失敗している(切札の * は使えない)。

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
  • サーバホストの /etc/hosts.equiv か、~/.rhosts に登録がないジョブ依頼ホスト名の記載が無い。
  • あるいは、サーバホストに 同じ名前の(ユーザ名のこと、uid番号は一致しなくてもよい)アカウントが無い。
  • (あるいは、root ユーザでジョブを実行しようとした。)

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


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-11-07 (日) 04:04:43 (3174d)