UBS-IO API完全参考:从创建Cache实例到性能优化的10个关键接口
UBS-IO API完全参考从创建Cache实例到性能优化的10个关键接口【免费下载链接】ubs-ioUbs-io provides high-level I/O services for application-affinity global data read/write caching systems based on UB superpods.项目地址: https://gitcode.com/openeuler/ubs-io前往项目官网免费下载https://ar.openeuler.org/ar/UBS-IOUnified Buffer Service I/O是openEuler社区提供的高性能分布式读写缓存系统专为存算分离架构设计通过计算侧缓存显著提升I/O性能。本文为您提供完整的UBS-IO API参考指南涵盖从基础初始化到高级性能优化的10个关键接口。 快速开始UBS-IO核心接口概览UBS-IO提供了一套完整的C API接口支持两种工作模式融合模式适用于AI训练场景分离模式适用于大数据处理场景。在开始使用前您需要了解系统的基本架构UBS-IO通过多级分布式缓存设计结合内存和高速磁盘介质为应用提供高性能的I/O加速服务。系统支持回写模式和透写模式两种缓存策略以及本地亲和和全局均衡两种数据亲和策略。 10个关键API接口详解1.BioInitialize - 系统初始化接口这是使用UBS-IO的第一步初始化系统并配置工作模式。支持两种工作模式CONVERGENCE(0)- 融合模式适用于AI场景SEPARATES(1)- 分离模式适用于大数据场景CResult BioInitialize(WorkerMode mode, ClientOptionsConfig *optConf);关键参数mode: 工作模式选择optConf: 客户端配置包括日志类型、安全开关、证书路径等2.BioCreateCache - 创建Cache实例创建缓存实例是核心操作您需要根据应用场景选择合适的缓存策略和数据亲和策略CResult BioCreateCache(CacheDescriptor desc);缓存策略选择WRITE_BACK(1)- 回写模式数据先写入缓存异步刷回后端存储WRITE_THROUGH(2)- 透写模式数据同时写入缓存和后端存储数据亲和策略LOCAL_AFFINITY(1)- 本地亲和数据尽量存放在本地节点GLOBAL_BALANCE(2)- 全局均衡数据在集群中均衡分布3.BioPut/BioGet - 基础读写操作这是最常用的数据读写接口支持对象级别的存储和读取CResult BioPut(uint64_t tenantId, const char *key, const char *value, uint64_t length, ObjLocation location); CResult BioGet(uint64_t tenantId, const char *key, uint64_t offset, uint64_t length, ObjLocation location, char *value, uint64_t *realLength);性能提示单次写入最大支持4MB数据适用于中小型对象存储。4.BioAllocCacheSpace BioPutWithCopyFree - 免拷贝写入优化对于高性能场景UBS-IO提供了免拷贝写入机制避免数据复制开销CResult BioAllocCacheSpace(uint64_t tenantId, uint64_t objectId, uint64_t length, CacheSpaceDesc *space); CResult BioPutWithCopyFree(uint64_t tenantId, const char *key, CacheSpaceDesc *space);应用场景适用于需要高性能写入的大数据量场景如AI训练中的模型参数保存。5.BioLoad - 异步数据加载接口支持异步数据预加载提高后续读取性能CResult BioLoad(uint64_t tenantId, const char *key, uint64_t offset, uint64_t length, ObjLocation location, BioLoadCallback callback, void *context);回调机制通过回调函数通知加载完成避免阻塞主线程。6.BioCalcLocation - 对象位置计算计算对象在分布式系统中的位置信息CResult BioCalcLocation(uint64_t tenantId, uint64_t objectId, ObjLocation *location);位置信息用途用于后续的读写操作确保数据访问的正确性。7.BioShowCacheResource - 缓存资源监控查询系统缓存资源使用情况帮助您了解系统负载CResult BioShowCacheResource(CacheResourcesDesc **nodeDesc, uint64_t *nodeNum);监控指标包括读缓存内存/磁盘容量和使用情况写缓存内存/磁盘容量和使用情况各节点资源分布8.BioShowCacheHitRatio - 缓存命中率统计获取系统缓存命中率信息评估缓存效果CResult BioShowCacheHitRatio(CacheHitFinalDesc *desc, CacheHitFinalDesc **nodeDesc, uint64_t *nodeNum);命中率指标读缓存内存/磁盘命中数写缓存内存/磁盘命中数后端存储命中数9.BioListAll BioStat - 对象管理接口支持对象列举和状态查询便于系统管理CResult BioListAll(uint64_t tenantId, const char *prefix, ObjStat **objs, uint64_t *objNum); CResult BioStat(uint64_t tenantId, const char *key, ObjLocation location, ObjStat *stat);内存管理提醒使用BioListAll后必须调用BioFreeListResources释放内存。10.BioNotifyUpgradePrepare/BioNotifyUpgradeFinish - 系统升级接口支持在线系统升级确保服务连续性CResult BioNotifyUpgradePrepare(uint64_t tenantId); CResult BioNotifyUpgradeFinish(uint64_t tenantId); CResult BioCheckUpgradeReady(uint64_t tenantId);升级流程调用BioNotifyUpgradePrepare准备升级等待缓存数据淘汰到后端存储调用BioCheckUpgradeReady检查就绪状态执行系统升级调用BioNotifyUpgradeFinish完成升级 性能优化最佳实践1.选择合适的缓存策略AI训练场景推荐使用回写模式本地亲和策略减少训练过程中的I/O延迟大数据分析场景推荐使用透写模式全局均衡策略保证数据一致性2.合理使用免拷贝写入对于频繁写入的大数据场景使用BioAllocCacheSpace和BioPutWithCopyFree组合可以显著提升写入性能。3.监控缓存命中率定期使用BioShowCacheHitRatio监控缓存效果根据命中率调整缓存策略和资源分配。4.异步预加载优化对于顺序读取的场景使用BioLoad进行异步预加载提前将数据加载到缓存中。5.错误处理策略UBS-IO提供了丰富的错误码主要错误码包括错误码含义处理建议RET_CACHE_OK操作成功-RET_CACHE_NOT_FOUNDCache实例不存在检查租户ID和实例状态RET_CACHE_NO_SPACE空间不足清理缓存或扩容资源RET_CACHE_NEED_RETRY需要重试实现重试机制RET_CACHE_PT_FAULT分区故障检查集群状态 实际应用示例场景1AI模型训练数据缓存// 1. 初始化UBS-IO融合模式 ClientOptionsConfig config {0}; config.logType FILE_TYPE; strcpy(config.logFilePath, /var/log/ubs-io/ai_training.log); BioInitialize(CONVERGENCE, config); // 2. 创建缓存实例回写模式 本地亲和 CacheDescriptor desc; desc.tenantId 1001; desc.affinity LOCAL_AFFINITY; desc.strategy WRITE_BACK; BioCreateCache(desc); // 3. 训练过程中缓存模型参数 ObjLocation location; BioCalcLocation(1001, model_id, location); BioPut(1001, model_weights, weight_data, weight_size, location);场景2大数据分析查询加速// 1. 初始化UBS-IO分离模式 ClientOptionsConfig config {0}; config.logType STDOUT_TYPE; BioInitialize(SEPARATES, config); // 2. 创建缓存实例透写模式 全局均衡 CacheDescriptor desc; desc.tenantId 2001; desc.affinity GLOBAL_BALANCE; desc.strategy WRITE_THROUGH; BioCreateCache(desc); // 3. 预加载查询数据 BioLoadCallback callback my_load_callback; BioLoad(2001, query_data, 0, 1024*1024, location, callback, NULL); 调试与监控技巧1.资源使用监控使用BioShowCacheResource定期监控缓存资源使用情况及时发现资源瓶颈CacheResourcesDesc *nodeDesc NULL; uint64_t nodeNum 0; CResult ret BioShowCacheResource(nodeDesc, nodeNum); if (ret RET_CACHE_OK) { // 分析各节点资源使用情况 for (uint64_t i 0; i nodeNum; i) { printf(Node %d: 读缓存使用率 %.2f%%, 写缓存使用率 %.2f%%\n, nodeDesc[i].nodeId, (float)nodeDesc[i].rCacheMemUsedSize / nodeDesc[i].rCacheMemCapacity * 100, (float)nodeDesc[i].wCacheMemUsedSize / nodeDesc[i].wCacheMemCapacity * 100); } BioFreeCacheResourcePtr(nodeDesc, nodeNum); }2.性能调优建议根据BioShowCacheHitRatio的监控结果调整缓存策略读缓存命中率低考虑增加预加载或调整数据分布写缓存使用率高考虑调整淘汰策略或扩容资源后端命中率高考虑增加缓存容量或优化数据访问模式 总结UBS-IO通过这10个关键API接口为开发者提供了完整的分布式缓存解决方案。从基础的Cache实例创建到高级的性能优化接口UBS-IO能够满足不同场景下的I/O加速需求。无论是AI训练、大数据分析还是其他高性能计算场景UBS-IO都能显著提升应用性能。核心优势✅ 支持多种缓存策略和数据亲和策略✅ 提供免拷贝写入机制优化性能✅ 完整的监控和诊断接口✅ 支持在线升级保证服务连续性✅ 丰富的错误处理机制通过合理使用这些API接口您可以充分发挥UBS-IO的性能优势为您的应用提供高效的I/O加速服务。【免费下载链接】ubs-ioUbs-io provides high-level I/O services for application-affinity global data read/write caching systems based on UB superpods.项目地址: https://gitcode.com/openeuler/ubs-io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考