メインコンテンツに移動

AlmaLinux/RMS

ジョブ管理(正確には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

よっしゃ! 少なくとも, 稼働はしておる.

一応, マニュアル読んで必要そうなのはつけてみる.