OpenFAM Reference Implementation

Design Choices

Table 1 describes the current design limits within the OpenFAM reference implementation. Since the maximum FAM size in the reference implementation is bound by the amount of memory available at the memory server, these parameters should not pose undue limitations on memory size, while enabling developers to build reasonable sized applications using the reference implementation.
Table 1: Data set limits per memory server in the reference implementation
ItemLimit
Maximum FAM size128 TB
Minimum region size8 GB
Maximum region size1 TB
Maximum number of regions16 K regions
Minimum data Item size128 bytes
Maximum data Item size512 GB
Maximum number of data items within a region~8 B data Items
As mentioned in The OpenFAM API: A Programming Model for Disaggregated Persistent Memory, the reference implementation uses libfabric to handle the underlying memory traffic. The implementation supports the complete API with exceptions highlighted in Table 2.
Table 2: OpenFAM APIs currently not available in the reference implementation
APIMemory ServerShared MemoryComment
fam_mapNOYESLibfabric currently does not support mmap APIs
fam_unmapNOYESLibfabric currently does not support mmap APIs
fam_fenceYES (only with sockets provider)NOFence operation is not supported by CXI, PSM2 and Verbs libfabric provider.
Support for other providers and Shared Memory model will be added in future
Since the underlying libfabric providers do not support 128-bit compare and swap (CAS) operations, CAS operations have been implemented in software.