ARC-V: Vertical Resource Adaptivity for HPC Workloads in Containerized Environments
Daniel Medeiros, Jeremy J. Williams, Jacob Wahlgren, Leonardo Saud Maia Leite, Ivy Peng
TL;DR
This work addresses the challenge of memory provisioning for containerized HPC workloads in cloud-like environments, where traditional vertical autoscalers designed for cloud apps can waste resources or trigger OOM errors due to HPC’s dynamic memory usage and tight MPI coupling. It introduces ARC-V, a reactive memory-adaptive policy with a three-state model (Growing, Dynamic, Stable), memory-signal driven transitions, in-flight resource updates, and swap awareness, implemented and evaluated against a Kubernetes VPA baseline. The authors provide a VPA simulator, implement ARC-V in Python, and test nine HPC proxy applications with diverse memory patterns, showing substantial memory savings and fewer OOM events while incurring modest overhead. The results demonstrate that ARC-V can significantly improve memory efficiency and resiliency for HPC workloads on Kubernetes, enabling more efficient multi-tenant use of containerized HPC resources in cloud environments.
Abstract
Existing state-of-the-art vertical autoscalers for containerized environments are traditionally built for cloud applications, which might behave differently than HPC workloads with their dynamic resource consumption. In these environments, autoscalers may create an inefficient resource allocation. This work analyzes nine representative HPC applications with different memory consumption patterns. Our results identify the limitations and inefficiencies of the Kubernetes Vertical Pod Autoscaler (VPA) for enabling memory elastic execution of HPC applications. We propose, implement, and evaluate ARC-V. This policy leverages both in-flight resource updates of pods in Kubernetes and the knowledge of memory consumption patterns of HPC applications for achieving elastic memory resource provisioning at the node level. Our results show that ARC-V can effectively save memory while eliminating out-of-memory errors compared to the standard Kubernetes VPA.
