使用 slurm 显示已用 CPU 小时

Display used CPU hours with slurm

我在使用 slurm 处理作业的超级计算机上有一个用户帐户。

我想知道我在这台超级计算机上消耗的总时间CPU。我认为这是一个可以理解的问题,因为每个项目只有有限的 CPU 小时可用。我很惊讶答案并不容易找到。

我知道有所有这些命令,如 sacct、sreport、sshare 等...但似乎没有一个简单的命令可以显示已用 CPU 小时。

有人可以帮我吗?

正如其他人评论的那样,sacct 应该为您提供该信息。您将需要查看手册页以获取有关过去工作的信息。您可以指定 --starttime 和 --endtime 来限制您的查询以匹配您的分配 ends/renews。 -l 选项应该为您提供比您需要更多的信息,因此您可以通过使用 --format 指定您需要的内容来获得更小的选项集。

在您的例子中,正确的答案是询问管理员。您已获得分配的时间。他们可能有一个系统可以显示您的余额,您可以将余额与 sacct 的输出进行核对。此外,如果您使用的系统具有不同的节点类型,例如高内存、GPU、MIC 或旧的,他们可能会对这些资源收取不同的费用。

您可以通过以下方式大致了解已用 CPU 小时:

sacct -SYYYY-mm-dd -u username -ojobid,start,end,alloccpu,cputime | column -t

您可以计算总记账单位(我们系统中的 SBU)乘以 CPUTime 乘以 AllocCPU,这意味着将总(系统+用户)CPU 时间乘以CPU 的使用量。

一个例子:

    JobID         NodeList         State       Start                End                  AllocCPUS   CPUTime
------------  ---------------  ----------  -------------------  -------------------  ----------  ----------
6328552       tcn[595-604]     CANCELLED+  2019-05-21T14:07:57  2019-05-23T16:48:15  240         506-17:12:00
6328552.bat+  tcn595           CANCELLED   2019-05-21T14:07:57  2019-05-23T16:48:16  24          50-16:07:36
6328552.0     tcn[595-604]     FAILED      2019-05-21T14:10:37  2019-05-23T16:48:18  240         506-06:44:00
6332520       tcn[384,386,45+  COMPLETED   2019-05-23T16:06:04  2019-05-24T00:26:36  72          25-00:38:24
6332520.bat+  tcn384           COMPLETED   2019-05-23T16:06:04  2019-05-24T00:26:36  24          8-08:12:48
6332520.0     tcn[384,386,45+  COMPLETED   2019-05-23T16:06:09  2019-05-24T00:26:33  60          20-20:24:00
6332530       tcn[37,41,44,4+  FAILED      2019-05-23T17:11:31  2019-05-25T09:13:34  240         400-08:12:00
6332530.bat+  tcn37            FAILED      2019-05-23T17:11:31  2019-05-25T09:13:34  24          40-00:49:12
6332530.0     tcn[37,41,44,4+  CANCELLED+  2019-05-23T17:11:35  2019-05-25T09:13:34  240         400-07:56:00

字段显示在 manpage 中。它们可以显示为 -oOPTION(小写或适当的 POSIX 表示法 --format='Option,AnotherOption...'(列表在 man 中)。

到目前为止一切顺利。但这里有一个很大的警告:

您在这里看到的内容非常适合了解您拥有什么 运行 或在 CPU / 小时方面的期望。但这不一定反映你的真实预算状态,因为很多情况下每个节点/分区可能有一个额外的参数,权重,这是一个用于核算目的的参数集,而不是一部分咕噜咕噜。例如,GPU 节点的权重值可能为 x3,这意味着出于预算目的,每个 GPU/hour 被测量为 3 个 SBU 而不是 1 个。我的意思是说,您可以使用 sacct 来了解 CPU 时间,但这不一定反映您还有多少 SBU 学分。