Projects
Gismo (Global IO-Free Shared Memory Objects)
The Problem with Scale-out
Big data applications are limited in scale by the memory capacity available on a single node. Expanding the single-node memory is costly and not possible beyond a limit, consequently, a scale-out approach with multiple nodes in a cluster is commonly used. In the scale-out approach, large amounts of data are sent across nodes over the network, which introduces several problems:
- Additional latency and contending for network bandwidth.
- Multiple copies of the same data, increasing the overall memory usage.
- Data skew – Unbalanced data partition causing memory usage to spike on a node, memory threshing, or even OOM killer.
Global IO-free Shared Memory Objects
Project Gismo solves the inter-node data traffic challenges in three ways:
- Each node in the cluster connects to shared memory over CXL, enabling fast direct memory access instead of through network traffic.
- Single shared object store enables pass-by-reference and zero-copy transfer of objects across multiple nodes, further speeding up access and significantly reducing the overall memory usage.
- Eliminates data skew as the object store resides on the shared memory instead of partitioned on individual nodes.
Subscribe to the Memory Fabric Forum Community News
Receive information about events, online courses, new products and solutions, and early access programs.
Participate in the Memory Fabric Forum Community
The content in this website, our events, and in our news is crowd-sourced from people like you. Contact us about speaking at Memory Fabric Forum events, contributing blogs or an online course.
Deployment and Operations
Configure each node in the cluster to access the CXL shared memory.
Select one node to start the Gismo Manager.
Application links to Gismo Library. The app may run on the same node as the Gismo Manager or different nodes in the same cluster.
The Gismo Library provides the following APIs to the application:
- Connect to Gismo Manager through gismo_connect() to start using the shared object store.
- Create object using gismo_create() which returns a memory address for the object data, the app is responsible to create and maintain the object id. The app calls gismo_seal() at the completion of object data write, which will make the object immutable and accessible to all apps connected to the same Gismo Manager.
- Read an object using gismo_get(), which returns the memory address of the object. When the object is no longer needed, the app calls gismo_release()
- Delete an object using gismo_delete(). Note an object can only be deleted when it has been released by all apps reading it.
- Disconnect from Gismo Manager on exit or completing usage through gismo_disconnect().