ジョブ管理(正確にはResourceManagerSys)整備
AlmaLinux9.5では
gcc | make | boost | ||
---|---|---|---|---|
MySQL Community 9.2 Requirements | 10.0以上 | 3.75以上 | 1.85.0 | |
AlmaLinux9.5 | 11.5 | 4.3 | ||
CentOS-Stream8 (現行) | 8.5 | 4.2.1 |
- ううん.まあMySQL9.2のRedHatBinaryを使っても良いと思うんだが.
- ビルドする人が非常に少なくなってるんだろう
事前準備
事前準備はThirdPartyパッケージの仕事である.
ThirdParty
ここを改造する.AlmaLinnux9ブランチである.
# git clone https://sugimoto605@bitbucket.org/rgdkyotou/thirdparty.git # cd thirdparty # git branch AlmaLinux9
読みながら更新していく.まずはジョブ管理システムのサーバーを作らねえとな・・・
SLURM-SERVER: とりあえず一回くらい起動してみる
まずMakefileでETHER, RMS_SERVERとDNS_TRUE, DNS_FAKEを入れましょう.
ETHER=bond0 ←RMS_SERVERが使うEthernetデバイスを指定
RMS_SERVER=10.249.229.123 ←このマシンのIPアドレス
DNS_TRUE=( 10.224.253.1 10.224.254.1 ) ←DNSサーバーのIPアドレス
DNS_FAKE=( 10.249.229.123 10.249.229.191 ) ←なんちゃってDNSサーバーのIPアドレス
# # make slurm-server ←完成したらこれ一発!だけど,これが完成した時には,すでに行う必要がなくなっているwww
# まあだから, make slurm-server で行う予定のことを一つづつ進めるのですじゃ
# make python-devel
# make gsl
# make cmake
# make boost ←この段階ではMPIがビルドできないので「いくつかビルドできん」
boostぶうすと: いくつかびるどできん
# make openssl
# make munge.key.create ←自分がサーバーになる時にはキーを作成. クライアントは munge.key.copy を行うのじゃ
# make munge
# make maria
# make maria-devel
# make httpd
# make readline
# make pam
# make libcurl
# make libevent-devel
# make hwloc
さあここで難題のMPI周りである.昔は openpmix v3.1.4 であった.最新は v5.0.7 である.まあ,最新で行ってみる.
# make openpmix openpmixぴみくすOK ←5.0.7がインストールされたっぽい
で, slurm ジョブ管理システム. 以前は slurm-19-05-4-1. 最新では slurm-24-11-3-1. ずいぶんバージョンが進んでるなあ・・・
# make slurm
cannot access /var/lib/alternatives/python: No such file or directory
slurmすらるむOK
いよいよopen MPIですね! 昔はOpenMPI-4.0.2 → 現行は OpenMPI-5.0.7 ですか.だいぶん違いますね.
# make ompi
ompiDisable firewall for MPI nodes.... ←これ, 現在でも必要なのかしら? 除去してみよう. ompi[CONFIGURE]
ompi./configure --prefix=/usr/local --with-slurm --with-pmix=/usr/local/pmix --with-libevent --with-hwloc=internal --wi
ompith-ompi-pmix-rte --disable-mca-dso
ompiconfigure: error: Building against an external PMIx with an internal Libevent or HWLOC is unsupported. Cannot cont
ふにゃ. hwloc=internalってインストールしたじゃんけ? ええっと2.4.1がインストール済み.なんやバージョン不足なのか, 自力で2.7.1を使おうとしておる.
- hwlocはバージョン2.7.1
- openpmixは6.0.0っておもっきり途中のやつ使うつもりなのか?やめようし. OpenMPI-5.0.6にしてみる.いやあpmixは/usr/local/pmix使う気で, hwlocは自力.と自分で設定しておいて, 「そりゃ unsupported」ってのはあんまりなのでは.
- いやちょっとまて, それは scripts/ompi.sh で俺がそう指定しているのか・・・訂正して5.0.7で再トライ
# make ompi
ompi[DOWNLOAD]
ompiSubmodule path 'config/oac': checked out 'dfff67569fb72dbf8d73a1dcf74d091dad93f71b'
ompi[AUTOGEN]
ompi[CONFIGURE]
ompi./configure --prefix=/usr/local --with-slurm --with-pmix=/usr/local/pmix --with-libevent --with-hwloc=/usr --with-hwloc
-libdir=/usr/lib64 --with-ompi-pmix-rte --disable-mca-dso
ompisrc/mem/mpl_trmem.c:649:18: 警告: 書式 ‘%p’ は引数の型が ‘void *’ であると予期されますが、第 4 引数の型は ‘TRSPACE *’ です [-Wforma
ompisrc/str/mpl_argstr.c:73:32: 警告: 書式 ‘%X’ は引数の型が ‘unsigned int *’ であると予期されますが、第 3 引数の型は ‘int *’ です [-Wf
ompicoll_tuned_dynamic_file.c:128:47: 警告: 書式 ‘%u’ は引数の型が ‘unsigned int *’ であると予期されますが、第 3 引数の型は ‘int *’ で
ompi/usr/local/pmix/include/pmix_deprecated.h:865:9: 警告: ‘procs’ はこの関数内初期化されずに使用されるかもしれません [-Wmaybe-uninitia
ompimake[1]: ディレクトリ '/local/disk0/packages/thirdparty/CLUSTER/BASE/ompi' から出ます
ompimake[1]: ディレクトリ '/local/disk0/packages/thirdparty/CLUSTER/BASE/ompi' から出ます
ompiえむぴーあいOK
いちおう, できたっぽいぞ?動くのかな?お,mpirunは動くなあ..
# make boost-mpi
うえ? なんか boostのインストールが, 2回できない?なんやこれ. rm -rf CLUSTER/BASE/boost stat/boost してからやり直してみる...
# make boost
もちろんこれはできるわけね. エラーもちゃんとみてみる. ん. そもそも,ここでエラーしてるやん. CLUSTER/BASE/boost/tools/build/src/user-config.jam を作成して
# cd CLUSTER/BASE/boost
# ./bootstrap.sh --prefix=/usr/local
# ./b2 --prefix=/usr/local --without-mpi link=shared install
を実行するとエラーが出るっぽい. 手で実行してみる.
# bootstrap.sh --prefix=/usr/local これはエラーしない
# ./b2 --prefix=/usr/local --without-mpi link=shared install これが全く動かん.
error: Attempt to redeclare already registered project id '/boost/container'.
error: Original project:
error: Name: Jamfile</local/disk0/packages/thirdparty/CLUSTER/BASE/boost/libs/container>
error: Module: Jamfile</local/disk0/packages/thirdparty/CLUSTER/BASE/boost/libs/container>
error: Main id: /boost/container
error: File: libs/container/build.jam
error: Location: libs/container
error: New project:
error: Module: Jamfile</local/disk0/packages/thirdparty/CLUSTER/BASE/boost/libs/container/build>
error: File: libs/container/build/Jamfile.v2
error: Location: libs/container/buildc
わからん. libs/container/build.jam, libs/container/build/Jamfile.v2 が,いつできたのかもわからん.Boost.Containertって,だいたい,なんだろ.
- boost_1_73_0 では, libs/container/にjamファイルなんか, ないぞ.
- boost_1_84_0 では, libs/container/Jamfile ってのが出現
ダウンロードした直後にはどうなってんだ? そっから手動でやってみる. ってか, ダウンロードでエラーしてるやん. なんやろ[fatal: not a git
repository: ../../.git/modules/compatibility] ダウンロードできなくては仕方がないので, wget 方式に変更. いろいろ試行錯誤して
# make boost-mpi
boost-mpi...updated 69 targets...
boost-mpiぶうすとえむぴあいOK
よっしゃ, ここまでは到達.サーバー起動!
# make slurm-server
slurmdbd: fatal: slurmdbd.conf file /usr/local/etc/slurmdbd.conf should be 600 is 644 accessible for group or others
おっと.まるでダメっぽいな. パーミッションがダメだそうだ.
# chmod 600 /usr/local/etc/slurmdbd.conf
# systemctl start slurmdbd.conf
slurmdbd: error: s_p_parse_file: unable to read "/usr/local/etc/slurmdbd.conf": Permission denied
なるほど. /etc/systemd/system/slurmdbd.service によると, User=slurm Group=slurm である.
# chown slurm /usr/local/etc/slurmdbd.conf
サーバー起動!
# make slurm-server
slurmctld: error: PreemptMode=GANG is a cluster-wide option and cannot be set at partition level, option ignored.
slurmctld: fatal: The AccountingStoreJobComment option has been removed, please use AccountingStoreFlags=job_comment option instead.
なんか仕様が変わっているなあ. /usr/local/etc/slurm.conf ええっとソースコードは rc/slurm.conf ね!で,現状のサンプルは
CLUSTER/BASE/slurm/etc/slurm.conf.example らしいので検討しよう. ってか元々コピーだしな!
# Example slurm.conf file. Please run configurator.html
# (in doc/html) to build a configuration file customized
# for your environment.
え. そうやったっけ.
こら便利だ.使ってみる.サーバー起動!
# make slurm-server
slurmctld: fatal: mkdir(/var/spool/slurmctld): Permission denied
slurmctld: fatal: Incorrect permissions on state save loc: /var/spool/slurmctld
訂正した. サーバー起動!
# make slurm-server
slurm-serverFond user slurm [666]
slurm-serverConfigure SlurmDbd...
slurm-serverConfigure SlurmCtld...
slurm-serverBuilding Database...
sacctmgr create cluster fdlab
You are not running a supported accounting_storage plugin Only 'accounting_storage/slurmdbd' is supported.
なんのこっちゃ?slurm.conf でAccountingStorageType=accounting_storage/slurmdbd と書かないとダメだそうだ.起動!
# make slurm-server
slurmctld: fatal: CLUSTER ID MISMATCH.
slurmctld has been started with "ClusterID=1205" from the state files in StateSaveLocation, but the DBD thinks it should be "2412".
Remove /var/spool/slurmctld/clustername to override this safety check if this is intentional.
slurm.conf では StateSaveLocation=/var/spool/slurmctld だと. slurmdbd.conf には,どう書くんだろうね?起動!
# make slurm-server
# ps -ef |grep slurm
slurm 4157044 1 0 18:05 ? 00:00:00 /usr/local/sbin/slurmdbd -D -s
slurm 4157144 1 0 18:05 ? 00:00:00 /usr/local/sbin/slurmctld --systemd -L/var/log/slurm/slurmctld
# sq
JOBID PART NAME USER ST TIME TIME_LEFT NODE CPU NODELIST(REASON)
# sn
NODE PARTITION C:S:T MEM DISK FEATURE FREE-CPU -MEM REASON
is2013-1 Part0 1:4:2 31 0 null 1/1 31G
一応, 起動するところまでは来た.設定ぐちゃぐちゃであるが. ノードがダメだろこれ.
SLURM-CLIENT
自分クライアントで動くか試してみる.起動!
# make slurm-client
slurm-clientじっこーのーどOK
Please start slurmd by [ systemctl start slumd ] AFTER YOU CONFIRM slurmd.conf
that must include this machine as
NodeName=h123 CPUs=8 Boards=1 SocketsPerBoard=1 CoresPerSocket=4 ThreadsPerCore=2 RealMemory=31535
UpTime=1-02:52:36 TmpDisk=22730480
or you can use [ smgr ] to apply [c] command
一応できたのか? 起動!!
# systemctl start slurmd
slurmd: error: The option "CgroupAutomount" is defunct, please remove it from cgroup.conf.
slurmd: fatal: Unable to determine this slurmd's NodeName
ううんなんだこれ. 訂正. 起動!!
# systemctl start slurmd
slurmd: fatal: Unable to determine this slurmd's NodeName
うん?
NodeName=sun2 NodeAddr=h123 CPUs=8 Boards=1 SocketsPerBoard=1 CoresPerSocket=4 ThreadsPerCore=2 RealMemory=31535 TmpDisk=22730480
ではダメなのかな.あ. /etc/hostsにsun2と書くの忘れてた.起動!!
# systemctl start slurmd
slurmd: error: Couldn't find the specified plugin name for cgroup/v2 looking at all files
うん?なんだこれ. ビルド中に. slurm checking for dbus-1 >= 1.11.16... no ってなってるとダメらしいぞ.dnf install -y dbus-devel してからやり直しだ! 起動!!
# systemctl start slurmd
# systemctl status slurmd
● slurmd.service - Slurm node daemon
Loaded: loaded (/etc/systemd/system/slurmd.service; enabled; preset: disabled)
Active: active (running) since Fri 2025-03-28 19:16:43 JST; 4s ago
Main PID: 125535 (slurmd)
Tasks: 11
Memory: 2.6M
CPU: 10ms
CGroup: /system.slice/slurmd.service
└─125535 /usr/local/sbin/slurmd --systemd -L/var/log/slurm/slurmd
# sn
NODE PARTITION C:S:T MEM DISK FEATURE FREE-CPU -MEM REASON
sun2 Part0 1:4:2 31 3 null 8/8 31G
よっしゃ!起動はしたぞ.
ジョブが打てるまで
まずジョブクラス作らねえとな.テストで打ってみると, /var/log/slurm/slurmdに
error: prolog: Unable to create list of paths [/usr/local/etc/prolog.sh]
[2025-03-28T22:27:57.003] error: [job 2] prolog failed
とか出てるな・・・インストールされてないな・・・よっしゃ訂正完了
$ sb NewF.sh
$ sl
JobID User Partition JobName State Elapsed MaxRSS MaxVMSize
------------ --------- ---------- ---------- ---------- ---------- ---------- ----------
6 sugimoto B NewSLURM COMPLETED 00:00:00
6.batch batch COMPLETED 00:00:00
よっしゃ! 少なくとも, 稼働はしておる.
一応, マニュアル読んで必要そうなのはつけてみる.