macOS Sierraからクラスターサーバにジョブを投入したいのだが、
https://en.wikipedia.org/wiki/Comparison_of_cluster_software
のリストからmacOSで使えるものは殆どない。

っで色々調べ、古いバージョンのTorqueなら macOS でも動くと分かり、手に入る古いバージョンで試してみた
CentOS5とかのころには使っていたTorqueのバージョンである。これをmacOS Sierraに入れてみることにした
ソースはhttp://www.adaptivecomputing.com/products/open-source/torque-old/torque-archived-versions-library/
より入手可能
ここではqsubを流せればいいので「ジョブ発行」機能(client)のみを有効にした
その他の管理ノード、計算ノードらのTorqueのバージョンは全て同じ 2.4.17 にしてます。TORQUE/2.4.17
mini:src supervisor$ export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
mini:src supervisor$ gzip -cd torque-2.4.17.tar.gz | tar xf - && cd torque-2.4.17
mini:torque-2.4.17 supervisor$ ./configure --disable-server --disable-mom --disable-gui \
--with-server-home=/var/lib/torque --without-tcl --without-tk \
--disable-unixsockets
:
Building components: server=no mom=no clients=yes
gui=no drmaa=no pam=no
PBS Machine type: darwin
Remote copy: /usr/bin/scp -rpB
PBS home: /var/lib/torque
Default server: mini.local
Unix Domain sockets: no
Tcl: disabled
Tk: disabled
Ready for 'make'.
mini:torque-2.4.17 supervisor$
mini:torque-2.4.17 supervisor$ make && sudo make installコマンドqsubらは/usr/local/binに置かれた
次に設定を施す。まず管理ノードの場所をこのジョブ発行ノードに定義する。
定義対象のファイルは /var/lib/torque/server_name です
mini:~ supervisor$ sudo echo "pbs.sybyl.local" > /var/lib/torque/server_nameこれで pbsnode と打つと登録されている計算マシンが表示されます。
そしてジョブを投入してみました
mini:torque illya$ qsub a.sh
qsub: Bad UID for job execution MSG=ruserok failed validating illya/illya from 192.168.0.13
mini:torque illya$*メッセージの「from 192.168.0.13」にあるIPアドレスはpbs.sybyl.localの/etc/hostsの定義でマシン名になる
とエラーが返される。
本来ならqmgrで「submit_hosts」を定義すればいいのだろうが、正しく動かなかった。
これは管理ノードの/etc/hosts.equivにジョブ発行ノードを加える事で回避
[root@pbs ~]# vi /etc/hosts.equiv
mini.sybyl.local
[root@pbs ~]# chmod 600 /etc/hosts.equivこの辺りはmungeが使える2.5.xの替えたほうが宜しいのかも
これでmacOS Sierraをジョブ発行ノードとして利用できます。
mini:torque illya$ qsub a.sh
23.pbs.sybyl.local
mini:torque illya$管理ノード側のログには
[root@pbs ~]# tracejob 23
/var/lib/torque/mom_logs/20170826: No such file or directory
/var/lib/torque/sched_logs/20170826: No such file or directory
Job: 23.pbs.sybyl.local
08/26/2017 20:01:36 S enqueuing into bio, state 1 hop 1
08/26/2017 20:01:36 S Job Queued at request of illya@mini.sybyl.local, owner = illya@mini.sybyl.local, *改行してます
job name = a.sh, queue = bio
08/26/2017 20:01:36 A queue=bio
08/26/2017 20:01:37 S Job Run at request of root@pbs.sybyl.local
08/26/2017 20:01:37 S Not sending email: User does not want mail of this type.
08/26/2017 20:01:37 A user=illya group=fate jobname=a.sh queue=bio ctime=1503745296 qtime=1503745296 *改行してます
etime=1503745296 start=1503745297 owner=illya@mini.sybyl.local exec_host=n1.sybyl.local/0
Resource_List.cput=480:00:01 Resource_List.neednodes=1:ppn=1 Resource_List.nodect=1 *改行してます
Resource_List.nodes=1:ppn=1 Resource_List.walltime=240:00:00
08/26/2017 20:02:07 S Not sending email: User does not want mail of this type.
08/26/2017 20:02:07 S Exit_status=0 resources_used.cput=00:00:00 resources_used.mem=0kb *改行してます
resources_used.vmem=0kb resources_used.walltime=00:00:30
08/26/2017 20:02:07 S dequeuing from bio, state COMPLETE
08/26/2017 20:02:07 A user=illya group=fate jobname=a.sh queue=bio ctime=1503745296 qtime=1503745296 *改行してます
etime=1503745296 start=1503745297 owner=illya@mini.sybyl.local exec_host=n1.sybyl.local/0
Resource_List.cput=480:00:01 Resource_List.neednodes=1:ppn=1 Resource_List.nodect=1 *改行してます
Resource_List.nodes=1:ppn=1 Resource_List.walltime=240:00:00 session=5490
end=1503745327 Exit_status=0 resources_used.cput=00:00:00 resources_used.mem=0kb *改行してます
resources_used.vmem=0kb resources_used.walltime=00:00:30
[root@pbs ~]#とジョブを受け付けて処理を完了させてます
前述は管理ノード、計算ノードらのTorqueのバージョンは全て同じ 2.4.17 にしてテストを実施しました。
恐らく2.5.13でも全て同じ2.5.13にすれば動くのでしょうが、このバージョンではmungeが使える。
これを経由すれば管理、計算ノードはyumでインストール可能な 4.2.10 のままで使えないかを検討してみた。
4.xから pbs_iff から trqauthd に変更された。*pbs_iffとtrqauthdは認証ではなく、承認を行うのみ. mungeは認証を司る
TORQUE/2.5.13
2.5.13の入手先はhttps://github.com/adaptivecomputing/torque/tree/2.5.13
まずはmungeをインストールApple/munge
その後に、2.5.13をインストール
mini:~ supervisor$ cd src/
mini:src supervisor$ unzip torque-2.5.13.zip # 中身の確認は「zipinfo torque-2.5.13.zip」で
mini:src supervisor$ cd torque-2.5.13
mini:torque-2.5.13 supervisor$ ./configure --disable-server --disable-mom --disable-gui \
--with-server-home=/var/lib/torque --without-tcl --without-tk \
--enable-munge-auth --enable-munge-library --disable-unixsockets
mini:torque-2.5.13 supervisor$ make && sudo make installコンパイルには成功したが、いざ接続しようとすると
「qstat: Supporting protocol failure」
といわれ終了
結論、駄目でした。
macOSから直接queueを投げられるようにしてみたいと思った
すでにApple/CommandLineToolsはインストール済み。torqueのソースは他のマシンでyumdownloaderで入手
mini:~ supervisor$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
mini:~ supervisor$ cd src/
mini:src supervisor$ gzip -cd torque-4.2.10.tar.gz | tar xf -
mini:src supervisor$ cd torque-4.2.10
mini:torque-4.2.10 supervisor$ ./configure
:
:
checking for SSL_accept in -lssl... no
configure: error: TORQUE needs lib openssl-devel in order to build
mini:torque-4.2.10 supervisor$とopenssl-develがないと言われエラーとなる。macOS Sierraでインストールされているopensslは
mini:~ supervisor$ openssl
OpenSSL> version
OpenSSL 0.9.8zh 14 Jan 2016
OpenSSL>
OpenSSL> quit
mini:~ supervisor$と 0.9.8zh を採用している。何が駄目だったのかを調べるため config.log を確認してみる
mini:torque-4.2.10 supervisor$ view config.log
:
configure:17698: g++ -o conftest -g -O2 conftest.c -lssl -lpthread -lrt >&5
clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
ld: library not found for -lrt
clang: error: linker command failed with exit code 1 (use -v to see invocation)
:
mini:torque-4.2.10 supervisor$どうやらsslの問題ではなく、「-lrt」が問題だった見たい。これは「glibc」(GNU C library)の「librt.so.1」に該当するライブラリで
macOS Sierraにこのファイルはない。
「configure」のこの「-lrt」部分を削除して進めることにした。コンパイルの最中で再度GNU C libraryが必要といわれたら対処することにした
|
こうして再度configureを実施します
mini:torque-4.2.10 supervisor$ ./configure
:
Building components: server=yes mom=yes clients=yes
gui=no drmaa=no pam=no
PBS Machine type : darwin
Remote copy : /usr/bin/scp -rpB
PBS home : /var/spool/torque
Default server : mini.local
Unix Domain sockets :
Linux cpusets : no
Tcl : disabled
Tk : disabled
Authentication : classic (pbs_iff)
Ready for 'make'.
mini:torque-4.2.10 supervisor$一応、最後まで通った。これでmakeを行ってみる。っが途中で
In file included from ../../../src/include/pbs_job.h:101:
../../../src/include/hash_table.h:83:10: fatal error: 'endian.h' file not found
#include "endian.h" /* LITTLE_ENDIAN */
^
1 error generated.endian.hがないとしてエラーが発生した。
このファイル、Linuxでは「glibc-headers」に含まれるもので、やはりglibcが必須のようだ。。
一応glibcのコンパイルを試みたが、、ハードルが高すぎで諦めた。
ただコンパイル情報として
「6.1.1.1」trq_auth.cでエラー
「5.1.3」trq_auth.cでエラー
「4.2.10」「4.0.2」attr_fn_hold.cでエラー
「3.0.6」OK
ついでに「PBSPro」はconfigure段階で落ちた
入手先
3.x系(3.0.6, 2012-07-13)はadaptivecomputingのサイトから
2.5.x系(2.5.13, 2013-08-01)はgit hubから「https://github.com/adaptivecomputing/torque」
2.4.x系(2.4.17, 2012-03-29)はadaptivecomputing
各種のCHANGELOGを読むと4.xらのバックポートが行われている。より新しい2.5.13が望ましいのかも。