OpenFAM Reference Implementation

OpenFAM 2.0 Services

The initial reference implementation of OpenFAM was built using a single memory server. OpenFAM version 2.0 contains significant design changes to the memory server.

Figure 1: OpenFAM 2.0 Memory server components

Figure 1 shows the new design. There are three main components in the design.

The client interface service (CIS):
All PEs talk to the CIS for memory server operations.
The metadata management service:
Region and data item metadata is hosted by the metadata management service. The service can be co-located in the same node as a CIS server or a memory server, or it can be run in dedicated metadata management nodes.
The memory management service:
The actual memory is served from memory servers. For data path (get, put and atomic) operations PEs talk to the memory servers directly. For memory management and metadata operations, e.g., allocate, lookup, create_region, etc., the CIS communicates with memory servers via an RPC service or via direct functions calls.
The services communicate with one another using grpc calls. However, as an optimization, if the components are compiled into the same executable, they bypass grpc and use direct function calls for communication. Yaml-based configuration files determine how the services are configured.

See configuration and startup of OpenFAM 2.0 services in the Configuration Files section.