Condorを使ってみた(2)

前回からかなり時間があいているので、リンクを貼っておこう。。ww
(Condorを使ってみた(1): http://d.hatena.ne.jp/aaabbb_200904/20100322/1269272521 )
ちなみに、同時実行ジョブ数の変更方法を調べるのに半年かかってしまったことによる。 orz

同時実行ジョブ数の変更

Condorを使用する際には、ジョブの同時実行数はそのノードに存在するCPUの数となるため、sleepや、ネットワーク待ちを含むようなジョブがあると、CPU使用率が落ちてしまうという動作になる。
この動作を回避するには、condorの設定ファイルの
/var/lib/condor/condor_config.local で、NUM_CPUSの設定を行えばよい。

NUM_CPUS=10  (10は任意の数値)

再起動を行った後、condor_statusの出力が、次のように10個のスロットを含んでいれば正しく設定されている。

slot10@fedora-virt LINUX      X86_64 Unclaimed Idle     0.000    36  1+00:25:47
slot1@fedora-virt8 LINUX      X86_64 Unclaimed Idle     0.000    36  1+00:21:01
slot2@fedora-virt8 LINUX      X86_64 Unclaimed Idle     0.000    36  1+00:25:36
slot3@fedora-virt8 LINUX      X86_64 Unclaimed Idle     0.060    36  0+00:25:06
slot4@fedora-virt8 LINUX      X86_64 Unclaimed Idle     0.000    36  1+00:25:49
slot5@fedora-virt8 LINUX      X86_64 Unclaimed Idle     0.000    36  1+00:25:50
slot6@fedora-virt8 LINUX      X86_64 Unclaimed Idle     0.000    36  1+00:25:51
slot7@fedora-virt8 LINUX      X86_64 Unclaimed Idle     0.000    36  1+00:25:52
slot8@fedora-virt8 LINUX      X86_64 Unclaimed Idle     0.000    36  1+00:25:45
slot9@fedora-virt8 LINUX      X86_64 Unclaimed Idle     0.000    36  1+00:25:46

共有ファイルシステムの使用

前回はバッチノードでジョブ実行を行う際、condorの機能を使ってファイルを転送する設定について書いたが、共有ファイルシステムを使った設定も試してみた。
バイナリファイルとしては/bin/sleep を用いたため、実際には共有ファイルシステムの設定は行っていない。。 orz

通常は、submitされたノード以外のノードでジョブを実行する場合には、ジョブファイルに次を記述する必要がある。

should_transfer_files = YES 
when_to_transfer_output = ON_EXIT

この場合、ジョブのバイナリファイルはcondorの機能でバッチノードに転送される。共有ファイルシステムがある場合は転送を行う必要が無いため、この指定は行わず、代わりに次の指定を行う。

Requirements   = TARGET.FileSystemDomain == "jp.example.org" && TARGET.UidDomain == "jp.example.org"

FileSystemDomain, UidDomainはそれぞれ同じ共有ファイルシステムをマウントしていることと、同じ/etc/passwdを持っているという項目を表しているらしい。必ず両方を指定しないと、上手くジョブが実行されないので注意。(1. FileSystemDomainが無いと行き先が無いため、ジョブがIdle状態から変化しない 2. UidDomainがないと、ジョブがnobody権限で実行されるため、ジョブの実行が失敗した。。w )

各ノードのcondorが同じファイルシステム、ユーザー情報を持つことを明示するためには、 /var/lib/condor/condor_config.local に、次を指定する必要がある。(ちなみにどのパラメータを設定するかを確認するには、/etc/condor/condor_config を確認するのが早そうだ。。)

FILESYSTEM_DOMAIN = jp.example.org
UID_DOMAIN = jp.example.org

参考までに、マネージャーノード、バッチノードの/var/lib/condor/condor_config.local を添付しておく。

(マネージャーノード: fedora-virt7.jp.example.org)
CONDOR_DEVELOPERS = NONE
CONDOR_HOST = $(FULL_HOSTNAME)
COLLECTOR_NAME = my_collector
START = TRUE
SUSPEND = FALSE
PREEMPT = FALSE
KILL = FALSE
DAEMON_LIST = COLLECTOR, MASTER, NEGOTIATOR, SCHEDD, STARTD
NEGOTIATOR_INTERVAL = 20
TRUST_UID_DOMAIN = TRUE
ALLOW_WRITE = *
ALLOW_READ = *
FILESYSTEM_DOMAIN = jp.example.org
UID_DOMAIN = jp.example.org
NUM_CPUS=10
(バッチノード: fedora-virt8.jp.example.org)
CONDOR_DEVELOPERS = NONE
#CONDOR_HOST = $(FULL_HOSTNAME)
CONDOR_HOST = fedora-virt7.jp.example.org
#COLLECTOR_NAME = Personal Condor
START = TRUE
SUSPEND = FALSE
PREEMPT = FALSE
KILL = FALSE
#DAEMON_LIST = COLLECTOR, MASTER, NEGOTIATOR, SCHEDD, STARTD
DAEMON_LIST = MASTER, SCHEDD, STARTD
NEGOTIATOR_INTERVAL = 20
TRUST_UID_DOMAIN = TRUE
ALLOW_WRITE = *
ALLOW_READ = *
FILESYSTEM_DOMAIN = jp.example.org
UID_DOMAIN = jp.example.org
NUM_CPUS=10