# Memory Fabric用户文档 - [简介](简介.md) - [部署](部署.md) - [启动](启动.md) - [接口](接口.md) # 简介 内存池套件是基于内存型介质和新型网络技术,构建高性能的分布式内存资源池,并通过BigMemory、MemPlog、MemKV等语义对应用提供服务。 内存池套件使用和管理的资源来自计算节点或者单独资源节点提供的可共享的DRAM/Persistent Memory/内存盘等(不支持普通disk直接互联池化),结合新型互联协议(RDMA,CXL,UBUS)us级传输时延,期望内存池套件通过极低的软件时延和节点CPU开销带来整体性能提升。 # 部署 Memory Fabric需要根据节点类型、资源分布情况和应用需求做到多场景应用集成部署,具体描述如下: - 计算和MF资源共节点时支持client和server同节点部署,如[图1](#fig17349154610267)node1、node2所示。 - 资源独立提供时也支持client、server分离节点部署,如[图1](#fig17349154610267)node3、node4所示。 - 支持同节点部署和分离节点部署两种场景混合部署。 - 节点内支持多client,也支持多server模式部署,如[图1](#fig17349154610267)node2所示。 - client与同节点的server通信使用IPC,配置支持连接远端server时使用RPC通信。 - server端接入集群管理服务中,用于统一的节点编号和资源信息广播。 **图 1** 集成部署 ![](images/IntegratedDeployment.png) # 启动 Memory Fabric启动分为server和client两个部分。在节点上优先启动server端,完成集群注册、监控流程,然后启动本地资源注册\(总容量通过配置文件获取\)和通信建链流程,初始化完成后支持本地多client与server建立连接,可对外启动业务服务。 # 接口

接口

说明

int BM_Init(char *ockPath, int flags);

int BM_InitWithExtAttr(char*ockPath, int flags, void *attr); int BM_Exit(void);

初始化

带属性的初始化

退出

int BM_CreateNSSec(const char*poolName, const char *ns, int attribute, const char*secId);

int BM_DestroyNSSec(const char *poolName, const char*ns, const char *secId);

int BM_QueryNSCache(QueryNsCache*buff, size_t buffLen);

Namespace创建和销毁、查询

int BM_AllocSec(BmInfo *bminfo, size_t size, int flags, BmAffinity* affinity);

int BM_FreeSec(BmInfo *bminfo, int flags);

int BM_BatchFreeSec(char*bmIdArray[], int num, int flags, const char *ns, const char*secId);

Bigmemory对象申请和释放

int BM_ExpandSec(BmInfo *bminfo, size_t size, int flags);

bigMemory扩容

int BM_MapSec(BmInfo*bminfo, int prot, int flags, void **ptr);

int BM_Unmap(char *bmId, void*ptr);

bigMemory到连续虚拟空间map和unmap

int BM_CopySec(BmInfo *srcBM, size_t srcOffset, BmInfo*dstBM, size_t dstOffset, size_t length, int flags);

bigMemory对象间拷贝

int BM_SpecificObjSwapInSec(DiskFileDesc *file, BmInfo*bminfo, int flags, size_t offset, size_t length);

文件内容换入bigmemory对象

int BM_ReadSec(BmInfo *bminfo, size_t offset, size_t length, void*buffer, int flags);

int BM_WriteSec(BmInfo *bminfo, size_t offset, size_t length, const void*buffer, int flags);

Bigmemory读写

int BM_GatherSec(intptr_t *inputInfo, BmOperatorCode operatorCode, int flags, BmInfo*bminfo, size_t *bmLen);

聚合操作接口