kuroの覚え書き

96の個人的覚え書き

Slurmでノードのstateがdrainedになってしまうとき

サブシステムをクラスタ化しようとしてちょっとハマった。
メインシステムはほぼ同じスペックで各ノード256GBメモリを積んでおり、特に問題なくSlurmがインストールできて

NODELIST       NODES PARTITION       STATE CPUS    S:C:T MEMORY TMP_DISK WEIGHT AVAIL_FE REASON              
node3-a6      1     work*        idle 48     1:24:2 256000        0      1   (null) none                
node4-a6      1     work*        idle 48     1:24:2 256000        0      1   (null) none                
node5-a6      1     work*        idle 48     1:24:2 256000        0      1   (null) none

こんな感じ。
ところが寄せ集めのサブシステムではなんだかうまくいかず、

NODELIST       NODES PARTITION       STATE CPUS    S:C:T MEMORY TMP_DISK WEIGHT AVAIL_FE REASON              
node6-x2110      1     work*     drained 8       1:4:2  32000        0      1   (null) Low RealMemory      
node7-r620        1     work*        idle 32      2:8:2  96000        0      1   (null) none                

このようにLowRealMemoryというエラーがついてstateがdrainedとなってしまう。
問題のノードの実メモリ

$ cat /proc/meminfo 
MemTotal:       32583320 kB
MemFree:        31144288 kB
MemAvailable:   31471072 kB
Buffers:            4664 kB
Cached:           686380 kB
SwapCached:            0 kB
Active:           177208 kB
Inactive:         918404 kB
Active(anon):       2884 kB
Inactive(anon):   425188 kB
Active(file):     174324 kB
Inactive(file):   493216 kB
Unevictable:       25072 kB
Mlocked:           21984 kB
SwapTotal:       8241148 kB
SwapFree:        8241148 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        411780 kB
Mapped:           235504 kB
Shmem:             19008 kB
KReclaimable:      53572 kB
Slab:             124156 kB
SReclaimable:      53572 kB
SUnreclaim:        70584 kB
KernelStack:        7296 kB
PageTables:        23696 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    24532808 kB
Committed_AS:    2863272 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       84148 kB
VmallocChunk:          0 kB
Percpu:             5248 kB
HardwareCorrupted:     0 kB
AnonHugePages:    116736 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      202340 kB
DirectMap2M:     6031360 kB
DirectMap1G:    27262976 kB

ということで32GBなので32000 (MB)として/etc/slurm/slurm.confで

# COMPUTE NODES
NodeName=node6-x2110 CPUs=8 Sockets=1 CoresPerSocket=4 ThreadsPerCore=2 RealMemory=32000 State=UNKNOWN
NodeName=node7-r620 CPUs=32 Sockets=2 CoresPerSocket=8 ThreadsPerCore=2 RealMemory=96000 State=UNKNOWN
PartitionName=work Nodes=ALL OverSubscribe=FORCE Default=YES MaxTime=INFINITE State=UP

というふうに設定したのだが。

slurmd -Cというコマンドでどういうふうに認識されているかを見る方法があるということなので

$ slurmd -C
NodeName=node6-x2110 CPUs=8 Boards=1 SocketsPerBoard=1 CoresPerSocket=4 ThreadsPerCore=2 RealMemory=31819
UpTime=0-00:53:14

おやおや?31819と認識されているよ?

ってことで実際に載せているメモリよりちょっと小さめに設定しておくのが吉らしい。
RealMemory=30000
としてやり、

$ sudo systemctl stop slurmctld
$ sudo systemctl stop slurmd
$ sudo systemctl start slurmd
$ sudo systemctl start slurmctld

さらに

$ sudo scontrol reconfigure
$ sudo scontrol update nodename=node6-x2110 state=resume

としてやってようやく

$ sinfo -N -l

NODELIST       NODES PARTITION       STATE CPUS    S:C:T MEMORY TMP_DISK WEIGHT AVAIL_FE REASON              
node6-x2110      1     work*     idle 8       1:4:2  30000        0      1   (null) none                
node7-r620       1     work*     idle 32      2:8:2  95000        0      1   (null) none 

無事使えるようになった。