|
NAMEfi_verbs - The Verbs Fabric ProviderOVERVIEWThe verbs provider enables applications using OFI to be run over any verbs hardware (Infiniband, iWarp, etc). It uses the Linux Verbs API for network transport and provides a translation of OFI calls to appropriate verbs API calls. It uses librdmacm for communication management and libibverbs for other control and data transfer operations.REQUIREMENTSTo successfully build and install verbs provider as part of libfabric, it needs the following packages: * libibverbs * libibverbs-devel * librdmacm * librdmacm-develYou may also want to look into any OS specific instructions for enabling RDMA. e.g. RHEL has instructions on their documentation for enabling RDMA. The IPoIB interface should be configured with a valid IP address. This is a requirement from librdmacm. SUPPORTED FEATURESThe verbs provider supports a subset of OFI features.Endpoint typesFI_EP_MSG, FI_EP_DGRAM (beta), FI_EP_RDM.FI_EP_RDM is supported via OFI RxM and RxD utility providers which are layered on top of verbs. To the app, the provider name string would appear as “verbs;ofi_rxm” or “verbs;ofi_rxd”. Please refer the man pages for RxM (fi_rxm.7) and RxD (fi_rxd.7) to know about the capabilities and limitations for the FI_EP_RDM endpoint. Endpoint capabilities and featuresMSG endpointsFI_MSG, FI_RMA, FI_ATOMIC and shared receive contexts.DGRAM endpointsFI_MSGModesVerbs provider requires applications to support the following modes:FI_EP_MSG endpoint type
Addressing FormatsSupported addressing formats include * MSG and RDM (internal - deprecated) EPs support: FI_SOCKADDR, FI_SOCKADDR_IN, FI_SOCKADDR_IN6, FI_SOCKADDR_IB * DGRAM supports: FI_ADDR_IB_UDProgressVerbs provider supports FI_PROGRESS_AUTO: Asynchronous operations make forward progress automatically.Operation flagsVerbs provider supports FI_INJECT, FI_COMPLETION, FI_REMOTE_CQ_DATA, FI_TRANSMIT_COMPLETE.Msg OrderingVerbs provider support the following message ordering:
and the following completion ordering:
ForkVerbs provider does not provide fork safety by default. Fork safety can be requested by setting IBV_FORK_SAFE, or RDMAV_FORK_SAFE. If the system configuration supports the use of huge pages, it is recommended to set RDMAV_HUGEPAGES_SAFE. See ibv_fork_init(3) for additional details.Memory Registration CacheThe verbs provider uses the common memory registration cache functionality that’s part of libfabric utility code. This speeds up memory registration calls from applications by caching registrations of frequently used memory regions. Please refer to fi_mr(3): Memory Registration Cache section for more details.LIMITATIONSMemory RegionsOnly FI_MR_BASIC mode is supported. Adding regions via s/g list is supported only up to a s/g list size of 1. No support for binding memory regions to a counter.Wait objectsOnly FI_WAIT_FD wait object is supported only for FI_EP_MSG endpoint type. Wait sets are not supported.Resource ManagementApplication has to make sure CQs are not overrun as this cannot be detected by the provider.Unsupported FeaturesThe following features are not supported in verbs provider:Unsupported CapabilitiesFI_NAMED_RX_CTX, FI_DIRECTED_RECV, FI_TRIGGER, FI_RMA_EVENTOther unsupported featuresScalable endpoints, FABRIC_DIRECTUnsupported features specific to MSG endpoints
ForkThe support for fork in the provider has the following limitations:
XRC TransportThe XRC transport is intended to be used when layered with the RXM provider and requires the use of shared receive contexts. See fi_rxm(7). To enable XRC, the following environment variables must usually be set: FI_VERBS_PREFER_XRC and FI_OFI_RXM_USE_SRX.RUNTIME PARAMETERSThe verbs provider checks for the following environment variables.Common variables:
Variables specific to MSG endpoints
Variables specific to DGRAM endpoints
Environment variables notesThe fi_info utility would give the up-to-date information on environment variables: fi_info -p verbs -eTroubleshooting / Known issuesfi_getinfo returns -FI_ENODATA
Other issuesWhen running an app over verbs provider with Valgrind, there may be reports of memory leak in functions from dependent libraries (e.g. libibverbs, librdmacm). These leaks are safe to ignore.The provider protects CQ overruns that may happen because more TX operations were posted to endpoints than CQ size. On the receive side, it isn’t expected to overrun the CQ. In case it happens the application developer should take care not to post excess receives without draining the CQ. CQ overruns can make the MSG endpoints unusable. SEE ALSOfabric(7), fi_provider(7),AUTHORSOpenFabrics.
Visit the GSP FreeBSD Man Page Interface. |