Configuration Files
The OpenFAM environment uses four separate configuration files, three for the memory and metadata services, and one for the OpenFAM client.
- fam_client_interface_config.yaml: Configures the client interface service.
- fam_memoryserver_config.yaml: Configures the memory servers.
- fam_metadata_config.yaml: Configures the metadata management service.
- fam_pe_config.yaml: Configures the OpenFAM clients.
1. fam_client_interface_config.yaml
Configuration Name | Description |
---|---|
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". |
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> |
2. fam_memoryserver_config.yaml
Configuration Name | Description |
---|---|
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. |
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". |
fam_path | Absolute path to the NVMM data files used by the memory server. Default value is an empty string. |
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". |
3. fam_metadata_config.yaml
Configuration Name | Description |
---|---|
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. |
4. fam_pe_config.yaml
Configuration Name | Description |
---|---|
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" |
Sample configuration files are provided in the source under openfam_parent_directory/config
.
Starting Services
All the services and the PE read the respective configuration file from "config" directory placed at the path mentioned
by OPENFAM_ROOT
environment variable.
Or by default, OPENFAM_ROOT
will be /opt/hpe/OpenFAM
.
User needs to update this environment variable to select config folder created by them.
A tool by name openfam_adm
has been introduced which helps to perform the basic tasks useful to an OpenFAM user such as
- creating configuration files,
- starting OpenFAM services,
- terminating OpenFAM services,
- running tests and
- cleanup FAM and metadata.
To access the tool, the openfam module must be loaded. That can be done using following command:
module load openfam
The detailed description and available options are given below.
The details of available command line options can be found using -h
option of each of the service executable.
For Example:
#openfam_adm -h Usage : openfam_adm [-h] [--create_config_files] [--start_service] [--stop_service] [--clean] [--install_path] [--config_file_path] [--launcher] [--global_launcher_options] [--cisinterface] [--memserverinterface] [--metaserverinterface] [--cisserver id:{comma separated attributes}] [--memservers id:{comma seperated attributes}] [--metaservers id:{comma seperated attributes}] [--test_args] [--model] [--thrdmodel] [--provider] [--provider] [--runtime] [--kvstype] [--libfabricport] [--metapath] [--fampath] [--fam_backup_path] [--atlthreads] [--atlqsize] [--atldatasize] [--disableregionspanning] [--regionspanningsize] [--interleaveblocksize] [--runtests] [--sleep] Options : optional arguments: -h, --help show this help message and exit --create_config_files Generates all configuration files --start_service Start all OpenFAM services --stop_service Stop all OpenFAM services --clean Clean all FAMs and Metadata --install_path Path to OpenFAM installation dir --config_file_path Path to create configuration files --launcher Launcher to be used to launch processes(mpi/slurm) --global_launcher_options Launcher command options which can be used commonly across all services. Specify all options within quotes(") eg : --global_launcher_options="-N" "1" "-- mpi=pmix" --cisinterface CIS interface type(rpc/direct) --memserverinterface Memory Service interface type(rpc/direct) --metaserverinterface Metadata Service interface type(rpc/direct) --cisserver CIS parameters, eg : ,0:{rpc_interface:127.0.0.1,rpc_p ort:8795,launcher_options: "-n" "1"}. Note : Specify all launcher options within quotes(") eg : launcher_options:"-N" "1" "--mpi=pmix" --memservers id:{comma seperated attributes} Add a new memory server, eg : 0:{memory_type:volatile, fam_path:/dev/shm/vol/,rpc_interface:127.0.0.1,rpc_por t:8795,libfabric_port:7500,if_device:eth0,launcher_opt ions: '-n' '1'}. Note : Specify all launcher options within quotes(") eg : launcher_options: "-N" "1" "-- mpi=pmix" --metaservers id:{comma seperated attributes} Add a metadata server, eg : 0:{rpc_interface:127.0.0.1 ,rpc_port:8795,launcher_options: '-n' '1'}. Note : Specify all launcher options within quotes(") eg : launcher_options: "-N" "1" "--mpi=pmix" --test_args Test configuration parameters, eg : ,0:{num_pes:1,launcher_options: '-n' '1'}. Note : Specify all launcher options within quotes(") eg : launcher_options: "-N" "1" "--mpi=pmix" --model OpenFAM model(memory_server/shared_memory) --thrdmodel Thread model(single/multiple) --provider Libfabric provider to be used for data path operations --runtime Runtime process management interface(PMI) to be used --kvstype Type of key value store to be used for metadata management --libfabricport Libafabric port for data path operation --metapath path to store metadata --fampath path where data is stored --fam_backup_path path where data backup is stored(on shared filesystem) --atlthreads Atomic library threads count --atlqsize ATL queue size --atldatasize ATL data size per thread(MiB) --disableregionspanning Disable region spanning --regionspanningsize Region spanning size --interleaveblocksize Dataitem interleave block size --runtests Run regression and unit tests --sleep Number of seconds to sleep For Example, following commands are primarily used to create configuration files, start/stop OpenFAM services and cleanup the FAM and metadata: - Generate Configuration Files (Only one time step) $openfam_adm @arg_file --create_config_files --config_file_path=/path/to/generate/config/files Content of sample "arg_file" : --launcher=slurm --model=memory_server --cisinterface=rpc --memserverinterface=rpc --metaserverinterface=rpc --provider=cxi --cisserver={rpc_interface:node1,rpc_port:8787} --memservers=0:{memory_type:volatile,fam_path:/dev/shm/vol,rpc_interface:node2,rpc_port:8793,libfab- ric_port:7500,if_device:eth0} --metaservers=0:{rpc_interface:node3,rpc_port:8788} --global_launcher_options="-p" "nodes" "--mpi=pmix" - Export path of config files dir $export OPENFAM_ROOT=/path/to/generate/config/files - Start/Stop OpenFAM Services $openfam_adm --start_service - Stop OpenFAM Services $openfam_adm --stop_service - Cleanup $openfam_adm --clean
The configuration options passed to the services using command line arguments take precedence over the options present in the respective configuration files.
Similarly, for the PE, configuration options passed using Fam_Options
argument of fam_initialize API take precedence
over the options present in fam_pe_config.yaml
configuration file.