KnowHow

技術的なメモを中心にまとめます。
検索にて調べることができます。

SLURMでCPU時間、GPU時間を取得する方法

登録日 :2026/01/18 09:25
カテゴリ :SLURM

SLURM + cgroup 連携環境では、CPU 時間・GPU 使用時間(正確には利用量)を取得できます。
ただし、CPU と GPU では取得方法・粒度・前提条件が異なります。以下で実務的に整理します。

1. CPU 時間を取得する方法(確実・標準)

1.1 sacct(最も一般的・推奨)

前提

AccountingStorageType=accounting_storage/slurmdbd
JobAcctGatherType=jobacct_gather/cgroup

slurmdbd が正常稼働

基本コマンド

sacct -j <JOBID> --format=JobID,Elapsed,CPUTime,TotalCPU

代表的な CPU 関連項目
項目 | 意味
Elapsed | 実時間(壁時計時間)
CPUTime | CPUTime = Elapsed × 割当 CPU 数
TotalCPU | 実際に消費した CPU 時間(user+system)
UserCPU | ユーザ空間 CPU 時間
SystemCPU | カーネル空間 CPU 時間

sacct -j 12345 --format=JobID,Elapsed,TotalCPU,UserCPU,SystemCPU

cgroup を使っている場合、この値はかなり正確です。

1.2 seff(ユーザ向け簡易表示)

seff

出力例(抜粋):

CPU Utilized: 02:13:45
CPU Efficiency: 93.21% of 02:24:00 core-walltime

内部的には sacct を使用
ユーザ教育用に非常に便利

2. GPU 使用時間を取得する方法(注意点あり)

結論を先に

SLURM は「GPU を何秒使ったか」を直接は持ちません。
代わりに以下を取得します:

  • GPU 割当量(GPU×時間)
  • GPU メモリ使用量(最大値)
  • GPU 使用率(平均 / 最大)※設定次第

2.1 SLURM 標準:Gres + TRES による取得(必須)

前提設定

# slurm.conf
GresTypes=gpu
AccountingStorageTRES=gres/gpu

確認コマンド

sacct -j <JOBID> --format=JobID,Elapsed,AllocTRES

例:

AllocTRES=cpu=8,mem=32G,gres/gpu=2

GPU 数 × 実行時間 = GPU 使用量(GPU-hours)
これは課金・配分用途では事実上の「GPU 時間」です。

2.2 GPU メモリ・使用率(やや高度)

設定が必要

# slurm.conf
JobAcctGatherType=jobacct_gather/cgroup
JobAcctGatherFrequency=30

GPU プラグイン(例:NVIDIA):

# gres.conf
Name=gpu Type=nvidia File=/dev/nvidia0

取得例

sacct -j <JOBID> --format=JobID,MaxRSS,ReqTRES,AllocTRES

一部環境では:

sacct -j <JOBID> --format=JobID,GRES,MaxRSS

※ GPU 使用率(%)は SLURM 単体では限定的
※ 詳細な GPU 利用率は NVIDIA 側のログと組み合わせるのが一般的

2.3 NVIDIA 環境での実務的手法(現場でよく使われる)

ジョブ内で nvidia-smi を定期取得

nvidia-smi --query-gpu=timestamp,utilization.gpu,utilization.memory \
           --format=csv -l 30 > gpu_usage.log &

→ ジョブ終了後に 実 GPU 使用時間・使用率を算出可能

3. cgroup と CPU / GPU 取得の関係整理

資源 cgroup の役割 SLURM で取得可能な指標
CPU 使用コア・時間を正確に計測 TotalCPU, UserCPU
メモリ 実使用量を制限・計測 MaxRSS
GPU 利用デバイス制限 GPU 割当量(TRES)
GPU 使用率 cgroup では不可 外部ツール併用

4. よくある誤解

❌「GPU を 2 時間使った」という 実時間
⭕「GPU を 2 枚 × 1 時間使った(2 GPU-hours)」 ← SLURM が得意

5. 推奨される実務構成(まとめ)

最低限(必須)

  • cgroup 有効
  • slurmdbd 稼働
  • sacct / seff 利用

  • GPU クラスタでの現実解

  • SLURM:割当 GPU-hours 管理
  • 実使用率:nvidia-smi 併用

参考

  1. 定義(公式的な意味)
    項目 | 意味
    ReqTRES | ジョブが 要求した Trackable RESources
    AllocTRES | SLURM が 実際に割り当てた Trackable RESources