引入亚马逊云科技并行计算服务的管理会计

作者: Ramin Torabi, Nick Ihli, Tarun Mathur |

这篇文章由亚马逊云科技的 Ramin Torabi 和 Tarun Mathur 以及 SchedMD 的 Nick Ihli 撰写。

亚马逊云科技并行计算服务 (PCS) 是一项托管服务,可让您更轻松地使用 Slurm 在亚马逊云科技上运行和扩展高性能计算 (HPC) 工作负载。运行 HPC 集群的组织希望监控资源利用率,强制执行资源限制,并管理对用户和项目的特定容量的访问控制。他们想了解集群中"谁做了什么",以进行领导报告、能力规划和预算编制。PCS 现在支持记账,这是一项 Slurm 功能,可以在集群中进行这些活动。PCS 管理集群的会计数据库,因此您不必设置和管理单独的会计数据库。

在这篇文章中,我们将向你展示它是如何工作的,并向你介绍一些你可以自己尝试的实际用例。

设置

按照以下步骤在 PCS 中启用记账:

  1. 使用 Slurm 24.11 或更高版本创建新的 PCS 集群,选择启用记账功能,并配置可选的记账参数,如图 1 所示。
  2. 集群状态变为 Active 后,验证是否启用了记账功能,并在集群详细信息控制台页面中查看配置的参数。
  3. 按此处所述配置并连接到登录节点,并使用根账户执行记账命令。
图 1 —

图 1 — "创建集群" 控制台体验,您可以在其中启用和配置记账。

用例 1:项目的属性用法

组织希望了解每个项目或部门的资源使用情况,以便他们可以在内部对相关的成本中心进行退款。为此,他们需要跟踪和归因不同级别的使用情况。图 2 中的一个场景:

  1. 使用 sacctmgr 功能创建 3 个用户,创建账户 proj_chemistryproj_physics,并将用户添加到账户。"账户"是用于对用户进行分组和管理的组织单位。
  2. 每位用户提交一份归因于带有 –account= <account_name> 旗帜的 proj_physics 账号的任务。
  3. 通过使用 sacct 函数查找会计数据,验证这些任务是否归因于正确的账户 proj_physics。
  4. 验证 user1 是否是两个账户 proj_physicsproj_chemistry 的成员。
图 2 — 项目归因工作流程示例。

图 2 — 项目归因工作流程示例。

用例 2:强制执行限制

组织希望对特定的用户或项目设置限制,这样一方就不会囤积资源。一个场景:

  1. 使用该命令为特定用户设置 6000 个 CPU 分钟(100 个 CPU 小时)的限制 sacctmgr modify user username set GrpTRESRunMins=cpu=6000
  2. 运行图 3 中的验证,检查限制设置是否正确。
  3. 假设用户已经使用了 95 个 CPU 小时,然后尝试提交超出其配额的作业:sbatch --cpus-per-task=10 --time=1:00:00 myjob.sh。此任务请求 10 个 CPU,持续 1 小时,这将消耗 10 个 CPU 小时,超过用户配额中剩余的 5 个 CPU 小时。
  4. 作业提交将失败,用户将在图 4 中看到错误。
  5. 然后,用户可以提交一份较小的任务,比如 4 个 CPU 小时,只要符合剩余配额,该任务就会被接受:sbatch --cpus-per-task=2 --time=2:00:00 smalljob.sh
图 3 — 用于确定限值的示例检查设置正确。

图 3 — 用于确定限值的示例检查设置正确。

图 4 — 由于提交的作业超出用户限制而导致的错误输出示例。

图 4 — 由于提交的作业超出用户限制而导致的错误输出示例。

用例 3:生成使用情况报告

组织希望使用情况报告摘要来评估其资源利用率并规划未来的容量分配。一个场景:

  1. 使用命令查询过去一周在集群中运行的所有作业 sacct --starttime=$(date -d "7 days ago" +%Y-%m-%d) –format= JobID, User, JobName, Partition, Account, AllocCPUS, State, ExitCode
  2. 图 5 中的示例输出显示了每个作业提交的唯一 jobId、提交作业的用户、提交作业的分区(队列)、使用了多少 CPU 来运行该作业以及该作业的状态。分析这些数据以确定集群中的更广泛趋势。请注意,大多数提交的任务都已完成,但作业 1236 失败,作业 1238 被取消,作业 1240 是一项分配了 16 个 CPU 的大型正在运行的作业。
  3. 使用命令查询一个月内的使用率 sreport cluster AccountUtilizationByUser start=2025-04-01 end=2025-04-30 -t percent format= Accounts, Login, Proper, Used
  4. 图 6 中的示例输出显示了按项目和用户划分的集群利用率。分析这些趋势,确定对用户和账户分配策略的调整。确定本月 user1 囤积 project_a01 42% 的资源是否公平。
  5. 使用命令查询上个月排名靠前的用户 sreport user topusage start=2025-03-01 end=2025-03-31
  6. 图 7 中的示例输出按集群中 CPU 分钟数列出了排名靠前的用户。请注意,user1 仍然是上个月最大的用户。
图 5 — 使用 sacct 命令的每周工作报告。

图 5 — 使用 sacct 命令的每周工作报告。

图 6 — 使用 sreport 命令生成每月群集利用率报告。

图 6 — 使用 sreport 命令的每月群集利用率报告。

图 7 — 使用 sreport 命令报告每月热门用户。

图 7 — 使用 sreport 命令进行每月顶级用户报告。

用例 4:识别工作问题

个人用户希望使用情况报告摘要来识别和修复作业故障。一个场景:

  1. 用户使用命令检查过去一周失败的作业 sacct -u username --starttime=$(date -d "7 days ago" +%Y-%m-%d) --format=JobID, JobName, State, ExitCode, Start, End, MaxRSS, MaxVMSize, Comment
  2. 图 8 中的示例输出可帮助用户识别两个任务由于高内存使用率而失败,第三个作业由于内存使用率更高(使用了 2800MB)而成功。
  3. 用户查看 cnn_test 和 bert_run 的作业脚本,并找出根本原因——脚本请求的内存不足。然后,用户可以评估是否要修改脚本以请求足够的内存并重新提交这两个作业。
图 8 — 使用 sacct 命令的特定用户的每周作业失败报告。

图 8 — 使用 sacct 命令的特定用户的每周作业失败报告。

有关更多记账用例,请参阅 sacctmgr、sacct 和 sreport 命令的 SchedMD 文档。

定价

启用记账将产生两项额外费用——每小时的会计使用费,该费用因所选集群控制器大小而异,另一种是按月增量计费的会计存储费。会计使用费是在集群上启用记账时计费的,会计存储费用根据存储的会计记录数量进行扩展(可通过文档中说明的默认清除时间参数进行配置)。更多详情请见 PCS 定价页面。

结论

在这篇文章中,我们展示了如何利用亚马逊云科技并行计算服务中的管理会计功能来监控集群上的集群使用情况。立即访问亚马逊云科技 PCS 管理控制台开始吧。告诉我们你的想法!



拉明·托拉比

Ramin Torabi

拉明·托拉比是亚马逊云科技的高级专家 HPC 解决方案架构师。他帮助中欧的客户围绕 HPC 设计解决方案。他在 HPC 和 CAE 领域拥有超过 15 年的经验,尤其是在汽车、航空航天和其他制造行业。拉明获得了 "dr. rer. nat"。2009 年获得达姆施塔特工业大学理论核结构物理学博士学位。

Nick Ihli

Nick Ihli

尼克·伊利是 SchedMD 的解决方案工程总监。他专注于 HPC 调度器已有 20 年了,特别是在云端运行 Slurm 方面拥有专业知识。他喜欢在 HPC 和 AI 环境中使用 Slurm 帮助客户提高效率。当他不说 Slurm 时,你可以看到他在足球场或篮球场上执教青少年。

塔伦·马图尔

Tarun Mathur

Tarun Mathur 是亚马逊云科技的一名产品经理,负责高性能计算和科学计算。他的目标是让运行 HPC 工作负载的客户在亚马逊云科技上获得流畅的编排体验。工作之余,他喜欢巴西柔术、登山和寻找最好的屋顶酒吧。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。