Argo NodeOS: Toward Unified Resource Management for Exascale Swann Perarnau∗, Judicael A. Zounmevo∗, Matthieu Dreher∗, Brian C. Van Essen‡, Roberto Gioiosa†, Kamil Iskra∗, Maya B. Gokhale‡, Kazutomo Yoshii∗, Pete Beckman∗ ∗Argonne National Laboratory. fswann,
[email protected], fiskra, kazutomo, beckmangmcs.anl.gov,
[email protected] †Pacific Northwest National Laboratory.
[email protected] ‡Lawrence Livermore National Laboratory. fvanessen1,
[email protected] Abstract—Exascale systems are expected to feature hundreds of shared resources on the node (CPU, memory, NIC, etc.) using thousands of compute nodes with hundreds of hardware threads multiplexing techniques such as time sharing and swapping, and complex memory hierarchies with a mix of on-package and which may be disruptive to many HPC workloads, to coarsely persistent memory modules. In this context, the Argo project is developing a new operating partitioning those numerous resources and bundling them system for exascale machines. Targeting production workloads together in an integrated fashion through a unified interface— using workflows or coupled codes, we improve the Linux kernel containers. Lightweight runtimes [2], [3], forming part of on several fronts. We extend the memory management of Linux comprehensive parallel programming frameworks, will then to be able to subdivide NUMA memory nodes, allowing better be given exclusive control of resources to perform custom resource partitioning among processes running on the same node. We also add support for memory-mapped access to node-local, redistribution according to their knowledge of the application PCIe-attached NVRAM devices and introduce a new scheduling and its inner parallelism. Such an approach ensures a more class targeted at parallel runtimes supporting user-level load deterministic execution and noticeably lower overheads.