The last few years have seen an increase in adoption of the cloud for running HPC applications. The pay-as-you-go cost model of these cloud resources has necessitated the development of specialized programming models and schedulers for HPC jobs for efficient utilization of cloud resources. A key aspect of efficient utilization is the ability to rescale applications on the fly to maximize the utilization of cloud resources. Most commonly used parallel programming models like MPI have traditionally not supported autoscaling either in a cloud environment or on supercomputers. While more recent work has been done to implement this functionality in MPI, it is still nascent and requires additional programmer effort. Charm++ is a parallel programming model that natively supports dynamic rescaling through its migratable objects paradigm. In this paper, we present a Kubernetes operator to run Charm++ applications on a Kubernetes cluster. We then present a priority-based elastic job scheduler that can dynamically rescale jobs based on the state of a Kubernetes cluster to maximize cluster utilization while minimizing response time for high-priority jobs. We show that our elastic scheduler, with the ability to rescale HPC jobs with minimal overhead, demonstrates significant performance improvements over traditional static schedulers.
翻译:近年来,采用云平台运行高性能计算(HPC)应用的情况日益增多。这些云资源按需付费的成本模式,催生了针对HPC作业的专用编程模型与调度器的开发,以实现云资源的高效利用。高效利用的一个关键方面是能够动态调整应用规模,以最大化云资源利用率。传统上,最常用的并行编程模型(如MPI)无论是在云环境还是超级计算机上,均不支持自动扩缩容功能。尽管近期已有研究工作在MPI中实现此功能,但其仍处于起步阶段,且需要额外的程序员投入。Charm++ 是一种通过其可迁移对象范式原生支持动态重调度的并行编程模型。本文提出了一种在 Kubernetes 集群上运行 Charm++ 应用的 Kubernetes Operator。随后,我们介绍了一种基于优先级的弹性作业调度器,该调度器能够根据 Kubernetes 集群的状态动态调整作业规模,在最大化集群利用率的同时,最小化高优先级作业的响应时间。实验表明,我们的弹性调度器能够以极低的开销对HPC作业进行重调度,相比传统的静态调度器,其性能有显著提升。