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 併用
参考
- 定義(公式的な意味)
項目 | 意味
ReqTRES | ジョブが 要求した Trackable RESources
AllocTRES | SLURM が 実際に割り当てた Trackable RESources