GXP Task Scheduler (gxp_sched, gxp_mom)

GXPを介して用いるタスク・スケジュラーです。 スケジュラーを実行するノードでgxpを起動し、 計算に用いるホストを予めexploreを用いて獲得してあるものとします。

タスクファイルの準備

まず、タスクファイルを準備します。 1行に1タスクを書きます。基本的な書式は

<タスク名>: <オプション> ; <コマンド名>

です。オプションは全く無くてもかまいません。 例えば、

t1 : sleep 5
t2 : sleep 5

とすると、空いているホストで'sleep 5'というコマンドが実行されます。

実行

次のようなコマンドを実行してください。

$ gxpc e --updown '3:4 gxp_sched <タスクファイル>' gxp_mom

また、以下の開発版を用いると、データの転送を初めとする新しい機能を 用いることができます。これにより、タスクに必要なファイルが予め転送され、 タスクの実行後に生成されたファイルは指定したホストに転送されます。

$ gxpc e --updown '3:4 gxp_sched_dev <タスクファイル>' gxp_mom_dev

結果出力

カレントディレクトリのstatusというファイルにコマンドの終了ステータスが 記録され、output/ディレクトリに各コマンドの標準出力/標準エラー出力が 記録されてます。ファイル名はタスク名.out及びタスク名.errです。

オプションの書き方

オプションとしては、以下のようなものが使えます。

on

on HOST_REGEX;

HOST_REGEXにマッチしたホストでのみ、タスクが実行されます。 HOST_REGEXは少し変更された正規表現を用います。

  • . は文字通りピリオド
  • **でピリオド以外の任意の文字の繰り返し (abc_123など)
  • ?でピリオド以外の任意の一文字

after

after TASK_LABEL

あるコマンドを別のコマンドの後で実行します。 例えば、以下のようなタスクファイルを書くと、t1-t3というタスクが 実行されます。t1->t2->t3の順で実行されます。

t1 :              sleep 5
t2 : after t1;     sleep 5
t3 : after t1 t2;   sleep 5

これらを組み合わせると、一つのタスクは次のように書けます。

<タスク名>:on <ホスト名の正規表現> :after <先行するタスク名>; <コマンド名>

require (開発版のみ)

require ファイルURI1 ファイルURI2 ファイルURI3... ;

タスクの実行に必要なファイルを指定します。ホスト名:ファイルの絶対パス という URIの組を、必要な数だけ並べて書きます。これらのファイルは一時ディレクトリに まず転送され、転送完了後にタスクが実行されます。

ホスト名としては、hostname()で取れる値、DNSで得られる値、IPアドレスのいずれも 用いることができます。例えば、次のような表現が可能です。

require hongo000:/data/kay/00 123.4.56.7:/tmp/kay/01;

実行するコマンド内で一時ディレクトリにコピーされたファイルの絶対パスを 参照する場合、$R0, $R1...といった変数を用います。例えば、上の例の二つの ファイルをcatコマンドの引数にするには、次のように書きます。

cat $R0 $R1

$R0はhongo000:/data/kay/sample/00がコピーされた先のファイル名、 $R1は123.4.56.7:/tmp/kay/01がコピーされた先のファイル名に置換され、 実際に実行されるコマンドは例えば以下のようになります。

cat /tmp/hongo000-_data_kay_00  /tmp/123-4-56-7-_data_kay_01

generate (開発版のみ)

generate ファイルURI1 ファイルURI2 ファイルURI3... ;

タスクによって生成されたファイルの転送先を指定します。書式は requireと同様です。コマンド中では$W0, $W1といった変数で参照します。

t0: \
require    hongo000:/data/local/kay/sample/00;\
generate   hongo000:/data/local/kay/sample/00.parsed;\
/home/kay/parse.sh < $R0 > $W0

注意: 開発版では、コマンド内に ">"が含まれる場合、リダイレクトが 用いられているものと解釈し、標準出力をタスク名.outという ファイルには出力しません。

作業ディレクトリの指定 (開発版のみ)

タスクを羅列する前に一時ファイルの場所を書きます。 ローカルディスク上のディレクトリを指定して下さい。

全ホスト共通で指定する場合は、以下のようになります。

tmpdir=/data/local/kay/sched_tmp

スペースで区切って、異なったホストに異なったディレクトリを指定する こともできます。この場合、

ホスト名の正規表現:ディレクトリ

という表現を並べて書きます。正規表現は完全でなくてもかまいません。

スペースで区切られた複数の表現に対しては、前から順にマッチします。 例えば、以下のように書けます。

tmpdir=hongo000:/home/kay hongo:/data /tmp

こうすると、hongo000では/home/kayが、hongo001では/dataが、 chiba000では/tmpが用いられます。


トップ   編集 バックアップ 添付 複製 名前変更 リロード   新規 一覧 最終更新   最終更新のRSS
© 2007 Taura lab. All Rights Reserved.
Powered by Pukiwiki, styled by Kei_ / Last-modified: 2016-07-12 (火) 15:12:44 (856d)