Slurmのインストールや運用では,しばしばエラーに遭遇します.
その度に調査するのは時間がかかるため,遭遇したエラーとその解決内容をまとめておきます.
目次
トラブルシューティング具体例
slurmd: error: Node configuration differs from hardware: …
エラー内容
計算ノード設定にCPUの構成を記述していない場合のエラー.
slurm.conf
...
NodeName=head State=UNKNOWN
...
/usr/sbin/slurmd -D -s $SLURMD_OPTIONS
slurmd: error: Node configuration differs from hardware: CPUs=1:4(hw) Boards=1:1(hw) SocketsPerBoard=1:4(hw) CoresPerSocket=1:1(hw) ThreadsPerCore=1:1(hw)
解決策
CPUs=
を記述します.
...
NodeName=head CPUs=4 State=UNKNOWN
...
CPU数などの情報は,下記コマンドで確認可能です.
slurmd -C
NodeName=head CPUs=4 Boards=1 SocketsPerBoard=4 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=7917
UpTime=0-00:15:33
error: cgroup namespace ‘freezer’ not mounted. aborting
エラー内容
/usr/sbin/slurmd -D -s $SLURMD_OPTIONS
slurmd: CPU frequency setting not configured for this node
slurmd: error: cgroup namespace 'freezer' not mounted. aborting
slurmd: error: unable to create freezer cgroup namespace
slurmd: error: Couldn't load specified plugin name for proctrack/cgroup: Plugin init() callback failed
slurmd: error: cannot create proctrack context for proctrack/cgroup
slurmd: error: slurmd initialization failed
ProctrackType=proctrack/cgroup
となっているのが原因でした.
slurm.conf
...
ProctrackType=proctrack/cgroup
...
解決策
- ProctrackType=proctrack/cgroup
+ ProctrackType=proctrack/linuxproc
sinfo -N
で”STATE”がdown
sinfo -N
NODELIST NODES PARTITION STATE
head 1 ALL* down
正常な設定であれば,下記コマンドで更新することで解消できます.
scontrol update nodename=head state=resume
sinfo -N
NODELIST NODES PARTITION STATE
head 1 ALL* idle
sinfo -N
で”STATE”がdown*
sinfo -N
NODELIST NODES PARTITION STATE
head 1 ALL* down*
down
ではなく,down*
となっている場合は,ネットワークなど根本的な部分で不具合が生じている場合が多いです.
この時の原因は,/etc/slurm/slurm.conf
のNodeAdrr=
のIPアドレスが間違っていました.
slurm_load_partitions: Zero Bytes were transmitted or received
sinfo -N
でslurm_load_partitions: Zero Bytes were transmitted or received
sinfo -N
slurm_load_partitions: Zero Bytes were transmitted or received
NTPなどで時刻を同期する必要があります.
slurmdbd.service関連
Condition check resulted in Slurm DBD accounting daemon being skipped.
systemctl status slurmdbd.service
○ slurmdbd.service - Slurm DBD accounting daemon
Loaded: loaded (/lib/systemd/system/slurmdbd.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Condition: start condition failed at Wed 2022-07-27 23:24:02 JST; 5s ago
└─ ConditionPathExists=/etc/slurm/slurmdbd.conf was not met
Docs: man:slurmdbd(8)
/etc/slurm/slurmdbd.conf
を作成します.
fatal: slurmdbd.conf file /etc/slurm/slurmdbd.conf should be 600 is 644 accessible for group or others
アクセス権限が問題のため,600に変更します.
chmod 600 /etc/slurm/slurmdbd.conf
fatal: slurmdbd.conf not owned by SlurmUser root!=slurm
ファイルの所有者をSlurmUser
で設定したユーザにします.今回の場合,ユーザはslurmになります.
chown slurm /etc/slurm/slurmdbd.conf
error: Database settings not recommended values: innodb_buffer_pool_size innodb_lock_wait_timeout
DBに設定値が推奨値を与える必要があります.
公式の推奨値は以下の通りです.
- innodb_buffer_pool_size: RAMの5-50%程度
- innodb_log_file_size: デフォルト値(96MiB)よりも大きめの値
- innodb_lock_wait_timeout: デフォルト値(50)よりも大きめの値
デフォルト値は下記のように確認できます.
MariaDB [(none)]> show variables like 'innodb_buffer_pool_size';
+-------------------------+-----------+
| Variable_name | Value |
+-------------------------+-----------+
| innodb_buffer_pool_size | 134217728 |
+-------------------------+-----------+
1 row in set (0.001 sec)
MariaDB [(none)]> show variables like 'innodb_log_file_size';
+----------------------+-----------+
| Variable_name | Value |
+----------------------+-----------+
| innodb_log_file_size | 100663296 |
+----------------------+-----------+
1 row in set (0.001 sec)
MariaDB [(none)]> show variables like 'innodb_lock_wait_timeout';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50 |
+--------------------------+-------+
1 row in set (0.001 sec)
例として,次のように設定ファイル(/etc/mysql.my.cnf
)を書き換えます.
/etc/mysql/my.cnf
...
[mysqld]
innodb_buffer_pool_size = 4096M
innodb_log_file_size = 128M
innodb_lock_wait_timeout = 900
...
ファイル編集後にその設定をデータベースに反映させます.
systemctl restart mariadb.service
slurmdbd: error: We should have gotten a new id: Table ‘slurm_acct_db.cluster_job_table’ doesn’t exist
sacctmgr add cluster cluster
Adding Cluster(s)
Name = cluster
Would you like to commit changes? (You have 30 seconds to decide)
(N/y): y
systemctl restart slurmd.service slurmdbd.service