ジョブの履歴、投入時刻、計算終了時刻、成功/失敗、実行者らを記録する
「アカウント」を作ってそれをposixユーザにアサインしてチームでの課金とかが図れるっぽい

なくてもslurmは使えます. だがあるともっと便利になるかもね. XDMoDが使えるみたい. ただしXDMoDが要求するDBはMySQL8.0は未サポート

このaccountingを利用するにはslurm.confにて「AccountingStorageType=accounting_storage/slurmdbd」とする必要がある.
つまりはデータベース MariaDB が必要になります

参照先https://gist.github.com/DaisukeMiyamoto/d1dac9483ff0971d5d9f34000311d312

MariaDB の準備

MariaDBをどこに設置するか.

とかでしょうか.

ここでは「管理ノードとは別のノードにslurmdbdを設置して、そこにDBも置く」で作ってみる.

ディストリビューター様のパッケージを使います. RockyLinux8.6で提供される MariaDB は 10.3.35 である. MySQLでは 5.7系 に相当

[root@slurmdbd ~]# cat /etc/redhat-release
Rocky Linux release 8.6 (Green Obsidian)
 
[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 8
Server version: 10.3.35-MariaDB MariaDB Server
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
 
MariaDB [(none)]> \q
Bye
[root@slurmdbd ~]#

全くの初期状態である.

これにデータベース「slurm_acct_db」を作って、そのデータベースにアクセス可能なユーザとして
slurmを作ります. データベース内アカウントでOSアカウントではないです っで管理ノードからこのslurmを使ってアクセスする想定です

[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' identified by 'SLURM';
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'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;

あと微調整 https://slurm.schedmd.com/accounting.html

--- /etc/my.cnf.d/mariadb-server.cnf.orig       2022-09-13 17:23:01.000000000 +0900
+++ /etc/my.cnf.d/mariadb-server.cnf    2022-12-30 06:46:23.649058607 +0900
@@ -18,6 +18,9 @@
 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
 
 
 #

として

[root@slurmdbd ~]# systemctl restart mariadb

接続テスト

[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 and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]> quit
Bye
[root@slurmdbd ~]#

と接続は上手く行った

slurm-slurmdbdパッケージのインストールとmunge.keyの受領

slurm/nodeにて作成したパッケージを入れます

(同じRockyLinux8の管理ノードslurmから)
[root@slurm ~]# scp rpmbuild/RPMS/x86_64/slurm-22.05.7-1.el8.x86_64.rpm rpmbuild/RPMS/x86_64/slurm-slurmdbd-22.05.7-1.el8.x86_64.rpm slurmdbd:
 
[root@slurmdbd ~]# groupadd -g 5001 munge && useradd -d /var/lib/munge -s /bin/bash -u 5001 -g munge munge
[root@slurmdbd ~]# dnf localinstall slurm-22.05.7-1.el8.x86_64.rpm slurm-slurmdbd-22.05.7-1.el8.x86_64.rpm
(同時に munge がインストールされます)
 
(管理ノードslurmからmunge.keyのコピー)
[root@slurm ~]# scp /etc/munge/munge.key slurmdbd:/etc/munge/
 
[root@slurmdbd ~]# chown munge. /etc/munge/munge.key  &&   systemctl enable munge --now

接続設定

管理ノードとは別のノードに slurmDBD を設置したので、管理ノードのslurmにslurmDBDの場所を伝える必要がある

[root@slurm ~]# vi /opt/slurm/etc/slurm.conf
(略)
AccountingStorageType=accounting_storage/slurmdbd
AccountingStorageHost=slurmdbd
AccountingStorageExternalHost=slurmdbd
AccountingStoragePort=6819

次にslurmDBDノードでの設定ファイルを作る

[root@slurmdbd ~]# mkdir /opt/slurm/etc
[root@slurmdbd ~]# vi /opt/slurm/etc/slurmdbd.conf
##
## Archive info
ArchiveEvents=yes
ArchiveJobs=yes
ArchiveResvs=yes
ArchiveSteps=no
ArchiveSuspend=no
ArchiveTXN=no
ArchiveUsage=no
 
# Authentication info
AuthType=auth/munge
AuthInfo=/var/run/munge/munge.socket.2
#
# slurmDBD info
DbdHost=slurmdbd
DbdPort=6819
DebugLevel=info
PurgeEventAfter=1month
PurgeJobAfter=12month
PurgeResvAfter=1month
PurgeStepAfter=1month
PurgeSuspendAfter=1month
PurgeTXNAfter=12month
PurgeUsageAfter=24month
LogFile=/var/log/slurm/slurmdbd.log
SlurmUser=slurm
#
# Database info
StorageType=accounting_storage/mysql
StorageUser=slurm
StoragePass=SLURM
StorageLoc=slurm_acct_db
[root@slurmdbd ~]#

あと、データベース接続のためのパスワードが平文で入っているので 0600 にします. それと所有者を変更します. あとログの配置場所も用意します.

[root@slurmdbd ~]# chmod 600 /opt/slurm/etc/slurmdbd.conf
[root@slurmdbd ~]# chown slurm. /opt/slurm/etc/slurmdbd.conf
 
[root@slurmdbd ~]# mkdir /var/log/slurm; chown slurm. /var/log/slurm

firewall

[root@slurmdbd ~]# firewall-cmd --add-port=6819/tcp --zone=public --permanent
[root@slurmdbd ~]# firewall-cmd --reload

起動

[root@slurmdbd ~]# systemctl enable slurmdbd.service --now

起動順番的には mariadb(データベース) -> slurmdbd(課金ノード)/slurmd(計算ノード) -> slurmctld(管理ノード) って感じかな.

mysql_db_insert_ret_id: We should have gotten a new id: Table 'slurm_acct_db.cluster_job_table' doesn't exist」って言われたら

[root@slurmdbd ~]# /opt/slurm/bin/sacctmgr
sacctmgr: add cluster cluster
sacctmgr: quit
[root@slurmdbd ~]#

とします。「add cluster」で「cluster」を登録してます。この「cluster」は「/opt/slurm/etc/slurm.conf」にある「ClusterName」の値になります
その後に slurmdbd と slurmctld を再起動かな.

accounting 動作確認

クライアントノード(slurm-client)で

[illya@slurm-client ~]$ sacct
JobID           JobName  Partition    Account  AllocCPUS      State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
[illya@slurm-client ~]$

ジョブを流した後

[illya@slurm-client sample]$ sacct
JobID           JobName  Partition    Account  AllocCPUS      State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
71                 a.sh      workq                     2  COMPLETED      0:0
71.batch          batch                                2  COMPLETED      0:0
[illya@slurm-client sample]$

sleepを含ませたjobを流したら

[illya@slurm-client sample]$ sacct
JobID           JobName  Partition    Account  AllocCPUS      State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
71                 a.sh      workq                     2  COMPLETED      0:0
71.batch          batch                                2  COMPLETED      0:0
72                 a.sh      workq                     2    RUNNING      0:0
72.batch          batch                                2    RUNNING      0:0
[illya@slurm-client sample]$

となった.
より詳しく

[illya@slurm-client sample]$ sacct -o User,JobID,Partition,NNodes,Submit,Start,End,Elapsed,State -X
     User JobID         Partition   NNodes              Submit               Start                 End    Elapsed      State
--------- ------------ ---------- -------- ------------------- ------------------- ------------------- ---------- ----------
    illya 71                workq        1 2022-12-29T01:32:25 2022-12-29T01:32:25 2022-12-29T01:32:29   00:00:04  COMPLETED
    illya 72                workq        1 2022-12-29T01:33:36 2022-12-29T01:33:36 2022-12-29T01:34:25   00:00:49  COMPLETED
[illya@slurm-client sample]$

「sacct -o」の中で使える項目は「sacct --helpformat」で見える

[illya@slurm-client sample]$ sacct --helpformat
Account             AdminComment        AllocCPUS           AllocNodes
AllocTRES           AssocID             AveCPU              AveCPUFreq
AveDiskRead         AveDiskWrite        AvePages            AveRSS
AveVMSize           BlockID             Cluster             Comment
Constraints         ConsumedEnergy      ConsumedEnergyRaw   Container
(略
[illya@slurm-client sample]$
最新の60件
2023-12-06 2023-12-05 2023-11-30 2023-11-27 2023-11-21 2023-11-19 2023-11-18 2023-11-14 2023-11-10 2023-11-09 2023-11-05 2023-11-03 2023-10-31 2023-10-30 2023-10-26 2023-10-24 2023-10-19 2023-10-16 2023-10-15 2023-10-12 2023-10-11 2023-10-09 2023-10-03 2023-10-02 2023-09-30 2023-09-29 2023-09-26 2023-09-24 2023-09-19 2023-09-18 2023-09-17 2023-09-16 2023-09-14 2023-09-12 2023-09-11 2023-09-08 2023-09-05 2023-09-02 2023-08-30 2023-08-29

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-09-11 (月) 12:29:40