OpenFAM Reference Implementation

Configuration Files

The OpenFAM environment uses four separate configuration files, three for the memory and metadata services, and one for the OpenFAM client.

  1. fam_client_interface_config.yaml: Configures the client interface service.
  2. fam_memoryserver_config.yaml: Configures the memory servers.
  3. fam_metadata_config.yaml: Configures the metadata management service.
  4. fam_pe_config.yaml: Configures the OpenFAM clients.
These configuration files contain the following options.

1. fam_client_interface_config.yaml

Configuration NameDescription
memsrv_interface_type Memory server interface type used by OpenFAM. Default value is "direct". Other option is "rpc".
metadata_interface_type Metadata server interface type used by OpenFAM. Default value is "direct". Other option is "rpc".
rpc_interface IP address/hostname of Client Interface Service, followed by port number.
memsrv_list List of memory servers. Applicable only if memsrv_interface_type is rpc. Each list entry is given in this format:

<memsrv_id>:<host_address>:<port_no>

metadata_list List of metadata servers. Applicable only if metadata_interface_type is rpc. Each list entry is given in this format:

<metadataserver_id>:<host_address>:<port_no>

rpc_framework_type The control path operations can leverage thallium libraries instead of grpc. Default value is "grpc". Other option is "thallium".
provider If "thallium" option is chosen for rpc_framework_type, it is essential to provide details of provider. Default value is "cxi". Other option is "sockets".

2. fam_memoryserver_config.yaml

Configuration NameDescription
provider Libfabric provider to be used by OpenFAM libfabric data path operations. Default value is "sockets". Other supported options are "cxi", "psm2" and "verbs".
delayed_free_threads Number of threads used for delayed free.
ATL_threads Atomic library threads count. Default value is 0, which indicates ATL is disabled.
ATL_queue_size ATL queue size. Number of elements in each queue. Default value is 1000.
ATL_data_size ATL data size per thread(MiB). This is used to allocate buffers and other queue related data structures. Default data size is 1024.
fam_backup_path Absolute path used by the memory server to store archives. Default value is config file location.
memory_type Type of memory used by the memory server to host FAM. Options are "volatile" or "persistent". Default value is "volatile".
fam_path Absolute path to the NVMM data files used by the memory server. Default value is an empty string.
rpc_interface IP address/hostname of memory server, followed by port number. Default value is an "127.0.0.1:8789".
resource_release This option is to enable or disable resource relinquishment in FAM. Default value is "enable".
libfabric_port Libfabric port to be used for data path operations.
if_device NIC name to be used with memory server. Default value is "eth0".
rpc_framework_type The control path operations can leverage thallium libraries instead of grpc. Default value is "grpc". Other option is "thallium".
provider The control path operations can leverage thallium libraries instead of grpc. If "thallium" option is chosen for rpc_framework_type, it is essential to provide provider details. Default value is "cxi". Other option is "sockets".

3. fam_metadata_config.yaml

Configuration NameDescription
metadata_manager Metadata manager type used by metadata server. Default is radixtree. Currently radixtree is the only supported KVS.
metadata_path Absolute path where metadata info is stored. By default, it will be placed in /dev/shm/<metadata_manager>. Example: If metadata manager is radixtree, then metadata info would be placed under /dev/shm/radixtree folder.
enable_region_spanning Flag to enable or disable region spanning. By default, it is set to true.
region_span_size_per_memoryserver Region size per memory server (Bytes). Used only if region spanning is enabled. Default value is 1073741824.
dataitem_interleave_size Data interleaving refers to interspersing portions of the data across the memory servers in a specified order or other arrangement. dataitem_interleave_size decides the number of bytes after which data item needs to be striped so that it gets distributed across several memory servers. Default value is "1048576".
rpc_framework_type The control path operations can leverage thallium libraries instead of grpc. Default value is "grpc". Other option is "thallium".
provider If "thallium" option is chosen for rpc_framework_type, it is essential to provide provider details. Default value is "cxi". Other option is "sockets".

4. fam_pe_config.yaml

Configuration NameDescription
FamThreadModel Fam thread model used by OpenFAM. Default value is "single". OpenFAM supports single and multi-threaded model.
provider Libfabric provider to be used by OpenFAM libfabric data path operations. Default value is "sockets". Other supported options are "cxi", "psm2" and "verbs".
runtime Runtime option used for OpenFAM. Default value is "PMIX". Other supported options are "PMI2" and "NONE"
client_interface_type Client interface type used by OpenFAM. Default value is "direct". Other option is "rpc"
fam_client_interface_service_address Address of Client Interface Service. Value is specified in this format: <ip_address>:<port_no>. Applicable only if client_interface_type is rpc. Default value is "127.0.0.1:8787"
rpc_framework_type The control path operations can also leverage thallium libraries instead of grpc. Default value is "grpc". Other option is "thallium".
openfam_model Openfam_model specifies if memory servers are resident in same nodes as clients (shared_memory mode) or distributed across nodes other than client. Default value is "memory_server". Other option is "shared_memory".
resource_release This option is to enable or disable resource relinquishment in FAM. Default value is "enable". Other option is "disable".

Sample configuration files are provided in the source under openfam_parent_directory/config.