SCS Lab has transitioned into Gnosis Research Center (GRC). This website is archived. Please visit the new website at https://grc.iit.edu.
develop your own website

Hermes

Extending the HDF Library to Support
Intelligent I/O Buffering for Deep Memory and Storage Hierarchy Systems
(NSF OCI-1835764)
https://github.com/hdfgroup/hermes

Background

Today's multi-tiered
environments demonstrate:

Complex data placement among the tiers of a deep memory and storage hierarchy

1) Lack of automated data movement between tiers, is now left to the users.
2) Lack of intelligent data placement in the DMSH.

Independent management of each tier of the DMSH

1) Lack of expertise from the user.
2) Lack of existing software for managing tiers of heterogeneous buffers.
3) Lack of native buffering support in HDF5.

Deep memory and storage hierarchy (DMSH) systems requires:

1


Efficient and transparent data movement through the hierarchy

2


New data placement algorithms

3


Effective memory and metadata management,

4


An efficient communication fabric.

Hermes Project Synopsis

Modern high performance computing (HPC) applications generate massive amounts of data. However, the performance improvement of disk based storage systems has been much slower than that of memory, creating a significant Input/Output (I/O) performance gap. To reduce the performance gap, storage subsystems are under extensive changes, adopting new technologies and adding more layers into the memory/storage hierarchy. With a deeper memory hierarchy, the data movement complexity of memory systems is increased significantly, making it harder to utilize the potential of the deep memory and storage hierarchy (DMSH) design.

 As we move towards the exascale era, I/O bottleneck is a must to solve performance bottleneck facing the HPC community. DMSHs with multiple levels of memory/storage layers offer a feasible solution but are very complex to use effectively. Ideally, the presence of multiple layers of storage should be transparent to applications without having to sacrifice I/O performance. There is a need to enhance and extend current software systems to support data access and movement transparently and effectively under DMSHs.

Hierarchical Data Format (HDF) technologies are a set of current I/O solutions addressing the problems in organizing, accessing, analyzing, and preserving data. HDF5 library is widely popular within the scientific community. Among the high level I/O libraries used in DOE labs, HDF5 is the undeniable leader with 99% of the share. HDF5 addresses the I/O bottleneck by hiding the complexity of performing coordinated I/O to single, shared files, and by encapsulating general purpose optimizations. While HDF technologies, like other existing I/O middleware, are not designed to support DMSHs, its wide popularity and its middleware nature make HDF5 an ideal candidate to enable, manage, and supervise I/O buffering under DMSHs. 

This project proposes the development of Hermes, a heterogeneous aware, multi-tiered, dynamic, and distributed I/O buffering system that will significantly accelerate I/O performance.

 This project proposes to extend HDF technologies with the Hermes design. Hermes is new, and the enhancement of HDF5 is new. We believe that the combination of DMSH I/O buffering and HDF technologies is a reachable practical solution that can efficiently support scientific discovery. 

Why Hermes?

Hermes will advance HDF5 core technology by developing
new buffering algorithms and mechanisms to support:

01.

Vertical and Horizontal Buffering in DMSHs 

Here vertical means access data to/from different levels locally and horizontal means spread/gather data across remote compute nodes.

02.

Selective Buffering via HDF5

Here selective means some memory layer, e.g. NVMe, only for selected data.

03.

Dynamic Buffering via
Online System Profiling

The buffering schema can be changed dynamically based on messaging traffic

04.

Adaptive Buffering via
Reinforcement Learning

By learning the application's access pattern, we can adapt prefetching algorithms and cache replacement policies at runtime. 

A new, multi-tiered, distributed buffering
platform that is:

Hierarchical

Enables, manages, and supervises I/O operations in the Deep Memory and Storage Hierarchy (DMSH).

Dynamic

Offers selective and dynamic layered data placement.

Modular

Is modular, extensible, and performance-oriented. 

Flexible

Supports a wide variety of applications (scientific, BigData, etc).

Mobirise

Hermes Contributions

Mobirise

Hermes Architecture

Hermes machine model

Large amount of RAM, Local NVMe and/or SSD device, Shared Burst Buffers and Remote disk-based PFS.

Two data paths

Vertical ->within node
Horizontal ->across nodes

Mobirise

Fully distributed

 fully scalable deployment on distributed clusters, consisting of node/local end remote shared storage layers

Hierarchy based on

Access Latency
Data Throughput
Capacity.

Hermes Node Design

01.

Dedicated core for Hermes

 

02.

RDMA-capable communication

03.

Can also be deployed in I/O Forwarding Layer

04.

Multithreaded Node
Manager

Hermes Components

01.

Middle-ware library written in C++: Link with applications (i.e., re-compile or LD_PRELOAD) and Wrap-around I/O calls.

02.

Modular, extensible, performance-oriented.

03.

Will support: POSIX, HDF5 and MPI-IO.

04.

Hinting mechanism to pass user’s operations.

Hermes Objectives

01.

Being application- and system-aware

02.

Maximizing productivity

03.

Increasing resource utilization

04.

Abstracting data movement

05.

 Maximizing performance

06.

Supporting a wide range of scientific applications and domains

Design Implications

Mobirise

Evaluation Results

Hermes Library Evaluation

Mobirise

RAM Management

1 million fwrite() of various size and measured memory ops/sec

Mobirise

Metadata Management

1 million metadata operations and measure MDM throughput ops/sec

Mobirise

Communication

1 million queue operations and measure messaging rate msg/sec 

Workload Evaluation

Mobirise

Alternating Compute-I/O

8x higher write performance on average

Mobirise

Repetitive Read Operations

11x higher read performance for repetitive patterns

Mobirise

VPIC

5x higher write performance on average

Mobirise

HACC

7.5x higher read performance for repetitive patterns

Webinars

Hermes Beta Release

Hermes Update - HDF Group

Hermes Buffer Organizer - HDF Group

Publications

Our Team

Dr. Xian-He Sun

Principal Investigator
Illinois Tech

Dr. Anthony Kougkas

Technical Lead
Illinois Tech

Gerd Heber

Co-Principal Investigator
HDF Group

Jaime Cernuda

PhD Student SCS Lab
Illinois Tech

Keith Bateman

PhD Student SCS Lab
Illinois Tech

Neeraj Rajesh

PhD Student SCS Lab
Illinois Tech

Luke Logan

Software Engineer
HDF Group

Our Sponsor

National Science Foundation
(NSF OCI-1835764)

Mobirise

FAQ

That is true. We suggest using profiling tools before hand to learn about the application’s behavior and tune Hermes. Default policy works great.

As of now, applications link to Hermes (re-compile or dynamic linking). We envision a system scheduler that also incorporates buffering resources.

Hermes’ Application Orchestrator was designed for multi-tenant environments. This work is described in Vidya: Performing Code-Block I/O Characterization for Data Access Optimization.

It can be severe but in scenarios where there is some computation in between I/O then it can work nicely to our advantage.

In our evaluation, for 1 million user files, the metadata created were 1.1GB.

Hermes’ System Profiler provides the current status of the system (i.e., remaining capacity, etc) and DPE is aware of this before it places data in the DMSH.

Horizontal data movement can be in the way of the normal compute traffic. RDMA capable machines can help. We also suggest using the “service class” of the Infiniband network to apply priorities in the network.

Configurable by the user. Typical trade-off. More RAM to Hermes can lead to higher performance. No RAM means skip the layer.

 Hermes captures existing I/O calls. Our own API is really simple consisting of hermes::read(…, flags) and hermes::write(…,flags). Flag system implements active buffering semantics (currently only for the burst buffer nodes).

We expose a configuration_manager class which is used to pass several Hermes’ configuration parameters.