Skip to main content

Hermes

Distributed buffering across deep memory and storage hierarchies
Lifecycle
Active
Period
2018–Present

Hermes presents DRAM, NVMe, burst buffers, and parallel file systems as one distributed I/O buffering hierarchy. Its adapters intercept application I/O, while a placement engine selects tiers according to device performance and available capacity. The HPDC'18 paper reports more than 2x improvement over the buffering platforms evaluated. Hermes established the tiered data-management foundation later extended by IOWarp.

The Problem​

Fast storage tiers can absorb bursts of application I/O, but each tier exposes different performance and capacity. Applications otherwise have to decide what to place on each device and when to move it. Hermes moves those decisions into middleware and coordinates the hierarchy as a shared buffering platform.

Research Contributions​

Multi-Tiered Buffering Architecture (HPDC'18)​

The HPDC'18 paper describes four data placement policies:

  • Maximum Application Bandwidth (MaxBW), the default, places data in the highest possible tier, balancing bandwidth, latency, and capacity, and moves data down asynchronously to free space.
  • Maximum Data Locality spreads data across all tiers at the same time according to a data dispersion unit, such as HDF5 chunks or files.
  • Hot-data keeps frequently accessed data in the fast tiers as a cache.
  • User-defined applies a buffering schema that the user supplies.

Hermes combines distributed metadata tracking with communication over RDMA-capable networks, and also runs on systems without RDMA.

Hermes project contributions: advance HDF5 buffering, facilitate agile architecture, enhance caching and prefetching, support scientific applications
Hermes combines tiered buffering with caching, prefetching, and application interfaces.

Hierarchical Data Prefetching: HFetch (IPDPS'20)​

HFetch pushes data through the hierarchy from the server side using file-access frequency and block recency. The IPDPS'20 paper reports 10 to 35% higher performance than the prefetchers evaluated and more than 50% over no prefetching. The JCST'20 journal article describes its integration with Hermes.

Hierarchical Compression: HCompress (IPDPS'20)​

HCompress selects compression methods for each tier, balancing capacity savings against CPU cost. The IPDPS'20 paper reports 7x improvement over the tiered storage solutions evaluated.

Adaptive Data Replication: HReplica (BigData'20)​

HReplica selects replication, compression, and storage tiers together. The BigData'20 paper reports 5.2x higher application performance than the replication schemes evaluated.

Multi-Tiered Data Eviction (SC'19)​

Multi-tiered eviction policies select both the data to evict and its destination when a tier reaches capacity.

Architecture​

Hermes organizes each machine around three resource classes:

Hermes architecture: distributed compute nodes with RAM, NVMe tiers connected to burst buffer nodes and parallel file system
Hermes organizes node-local, shared, and remote storage as one buffering hierarchy.
  • Node-local resources: DRAM and local NVMe or SSD devices.
  • Shared resources: burst buffers available across compute nodes.
  • Remote storage: disk-based parallel file systems such as Lustre and GPFS.

Vertical paths move data among local tiers. Horizontal paths coordinate data across nodes through shared storage. Each node runs a Hermes core with RDMA-capable communication and a multithreaded node manager.

Hermes node design: dedicated core, RDMA communication, multithreaded Node Manager with RAM, NVMe, and buffer pool
Each node runs a Hermes core with RDMA communication and a multithreaded node manager.

Component Design​

Hermes is a C++ middleware library that applications load through recompilation or LD_PRELOAD. Adapters support POSIX, HDF5, and MPI-IO. Optional hints provide application knowledge to the placement engine.

Hermes component stack: POSIX/HDF5/MPI-IO interfaces, Data Placement Engine, Prefetcher, Metadata Manager, Data Organizer, Cache Manager
POSIX, HDF5, and MPI-IO adapters connect applications to placement, metadata, caching, and prefetching services.
Hermes component features: API, Data Placement Engine, Data Organizer, Prefetcher, Cache Manager, Metadata Manager, Messaging Service, I/O Clients, Application Orchestrator, System Profiler
Hermes components span application interfaces, placement, metadata, messaging, and storage services.

Performance Results​

Library Evaluation​

Hermes library evaluation: I/O throughput across storage tiers
Hermes buffering library I/O throughput evaluation
Hermes metadata management scalability
Metadata management scalability across distributed nodes
Hermes inter-node communication performance
Inter-node communication fabric performance

The HPDC'18 evaluation measures raw I/O throughput, metadata scalability, and inter-node communication.

Workload Evaluation​

Hermes alternating compute-I/O workload results
Alternating compute-I/O workload
Hermes repetitive read workload results
Repetitive read workload
Hermes VPIC application benchmark results
VPIC particle-in-cell simulation
Hermes HACC cosmology simulation benchmark results
HACC cosmology simulation

The evaluation also covers alternating compute-I/O, repetitive reads, VPIC, and HACC, with buffering interposed without application code changes.

Research Lineage and Software​

Hermes's buffering architecture supports subsequent work in IOWarp, Coeus, and ChronoLog.

Hermes v1.2.1 (opens in a new tab) preserves the published system as a public release.

National Science Foundation

This material is based upon work supported by the National Science Foundation under Grant No. OAC-1835764. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.