Slurmのリソース監視機能を使ったメモリ使用量の確認法

Slurmはcgroupを利用して各ジョブが使用するリソースを監視しています。リソースデータは30秒ごとに取得されます。ジョブ実行完了後に,

$ seff ジョブID

を実行してください。ジョブIDはジョブ投入時に標準出力される「Submitted batch job 」の後に表示されている数列です。

デフォルトの設定では30秒毎にデータを取得するので,30秒以内で計算が終わる場合やジョブ実行中に短い時間でメモリ使用量が増減する場合は,ジョブのメモリ使用量を正確に求めることができません。 データ取得間隔はユーザが変更可能です。ジョブスクリプトに

#SBATCH --acctg-freq=??

を挿入し,「??」に希望するデータ取得間隔(単位:秒)を入れて下さい。最小の時間間隔は1秒です。このパラメータを1秒にしたとしても,1秒未満でメモリ使用量が変動する場合は正確な測定ができない可能性がありますのでご注意ください。

格子数512^3のメッシュ法を使用し,64並列(1ノード)で計算したジョブにおけるseffコマンドの出力を以下に示します。「--acctg-freq=1」に設定した結果です。


Job ID: ??????
Cluster: xd2000
User/Group: ?????/user
State: COMPLETED (exit code 0)
Nodes: 1
Cores per node: 64
CPU Utilized: 00:11:23
CPU Efficiency: 71.15% of 00:16:00 core-walltime
Job Wall-clock time: 00:00:15
Memory Utilized: 68.78 GB (estimated maximum)
Memory Efficiency: 62.53% of 110.00 GB (110.00 GB/node)

「Memory Utilized」の後の数値がジョブで使用された最大の総メモリ使用量です。この計算では68.78GiB (=74GB) が使用されています(注:seffの結果では、メモリ量の単位はGBと表示されていますが、GiBを意味しています。)。一方,システムMの1ノードに搭載されたメモリは128GBですので,同じ解像度での計算はシステムM1ノードで実行可能です。

格子幅を半分にする場合は,メモリ使用量がおおよそ2^3倍(約590 GB)となり,システムMの1ノードでは計算を実行できなくなります。その場合は以下の選択肢をご検討ください。

  • システムMを8ノード利用する(1ノード当たり64並列の場合。カテゴリAへの申請が必要)。
  • システムPを2ノード利用する(1ノード当たり64並列の場合)。