Last-modified:2018/03/29 22:54:15.
このステップではまず、マスターホスト自身でジョブを実行できるようにする。
当研究室の構成ではマスターホスト自身ではジョブを実行しない。 しかし、Grid Engine は複数台が関連するシステムなので、 上手く動かない場合にはどこで問題が生じているのかが分かりにくい。 構築作業中の状態を把握し易くするために、 ひとまずマスターホスト自身にジョブを投げるシステムを構築する。 この設定は後で修正する。
マスターホストを Ir として、 nslookup Ir としたときの名前解決が ドメイン名も含めて逆引き、正引きが一致することを確認しておく。 Ir.atom なのか、 Ir.calc.atom なのかなど、 複数のネットワークに繋いだマシンだと問題になりうる。
Ir としたときに、Ir.calc.atom で 192.168.1.77 になれば良い。 名前解決のサーチドメインで calc.atom だけにして atom は含めない。
apt-get install -y gridengine-master
Ir は実行ホストにしない予定なのでその意味では不要だが、 インストール途中のテストとしてあると分かり易いので入れておく。 (2回目のインストールのときなど、トラブルの可能性が低いと思うならなしでも良かろう。)
apt-get install -y gridengine-client
qconf を使うために必要。 管理ホストとしてのパッケージだと思われる。
qconf -sh
-sh は管理ホストのリストを表示するだけのオプション。 問題なければ、以下のように表示される。 Ir.calc.atom
Ir.atom ではいけない。 要注意。 うっかりやり逃して先に進むと、キューにつっこまれるけど実行できない状態になる。
error: commlib error: access denied (client IP resolved to host name "localhost". This is not identical to clients host name "Ir")
ERROR: unable to contact qmaster using port 6444 on host "Ir"
「ping Ir」 で 127.0.1.1 に名前解決されるのがマズイ。 /etc/hosts の以下の行をコメントアウトしたら通った。
127.0.1.1 Ir
といわれる場合。
error: denied: host "Ir.calc.atom" is neither submit nor admin host
ということもある。 Ir を名前解決するためにドメイン検索すると Ir.atom と見做されるが、 apt-get でインストールした管理ホストが Ir.calc.atom なのが問題。 /var/lib/gridengine/default/common/act_qmaster
を編集して Ir.calc.atom にして、以下を実行すると通るようになる。
/etc/init.d/gridengine-master restart
あかん場合、もう一度名前解決や逆引きも確認してみる。 /etc/hosts で 127.0.1.1 が悪さしてることもある。
ping を自分の名前に打ってみて、きちんと通るか確認。
error: commlib error: got select error (Connection refused)
ERROR: unable to send message to qmaster using port 6444 on host "Ir.calc.atom": got send error
上記のようなエラー。 マスターホストのデーモン (gridengine-master) が起動していないためと思われる。 以下を実行してみる。
/etc/init.d/gridengine-master start
起動しない場合、 /var/spool/gridengine/qmaster/messages を見てみると、以下な感じ。
12/10/2013 17:29:29| main|Ir|W|local configuration Ir.calc.atom not defined - using global configuration
12/10/2013 17:29:29| main|Ir|E|global configuration not defined
12/10/2013 17:29:29| main|Ir|C|setup failed
今回の場合、 apt-get でインストールするときに、 master hostname を入れ忘れていたのが原因だった。 やり直した。
ホストグループとは複数のホストをグルーピングして管理するための仕組みらしい。
たぶん、マシン構成が細かく分かれているときに便利なんじゃないかな。 たとえば CPU が2種類、メモリ量が2種類の組み合わせで 4種類の計算機があるときに、 CPU 高速グループで計算するキューとか、 大メモリ量グループで計算するキューとか。 当研究室の構成では計算機のシリーズごとに能力がほぼ決まっていて、 シリーズを越えた計算はほぼしないからホストグループは不要じゃないかな。 とりあえず特にホストグループを利用せずに設定してみる。 必要ならそのときにする。
qconf -aq Ir.q
上記コマンドを実行すると、編集画面が出る。
修正したり、確認したりするのに以下のコマンドが使える。
qconf -sql # 登録されているキューの一覧表示。
qconf -sq Ir.q # Ir.q の状態を表示。
qconf -mq Ir.q # Ir.q の状態を編集。
qconf -as Ir.atom
#=> Ir.atom added to submit host list
qconf -as Ir.calc.atom
#=> Ir.calc.atom added to submit host list
発行ホストの登録がないホストからだと、qsub しようとしても 以下のようにエラーを吐かれてキューにつっこめない。
Unable to run job: denied: host "Ir.calc.atom" is no submit host.
Exiting.
自分の hostname で引いたときに最初に見つかる FQDN でないとダメっぽく、 Ir.atom だけならダメで、 Ir.calc.atom が必要のようだ。
Re を追加するときは、
qconf -as Re.atom
qconf -ae
を実行すると、編集画面が現れる。 とりあえず hostname だけ Ir に修正して抜ける。 already exist とでたので、 なしでもいけそう。
先に qconf -mq Ge.q でキューに名前を登録してから、qconf -ae Ge02 しないといかんかった模様。
#! /bin/sh
#$ -S /bin/sh
/bin/hostname
な hostname.sh を作り、以下で実行してみる。
qsub hostname.sh
問題なければ、 数秒間は以下のように state が qw になるが、
job-ID prior name user state submit/start at queue slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
2 0.00000 hostname.s ippei qw 12/10/2013 22:53:28 1
10秒程度で以下のように state が r になって、
job-ID prior name user state submit/start at queue slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
2 0.50000 hostname.s ippei r 12/10/2013 22:53:34 Ir.q@Ir.calc.atom 1
さらに数秒で qstat の表示から消える。
job-ID prior name user state submit/start at queue slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
16 0.50000 hostname.s ippei qw 12/09/2013 22:26:22
submit host や execution host の設定がうまくいってなかったことがあった。
gridengine のマスターホストの設定がしばしばふっとぶ。 設定がコマンドライン経由で、中途半端にエディタをかますので、 設定の再構築を非常にやりにくい。
上記のような前提の上で、 復旧の手間を減らしたい。
apt-get --purge remove -y gridengine-client
apt-get --purge remove -y gridengine-master
apt-get --purge remove -y gridengine-common
apt-get --purge remove -y gridengine-exec
rm -rf `locate gridengine`
apt-get install -y gridengine-master
apt-get install -y gridengine-common
ここからインストールできるかんじっぽい。
Ga_series
Ge_series
Kr_series 4
Nb_series 2
Pd_series 4
Rb_series 2
Rh_series 2
Ru_series 4
Se_series
Sr_series
Tc_series
pe の slots は一律 100 でやってみた。
[2016-02-14]以降、 RAID で運用している。