オープンソースのクラスタージョブ管理ソフトウェアPlatform Lavaの紹介です。

Platform Lava の公式サイトは閉鎖されたようですが、そこからフォークした openlava というプロジェクトが始動したので、そちらを参照されると良いと思います。
http://www.openlava.org/home.html

マニュアル

filelava_admin_1.0.pdf
filelava_using_1.0.pdf
filecw_admin_5.1-J.pdf(日本語):これはPlatform LSF用の管理者マニュアルだが、Lavaと重複する部分が多いので参考になる。

インストール

公式サイトのフォーラムにインストール・ガイドが示されたので、そちらを参考にされた方が確実でしょう。
http://www.hpccommunity.org/f87/lava-installation-cluster-637/

管理ノードと計算ノードの両方にLavaをインストールする必要があります。

ソースからインストール(Ubuntu)

Ubuntu へのインストール手順は./Ubuntuを参照してください。

ソースからインストール(Fedora)

ソースコード Lava 1.0.6:fileLava-src-1.0.6.tar
最新版はhttp://www.hpccommunity.org/downloads.php?do=cat&id=14

tclとtcl-develをインストールする。

yum -y install tcl
yum -y install tcl-devel

lava-1.0_source.tgzを解凍する

tar -xf Lava-src-1.0.6.tar

解凍して出来るディレクトリ内(Lava)に移動して、Make.defをtclのバージョンに合わせて編集する。

cd Lava
emacs Make.def
#Make.defの中身
TCL_VERSION = 8.5
TCLLIB = -ltcl8.5 

コンパイル&インストール

make && make install

普通はこれだけでインストール完了だと思うのですが、このままでは不十分なので以下の作業を行います。

LAVA設定ファイルをおくディレクトリを作成

mkdir -p /etc/lava/conf/lsbatch/lava/configdir

それらのディレクトリに設定ファイルを配置

cp ./config/*sh /etc/profile.d
cp ./config/lsf* /etc/lava/conf
cp ./config/lsb* /etc/lava/conf/lsbatch/lava/configdir

LAVAサービスの起動スクリプトを配置

chmod +x ./scripts/lava.init
cp ./scripts/lava.init /etc/init.d/lava
ln -s /etc/init.d/lava /etc/rc3.d/lava
ln -s /etc/init.d/lava /etc/rc5.d/lava

ライブラリのリンクを作成

ln -s /usr/lib64/liblsf.so.1.0.0 /usr/lib64/liblsf.so.1
ln -s /usr/lib64/liblsfbat.so.1.0.0 /usr/lib64/liblsfbat.so.1

その他ログファイルなどを置くディレクトリを作成

mkdir /var/log/lava
mkdir /usr/share/doc/lava-1.0
mkdir -p /usr/share/lava/misc
mkdir -p /var/spool/lava/work/lava
mkdir /var/spool/lava/work/lava/logdir
mkdir /var/spool/lava/work/lava/lsf_cmddir
mkdir /var/spool/lava/work/lava/lsf_indir

ここまでで一通りのインストールは完了です。 /etc/profile.d以下のスクリプトをシェルに読み込ませるために一旦ログインしなおします。

管理ノードだけではなく、計算ノードでも同様にしてインストールします。 我々の環境では管理ノードの/diskless/root以下に計算ノード用のファイル・システムがおいてあるので、上のコマンドの/を/diskless/rootとして同様にします。

make INSRALL_PREFIX=/diskless/root install

設定ファイル

基本的には、/etc/lava/conf以下にあらゆる設定ファイルが置いてあります。

自分で作成する必要があるファイルは以下です。これらの設定ファイルは必須ですが、rpmやソースからLAVAをインストールしても導入されません。ひどい。Kusuをセットアップルすると完全な設定ファイルが手に入りますので、それを参考にしました。

/etc/lava/conf/lsf.conf
/etc/lava/conf/lsf.cluster.lava
/etc/lava/conf/lsbatch/lava/configdir/lsb.hosts

内容はこちら。自分の環境に合わせて編集してください。

./lsf.conf
./lsf.cluster.lava
./lsf.shared ./lsb.hosts
./lsb.queues

  • これらの設定ファイルは計算ノードにも配置する
    cp -r /etc/lava/ /diskless/root/etc/

LAVAサービスの起動

Lavaの動作にはLava管理者 (rootなど) は管理ノードから計算ノードにパスワード無しでログインできるようになっている必要があります(ssh-keygenで鍵を作成し鍵認証でログインできるようにする)。

service lava start

管理ノードだけでなく、計算ノードでも同様にしてLAVAを起動してください。

  • 管理ノードで動くサービス:mbatchd mbschd
  • 全てのノードで動くサービス:sbatchd lim res

LAVAの状況の確認

lsloadとbhostsで、statusがokになっていることを確認する。LAVA起動後、状況が反映されるのに時間がかかるので、数分待つ必要がある。管理ノード(evolution)では計算させないことにしているため、bhostsではevolutionはclosedと表示されるはず。

  • lsid LAVAのバージョンやクラスターの名前の確認。
  • lsload 各ノードの負荷状況の確認。-lでより詳しい情報。
  • bhosts 各ノードのジョブの動作状況の確認。-lでより詳しい情報。
  • lshosts 各ノードのOSやCPUの情報。

設定ファイルの変更を反映

lsadmin reconfig
badmin reconfig

LAVAを使う

LAVAではユーザーはジョブという単位でプログラムを実行します。ジョブは一旦キュー(queue; 順番待ちの列)に蓄積され、計算機が空いたら適宜割り振られてゆきます。基本的には先にキューに投入されたジョブから先に実行されます。また、デフォルトでは1つのジョブは1つのCPUコアで計算されます。1つのジョブで何をするかはユーザー次第です。

job_queue.001.png

いくつか役割の異なるキューを作ることも出来ます。例えば、夜間だけジョブを実行するキューや優先順位の高いジョブを実行するキューなど。

1台の計算機で何個までのジョブを受け付けるか(ジョブスロット)等は設定により変更できます。また、並列化されたジョブを任意の数のコアで計算するように指定することも出来ます。

ジョブを投入する

bsub あなたのコマンド

ジョブを投入するとLAVAによって自動的にジョブに固有のジョブID(整数)が割り当てられます。

ジョブに名前を付ける

bsub -J ジョブ名 あなたのコマンド

ジョブIDはユーザーが制御できないので、ユーザー自身でジョブ名をつけた方が管理しやすいでしょう。

ジョブ名は重複してつけることができます。

特定の計算ノードにジョブを投入する

bsub -m "hostA hostB" あなたのコマンド

特定のキューにジョブを投入する

bsub -q キュー名 あなたのコマンド

投入したジョブのキューを変更する

bswitch キュー名 ジョブID

ジョブIDを指定したキューに移動する。ジョブIDに0をいれると自分が投入した全てのジョブを意味する。

標準入力ファイル、標準出力・エラー出力するファイル・ディレクトリを指定

  • 標準入力
    bsub -i 標準入力ファイル
  • 標準出力
    bsub -o 標準出力ファイル または -o 標準出力ディレクトリ/
    ディレクトリを指定すると、そこに標準出力ファイルが作られる。その時のファイル名は「ジョブID.out」
  • 標準エラー出力
     bsub -e ファイル または -e ディレクトリ/
    ディレクトリを指定すると、そこに標準エラー出力ファイルが作られる。その時のファイル名は「ジョブID.err」

ログインシェルの指定

bsub -L /bin/zsh

使用するCPU数の指定

bsub -n 2

最低2個のCPUを使用。

bsub -n 2,5

最低2個、最大5個

MPIジョブを実行

bsub -n プロセス数 "/usr/bin/openmpi-mpirun -np プロセス数 あなたのコマンド"

インストールされているMPIにあわせて lam-mpirun openmpi-mpirun mpich-mpirun mpich2-mpiexec を使い分ける

ジョブの状態を確認する

  • ジョブの状態

    PEND:計算ノードに割り振られるのを待っている
    RUN:計算ノードに割り振られ、実行中
    DONE:終了値(0)で正常終了した
    EXIT:終了値が0以外で終了した

    PSUSP:PEND時に、ユーザーまたはLAVAにより中断された
    USUSP:計算ノードに割り振られた後で、ユーザーにより中断された
    SSUSP:計算ノードに割り振られた後で、LAVAにより中断された

    POST_DONE:後処理が正常終了した
    POST_ERR:後処理が異常終了した

  • 実行中のジョブを表示
    bjobs -r
  • 最近終了したジョブを表示
    bjobs -d
  • ジョブが保留(PEND)されている理由を表示
    bjobs -p
  • ジョブが中断した理由を表示
    bjobs -s
  • 他ユーザーのジョブを参照する 特定のユーザー
    bjobs -u ユーザー名
    全員
    bjobs -u all
    リモートからbjobsするとエラーになる。
    $ ssh charles bjobs -u all
    lsb_init: Failed in an LSF library call: Unable to open file lsf.conf
    /etc/直下にlsf.confのシンボリックリンクを張ったら行けました。
    # cd /etc
    # ln -s lava/conf/lsf.conf

ジョブ間の依存性

他のジョブの状態に依存して、特定のジョブを走らせることができる。例えば、シミュレーションの実行ジョブが正常に終了したら、シミュレーションの出力ファイルを自分のPCに転送するジョブを走らせるなど。

依存式はシングルクウォートで囲みます。

bsub -w '依存式' あなたのコマンド

依存式中で他のジョブは、ジョブID(数字)かジョブ名(文字列)で指定します。数字から始まるジョブ名の場合はダブルクォートで囲みます("01_my_job")

例えば

bsub -w 'ジョブ' あなたのコマンド

とするとジョブがDONEになったらあなたのコマンドが実行されます。

論理演算子

依存式中では、次の論理演算子が使えます。

&& (AND)
|| (OR)
! (NOT)

他のジョブの状態

DONEの他にも様々な他のジョブの状態に合わせて実行することができます。

done(ジョブ)

ジョブがDONEになったら

ended(ジョブ)

ジョブがEXITかDONEになったら

exit(ジョブ, 演算子 終了コード)

ジョブの終了コードが特定の値であったら

exit(ジョブ)

ジョブが終了したら(終了コードは関係ない)

exit(ジョブ, 0)

ジョブが正常終了したら。

exit(ジョブ, !=0)

ジョブが0でない終了コードで終了したら。

実行中or停止したジョブを再びキュー戻す

ジョブ実行中にLAVAシステムや計算ノードが落ちてしまった場合などに、手動でジョブを再びキューに戻すことができます。

brequeue ジョブID

再びキューに戻すことができるのは、RUN, USUSP, SSUSP状態にあるジョブのみです。

ジョブにre-runnableオプション (-r) をつけて投入することで、自動的にキューに戻すことも出来るようです。

bsub -r あなたのコマンド

特定のジョブのヒストリーを見る

bhist ジョブID

ジョブの標準出力を見る

bpeek ジョブ

ジョブIDやジョブ名、キューや実行ホストを指定できる。

ジョブを停止・削除する

bkill ジョブID
bkill ジョブID -u ユーザー名 -q キュー名 -J ジョブ名

ジョブIDとして0を指定すると、全てのジョブを指定するする。例えば、

bkill 0

で自分が走らせた全てのジョブを停止する。

UNKWNやZOMBIになってしまったものを強制的に削除するには

bkill -r

参考リンク

[http://www.hpccommunity.org/index.php?pageid=lava]
[http://www.venus.dti.ne.jp/~iisaka/Linux/LSF-OpenSource.html]
[http://www.hpccommunity.org/downloads.php?do=file&id=79]
[http://ams.cern.ch/AMS/7/index.html]
[http://www.cisl.ucar.edu/docs/LSF/7.0.3/configuration_reference/index.htm]


添付ファイル: fileLava-src-1.0.6.tar 1317件 [詳細] filejob_queue.001.png 1275件 [詳細] filelava-1.0_source.tgz 667件 [詳細] filecw_admin_5.1-J.pdf 580件 [詳細] filelava_using_1.0.pdf 2241件 [詳細] filelava_admin_1.0.pdf 621件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-11-09 (水) 11:58:53 (2205d)