Table of Contents
Fetching ...

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.

ARC-V: Vertical Resource Adaptivity for HPC Workloads in Containerized Environments

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.
Paper Structure (15 sections, 5 figures, 1 table)

This paper contains 15 sections, 5 figures, 1 table.

Figures (5)

  • Figure 1: A high-level overview of how resource allocation for tasks in high-performance systems (HPC) and cloud systems generally works. In the former, allocations are static even if the resources are not fully used, while the latter displays a degree of flexibility for changing the allocations on execution time.
  • Figure 2: Memory consumption pattern of all applications listed in Section \ref{['sec:apps']}. The recommendation given by the Vertical Pod Autoscaler is also shown. The data has a sampling time of 5 seconds.
  • Figure 3: A depiction of the high-level design of the ARC-V autoscaler.
  • Figure 4: On left, the ratios between the values of memory footprint and execution time of VPA and the ARC-V policy. On right, a depiction of how the VPA simulator works: every time the recommendation is lower than the actual usage, the application needs to restart with 20% more memory.
  • Figure 5: Example cases of ARC-V defining the memory limits for applications that are dominated mostly by a certain pattern. In the LULESH and LAMMPS cases, the starting values are higher than the actual consumption and not displayed in the plot for scaling purposes. The starting values in this plot are exaggerated (in comparison to the experiments done in Figure \ref{['fig:arcv_vs_vpa']}) for display purposes.