天天看点

阿里云超算集群报表:高效管理计算资源

弹性高性能计算(E-HPC)基于阿里云基础设施,为用户提供公共云之上的HPC服务。与传统HPC有限计算资源不同的是,E-HPC通过利用云的弹性可以做到资源的动态伸缩,从而根据实时的作业负载情况调整硬件计算资源,自动优化用户的成本资源。

集群管理员最为关心的应该是集群计算资源的利用率。传统超算往往是自建机房,一旦落成,核时数就随着时间线性增长。相较于传统超算的“静态”资源,云上的“动态”资源调度就显得更加灵活。尤其是配合Spot实例,可以帮助用户大大地降低成本。为了更加直观地获取这些“动态”资源的使用情况,E-HPC的报表功能就呼之欲出了。

E-HPC报表简介

E-HPC报表通过整合用户的作业执行情况,结合用户集群的硬件资源配置,分别从用户、队列和实例维度进行统计,将计算资源的利用率直观地呈现给用户,帮助用户更好地进行计算资源的划分和调度,提升计算节点的利用率,降低成本。

总览

阿里云超算集群报表:高效管理计算资源

上图是从用户角度呈现集群的总体利用率,右侧是指定用户在查询时间内已完成的作业。此时如果发现集群的空闲率较高,就可以考虑将空闲节点分配给利用率高(计算需求大)的用户,或者可以将部分空闲节点释放,降低计算资源的浪费。如上图,userNo1的利用率约为16%,userNo2的利用率约为12%,而集群的空闲率约为71%。如果此时userNo1或者userNo2有很多等待资源的排队作业,用户就可以将空闲节点暂时划分给两个用户,加大他们的资源数量,缩短作业处理周期。

手动进行资源编排来提升利用率是管理“静态”资源的有效方式,但是“动态”资源还有更有效的方式,就是E-HPC的自动伸缩。不同于手动调整资源,自动伸缩可以自行帮助用户进行计算节点的申请和释放。因此当集群中没有排队作业,但仍有空闲节点时,自动伸缩将会按照用户配置的规则来决定如何释放空闲节点,从而降低集群中节点的空置率。当集群中有等待计算资源的排队作业时,自动伸缩就可以动态的根据作业负载和用户配置的策略来扩容,快速处理作业。

下图就是从节点维度呈现自动伸缩管理节点的使用情况。横轴是时间,图中每个实例的长度表示当前实例的生命周期。实例的生命周期是从实例创建成功开始,到实例被释放或者查询结束时间为止。如果用户开启自动伸缩,节点维度的报表就可以清楚呈现扩容实例的生命周期,用户可以据此来调整自己的配置,避免不必要的浪费。

阿里云超算集群报表:高效管理计算资源

例如,上图中compute002、compute004-008节点均是由自动伸缩创建的,可以看到这些节点的实际利用率约为44%。右侧是实例compute004上运行的作业详细信息。两者比对我们发现异常:作业运行结束至该实例释放用时约8分钟。这段时间内实例没有任何负载,一直处于空闲状态,因此应该被压缩。我们可以在自动伸缩的配置中减小释放实例的查询次数和每轮的查询时间,从而加速空闲实例的释放。

主要架构

目前E-HPC已支持包括PBS Pro、Deadline和Slurm等8种调度器。为了适配不同的调度器,我们对报表功能进行模块化设计,从而提升其兼容性。如下图所示。

阿里云超算集群报表:高效管理计算资源
数据采集

我们在用户集群的管理节点通过定时查询的方式获取作业的相关执行情况,并存储在用户管控节点的数据库中。由于不同的调度器对历史作业的保留方式不同,因此需要针对不同的调度器进行不同的处理。例如PBS Pro会维护一个作业日志文件并定期更新数据;Deadline调度器需要使用GetJobDetails手动获取历史作业信息。因此我们在用户的管控节点设置一个定时任务从调取器中获取历史作业信息并记录在数据库中。

数据处理

由于作业信息中不包含实例的具体配置,并且作业之间是离散的,因此我们结合管控端存储的实例信息来计算集群的核时比。并且从用户、队列和实例维度分别统计,从而更加直观地帮助用户了解查询时间内集群的使用情况。

数据呈现

前端主要是响应用户的请求,并且将管控端的计算结果呈现给用户。

总结

E-HPC报表旨在帮助用户更加直观的了解掌握集群的使用情况,从而更好的进行资源调度,提升计算节点的利用率,降低成本。并且通过报表的数据呈现,也可以帮助我们量化E-HPC缩扩容时的额外开销,推动我们不断优化缩扩容流程,为用户提供更好的服务!