ジョブをグループ分けしてジョブ群毎にジョブを管理する

複数のジョブに同一の名前を付けることで、グループ毎の管理を行うことができます。 名前はジョブの qsub 時、もしくは、実行待ちのジョブに対して付けることができます。既に実行されているジョブに名前を付けることはできません。

$ qsub -N GROUP1 [ジョブスクリプト名 1]
$ qsub -N GROUP1 [ジョブスクリプト名 2]
$ qsub -N GROUP2 [ジョブスクリプト名 3]
$ qsub -N GROUP2 [ジョブスクリプト名 4]

グループ単位でジョブを削除する

GROUP1 を削除する。

$ qdel GROUP1

グループ単位でジョブのオプションを変更する

GROUP2 の AGE オプションと、ジョブスクリプト引数を変更する。

$ qalter <AGE オプション> GROUP2 [ジョブスクリプト引数]

ジョブの実行順を制御する

下記のようなオプション指定で実現できます。

$ qsub -N job1 [ジョブスクリプト名]
$ qsub -N job2 -hold_jid job1 [ジョブスクリプト名]
$ qsub -N job3 -hold_jid job1,job2 [ジョブスクリプト名]

各ジョブには別名 「job1」「job2」「job3」が設定されます。「job1」が実行完了した後に「job2」が実行され、「job1」と「job2」が実行完了した後に「job3」実行されます。

下記のように正規表現を利用しても上述と同様の実行順が設定可能です。

$ qsub -N job1 [ジョブスクリプト名]
$ qsub -N job2 -hold_jid job1 [ジョブスクリプト名]
$ qsub -N job3 -hold_jid "job*" [ジョブスクリプト名]

参考: 実行順序があるジョブの実行

実行順を設定したジョブにおいて、先に実行されたジョブ内で、後に実行されるジョブを制御する

「ジョブ A の実行完了後に実行されるジョブ B が存在する。ジョブ A でエラーが発生した際にはジョブ B の実行を中止する」ことは、下記の設定により実現可能です。     

ジョブ A のエラー処理内に、下記のコマンドを実行するよう記述する。

$ qdel jobB

ジョブの実行順を設定してジョブを qsub する。

$ qsub -N jobA [ジョブスクリプト名]
$ qsub -N jobB -hold_jid jobA [ジョブスクリプト名]

キューを指定してジョブを qsub する方法

SHIROKANE の AGE では、AGE のリソースを選択することでジョブが実行されるキューを指定するように設計されていますが、いくつかの場面では AGE のキューを直接に選択することで実現できるキューの指定があります。 キューを指定した qsub をご覧ください。

環境変数を設定して、ジョブを qsub する

ジョブの環境変数の設定は、ジョブスクリプトの内部の開始部分で行うことが基本です。 ジョブを qsub する前に設定した環境変数をジョブスクリプトの中で使用できるようにするには次のようにします。

例えば、 Perl スクリプトを実行する際に、環境変数を設定するためには、qsub コマンド-v オプションを使用します。

$ qsub -v LD_LIBRARY_PATH=$HOME/lib:$LD_LIBRARY_PATH,PATH=$HOME/bin:$PATH \
-S /usr/local/bin/perl [Perl のジョブスクリプト名]

下記のように、Perl スクリプト内に AGE オプションを記述することもできます。

#!/usr/local/bin/perl
#$ -S /usr/local/bin/perl
#$ -v LD_LIBRARY_PATH=$HOME/lib:$LD_LIBRARY_PATH,PATH=$HOME/bin:$PATH

ただし、そうまでしてジョブスクリプトにて環境変数を設定しないことの是非を再検討してください。

参考: 特定のソフトウェアを実行するための環境変数の設定

R スクリプトを実行する

R スクリプトを作成します。

$ vi test.R
x <- matrix(1:12,3,4)
x

ジョブスクリプトを作成します。

$ vi test.sh
#!/bin/bash
#$ -S /bin/bash
#$ -cwd
Rscript test.R

ジョブスクリプトを qsub します。

$ qsub test.sh

関連: ジョブスクリプトの作成

ジョブを専有キューのみで実行する

専有コアを持つグループのユーザは、専有キュー利用できます。qsub 時にオプションを指定しない場合、SHIROKANE ではキューの使用状況に応じて mjobs.q、ljobs.q、lmem.q、専有キューのいずれかで実行されます。専有キューでのみ実行する際には、以下ようにオプションを指定してジョブを qsub する必要があります。

$ qsub -l exclusive [シェルスクリプト名]

専有キューは実行時間の上限がありません。ljobs.q が混み合っている際に、上記の通り指定することで、専有キューで実行時間の長いジョブを実行することができます。 専有キュー名 は、通常は、 グループ名.q です。 hgc0361 グループの場合は hgc0361.q になります。 ご自身のグループ名は、以下の id コマンドで表示されます。

$ id -gn