使用 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 学分。
我在使用 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 学分。