2013-04-05 50 views
6

PBSキューイングシステムにジョブスクリプトをサブミットする場合、walltimeは自動的に、またはユーザーによって指定されます。 viaPBSジョブスクリプトでウォールタイムを取得する

#PBS -l walltime=1:00:00 

この時間にジョブスクリプトからアクセスできるかどうかです。このウォールタイムを取得するには、環境変数や他の方法がありますか?

最終的には、キューイングシステムによってジョブが強制終了されないように、何らかの作業を行うのに十分な時間があるかどうかをジョブスクリプトが時折判断する必要があります。

更新:ユーザーがリソースリストにwalltimeを指定した場合、少なくとも

、私は(bashのために働いて)次の回避策を提案することができます

からwalltimeを解析し
read _ _ PBS_WALLTIME <<< `qstat -f $PBS_JOBID | grep "Resource_List.walltime"` 

qstatが出力され、PBS_WALLTIME変数に値が格納されます。したがって、コマンド

echo $PBS_WALLTIME 

これは環境変数$ PBS_WALLTIMEに格納されて

1:00:00 
+0

PBS 4.2.8(およびその他のバージョン)では、$ PBS_WALLTIME変数は壁の時間を秒単位で格納するので、 'echo'は '1:00:00'の代わりに' 3600'を出力します。 – MasterHD

答えて

5

のようなものが得られます。

もちろん、それはTORQUEのためですが、使用しているPBSキューイングシステムが不明です。

+0

もちろん、私が使用しているクラスタに依存します。 1つはTORQUEを実行し、もう1つはPBS Proを実行します。残念ながら、TORQUEクラスタでも、$ PBS_WALLTIME変数は定義されていません。それは標準ではないかもしれません。 – dastrobu

+0

どのバージョンのTORQUEですか? – dbeer

+0

私はその質問に正しく答えることができるかどうかわかりません。バージョン情報を入手するにはどうすればよいですか? 2.1.10( 'qmgr -c"プリントサーバー "の出力から取得したもの)に設定されているPBSバージョンを求めている可能性があります。 – dastrobu

1

私はこれに対する答えを探していました。上記のコメントは、私にはかなりうまくいくように思えました。あなたは、qstatのを使用してのsedでそれから適切な情報をつかむことができます。

qstat -f $PBS_JOBID | sed -rn 's/.*Resource_List.walltime = (.*)/\1/p' 

あなたのPBSスクリプトでこれを置くことは値をプリントアウトし、あなたが変数で、この出力を保存するために、標準のbashを使用することができます。

また、これは、ジョブに割り当てられたメモリ量などのPBS_ *環境変数からは利用できないその他の情報を取得するためにも使用できます。

関連する問題