SLURM 报告内存消耗

问题描述 投票:0回答:1

我试图了解一个简单的作业消耗多少内存(基于这个Python脚本)。我在分配了不同数量的核心的单个工作线程上运行相同的脚本。

这个小测试的结果是:

$ sacct -j 875,876,877,878,879,880 --format=JobID,reqcpus,elapsed,MaxRSS,maxvmsize
JobID         ReqCPUS    Elapsed     MaxRSS  MaxVMSize
------------ -------- ---------- ---------- ----------
875                 1   00:03:24
875.batch           1   00:03:24     33584K    254884K
876                 2   00:01:52
876.batch           2   00:01:52     43560K    274124K
877                 4   00:01:09
877.batch           4   00:01:09     66672K    311580K
878                 8   00:00:38
878.batch           8   00:00:38    111636K    385468K
879                16   00:00:20
879.batch          16   00:00:20      1308K     79660K
880                32   00:00:11
880.batch          32   00:00:11      1488K     79792K

这基本上没问题,我希望如果我使用更多核心,时间会更短。我不太明白的是为什么 MaxRSS 和 MaxVMSize 随着核心数量的增加而增加,但随后突然下降。

有人知道这是怎么回事吗?

linux resources slurm hpc
1个回答
0
投票

内存使用量会随着 CPU 数量的增加而增加,这是预料之中的,因为

multiprocessing
包依赖于 forking,在 Python 上下文中,由于引用计数,它在大多数情况下都会重复内存,并且 multiprocessing
默认情况下,通过 
pickling 信息和发送数据副本来管理内存共享。

ReqCPUS>8

时它减少的事实很可能是由于Slurm以采样间隔计算内存使用量,默认情况下是

30
(用
scontrol show config|grep JobAcctGatherFrequency
检查)似乎在你的情况下,用
ReqCPUS>8 
Elapsed
<30s
,因此您最终会得到在作业开始时进行的内存测量,并不代表实际使用情况。
    

© www.soinside.com 2019 - 2024. All rights reserved.