bsub
LSF にバッチジョブを投入します
形式
bsub [options] command [arguments]
bsub [-h | -V]
オプションリスト
-B
-H
[-I | -Ip | -Is | -K]
-N
-r
-x
-b begin_time
-C core_limit
-c [hour:]minute[/host_name | /host_model]
-D data_limit
-e err_file
-E "pre_exec_command [argument ...]"
-f "local_file op [remote_file]" ...
-F file_limit
-G user_group
[-i input_file | -is input_file]
-J job_name | -J "job_name[index_list]%job_limit"
-k "checkpoint_dir[checkpoint_period]"
-L login_shell
-m "host_name[+[pref_level]] | host_group[+[pref_level]]
..."
-M mem_limit
-n min_processors[,max_processors]
-o out_file
-P project_name
-q "queue_name ..."
-R "res_req"
-sp priority
-S stack_limit
-t term_time
-u mail_user
-w 'dependency_expression'
-W run_limit[/host_name| /host_model]
-Zs
-h
-v
機能説明
バッチ実行用のジョブを投入して、それに一意の数値ジョブ ID を
割り当てます。
ジョブ、ホスト、キュー、およびクラスタに関するすべての条件が
満足されたとき、ジョブのすべての要件を満足するホスト上でジョ
ブを実行します。LSF がすべてのジョブをすぐに実行できない場合
には、LSF スケジューリングポリシーによってディスパッチの順序
が決定されます。ジョブは、現在のシステム負荷に基づいて起動お
よび中断されます。
現在の作業ディレクトリ、ファイル作成マスク、およびすべての環
境 変 数を含めて、ジョブに対するユーザの実行環境を設定して、
ジョブを起動する前に、LSF 環境変数を設定します。
ジョブが実行されると、コマンドライン と stdout/stderr バッ
ファ は、 実行ホスト上のディレクトリ home_directory/.lsbatch
に格納されます。このディレクトリにアクセスできない場合には、
ジョ ブのホームディレクトリとして /tmp/.lsbtmpuser_ID が使用
されます。現在の作業ディレクトリが、投入ホスト上のホームディ
レクトリに属する場合には、現在の作業ディレクトリも、実行ホス
ト上のホームディレクトリに属する同じ相対ディレクトリとなるよ
う設定されます。実行ホスト上で現在の作業ディレクトリにアクセ
スできない場合には、ジョブは /tmp で実行されます。
bsub にコマンドが提供されない場合には、bsub は標準入力からの
コ マ ン ド 入力を要求します。入力を終了するには、新しい行で
CTRL-D を入力します。
デフォルトでは、LSF は、クラスタ内のすべてのホスト間に一様な
ユーザ名とユーザ ID スペースが存在するものと想定します。つま
り、特定のユーザによって投入されたジョブは、実行ホスト上にあ
る同じユーザのアカウントのもとで実行されます。一様でないユー
ザ名とユーザ ID スペースが存在する場合には、ジョブの実行に使
用するアカウントを決定するために、アカウントマッピングを使用
する必要があります。
デフォルトでは、コマンド名をジョブ名として使用します。引用符
は重要な役目を持ちます。
デフォルトでは、フェアシェアが定義され、読者が複数のユーザグ
ループに属する場合には、ジョブは、最も迅速なディスパッチを可
能にするユーザグループのもとでスケジュールされます。
デフォルトでは、ジョブはチェックポイント不能です。
デフォルトでは、適切なキュー を 自 動 的 に 選 択 し ま す。
LSB_DEFAULTQUEUE を設定してデフォルトキューリストを定義した
場合には、キュー は そ の リ ス ト か ら 選 択 さ れ ま す。
LSB_DEFAULTQUEUE が 定義されていない場合には、キューは、LSF
管理者によって指定されたシステムデフォルトキューリストから選
択 されます (lsb.params(5) のパラメータ DEFAULT_QUEUE を参照
)。
デフォルトでは、LSF は、負荷共有ライブラリに登録されているリ
モートタスクリストからジョブのリソース要件情報の取得を試みま
す (lsfintro(1) を参照)。ジョブがリモートタスクリストに記 載
されていない場合には、デフォルトのリソース要件では、投入ホス
トと同じホストタイプ (lshosts(1) を参照) のホスト上でジョ ブ
を実行します。
デフォルトでは、ただ 1 つのプロセッサが要求されるものと想 定
します。
デフォルトでは、ログインシェルを起動しませんが、ジョブが投入
された実行環境のもとでジョブファイルを実行します。
デフォルトでは、バッチジョブ用の入力ファイルは /dev/null で
す (入力なし)。
デフォルトでは、ジョブが完了するとメールが送信されま す。 デ
フォ ルトの宛先は、lsf.conf の LSB_MAILTO によって定義されま
す。メールメッセージは、ジョブレポート、ジョブ出力 (があれば
)、 およびエラーメッセージ (があれば) を含みます。デフォルト
では、ジョブをデフォルトプロジェクトにゆだねます。デフォルト
プロジェクトとは、環境変数 LSB_DEFAULTPROJECT を設定して定義
するプロジェクトです。LSB_DEFAULTPROJECT を設定しない場合 に
は、 デフォルトプロジェクトは、lsb.params 構成ファイルで LSF
管理者によって指 定 さ れ た プ ロ ジェ ク ト と な り ま す
(lsb.params(5) の DEFAULT_PROJECT パ ラ メー タ を参照)。
DEFAULT_PROJECT が定義されていない場合には、LSF は、デフォル
トプロジェクト名として default を使用します。
並列ジョブを投入するには、-n を使用します。
バッチ対話型ジョブを投入するには、-I、-Is、または -Ip を使用
します。
ジョブに名前を割り当てるには、-J を使用します。
チェックポイント可能なジョブを指定するには、-k を使 用 し ま
す。
bsub によって投入されたバッチジョブを中止するには、bkill を
使用します。
bsub によって投入されたジョブを変更するには、bmod を使用しま
す。bmod は、bsub と類似のオプションを受け取ります。
オプション
-B
ジョブがディスパッチされて実行を開始すると、メールで通知され
ます。
-H
ジョブが投入されると、ジョブを PSUSP 状態に保ちます。ジョ ブ
を 再 開 す るようシステムに指示しない限り、そのジョブはスケ
ジュールされません (bresume(1) を参照)。
-I | -Ip | -Is
バッチ対話型ジョブを投入します。対話型ジョブが完了または終了
するまでは、新しいジョブを投入することはできません。
ジョブの標準出力 (または標準エラー) を端末に送信しま す。 -N
オプションを指定しない場合には、ジョブが完了したときにメール
の通知はありません。
端末サポートは、バッチ対話型ジョブに対して有効です。
-Ip オプションを指定すると、ジョブが起動したときに、バッチ対
話 型 ジョブを投入して疑似端末を作成します。いくつかのアプリ
ケーション (たとえば vi) では、正しく実行するために疑似端 末
が必要となります。
-Is オプションを指定すると、ジョブが起動したときに、バッチ対
話型ジョブを投入して、シェルモードをサポートした疑似端末を作
成します。CTRL-C と CTRL-Z のキーを再定義するアプリケー ショ
ン ( た とえば jove) や対話型シェルを投入するには、このオプ
ションを指定してください。
-i input_file オプションを指定した場合には、端末を介してジョ
ブの標準入力と対話することはできません。
-o out_file オプションを指定した場合には、ジョブの標準出力を
指定した出力ファイルに送信します。-e err_file オプションを指
定した場合には、ジョブの標準エラーを指定したエラーファイルに
送信します。
-K オプションでは、-I、-Ip、および -Is を使用できません。
-K
バッチジョブを投入し、ジョブの完了を待ちます。ジョブを投入す
ると、メッセージ "Waiting for dispatch" を端末に送信します。
ジョブが完了すると、メッセージ "Job is finished" を端末に 送
信します。
ジョブが完了するまでは、別のジョブを投入できません。このこと
は、ジョブスクリプトなど、続行するためにジョブの完了が必要な
場合に便利です。一時的な障害のためにジョブの再実行が必要な場
合 に は、ジョブが正しく完成した後で bsub が復帰します。bsub
はそのジョブと同じ終了コードで終了するため、ジョブスクリプト
は、 終 了コードに基づいて適切なアクションをとることができま
す。保留中にジョブが終了された場合には、bsub は値 126 で終了
します。
-K オプションと、-I、-Ip、および -Is の各オプションは一緒 に
使用できません。
-N
ジョブが完成すると、メールによってジョブレポートが送信されま
す。他のオプションを付けずに使用すると、デフォルトと同じ動作
を行います。
メールを送信しない -o、-I、-Ip、および -Is の各オプション と
だけ使用して、ジョブが完了したら、LSF にメールメッセージを送
信させます。
-r
ジョブの実行中に実行ホストを使用できなくなった場合に、 そ の
ジョブを別のホスト上で再実行するよう指定します。LSF は、同じ
ジョブキューにそのジョブを同じジョブ ID で再登録します。使用
可能な実行ホストが見つかると、ジョブがあたかも新しく投入され
たかのように、そのジョブを再実行します。ホスト障害とジョブの
キューへの再登録を知らせるメールメッセージを受け取ります。
ジョブの実行中にシステムがダウンした場合に、システムが再起動
するとジョブがキューに再登録されるよう指定します。
実行ホストまたはシステムに障害が発生した場合にはジョブを再実
行します。ジョブ自身に障害が発生した場合には、ジョブを再実行
しません。
ジョブがチェックポイントされた後で実行ホストを使用でき な く
なった場合 (bsub -k と bchkpnt(1) を参照) には、ジョブは最後
のチェックポイントから再起動されます。再起動されるジョブは、
brestart(1) を使用してジョブを再起動するのと同じようにして、
実行のためにキューに再登録されます。ジョブを正しく再起動する
に は、 ジョブのチェックポイントディレクトリは、再起動された
ジョブを受け取るホストからアクセスできる共有ファイルシステム
に存在することが必要です。
-x
ジョブを実行しているホストを排他実行モードにします。
排他実行モードでは、ジョブはホスト上で単独に実行され ま す。
ジョブは、他のジョブを実行していないホストにだけディスパッチ
されます。そのジョブが完成するまで、LSF はそのホストに 他 の
ジョブを送信しません。
ジョブを排他実行モードで投入するには、キューは、排他ジョブを
許容するよう設定されている必要があります。
ジョブがディスパッチされると、bhosts(1) は ホ ス ト 状 態 を
closed_Excl としてレポートし、lsload(1) はホスト状態を lockU
としてレポートします。
そのジョブが完了するまでは、lsplace(1)、 lsrun(1)、 ま た は
lsgrun(1)、 あるいはその他の負荷共有アプリケーションからの配
置要求に応じて、LIM がそのホストを選択することはありません。
他のバッチジョブをそのホスト上で強制的に 実 行 す る に は、
brun(1) の -m host_name オプションを使用して、ロックされたホ
ストを明示的に指定します。
LIM に他の対話型ジョブをそのホスト上で実 行 さ せ る に は、
lsrun(1) または lsgrun(1) の -m host_name オプションを使用し
て、ロックされたホストを明示的に指定します。
-b begin_time
ジョブを指定の日時またはその後で実行するようにディスパッチし
ま す。日時は となります。ここで、start、end、および
step は正の整数です。step を省略した場合には、step 1 が想 定
されます。ジョブ配列インデックスは、1 から始まります。デフォ
ルトでは、最大のジョブ配列インデックスは 1000 です。
このジョブ配列に対しては、正の整数を使用して、システム全体の
ジョブスロット制限 (任意の時点で実行できるジョブの最大数) を
指定することもできます。
配列内のすべてのジョブは、同じジョブ ID とパラメータを共有し
ます。配列の各要素は、その配列インデックスによって識別されま
す。
ジョブが投入された後では、ジョブ名を使用してジョブを識別しま
す。 特定配列の要素を操作するには "job_ID[index]" を指定しま
す。同じ名前を持つすべての配列の要 素 を 操 作 す る に は、
"job_name[index]" を指定します。ジョブ名は一意でないため、複
数のジョブ配列の名前が同じであっても、インデックスセットは異
なる場合があります。
-k checkpoint_dir[checkpoint_period]
ジョブをチェックポイント可能にして、チェックポイントディレク
ト リ を指定します。相対パス名または絶対パス名を指定します。
チェックポイント期間を指定する場合には、角括弧と引用符が必要
となります。
ジョブがチェックポイントされると、チェックポイン ト 情 報 は
checkpoint_dir/job_ID/file_name に格納されます。同じディレク
トリで複数のジョブをチェックポイントできます。システムは複数
のファイルを作成できます。
チェックポイントディレクトリはジョブの再起動に使用されます
(brestart(1) を参照)。
オプションでは、チェックポイント期間を分単位で指定します。正
の整数を指定してください。実行中のジョブは、チェックポイント
期間ごとに自動的にチェックポイントされます。チェックポイント
期 間を変更するには、bchkpnt(1) を使用します。チェックポイン
トは重い操作であるため、30 分より長いチェックポイント期間 を
選択してください。
プロセスチェックポイントは、どのホストタイプでも使用できるも
のではなく、特殊ライブラリとのリンクプログラムが必要になるこ
とがあります (libckpt.a(3) を参照)。ジョブをチェックポイント
す るために、LSF は、LSF_SERVERDIR にある echkpnt を呼び出し
ます (echkpnt(8) を参照)。ジョブに対するデフォルトの echkpnt
を 無 効 に す る に は、 自 分の echkpnt を指すよう環境変数
LSF_ECHKPNTDIR を定義してください。これによって、アプリ ケー
ションレベルのチェックポイントなど、他のチェックポイント機能
を使用できます。
-L login_shell
指定のログインシェルを使用して、実行環境設定を初期化します。
指定のログインシェルは、絶対パスであることが必要です。これは
必ずしも、ジョブが実行されるシェルではありません。
-m host_name[+[pref_level]] | host_group[+[pref_level]] ...
指定したホストの 1 つでジョブを実行します。
デフォルトでは、複数のホストが候補である場合には、最も負荷の
少ないホストでジョブを実行します。これを変更するには、使用し
たいホストやホストグループの名前の後にプラス (+) を記入し ま
す。オプションとしては、さらにその後にプリファレンスレベルも
指定します。プリファレンスレベルとしては、正の整数を指定しま
す。大きな数値は、それらのホストのプリファレンスが大きいこと
を示します。
たとえば、-m "hostA groupB+2 hostC+1" では、groupB は最も 好
まれており、hostA は最も好まれていないことを示します。
ホストグループについては、bmgroup を使用します。
キーワード others は、他の方法では記載されない他のホストを参
照するために、プリファレンスレベル付き、またはプリファレンス
レベルなしで指定できます。キーワード others は、少なくとも 1
つのホスト名またはホストグループを付けて指定する必要があり、
単独で指定することはできません。たとえば、-m "hostA+ others"
は、他のホストよりも hostA を好む意味になります。
-m "host_name[+[pref_level]] |
host_group[+[pref_level]]..." オプションと -q queue_name オ
プションの両方を使用した場合には、指定したキューは、ホストリ
スト内のすべてのホストを含むように設定されている必要がありま
す。さもなければ、ジョブは投入されません。キューに対してどの
ホストが設定されているか調べるには、bqueues -l を使用して く
ださい。
-M mem_limit
メモリ制限を指定します (キロバイト単位)。
lsf.conf の LSB_MEMLIMIT_ENFORCE に y が設定された場合には、
ジョブがメモリ制限を越えると、LSF はそのジョブを中止します。
そうでない場合には、LSF はメモリ制限をオペレーティングシステ
ム に 渡 します。setrlimit( ) 用の RUSAGE_RSS をサポートする
UNIX オペレーティングシステムは、このメモリ制限を各プロセ ス
に 適用できます。次のオペレーティングシステムは、OS レベルで
のメモリ制限をサポートしていません。
-Windows NT
-Sun Solaris 2.x
-n min_proc[,max_proc]
並列ジョブを投入し、ジョブの実行に必要なプロセッサの最小数と
最大数を指定します (いくつかのプロセッサは同じマルチプロセッ
サホスト上にあるかもしれません)。最大数を指定しない 場 合 に
は、指定する数は使用するプロセッサの正確な数を表わすことにな
ります。
プロセッサの最大数が、ジョブの投入先となるキューのプロセス制
限 よ り も 大 き い 場 合には、LSF はそのジョブを拒否します
(lsb.queues(5) の PROCLIMIT パラメータを参照 )。 LSF Multi-
Cluster 環 境では、キューがリモートクラスタにジョブをエクス
ポートした場合には (lsb.queues(5) の SNDJOBS_TO パラメータを
参 照)、このキューに投入されたジョブにはプロセス限度が加えら
れません。
少なくとも最小数のプロセッサが使用可能になると、選択した最初
のホストにジョブがディスパッチされます。ジョブ用に選択された
ホスト名のリストは、環境変数 LSB_HOSTS と LSB_MCPU_HOSTS に
指定されます。ジョブ自身は、これらのホスト上の並列コンポーネ
ントを起動し、オプションでは RES を使用して、それら の コ ン
ポーネント間に通信を確立することが求められます。
-o out_file
ファイルパスを指定します。ジョブの標準出力を指定のファイルに
追加します。そのファイルが存在しない場合、またはシステム障害
によってファイルに書き込みできない場合には、出力をメールで送
信します。
-e なしで -o を使用した場合には、ジョブの標準エラー は 出 力
ファイルに格納されます。
-N なしで -o を使用した場合には、ジョブレポートは ファ イ ル
ヘッダとして出力ファイルに格納されます。
-N と -o を使用した場合には、出力は出力ファイルに格納さ れ、
ジョブレポートはメールで送信されます。ジョブレポート自身は出
力を含んでいませんが、このレポートによって出力の場所がわかり
ます。
出力ファイルの名前に特殊文字 %J を使用すると、%J はジョブ の
ジョブ ID によって置き換えられます。出力ファイルの名前に特殊
文字 %I を使用すると、ジョブが配列のメンバである場合には、%I
は配列内のジョブのインデックスによって置き換えられます。そう
でない場合には、%I は 0 (ゼロ) によって置き換えられます。
-P project_name
ジョブを指定したプロジェクトに割り当てます。
IRIX 6 では、これを使用するには /etc/project(4) に記載された
プロジェクトのメンバであることが必要です。プロジェクトのメン
バである場合には、/etc/projid(4) はプロジェクト名を数値プ ロ
ジェクト ID にマッピングします。投入されたジョブが動作する前
に、新しい配列セッション
(newarraysess(2)) が作成され、setprid(2) を使用してそれに プ
ロジェクト ID が割り当てられます。
-q queue_name ...
指定したキューの 1 つにジョブを投入します。キューが 1 つしか
ない場合には、引用符を省略してもかまいません。指定したキュー
は、ローカルクラスタ用に定義しなければなりません。ローカルク
ラスタで使用可能なキューのリストについては、bqueues を使用し
てください。
キュー名のリストが指定されると、LSF は、ジョブのリソース制限
やその他の制約 (要求されるホスト、キューへのアクセスのしやす
さ、キューの状態 (クローズまたはオープン)、キューが排他 ジョ
ブを受け付けるかどうか、など) に基づいて、ジョブのリストの中
で最も適切なキューを選択します。キューが使用される順序は、こ
れらのキューの記載順と同じです。最初に記載されたキューが最初
に使用されます。
-R res_req
指定したリソース要件を満足するホスト上でジョブを実行します。
リソース要件文字列は通常どおりに指定します。リソース要件文字
列のサイズは 512 バイトに限定されています。
リソース要件に r15s、r1m、r15m など、実行キュー長固 有 の リ
ソースが指定された場合には、正規化された実行キュー長を表しま
す。
-sp priority
ユーザ割り当てジョブ優先順位を指定します。これによって、ユー
ザはキュー内のジョブを並べ替えることができます。優先順位とし
て有効な値は、1~MAX_USER_PRIORITY (bparams -l によって表示)
の範囲の任意の整数です。無効なジョブ優先順位は拒否されます。
LSF とキュー管理者は、
MAX_USER_PRIORITY を越える優先順位を指定できます。
ジョブ所有者は、自分のジョブの優先順位を変更できます。LSF と
キュー管理者は、キュー内のすべてのジョブの優先順位を変更でき
ます。
ジョブ順序は、ジョブのディスパッチ資格を決定する上での第一要
件です。ジョブは、ジョブ優先順位とは無関係に、依然としてすべ
てのスケジューリングポリシーの適用を受けます。同じ優先順位を
持つジョブは、先着順に配列されます。
ユーザ割り当てジョブ優先順位に自動ジョブ優先順位エス カ レー
ションを組み込めば、指定した期間保留されていたジョブの優先順
位を自動的に増やせます。
-S stack_limit
バッチジョブに属する各プロセスにプロセスごとの (ソフト ) ス
タッ クセグメントサイズ制限を設定します (getrlimit(2) を参照
)。
-t term_time
ジョブの終了期限を指定します。終了時刻において UNIX ジョブが
ま だ実行されている場合には、そのジョブに SIGUSR2 シグナルが
送られ、ジョブが 10 分以内に終了しない場合には中止されます。
終了時刻において Windows NT ジョブがまだ実行されている場合に
は、そのジョブはすぐに中止されます。(これらのジョブの中止 方
法 の詳細については、bkill を参照してください)。キュー定義で
は、TERMINATE アクションを設定して、bkill のデフォルト ア ク
ショ ン を 無 効 に す る こ と ができます (lsb.queues(5) の
JOB_CONTROLS パラメータを参照)。
終了時刻のフォーマットは HPC SYSTEMS Inc. , All Rights Reserved.
平日9:30~17:30 (土曜日、日曜日、祝祭日、年末年始、夏期休暇は、休日とさせていただきます。)