slurm/accounting をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
ジョブの履歴、投入時刻、計算終了時刻、成功/失敗、実行者ら...
「Account」を作ってそれをposixユーザにアサインしてチーム...
加えて同時実行可能ジョブの数を制限することもできます。特...
このaccountingを利用するには 追加パッケージ slurmdbd と M...
参照先[[https://gist.github.com/DaisukeMiyamoto/d1dac9483...
&size(10){単に利用状況の可視化なら[[XDMoD]]とかで};
***MariaDB の準備 [#k4db0f68]
MariaDBをどこに設置するか.
-管理ノード(slurmノード)内にslurmdbdを設置して、そこにDB...
-管理ノード内にslurmdbdを設置するが、DBは別の場所(ノード)...
-管理ノードとは別のノードにslurmdbdを設置して、そこにDBも...
-管理ノードとは別のノードにslurmdbdを設置して、DBも別の場...
とかでしょうか.
ここでは「管理ノードとは別のノードにslurmdbdを設置して、...
ディストリビューター様のパッケージを使います. &size(10){R...
#code(nonumber){{
[root@slurmdbd ~]# cat /etc/redhat-release
Rocky Linux release 9.7 (Blue Onyx)
[root@slurmdbd ~]# dnf install mariadb-server
[root@slurmdbd ~]# systemctl enable mariadb --now
(確認)
[root@slurmdbd ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.29-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab ...
Type 'help;' or '\h' for help. Type '\c' to clear the cur...
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
MariaDB [(none)]> \q
Bye
[root@slurmdbd ~]#
}}
全くの初期状態である.
これにデータベース「slurm_acct_db」を作って、そのデータベ...
slurmを作ります. &size(10){データベース内アカウントでOSア...
#code(nonumber){{
[root@slurmdbd ~]# mysql
(database作成)
MariaDB [(none)]> create database slurm_acct_db;
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| slurm_acct_db |
+--------------------+
(databaseアクセスユーザの作成)
MariaDB [(none)]> create user 'slurm'@'localhost' identif...
MariaDB [(none)]> select user,host from mysql.user;
+-------+-----------+
| user | host |
+-------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| root | localhost |
| slurm | localhost | <-- 作られたユーザ
| root | slurmdbd |
+-------+-----------+
MariaDB [(none)]>
(権限付与)
MariaDB [(none)]> grant all on slurm_acct_db.* TO 'slurm'...
MariaDB [(none)]> FLUSH PRIVILEGES;
}}
あと微調整 &size(10){[[https://slurm.schedmd.com/accounti...
#code(diff,nonumber){{
--- /etc/my.cnf.d/mariadb-server.cnf.orig 2023-10-1...
+++ /etc/my.cnf.d/mariadb-server.cnf 2024-11-03 00:33:...
@@ -18,6 +18,10 @@
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
+innodb_buffer_pool_size=4096M
+innodb_log_file_size=64M
+innodb_lock_wait_timeout=900
+max_allowed_packet=16M
#
}}
として
#code(nonumber){{
[root@slurmdbd ~]# systemctl restart mariadb
}}
***接続テスト [#jaa85f71]
#code(nonumber){{
[root@slurmdbd ~]# mysql -u slurm -h localhost -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.35-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab ...
Type 'help;' or '\h' for help. Type '\c' to clear the cur...
MariaDB [(none)]> quit
Bye
[root@slurmdbd ~]#
}}
と接続は上手く行った
***slurm-slurmdbdパッケージのインストールとmunge.keyの受...
[[slurm/rpm]にて作成したパッケージを入れます
#code(nonumber){{
(同じRockyLinux8の管理ノードslurmから)
[root@slurm ~]# scp rpmbuild/RPMS/x86_64/slurm-22.05.7-1....
[root@slurmdbd ~]# groupadd -g 5000 slurm
[root@slurmdbd ~]# useradd -M -d /var/lib/slurm -s /sbin/...
[root@slurmdbd ~]# dnf localinstall slurm-22.05.7-1.el8.x...
(管理ノードslurmからslurm.keyのコピー)
[root@slurm ~]# scp /opt/slurm/etc/slurm.key slurmdbd:/op...
[root@slurmdbd ~]# chown slurm. /opt/slurm/etc/slurm.key
}}
***接続設定 [#c67a2b8d]
管理ノードとは別のノードに slurmDBD を設置したので、管理...
#code(nonumber){{
[root@slurm ~]# vi /opt/slurm/etc/slurm.conf
(略)
AccountingStorageType=accounting_storage/slurmdbd
AccountingStorageHost=slurmdbd # slurmctldと同居なら...
#AccountingStorageExternalHost= # 単一クラスターのslu...
AccountingStoragePort=6819
AccountingStoreFlags=job_comment # slurm が slurmdbd ...
# AccountingStoreFlag...
}}
次にslurmDBDノードでの設定ファイルを作る
ジョブの実況状態を残すアーカイブ機能がありますが、テキス...
むしろデータベースに入れて置いて、そこで解析した方が楽っ...
なので書き出しはしない方向です
#code(nonumber){{
[root@slurmdbd ~]# mkdir /opt/slurm/etc
[root@slurmdbd ~]# vi /opt/slurm/etc/slurmdbd.conf
##
SlurmUser=slurm # slurmdbd をユーザ slurm で動かします
##
## Archiving DBに溜まったジョブ情報はファイルにアーカイブ...
ArchiveJobs=no # ジョブの基本情報(ジョブID,ユーザ、開...
ArchiveEvents=no # ジョブ内の詳細ステップ
ArchiveSteps=no # クラスターの出来事(計算ノードのダウ...
ArchiveResvs=no # 予約(Reservation)の情報
ArchiveSuspend=no # ジョブの中断・再開(Suspend/Resume)...
ArchiveTXN=no # データベースの操作履歴(Transaction)
ArchiveUsage=no # リソース使用量の集計データ(Rollup)
#ArchiveDir= # ArchiveJobs=yesならその保存先、平文...
# Authentication info
AuthType=auth/slurm # mungeではなくslurm独自の認証で動き...
#
# slurmDBD info
DbdHost=slurmdbd # slurmDBDが動いているサイト
DbdPort=6819 # slurmDBDの接続port
DebugLevel=info # slurmDBDのログレベル
LogFile=/var/log/slurm/slurmdbd.log # ログファイルの場所
PidFile=/run/slurmdbd/slurmdbd.pid
# db purge mysql/mariaDBに溜まるデータをいつの時点でpurge...
# 重要なデータは1年保持
PurgeJobAfter=18months
PurgeUsageAfter=18months
PurgeTXNAfter=18months
PurgeEventAfter=18months
PurgeResvAfter=18months
# 重くなりやすい詳細データは短めに
PurgeStepAfter=14days
PurgeSuspendAfter=14days
# Database info
# データの保管場所
StorageType=accounting_storage/mysql
StorageHost=localhost # mysqlで作成した '...
StorageUser=slurm
StoragePass=SLURM
StorageLoc=slurm_acct_db
[root@slurmdbd ~]#
[root@slurmdbd ~]# echo "D /run/slurmdbd 0755 slurm slurm...
[root@slurmdbd ~]# /usr/bin/systemd-tmpfiles --create /us...
}}
あと、データベース接続のためのパスワードが平文で入ってい...
#code(nonumber){{
[root@slurmdbd ~]# chmod 600 /opt/slurm/etc/slurmdbd.conf
[root@slurmdbd ~]# chown slurm. /opt/slurm/etc/slurmdbd.c...
[root@slurmdbd ~]# mkdir /var/log/slurm/archive ; chown s...
}}
***firewall [#b7a1fdad]
#code(nonumber){{
[root@slurmdbd ~]# firewall-cmd --add-port=6819/tcp --zon...
[root@slurmdbd ~]# firewall-cmd --reload
}}
***起動 [#z1a57c9d]
#code(nonumber){{
[root@slurmdbd ~]# systemctl enable slurmdbd.service --now
}}
起動順番的には mariadb(データベース) -> slurmdbd(課金ノー...
「&color(magenta){mysql_db_insert_ret_id: We should have ...
あるいは
「&color(magenta){error: Problem getting jobs for cluster...
って言われたら、これは slurm_acct_db に cluster=cluster ...
#code(nonumber){{
[root@slurm ~]# sacctmgr list cluster
Cluster ControlHost ControlPort RPC Share G...
---------- --------------- ------------ ----- --------- -...
[root@slurm ~]#
}}
と何もないのが原因で、slurm.confの「ClusterName=cluster」...
#code(nonumber){{
[root@slurm ~]# sacctmgr add cluster cluster
Adding Cluster(s)
Name = cluster
Would you like to commit changes? (You have 30 seconds to...
(N/y): y
[root@slurm ~]#
(確認)
[root@slurm ~]# sacctmgr list cluster
[root@beluga ~]# sacctmgr list cluster
Cluster ControlHost ControlPort RPC Share G...
---------- --------------- ------------ ----- --------- -...
cluster 127.0.0.1 6817 11264 1 ...
[root@slurm ~]#
}}
その後に slurmdbd と slurmctld を再起動.
もし再起動後しても動かない場合、「journalctl -u slurmctld...
#code(nonumber){{
systemd[1]: Started Slurm controller daemon.
slurmctld[296198]: [2026-03-07T12:29:22.221] accountin...
slurmctld[296198]: [2026-03-07T12:29:22.228] fatal: CL...
slurmctld[296198]: slurmctld has been started with "Cl...
slurmctld[296198]: Running multiple clusters from a sh...
slurmctld[296198]: Remove /var/spool/slurm/ctld/cluste...
systemd[1]: slurmctld.service: Main process exited, co...
systemd[1]: slurmctld.service: Killing process 296261 ...
systemd[1]: slurmctld.service: Failed with result 'exi...
}}
となら、「slurmctld: ClusterID=1371」で「slurmdbd : Clust...
#code(nonumber){{
rm /var/spool/slurm/ctld/clustername
systemctl restart slurmctld
}}
で修復可能
***accounting 動作確認 [#n1398054]
クライアントノード(slurm-client)で
#code(nonumber){{
[illya@slurm-client ~]$ sacct
JobID JobName Partition Account AllocCPUS ...
------------ ---------- ---------- ---------- ---------- ...
[illya@slurm-client ~]$ sacctmgr list cluster
Cluster ControlHost ControlPort RPC Share G...
---------- --------------- ------------ ----- --------- -...
cluster 0 0 1 ...
[illya@slurm-client ~]$
}}
ジョブを流した後
#code(nonumber){{
[illya@slurm-client sample]$ sacct
JobID JobName Partition Account AllocCPUS ...
------------ ---------- ---------- ---------- ---------- ...
71 a.sh workq 2 ...
71.batch batch 2 ...
[illya@slurm-client sample]$
}}
sleepを含ませたjobを流したら
#code(nonumber){{
[illya@slurm-client sample]$ sacct
JobID JobName Partition Account AllocCPUS ...
------------ ---------- ---------- ---------- ---------- ...
71 a.sh workq 2 ...
71.batch batch 2 ...
72 a.sh workq 2 ...
72.batch batch 2 ...
[illya@slurm-client sample]$
}}
となった.
より詳しく
#code(nonumber){{
[illya@slurm-client sample]$ sacct -o User,JobID,Partitio...
User JobID Partition NNodes S...
--------- ------------ ---------- -------- --------------...
illya 71 workq 1 2022-12-29T01:...
illya 72 workq 1 2022-12-29T01:...
[illya@slurm-client sample]$
}}
「sacct -o」の中で使える項目は「sacct --helpformat」で見...
#code(nonumber){{
[illya@slurm-client sample]$ sacct --helpformat
Account AdminComment AllocCPUS ...
AllocTRES AssocID AveCPU ...
AveDiskRead AveDiskWrite AvePages ...
AveVMSize BlockID Cluster ...
Constraints ConsumedEnergy ConsumedEnergyRaw...
(略
[illya@slurm-client sample]$
}}
***ジョブ制限を掛けてみる [#e8884f2a]
原則として、まずユーザはどっかの「Account」に参加する必要...
ユーザ1人の「Account」、複数ユーザが参加した「Account」...
この「Account」でジョブ実行に制限が掛けられる.
「Account」とその構成員は「sacctmgr list account」で確認...
#code(nonumber){{
[root@slurm ~]# sacctmgr list account
Account Descr Org
---------- -------------------- --------------------
root default root account root
[root@slurm ~]#
}}
となっていて、初期状態ではrootというAccountの中に所属はro...
っでユーザには役が定義づけられている
#code(nonumber){{
[root@slurm ~]# sacctmgr list user format=User,DefaultAcc...
User Def Acct Admin
---------- ---------- --------------------
root root Administrator
[root@slurm ~]#
}}
役目の項目「Admin」としては「AdminLevel」で「none」「Oper...
っで「Account」を作る
#code(nonumber){{
sacctmgr -i add account saber --> Accou...
sacctmgr -i add user saber Account=saber --> ユー...
}}
「-i」は「--immediate」で確認なしで実行します
っで肝心な制限ですが、ここでは「最大10個のジョブは同時実...
#code(nonumber){{
sacctmgr -i modify account saber set MaxJobs=10
sacctmgr -i modify account name=saber set GrpTRES=gres/gp...
sacctmgr -i modify user saber set Fairshare=1
(確認)
[root@slurm ~]# sacctmgr show assoc user=saber format=Use...
User Account MaxJobs GrpTRES Share
---------- ---------- ------- ------------- ---------
saber saber 10 gres/gpu=10 1
[root@slurm ~]#
}}
あと「最近たくさん使った人ほど優先度が下がる仕組み」を入...
「/opt/slurm/etc/slurm.conf」に下記を加える
#code(nonumber){{
AccountingStorageEnforce=associations,limit # Accountに...
PriorityType=priority/multifactor # ジョブの...
PriorityWeightFairshare=1000 # 最近たく...
PriorityWeightTRES=CPU=0,Mem=0,GRES/gpu=1000 # GPU使用枚...
PriorityWeightAge=100 # この値が...
PriorityDecayHalfLife=7-0 # 過去の使...
}}
***ジョブ制限を掛けてみる(その2) [#ybb509d3]
全部のAccoutに MaxJobs や GrpTRES を個別に定義するのでは...
一般ユーザ向けのQOS, パワーユーザ向けのQOS, 無制限のQOS ...
-qos-general
3同時実行で3枚までGPUを利用可能。ジョブ1つに1枚のGPUな...
-qos-power
6同時実行で6枚までGPUを利用可能。ジョブ1つに1枚のGPUな...
-qos-unlimited
制限なし
っでそのQOSを用意してみる
#code(nonumber){{
(qos-general)
sacctmgr -i add qos qos-general MaxJobsPerUser=3 MaxTR...
(qos-power)
sacctmgr -i add qos qos-power MaxJobsPerUser=10 MaxTR...
(qos-unlimited)
sacctmgr -i add qos qos-unlimited --> 「Flags=OverPartQO...
[確認]
sacctmgr list qos format=Name%15,MaxTRESPU,MaxJobsPU,MaxS...
Name MaxTRESPU MaxJobsPU MaxSubmitPU ...
--------------- ------------- --------- ----------- -----...
normal ...
qos-general gres/gpu=3 3 ...
qos-power gres/gpu=10 10 20 ...
qos-unlimited
}}
作ったQOSをまずは「/opt/slurm/etc/slurm.conf」のパーティ...
#code(nonumber){{
PartitionName=workq Nodes=ALL Default=YES MaxTime=INFINIT...
AccountingStorageEnforce=associations,limits,qos ...
}}
ここで「scontrol reconfig」で反映させる
そして個別にアカウントを設けてそこにユーザを加えて
#code(nonumber){{
sacctmgr -i add account ac-saber description="Account of...
sacctmgr -i add user saber Account=ac-saber
(確認)
sacctmgr show association format=User,Account,QOS,Defaul...
}}
っで「ac-saber」にQOSの「qos-general」を割り当てる
#code(nonumber){{
sacctmgr -i modify account ac-saber set QOS=qos-general ...
(代わりにQOSの「qos-power」を割り当てるなら
sacctmgr -i modify account ac-saber set QOS=qos-power ...
(代わりにQOSの「qos-power」を割り当てるなら
sacctmgr -i modify account ac-saber set QOS=qos-unlimited...
}}
とします
QOSに優先度を設けられる
#code(nonumber){{
sacctmgr modify qos qos-general set Priority=100
sacctmgr modify qos qos-power set Priority=200
sacctmgr modify qos qos-unlimited set Priority=300
}}
でPriorityの数字が高い方が優先される. でも実際にはslurm.c...
終了行:
ジョブの履歴、投入時刻、計算終了時刻、成功/失敗、実行者ら...
「Account」を作ってそれをposixユーザにアサインしてチーム...
加えて同時実行可能ジョブの数を制限することもできます。特...
このaccountingを利用するには 追加パッケージ slurmdbd と M...
参照先[[https://gist.github.com/DaisukeMiyamoto/d1dac9483...
&size(10){単に利用状況の可視化なら[[XDMoD]]とかで};
***MariaDB の準備 [#k4db0f68]
MariaDBをどこに設置するか.
-管理ノード(slurmノード)内にslurmdbdを設置して、そこにDB...
-管理ノード内にslurmdbdを設置するが、DBは別の場所(ノード)...
-管理ノードとは別のノードにslurmdbdを設置して、そこにDBも...
-管理ノードとは別のノードにslurmdbdを設置して、DBも別の場...
とかでしょうか.
ここでは「管理ノードとは別のノードにslurmdbdを設置して、...
ディストリビューター様のパッケージを使います. &size(10){R...
#code(nonumber){{
[root@slurmdbd ~]# cat /etc/redhat-release
Rocky Linux release 9.7 (Blue Onyx)
[root@slurmdbd ~]# dnf install mariadb-server
[root@slurmdbd ~]# systemctl enable mariadb --now
(確認)
[root@slurmdbd ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.29-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab ...
Type 'help;' or '\h' for help. Type '\c' to clear the cur...
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
MariaDB [(none)]> \q
Bye
[root@slurmdbd ~]#
}}
全くの初期状態である.
これにデータベース「slurm_acct_db」を作って、そのデータベ...
slurmを作ります. &size(10){データベース内アカウントでOSア...
#code(nonumber){{
[root@slurmdbd ~]# mysql
(database作成)
MariaDB [(none)]> create database slurm_acct_db;
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| slurm_acct_db |
+--------------------+
(databaseアクセスユーザの作成)
MariaDB [(none)]> create user 'slurm'@'localhost' identif...
MariaDB [(none)]> select user,host from mysql.user;
+-------+-----------+
| user | host |
+-------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| root | localhost |
| slurm | localhost | <-- 作られたユーザ
| root | slurmdbd |
+-------+-----------+
MariaDB [(none)]>
(権限付与)
MariaDB [(none)]> grant all on slurm_acct_db.* TO 'slurm'...
MariaDB [(none)]> FLUSH PRIVILEGES;
}}
あと微調整 &size(10){[[https://slurm.schedmd.com/accounti...
#code(diff,nonumber){{
--- /etc/my.cnf.d/mariadb-server.cnf.orig 2023-10-1...
+++ /etc/my.cnf.d/mariadb-server.cnf 2024-11-03 00:33:...
@@ -18,6 +18,10 @@
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
+innodb_buffer_pool_size=4096M
+innodb_log_file_size=64M
+innodb_lock_wait_timeout=900
+max_allowed_packet=16M
#
}}
として
#code(nonumber){{
[root@slurmdbd ~]# systemctl restart mariadb
}}
***接続テスト [#jaa85f71]
#code(nonumber){{
[root@slurmdbd ~]# mysql -u slurm -h localhost -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.35-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab ...
Type 'help;' or '\h' for help. Type '\c' to clear the cur...
MariaDB [(none)]> quit
Bye
[root@slurmdbd ~]#
}}
と接続は上手く行った
***slurm-slurmdbdパッケージのインストールとmunge.keyの受...
[[slurm/rpm]にて作成したパッケージを入れます
#code(nonumber){{
(同じRockyLinux8の管理ノードslurmから)
[root@slurm ~]# scp rpmbuild/RPMS/x86_64/slurm-22.05.7-1....
[root@slurmdbd ~]# groupadd -g 5000 slurm
[root@slurmdbd ~]# useradd -M -d /var/lib/slurm -s /sbin/...
[root@slurmdbd ~]# dnf localinstall slurm-22.05.7-1.el8.x...
(管理ノードslurmからslurm.keyのコピー)
[root@slurm ~]# scp /opt/slurm/etc/slurm.key slurmdbd:/op...
[root@slurmdbd ~]# chown slurm. /opt/slurm/etc/slurm.key
}}
***接続設定 [#c67a2b8d]
管理ノードとは別のノードに slurmDBD を設置したので、管理...
#code(nonumber){{
[root@slurm ~]# vi /opt/slurm/etc/slurm.conf
(略)
AccountingStorageType=accounting_storage/slurmdbd
AccountingStorageHost=slurmdbd # slurmctldと同居なら...
#AccountingStorageExternalHost= # 単一クラスターのslu...
AccountingStoragePort=6819
AccountingStoreFlags=job_comment # slurm が slurmdbd ...
# AccountingStoreFlag...
}}
次にslurmDBDノードでの設定ファイルを作る
ジョブの実況状態を残すアーカイブ機能がありますが、テキス...
むしろデータベースに入れて置いて、そこで解析した方が楽っ...
なので書き出しはしない方向です
#code(nonumber){{
[root@slurmdbd ~]# mkdir /opt/slurm/etc
[root@slurmdbd ~]# vi /opt/slurm/etc/slurmdbd.conf
##
SlurmUser=slurm # slurmdbd をユーザ slurm で動かします
##
## Archiving DBに溜まったジョブ情報はファイルにアーカイブ...
ArchiveJobs=no # ジョブの基本情報(ジョブID,ユーザ、開...
ArchiveEvents=no # ジョブ内の詳細ステップ
ArchiveSteps=no # クラスターの出来事(計算ノードのダウ...
ArchiveResvs=no # 予約(Reservation)の情報
ArchiveSuspend=no # ジョブの中断・再開(Suspend/Resume)...
ArchiveTXN=no # データベースの操作履歴(Transaction)
ArchiveUsage=no # リソース使用量の集計データ(Rollup)
#ArchiveDir= # ArchiveJobs=yesならその保存先、平文...
# Authentication info
AuthType=auth/slurm # mungeではなくslurm独自の認証で動き...
#
# slurmDBD info
DbdHost=slurmdbd # slurmDBDが動いているサイト
DbdPort=6819 # slurmDBDの接続port
DebugLevel=info # slurmDBDのログレベル
LogFile=/var/log/slurm/slurmdbd.log # ログファイルの場所
PidFile=/run/slurmdbd/slurmdbd.pid
# db purge mysql/mariaDBに溜まるデータをいつの時点でpurge...
# 重要なデータは1年保持
PurgeJobAfter=18months
PurgeUsageAfter=18months
PurgeTXNAfter=18months
PurgeEventAfter=18months
PurgeResvAfter=18months
# 重くなりやすい詳細データは短めに
PurgeStepAfter=14days
PurgeSuspendAfter=14days
# Database info
# データの保管場所
StorageType=accounting_storage/mysql
StorageHost=localhost # mysqlで作成した '...
StorageUser=slurm
StoragePass=SLURM
StorageLoc=slurm_acct_db
[root@slurmdbd ~]#
[root@slurmdbd ~]# echo "D /run/slurmdbd 0755 slurm slurm...
[root@slurmdbd ~]# /usr/bin/systemd-tmpfiles --create /us...
}}
あと、データベース接続のためのパスワードが平文で入ってい...
#code(nonumber){{
[root@slurmdbd ~]# chmod 600 /opt/slurm/etc/slurmdbd.conf
[root@slurmdbd ~]# chown slurm. /opt/slurm/etc/slurmdbd.c...
[root@slurmdbd ~]# mkdir /var/log/slurm/archive ; chown s...
}}
***firewall [#b7a1fdad]
#code(nonumber){{
[root@slurmdbd ~]# firewall-cmd --add-port=6819/tcp --zon...
[root@slurmdbd ~]# firewall-cmd --reload
}}
***起動 [#z1a57c9d]
#code(nonumber){{
[root@slurmdbd ~]# systemctl enable slurmdbd.service --now
}}
起動順番的には mariadb(データベース) -> slurmdbd(課金ノー...
「&color(magenta){mysql_db_insert_ret_id: We should have ...
あるいは
「&color(magenta){error: Problem getting jobs for cluster...
って言われたら、これは slurm_acct_db に cluster=cluster ...
#code(nonumber){{
[root@slurm ~]# sacctmgr list cluster
Cluster ControlHost ControlPort RPC Share G...
---------- --------------- ------------ ----- --------- -...
[root@slurm ~]#
}}
と何もないのが原因で、slurm.confの「ClusterName=cluster」...
#code(nonumber){{
[root@slurm ~]# sacctmgr add cluster cluster
Adding Cluster(s)
Name = cluster
Would you like to commit changes? (You have 30 seconds to...
(N/y): y
[root@slurm ~]#
(確認)
[root@slurm ~]# sacctmgr list cluster
[root@beluga ~]# sacctmgr list cluster
Cluster ControlHost ControlPort RPC Share G...
---------- --------------- ------------ ----- --------- -...
cluster 127.0.0.1 6817 11264 1 ...
[root@slurm ~]#
}}
その後に slurmdbd と slurmctld を再起動.
もし再起動後しても動かない場合、「journalctl -u slurmctld...
#code(nonumber){{
systemd[1]: Started Slurm controller daemon.
slurmctld[296198]: [2026-03-07T12:29:22.221] accountin...
slurmctld[296198]: [2026-03-07T12:29:22.228] fatal: CL...
slurmctld[296198]: slurmctld has been started with "Cl...
slurmctld[296198]: Running multiple clusters from a sh...
slurmctld[296198]: Remove /var/spool/slurm/ctld/cluste...
systemd[1]: slurmctld.service: Main process exited, co...
systemd[1]: slurmctld.service: Killing process 296261 ...
systemd[1]: slurmctld.service: Failed with result 'exi...
}}
となら、「slurmctld: ClusterID=1371」で「slurmdbd : Clust...
#code(nonumber){{
rm /var/spool/slurm/ctld/clustername
systemctl restart slurmctld
}}
で修復可能
***accounting 動作確認 [#n1398054]
クライアントノード(slurm-client)で
#code(nonumber){{
[illya@slurm-client ~]$ sacct
JobID JobName Partition Account AllocCPUS ...
------------ ---------- ---------- ---------- ---------- ...
[illya@slurm-client ~]$ sacctmgr list cluster
Cluster ControlHost ControlPort RPC Share G...
---------- --------------- ------------ ----- --------- -...
cluster 0 0 1 ...
[illya@slurm-client ~]$
}}
ジョブを流した後
#code(nonumber){{
[illya@slurm-client sample]$ sacct
JobID JobName Partition Account AllocCPUS ...
------------ ---------- ---------- ---------- ---------- ...
71 a.sh workq 2 ...
71.batch batch 2 ...
[illya@slurm-client sample]$
}}
sleepを含ませたjobを流したら
#code(nonumber){{
[illya@slurm-client sample]$ sacct
JobID JobName Partition Account AllocCPUS ...
------------ ---------- ---------- ---------- ---------- ...
71 a.sh workq 2 ...
71.batch batch 2 ...
72 a.sh workq 2 ...
72.batch batch 2 ...
[illya@slurm-client sample]$
}}
となった.
より詳しく
#code(nonumber){{
[illya@slurm-client sample]$ sacct -o User,JobID,Partitio...
User JobID Partition NNodes S...
--------- ------------ ---------- -------- --------------...
illya 71 workq 1 2022-12-29T01:...
illya 72 workq 1 2022-12-29T01:...
[illya@slurm-client sample]$
}}
「sacct -o」の中で使える項目は「sacct --helpformat」で見...
#code(nonumber){{
[illya@slurm-client sample]$ sacct --helpformat
Account AdminComment AllocCPUS ...
AllocTRES AssocID AveCPU ...
AveDiskRead AveDiskWrite AvePages ...
AveVMSize BlockID Cluster ...
Constraints ConsumedEnergy ConsumedEnergyRaw...
(略
[illya@slurm-client sample]$
}}
***ジョブ制限を掛けてみる [#e8884f2a]
原則として、まずユーザはどっかの「Account」に参加する必要...
ユーザ1人の「Account」、複数ユーザが参加した「Account」...
この「Account」でジョブ実行に制限が掛けられる.
「Account」とその構成員は「sacctmgr list account」で確認...
#code(nonumber){{
[root@slurm ~]# sacctmgr list account
Account Descr Org
---------- -------------------- --------------------
root default root account root
[root@slurm ~]#
}}
となっていて、初期状態ではrootというAccountの中に所属はro...
っでユーザには役が定義づけられている
#code(nonumber){{
[root@slurm ~]# sacctmgr list user format=User,DefaultAcc...
User Def Acct Admin
---------- ---------- --------------------
root root Administrator
[root@slurm ~]#
}}
役目の項目「Admin」としては「AdminLevel」で「none」「Oper...
っで「Account」を作る
#code(nonumber){{
sacctmgr -i add account saber --> Accou...
sacctmgr -i add user saber Account=saber --> ユー...
}}
「-i」は「--immediate」で確認なしで実行します
っで肝心な制限ですが、ここでは「最大10個のジョブは同時実...
#code(nonumber){{
sacctmgr -i modify account saber set MaxJobs=10
sacctmgr -i modify account name=saber set GrpTRES=gres/gp...
sacctmgr -i modify user saber set Fairshare=1
(確認)
[root@slurm ~]# sacctmgr show assoc user=saber format=Use...
User Account MaxJobs GrpTRES Share
---------- ---------- ------- ------------- ---------
saber saber 10 gres/gpu=10 1
[root@slurm ~]#
}}
あと「最近たくさん使った人ほど優先度が下がる仕組み」を入...
「/opt/slurm/etc/slurm.conf」に下記を加える
#code(nonumber){{
AccountingStorageEnforce=associations,limit # Accountに...
PriorityType=priority/multifactor # ジョブの...
PriorityWeightFairshare=1000 # 最近たく...
PriorityWeightTRES=CPU=0,Mem=0,GRES/gpu=1000 # GPU使用枚...
PriorityWeightAge=100 # この値が...
PriorityDecayHalfLife=7-0 # 過去の使...
}}
***ジョブ制限を掛けてみる(その2) [#ybb509d3]
全部のAccoutに MaxJobs や GrpTRES を個別に定義するのでは...
一般ユーザ向けのQOS, パワーユーザ向けのQOS, 無制限のQOS ...
-qos-general
3同時実行で3枚までGPUを利用可能。ジョブ1つに1枚のGPUな...
-qos-power
6同時実行で6枚までGPUを利用可能。ジョブ1つに1枚のGPUな...
-qos-unlimited
制限なし
っでそのQOSを用意してみる
#code(nonumber){{
(qos-general)
sacctmgr -i add qos qos-general MaxJobsPerUser=3 MaxTR...
(qos-power)
sacctmgr -i add qos qos-power MaxJobsPerUser=10 MaxTR...
(qos-unlimited)
sacctmgr -i add qos qos-unlimited --> 「Flags=OverPartQO...
[確認]
sacctmgr list qos format=Name%15,MaxTRESPU,MaxJobsPU,MaxS...
Name MaxTRESPU MaxJobsPU MaxSubmitPU ...
--------------- ------------- --------- ----------- -----...
normal ...
qos-general gres/gpu=3 3 ...
qos-power gres/gpu=10 10 20 ...
qos-unlimited
}}
作ったQOSをまずは「/opt/slurm/etc/slurm.conf」のパーティ...
#code(nonumber){{
PartitionName=workq Nodes=ALL Default=YES MaxTime=INFINIT...
AccountingStorageEnforce=associations,limits,qos ...
}}
ここで「scontrol reconfig」で反映させる
そして個別にアカウントを設けてそこにユーザを加えて
#code(nonumber){{
sacctmgr -i add account ac-saber description="Account of...
sacctmgr -i add user saber Account=ac-saber
(確認)
sacctmgr show association format=User,Account,QOS,Defaul...
}}
っで「ac-saber」にQOSの「qos-general」を割り当てる
#code(nonumber){{
sacctmgr -i modify account ac-saber set QOS=qos-general ...
(代わりにQOSの「qos-power」を割り当てるなら
sacctmgr -i modify account ac-saber set QOS=qos-power ...
(代わりにQOSの「qos-power」を割り当てるなら
sacctmgr -i modify account ac-saber set QOS=qos-unlimited...
}}
とします
QOSに優先度を設けられる
#code(nonumber){{
sacctmgr modify qos qos-general set Priority=100
sacctmgr modify qos qos-power set Priority=200
sacctmgr modify qos qos-unlimited set Priority=300
}}
でPriorityの数字が高い方が優先される. でも実際にはslurm.c...
ページ名:
1