OpenGridSchedulerは難しすぎました。代わりにTorqueを使ってます
下記はごくごく浅い内容となってます。
ジョブスケジュールリング
現在Open Grid Scheduler
として存在するそうな。中身は Sun Grid Engine 6.2u5 と互換。
rpmを提供してくれるSon of Grid Engine
もある。
このアプリケーションは、ジョブ投入と計算機リソース(cpu/core,メモリー,利用時間)の管理を担当します。
これがあるから大規模計算ができると言う訳ではない。大規模な計算を滞りなく計算機自体のリソースを十分に活用させるための
仕組み、枠組みだけである。
多数のcoreを強調させ、大規模な計算を実現させる道具は、OpenMPIらである。
ジョブスケジュールリングとは関係ないお話です。
過去の記事SunGridEngine?
システム構成 †
パラメータ | 値 | 備考 |
sge-rootディレクトリ | /Appl/OpenGridScheduler | 全てのホスト(c,c101,c102,,,)からアクセス可能な場所 NFSで共有させる |
セル名 | default | 単一のクラスターサイトを想定 |
管理ユーザ | sgeadmin | nis、ldapらで用意されたアカウント |
sge_qmasterポート番号 | 6444 | |
sge_execポート番号 | 6445 | |
マスターホスト | c | Grid Engine システムを制御するホスト。 マスターデーモンsge_qmasterと スケジューリングデーモンsge_scheddが動く |
シャドーマスターホスト | 作成しない | sge_qmaster機能のバックアップホスト |
スプール方式 | ファイルシステム | |
実行ホスト | c101,c102,c103,c104,c105 | ジョブを実行するマシン sge_execdが働く |
グループID | 20000-20100 | gidと被らない範囲を指定 この範囲分100個のジョブが実行できる |
管理ホスト | c | 待ち行列の再構成、利用者の管理 マスターホストは自動的に管理ホストにもなる マスターホストでqconf -ah ホスト名で追加 |
発行ホスト | c | バッチジョブの発行と制御を行うマシン マスターホストは自動的に発行ホストにもなる マスターホストでqconf -as ホスト名で追加 |
ユーザ作成 †
各ノードを監視して、そして実際にOpenGridSchedulerを稼働させるユーザを作成します。
このサイトはすべてsambaによるActiveDirectoryでユーザ管理してます。
参照samba/ユーザ登録
[root@c ~]# /opt/samba/bin/samba-tool group add sge --group-scope=Global --group-type=Security \
--description='OpenGridSchedulerグループ' --gid-number=2003 --nis-domain=sybyl
Added group sge
[root@c ~]#
[root@c ~]#
これでgroup sge が gid 2003 として登録された。次にsgeを管理するユーザsgeadminを作成します。
[root@c ~]# /opt/samba/bin/samba-tool user add sgeadmin --must-change-at-next-login --random-password \
--use-username-as-cn --description=OpenGridScheduler管理者 \
--home-drive=z --home-directory="\\\c\home\sgeadmin" \
--uid=sgeadmin --uid-number=1111 --gid-number=2003 --gecos="Supervisor of OpenGridScheduler" --login-shell=/bin/bash \
--nis-domain=sybyl --unix-home=/home/sgeadmin
User 'sgeadmin' created successfully
[root@c ~]#
NFS共有 †
SGE_ROOTをNFS共有させます。
[root@c ~]# vi /etc/exports
/Appl c101(rw) c102(rw) c103(rw) c104(rw) c105(rw)
[root@c ~]#
[root@c ~]# exportfs -av
exporting c101.chaperone.jp:/Appl
exporting c102.chaperone.jp:/Appl
exporting c103.chaperone.jp:/Appl
exporting c104.chaperone.jp:/Appl
exporting c105.chaperone.jp:/Appl
[root@c ~]#
構築 †
ソースはここから取得可能 http://sourceforge.net/projects/gridscheduler/files/
ここではバージョン2011.11p1となるGE2011.11p1.tar.gzを取得しました。
*構築に必要ならライブラリ関係をインストール
[root@c ~]# yum -y install openmotif-devel libXpm-devel ncurses-devel pam-devel tcsh
[root@c ~]# cd /Appl/Linux/src
[root@c src]# wget http://downloads.sourceforge.net/project/gridscheduler/GE2011.11p1/GE2011.11p1.tar.gz
[root@c src]# gzip -cd GE2011.11p1.tar.gz | tar xf -
[root@c src]#
[root@c src]# cd GE2011.11p1/source
[root@c source]#
[root@c source]# ./scripts/zerodepend
[root@c source]# ./aimk -no-java -no-jni -no-secure -no-gui-inst -spool-classic *./aimk clean で初期化できます
コンパイルはこれで完了。
GUIなインストール版を作りたいのならこちらを参照 OpenGridScheduler/GUI
次に、 chaperone-sge-2011.11p1.tar.gz な配布可能な形に成型します。
[root@c source]# ./scripts/distinst -basedir /tmp -vdir sge-chaperone-2011.11p1 \
-all -nobdb -noexit -noopenssl
[root@c source]#
[root@c source]# cd /tmp
[root@c tmp]# tar cfz ./sge-chaperone-2011.11p1.tar.gz ./sge-chaperone-2011.11p1
作った配布用ファイル sge-chaperone-2011.11p1.tar.gz を使ってインストールします
*「./scripts/distinst」で「-local」を指定して、そのままインストールでも構わないのだが、クラスターマシン毎にインストールとなれば、配布形式なファイルを作った方がいいから。
インストール †
ジョブスケジュールリングを取り仕切るサイト、ジョブを実施するサイト、ジョブを発行するサイトなど用途に合わせて
構築したプログラムsge-chaperone-2011.11p1.tar.gzをインストールします。
OpenGridScheduler/マスターホスト
OpenGridScheduler/実行ホスト
テスト実施 †
極めて簡単なテストを実施してみます。
まずジョブを投入できるマシンの確認
[root@c ~]# source /Appl/OpenGridScheduler/default/common/settings.sh
[root@c ~]# qconf -ss
no submit host defined
[root@c ~]#
な状態でジョブ投入ホストが定義されていない。なので、
[root@c ~]# qconf -as c
c.cerius.local added to submit host list
[root@c ~]#
とマスターホストがジョブ投入サイトも兼ねるようにする。
そしてから環境変数を読み込ませて、
[illya@c ~]$ source /Appl/OpenGridScheduler/default/common/settings.sh
まずは利用可能な実行ホストのリストを出してみる
[illya@c ~]$ qhost
HOSTNAME ARCH NCPU LOAD MEMTOT MEMUSE SWAPTO SWAPUS
-------------------------------------------------------------------------------
global - - - - - - -
c101 linux-x64 1 0.00 1.8G 63.4M 2.0G 0.0
c102 linux-x64 1 0.00 1.8G 62.6M 2.0G 0.0
c103 linux-x64 1 0.00 1.8G 62.6M 2.0G 0.0
[illya@c ~]$
ジョブを投入するとこれらの内のどれかに渡されて実行される事になる。渡すジョブはサンプルが /Appl/OpenGridScheduler/examples/jobs にあり、ここでは simple.sh を使用します。
このsimple.shは、
と極めて簡単なシェルスクリプトです。これを実行します
[illya@c ~]$ qsub /Appl/OpenGridScheduler/examples/jobs/simple.sh
Your job 1 ("simple.sh") has been submitted
[illya@c ~]$
[illya@c ~]$
[illya@c ~]$ qstat
job-ID prior name user state submit/start at queue slots ja-task-ID
------------------------------------------------------------------------------------------------------
1 0.55500 simple.sh illya r 08/02/2014 13:46:42 all.q@c101.cerius.local 1
[illya@c ~]$ qstat
[illya@c ~]$
終了すると、ログファイルが書き出されます。「e」はエラーの標準出力結果、「o」は標準出力の結果です
[illya@c ~]$ ls -l
合計 4
-rw-r--r-- 1 illya fate 0 8月 2 13:46 2014 simple.sh.e1
-rw-r--r-- 1 illya fate 58 8月 2 13:47 2014 simple.sh.o1
[illya@c ~]$