Slurmのトラブルシューティング

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.confNodeAdrr=の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
よかったらシェアしてね!
目次