From 89897b27f78a1b804528eb0dd2dce2c3693ac74d Mon Sep 17 00:00:00 2001 From: yaohaolin Date: Fri, 24 Oct 2025 21:26:52 +0800 Subject: [PATCH] sync codes --- README.md | 287 ++++++++-- README_CN.md | 231 ++++++-- build.sh | 4 +- cmake/util.cmake | 2 +- ...lient.ObjectClient.generate_object_key.rst | 4 +- .../datasystem.object_client.ObjectClient.rst | 2 +- .../getting-started/image/introduction.png | Bin 0 -> 44167 bytes .../image/logical_architecture.png | Bin 160803 -> 160597 bytes .../getting-started/image/logo-large.png | Bin 0 -> 9867 bytes example/CMakeLists.txt | 8 - example/run-example.sh | 32 -- example/src/perf/perf_demo.cpp | 80 --- example/src/state_cache/state_example.cpp | 174 ------ .../datasystem/hetero_cache/hetero_client.h | 44 -- .../datasystem/kv_cache/read_only_buffer.h | 2 - .../datasystem/object_cache/object_client.h | 5 - include/datasystem/object_cache/object_enum.h | 23 +- include/datasystem/state_cache.h | 25 - include/datasystem/state_cache/state_client.h | 252 --------- include/datasystem/utils/status.h | 20 +- k8s/helm_chart/datasystem/values.yaml | 2 +- python/__init__.py | 1 - python/setup.py | 4 +- src/datasystem/client/CMakeLists.txt | 1 - .../client/hetero_cache/device_util.h | 1 + .../client/hetero_cache/hetero_client.cpp | 72 --- .../device/client_device_object_manager.h | 1 + .../client/state_cache/state_client.cpp | 349 ------------ src/datasystem/common/constants.h | 26 + src/datasystem/common/lru/lru_cache.h | 4 +- src/datasystem/common/lru/lru_policy.h | 13 +- .../common/object_cache/object_base.h | 1 + src/datasystem/common/util/status_code.def | 19 +- .../pybind_api/pybind_register_object.cpp | 1 + ...stem-connector-and-support-multimoda.patch | 2 +- .../object_cache/state_cache_test.cpp | 516 ------------------ 36 files changed, 472 insertions(+), 1736 deletions(-) create mode 100644 docs/source_zh_cn/getting-started/image/introduction.png create mode 100644 docs/source_zh_cn/getting-started/image/logo-large.png delete mode 100644 example/src/perf/perf_demo.cpp delete mode 100644 example/src/state_cache/state_example.cpp delete mode 100644 include/datasystem/state_cache.h delete mode 100644 include/datasystem/state_cache/state_client.h delete mode 100644 src/datasystem/client/state_cache/state_client.cpp delete mode 100644 tests/st/client_c_api/object_cache/state_cache_test.cpp diff --git a/README.md b/README.md index c0e863e..6a80e22 100644 --- a/README.md +++ b/README.md @@ -1,94 +1,261 @@ -[查看中文](./README_CN.md) +![](./docs/source_zh_cn/getting-started/image/logo-large.png) +openYuanrong 是一个 Serverless 分布式计算引擎,致力于以一套统一 Serverless 架构支持 AI、大数据、微服务等各类分布式应用。它提供多语言函数编程接口,以单机编程体验简化分布式应用开发;提供分布式动态调度和数据共享等能力,实现分布式应用的高性能运行和集群的高效资源利用。 - +## 简介 -- [What Is yr-datasystem](#what-is-yr-datasystem) -- [Installation](#installation) - - [Pip mode method installation](#pip-mode-method-installation) - - [Source code compilation installation](#source-code-compilation-installation) -- [Deployment](#deployment) - - [Process deployment](#process-deployment) - - [Kubernetes deployment](#kubernetes-deployment) -- [Quickstart](#quickstart) -- [Docs](#docs) -- [License](#license) +![](./docs/source_zh_cn/getting-started/image/introduction.png) - +openYuanrong 由多语言函数运行时、函数系统和数据系统组成,支持按需灵活单独或组合使用。 -## What Is yr-datasystem +- **多语言函数运行时**:提供函数分布式编程,支持 Python、Java、C++ 语言,实现类单机编程高性能分布式运行。 +- **函数系统**:提供大规模分布式动态调度,支持函数实例极速弹性扩缩和跨节点迁移,实现集群资源高效利用。 +- **数据系统**:提供异构分布式多级缓存,支持 Object、Stream 语义,实现函数实例间高性能数据共享及传递。 -yuanrong-datasystem is a distributed data caching system that leverages the HBM/DRAM/SSD resources of a compute cluster to build a multi-level cache close to computation, improving data access performance in scenarios such as model training and inference, big data, and microservices. +openYuanrong 分为三个代码仓库:[yuanrong-runtime](https://gitee.com/openeuler/yuanrong-runtime) 对应多语言函数运行时;[yuanrong-functionsystem](https://gitee.com/openeuler/yuanrong-functionsystem) 对应函数系统;[yuanrong-datasystem](https://gitee.com/openeuler/yuanrong-datasystem) 对应数据系统,即当前代码仓。 -![](./docs/source_en/getting-started/image/logical_architecture.png) +**数据系统**是 openYuanrong 的核心概念抽象,是一款专为 AI 训推场景设计的分布式异构缓存系统。支持 HBM/DDR/SSD 异构介质池化缓存及 NPU 间异步并发高效数据传输,用于分布式 KVCache 缓存、模型参数缓存、高性能 replaybuffer 等场景。 -yuanrong-datasystem consists of three components: +yuanrong-datasystem 的主要特性包括: -- **Multi-language SDK**: It provides Python/C++ language interfaces, encapsulating various semantics such as heterogeneous objects, key-value (KV), and objects, supporting fast data read and write for business implementation. - - **heterogeneous object**: Based on the NPU card's HBM memory abstraction heterogeneous object interface, it enables high-speed direct data transmission between Ascend NPU cards. It also provides H2D (Host to Device) and D2H (Device to Host) high-speed migration interfaces, facilitating fast data transfer between DRAM and HBM. - - **KV**: Implements zero-copy Key-Value data read/write via shared memory for high-performance caching, with support for data reliability semantics through external component integration. - - **object**: Abstracts data objects using host-side shared memory, implements reference-counted lifecycle management, and encapsulates shared memory as buffers with direct pointer-based read/write access. +- **高性能分布式多级缓存**:基于 DRAM/SSD 构建分布式多级缓存,应用实例通过共享内存免拷贝读写 DRAM 数据,并提供高性能 H2D(host to device)/D2H(device to host) 接口,实现 HBM 与 DRAM 之间快速 swap。 +- **NPU 间高效数据传输**:将 NPU 的 HBM 抽象为异构对象,自动协调 NPU 间 HCCL 收发顺序,实现简单易用的卡间数据异步并发传输。并支持P2P传输负载均衡策略,充分利用卡间链路带宽。 +- **灵活的生命周期管理**:支持设置 TTL、LRU 缓存淘汰以及 delete 接口等多种生命周期管理策略,数据生命周期既可由数据系统管理,也可交由上层应用管理,提供更高的灵活性。 +- **热点数据多副本**:数据跨节点读取时自动在本地保存副本,支撑热点数据高效访问。本地副本使用 LRU 策略自动淘汰。 +- **多种数据可靠性策略**:支持 write_through、wirte_back 及 none 多种持久化策略,满足不同场景的数据可靠性需求。 +- **数据一致性**:支持 Causal 及 PRAM 两种数据一致性模型,用户可按需选择,实现性能和数据一致性的平衡。 +- **数据发布订阅**:支持数据订阅发布,解耦数据的生产者(发布者)和消费者(订阅者),实现数据的异步传输与共享。 +- **高可靠高可用**:支持分布式元数据管理,实现系统水平线性扩展。支持元数据可靠性,支持动态资源伸缩自动迁移数据,实现系统高可用。 -- **worker**: The core component of yuanrong-datasystem, responsible for managing DRAM/SSD and metadata while providing near-computing caching capabilities. - - **Zero-Copy Shared Memory**: Provides data read/write interfaces through shared memory, eliminating data copying between the SDK and worker to enhance performance. - - **NPU Concurrent Communication**: The heterogeneous object abstraction enables direct inter-NPU communication with automatic HCCL send/receive sequencing, achieving concurrent data transfers across both local NPUs and remote nodes via H2H access. - - **P2P Data Distribution**: Implements a load-balancing strategy for P2P transfers during large-scale data replication, enabling new data receivers to serve as providers and fully utilizing inter-card link bandwidth. - - **Metadata Management**: Implements distributed metadata management to achieve linear horizontal scaling and eliminate single-point bottlenecks. Supports metadata reliability for enhanced cluster availability, while providing data publish-subscribe capabilities. - - **Multi-Level Cache Eviction**: Implements LRU-based cache replacement across tiers, maintaining hot data in memory, warm data on disk, and cold data in secondary cache. - - **Data Management**: Provides multiple data lifecycle management capabilities including reference counting and TTL. Controls read-write consistency with support for multiple consistency levels. Manages data replicas across nodes, employing multi-copy caching for hot data to improve read efficiency. +### yuanrong-datasystem 适用场景 -- **Cluster Management**: Leverages ETCD to enable node discovery/health monitoring, supporting fault recovery and online scaling (both expansion and contraction). +- **LLM 长序列推理 KVCache**:基于异构对象提供分布式多级缓存 (HBM/DRAM/SSD) 和高吞吐 D2D/H2D/D2H 访问能力,构建分布式 KV Cache,实现 Prefill 阶段的 KVCache 缓存以及 Prefill/Decode 实例间 KV Cache 快速传递,提升推理吞吐。 +- **模型推理实例 M->N 快速弹性**:利用异构对象的卡间直通及 P2P 数据分发能力实现模型参数快速复制。 +- **强化学习模型参数重排**:利用异构对象的卡间直通传输能力,快速将模型参数从训练侧同步到推理侧。 +- **训练场景 CheckPoint 快速保存及加载**:基于 KV 接口快速写 Checkpoint,并支持将数据持久化到二级缓存保证数据可靠性。Checkpoint恢复时各节点将 Checkpoint 分片快速加载到异构对象中,利用异构对象的卡间直通传输及 P2P 数据分发能力,快速将 Checkpoint 传递到各节点 HBM。 -![Deployment View of yuanrong-datasystem](./docs/source_en/getting-started/image/deployment.png) +### yuanrong-datasystem 架构 -Deployment Architecture of yuanrong-datasystem (as illustrated in the diagram above): +![](./docs/source_zh_cn/getting-started/image/logical_architecture.png) -- The cluster requires **ETCD** deployment for cluster management. -- Each node must deploy a **worker** process registered with ETCD. -- The **SDK** is integrated into user processes and communicates with the local worker. +yuanrong-datasystem 由三个部分组成: -Data Transmission: -- **SDK ↔ worker**: Shared memory for data read/write. -- **worker ↔ worker**: TCP/RDMA (current version supports TCP only; RDMA support planned). -- **HBM Heterogeneous Objects**: Direct cross-device transmission via HCCS/RoCE. +- **多语言SDK**:提供 Python/C++ 语言接口,封装 heterogeneous object 及 KV 接口,支撑业务实现数据快速读写。提供两种类型接口: + - **heterogeneous object**:基于 NPU 卡的 HBM 内存抽象异构对象接口,实现昇腾 NPU 卡间数据高速直通传输。同时提供 H2D/D2H 高速迁移接口,实现数据快速在 DRAM/HBM 之间传输。 + - **KV**:基于共享内存实现免拷贝的 KV 接口,实现高性能数据缓存,支持通过对接外部组件提供数据可靠性语义。 -## Installation +- **worker**:yuanrong-datasystem 的核心组件,用于分配管理 DRAM/SSD 资源以及元数据,提供分布式多级缓存能力。 -### Pip mode method installation +- **集群管理**:依赖 ETCD,实现节点发现/健康检测,支持故障恢复及在线扩缩容。 -Install the version available on PyPI: +![](./docs/source_zh_cn/getting-started/image/deployment.png) -```bash -pip install yr-datasystem -``` +yuanrong-datasystem 的部署视图如上图所示: -To install a custom version, refer to the documentation [yr-datasystem custom version installation](./docs/source_zh_cn/getting-started/install.md#安装自定义版本) +- 需部署 ETCD 用于集群管理。 +- 每个节点需部署 worker 进程并注册到 ETCD。 +- SDK 集成到用户进程中并与同节点的 worker 通信。 -### Source code compilation installation +各组件间的数据传输协议如下: -To install yr-datasystem using the source code compilation method, refer to the documentation: [Source Code Compilation Installation of yr-datasystem](./docs/source_zh_cn/getting-started/install.md#源码编译方式安装yr-datasystem版本). +- SDK 与 worker 之间通过共享内存读写数据。 +- worker 和 worker 之间通过 TCP/RDMA 传输数据(当前版本仅支持 TCP,后续版本支持 RDMA )。 +- 异构对象 HBM 之间通过 HCCS/RoCE 卡间直通传输数据。 -## Deployment +## 入门 -### Process deployment +### 安装 yuanrong-datasystem -yr-datasystem cluster can be quickly deployed using the ds-cli tool. For more information, see [yr-datasystem Process Deployment](./docs/source_zh_cn/getting-started/deploy.md#yr-datasystem进程部署). +#### pip 方式安装 -### Kubernetes deployment +- 安装 yuanrong-datasystem 完整发行版(包含Python SDK、C++ SDK以及命令行工具): + ```bash + pip install yuanrong-datasystem + ``` -yr-datasystem also supports containerized deployment on Kubernetes. For more information, see [yr-datasystem Kubernetes Deployment](./docs/source_zh_cn/getting-started/deploy.md#yr-datasystem-kubernetes部署). +- 仅安装 yuanrong-datasystem Python SDK(不包含C++ SDK以及命令行工具): + ```bash + pip install yuanrong-datasystem-sdk + ``` -## Quickstart +#### 源码编译方式安装 -For a quick introduction to heterogeneous objects, key-value (KV), and object semantics, refer to the following documentation. -- [Heterogeneous object quickstart](./docs/source_zh_cn/getting-started/overview.md#异构对象) -- [KV quickstart](./docs/source_zh_cn/getting-started/overview.md#kv) -- [Object quickstart](./docs/source_zh_cn/getting-started/overview.md#object) +使用源码编译方式安装 yuanrong-datasystem 可以参考文档:[源码编译安装 yuanrong-datasystem](./docs/source_zh_cn/getting-started/install.md#源码编译方式安装yuanrong-datasystem版本) -## Docs +### 部署 yuanrong-datasystem -More details about installation guide, tutorials and APIs, please see the [User Documentation](docs). +#### 进程部署 -## License +- 准备ETCD + + yuanrong-datasystem 的集群管理依赖 ETCD,请先在后台启动单节点 ETCD(示例端口 2379): + ```bash + etcd --listen-client-urls http://0.0.0.0:2379 \ + --advertise-client-urls http://localhost:2379 + ``` +- 一键启动集群 + + 安装 yuanrong-datasystem 完整发行版后,即可通过随包自带的 dscli 命令行工具一键完成集群部署。启动一个监听端口号为 31501 的单机集群: + ```bash + dscli start -w --worker_address "127.0.0.1:31501" --etcd_address "127.0.0.1:2379" + ``` + +- 集群卸载 + ```bash + dscli stop --worker_address "127.0.0.1:31501" + ``` + +更多进程部署参数与部署方式请参考文档:[yuanrong-datasystem 进程部署](./docs/source_zh_cn/getting-started/deploy.md#yuanrong-datasystem进程部署) + +#### Kubernetes 部署 + +yuanrong-datasystem 还提供了基于 Kubernetes 容器化部署方式,部署前请确保部署环境集群已就绪 Kubernetes、Helm 及可访问的 ETCD 集群。 + +- 获取 yuanrong-datasystem helm chart 包 + + 安装 yuanrong-datasystem 完整发行版后,即可通过随包自带的 dscli 命令行工具在当前路径下快速获取 helm chart 包: + ``` + dscli generate_helm_chart -o ./ + ``` + +- 编辑集群部署配置 + + yuanrong-datasystem 通过 ./datasystem/values.yaml 文件进行集群相关配置,其中必配项如下: + + ```yaml + global: + # 其他配置项... + + # 镜像仓地址 + imageRegistry: "swr.cn-south-1.myhuaweicloud.com/openeuler/" + # 镜像名字和镜像tag + images: + datasystem: "yr-datasystem:0.5.0-alpha" + + etcd: + # ETCD集群地址 + etcdAddress: "127.0.0.1:2379" + ``` + +- 集群部署 + + Helm 会提交 DaemonSet,按节点依次拉起 yuanrong-datasystem 实例: + + ```bash + helm install yr_datasystem ./datasystem + ``` + +- 集群卸载 + + ```bash + helm uninstall yr_datasystem + ``` + +更多 yuanrong-datasystem Kubernetes 高级参数配置请参考文档:[yuanrong-datasystem Kubernetes 部署](./docs/source_zh_cn/getting-started/deploy.md#yuanrong-datasystem-kubernetes部署) + +### 代码样例 + +- 异构对象 + + 通过异构对象接口实现 HBM 数据零拷贝发布/订阅 + + ```python + import acl + import random + from datasystem.ds_client import DsClient + + def random_str(slen=10): + seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#%^*()_+=-" + sa = [] + for _ in range(slen): + sa.append(random.choice(seed)) + return ''.join(sa) + + # hetero_dev_publish and hetero_dev_subscribe must be executed in different processes + # because they need to be bound to different NPUs. + def hetero_dev_publish(): + client = DsClient("127.0.0.1", 31501) + client.init() + + acl.init() + device_idx = 1 + acl.rt.set_device(device_idx) + + key_list = [ 'key1', 'key2', 'key3' ] + data_size = 1024 * 1024 + test_value = random_str(data_size) + + in_data_blob_list = [] + for _ in key_list: + tmp_batch_list = [] + for _ in range(4): + dev_ptr, _ = acl.rt.malloc(data_size, 0) + acl.rt.memcpy(dev_ptr, data_size, acl.util.bytes_to_ptr(test_value.encode()), data_size, 1) + blob = Blob(dev_ptr, data_size) + tmp_batch_list.append(blob) + blob_list = DeviceBlobList(device_idx, tmp_batch_list) + in_data_blob_list.append(blob_list) + pub_futures = client.hetero().dev_publish(key_list, in_data_blob_list) + for future in pub_futures: + future.get() + + def hetero_dev_subscribe(): + client = DsClient("127.0.0.1", 31501) + client.init() + + acl.init() + device_idx = 2 + acl.rt.set_device(device_idx) + + key_list = [ 'key1', 'key2', 'key3' ] + data_size = 1024 * 1024 + out_data_blob_list = [] + for _ in key_list: + tmp_batch_list = [] + for _ in range(4): + dev_ptr, _ = acl.rt.malloc(data_size, 0) + blob = Blob(dev_ptr, data_size) + tmp_batch_list.append(blob) + blob_list = DeviceBlobList(device_idx, tmp_batch_list) + out_data_blob_list.append(blob_list) + sub_futures = client.hetero().dev_subscribe(key_list, out_data_blob_list) + for future in sub_futures: + future.get() + ``` + +- KV + + 通过 KV 接口,将任意二进制数据以键值对形式写入全局分布式缓存: + + ```python + from datasystem.ds_client import DsClient + + client = DsClient("127.0.0.1", 31501) + client.init() + + key = "key" + expected_val = b"value" + client.kv().set(key, expected_val) + + val = client.kv().get([key]) + assert val[0] == expected_val + + client.kv().delete([key]) + ``` + +## 文档 + +有关 yuanrong-datasystem 安装指南、教程和 API 的更多详细信息,请参阅 [用户文档](docs) + +查看 [openYuanrong 文档](https://pages.openeuler.openatom.cn/openyuanrong/docs/zh-cn/latest/index.html) 了解如何使用 openYuanrong 开发分布式应用。 + +- 安装:`pip install openyuanrong`,[更多安装信息](https://pages.openeuler.openatom.cn/openyuanrong/docs/zh-cn/latest/deploy/installation.html)。 +- [快速入门](https://pages.openeuler.openatom.cn/openyuanrong/docs/zh-cn/latest/getting_started.html) + +## 贡献 + +我们欢迎您对 openYuanrong 做各种形式的贡献,请参阅我们的[贡献者指南](https://pages.openeuler.openatom.cn/openyuanrong/docs/zh-cn/latest/contributor_guide/index.html)。 + +## 许可证 [Apache License 2.0](LICENSE) \ No newline at end of file diff --git a/README_CN.md b/README_CN.md index e824068..6a80e22 100644 --- a/README_CN.md +++ b/README_CN.md @@ -1,25 +1,20 @@ -[View English](./README.md) +![](./docs/source_zh_cn/getting-started/image/logo-large.png) - +openYuanrong 是一个 Serverless 分布式计算引擎,致力于以一套统一 Serverless 架构支持 AI、大数据、微服务等各类分布式应用。它提供多语言函数编程接口,以单机编程体验简化分布式应用开发;提供分布式动态调度和数据共享等能力,实现分布式应用的高性能运行和集群的高效资源利用。 -- [yr-datasystem 介绍](#yr-datasystem-介绍) -- [适用场景](#适用场景) -- [架构](#架构) -- [安装](#安装) - - [pip 方式安装](#pip-方式安装) - - [源码编译方式安装](#源码编译方式安装) -- [部署](#部署) - - [进程部署](#进程部署) - - [Kubernetes 部署](#kubernetes-部署) -- [快速入门](#快速入门) -- [文档](#文档) -- [许可证](#许可证) +## 简介 - +![](./docs/source_zh_cn/getting-started/image/introduction.png) -## yr-datasystem 介绍 +openYuanrong 由多语言函数运行时、函数系统和数据系统组成,支持按需灵活单独或组合使用。 -yuanrong-datasystem 是一款专为 AI 训推场景设计的分布式异构缓存系统。支持 HBM/DDR/SSD 异构介质池化缓存及 NPU 间异步并发高效数据传输,用于分布式 KVCache 缓存、模型参数缓存、高性能 replaybuffer 等场景。 +- **多语言函数运行时**:提供函数分布式编程,支持 Python、Java、C++ 语言,实现类单机编程高性能分布式运行。 +- **函数系统**:提供大规模分布式动态调度,支持函数实例极速弹性扩缩和跨节点迁移,实现集群资源高效利用。 +- **数据系统**:提供异构分布式多级缓存,支持 Object、Stream 语义,实现函数实例间高性能数据共享及传递。 + +openYuanrong 分为三个代码仓库:[yuanrong-runtime](https://gitee.com/openeuler/yuanrong-runtime) 对应多语言函数运行时;[yuanrong-functionsystem](https://gitee.com/openeuler/yuanrong-functionsystem) 对应函数系统;[yuanrong-datasystem](https://gitee.com/openeuler/yuanrong-datasystem) 对应数据系统,即当前代码仓。 + +**数据系统**是 openYuanrong 的核心概念抽象,是一款专为 AI 训推场景设计的分布式异构缓存系统。支持 HBM/DDR/SSD 异构介质池化缓存及 NPU 间异步并发高效数据传输,用于分布式 KVCache 缓存、模型参数缓存、高性能 replaybuffer 等场景。 yuanrong-datasystem 的主要特性包括: @@ -32,14 +27,14 @@ yuanrong-datasystem 的主要特性包括: - **数据发布订阅**:支持数据订阅发布,解耦数据的生产者(发布者)和消费者(订阅者),实现数据的异步传输与共享。 - **高可靠高可用**:支持分布式元数据管理,实现系统水平线性扩展。支持元数据可靠性,支持动态资源伸缩自动迁移数据,实现系统高可用。 -## 适用场景 +### yuanrong-datasystem 适用场景 - **LLM 长序列推理 KVCache**:基于异构对象提供分布式多级缓存 (HBM/DRAM/SSD) 和高吞吐 D2D/H2D/D2H 访问能力,构建分布式 KV Cache,实现 Prefill 阶段的 KVCache 缓存以及 Prefill/Decode 实例间 KV Cache 快速传递,提升推理吞吐。 - **模型推理实例 M->N 快速弹性**:利用异构对象的卡间直通及 P2P 数据分发能力实现模型参数快速复制。 - **强化学习模型参数重排**:利用异构对象的卡间直通传输能力,快速将模型参数从训练侧同步到推理侧。 - **训练场景 CheckPoint 快速保存及加载**:基于 KV 接口快速写 Checkpoint,并支持将数据持久化到二级缓存保证数据可靠性。Checkpoint恢复时各节点将 Checkpoint 分片快速加载到异构对象中,利用异构对象的卡间直通传输及 P2P 数据分发能力,快速将 Checkpoint 传递到各节点 HBM。 -## 架构 +### yuanrong-datasystem 架构 ![](./docs/source_zh_cn/getting-started/image/logical_architecture.png) @@ -67,39 +62,199 @@ yuanrong-datasystem 的部署视图如上图所示: - worker 和 worker 之间通过 TCP/RDMA 传输数据(当前版本仅支持 TCP,后续版本支持 RDMA )。 - 异构对象 HBM 之间通过 HCCS/RoCE 卡间直通传输数据。 -## 安装 +## 入门 + +### 安装 yuanrong-datasystem + +#### pip 方式安装 + +- 安装 yuanrong-datasystem 完整发行版(包含Python SDK、C++ SDK以及命令行工具): + ```bash + pip install yuanrong-datasystem + ``` + +- 仅安装 yuanrong-datasystem Python SDK(不包含C++ SDK以及命令行工具): + ```bash + pip install yuanrong-datasystem-sdk + ``` + +#### 源码编译方式安装 + +使用源码编译方式安装 yuanrong-datasystem 可以参考文档:[源码编译安装 yuanrong-datasystem](./docs/source_zh_cn/getting-started/install.md#源码编译方式安装yuanrong-datasystem版本) + +### 部署 yuanrong-datasystem + +#### 进程部署 + +- 准备ETCD + + yuanrong-datasystem 的集群管理依赖 ETCD,请先在后台启动单节点 ETCD(示例端口 2379): + ```bash + etcd --listen-client-urls http://0.0.0.0:2379 \ + --advertise-client-urls http://localhost:2379 + ``` +- 一键启动集群 + + 安装 yuanrong-datasystem 完整发行版后,即可通过随包自带的 dscli 命令行工具一键完成集群部署。启动一个监听端口号为 31501 的单机集群: + ```bash + dscli start -w --worker_address "127.0.0.1:31501" --etcd_address "127.0.0.1:2379" + ``` + +- 集群卸载 + ```bash + dscli stop --worker_address "127.0.0.1:31501" + ``` + +更多进程部署参数与部署方式请参考文档:[yuanrong-datasystem 进程部署](./docs/source_zh_cn/getting-started/deploy.md#yuanrong-datasystem进程部署) + +#### Kubernetes 部署 + +yuanrong-datasystem 还提供了基于 Kubernetes 容器化部署方式,部署前请确保部署环境集群已就绪 Kubernetes、Helm 及可访问的 ETCD 集群。 -### pip 方式安装 +- 获取 yuanrong-datasystem helm chart 包 -安装 PyPI 上的版本: -```bash -pip install yr-datasystem -``` + 安装 yuanrong-datasystem 完整发行版后,即可通过随包自带的 dscli 命令行工具在当前路径下快速获取 helm chart 包: + ``` + dscli generate_helm_chart -o ./ + ``` -安装自定义版本,可以参考文档:[安装 yr-datasystem 自定义版本](./docs/source_zh_cn/getting-started/install.md#安装自定义版本) +- 编辑集群部署配置 -### 源码编译方式安装 + yuanrong-datasystem 通过 ./datasystem/values.yaml 文件进行集群相关配置,其中必配项如下: + + ```yaml + global: + # 其他配置项... -使用源码编译方式安装 yr-datasystem 可以参考文档:[源码编译安装 yr-datasystem](./docs/source_zh_cn/getting-started/install.md#源码编译方式安装yr-datasystem版本) + # 镜像仓地址 + imageRegistry: "swr.cn-south-1.myhuaweicloud.com/openeuler/" + # 镜像名字和镜像tag + images: + datasystem: "yr-datasystem:0.5.0-alpha" + + etcd: + # ETCD集群地址 + etcdAddress: "127.0.0.1:2379" + ``` -## 部署 +- 集群部署 -### 进程部署 + Helm 会提交 DaemonSet,按节点依次拉起 yuanrong-datasystem 实例: -yr-datasystem 可基于 dscli 工具快速部署集群,参考文档:[yr-datasystem 进程部署](./docs/source_zh_cn/getting-started/deploy.md#yr-datasystem进程部署) + ```bash + helm install yr_datasystem ./datasystem + ``` -### Kubernetes 部署 +- 集群卸载 -yr-datasystem 还提供了基于 Kubernetes 容器化部署方式,参考文档:[yr-datasystem Kubernetes 部署](./docs/source_zh_cn/getting-started/deploy.md#yr-datasystem-kubernetes部署) + ```bash + helm uninstall yr_datasystem + ``` -## 快速入门 +更多 yuanrong-datasystem Kubernetes 高级参数配置请参考文档:[yuanrong-datasystem Kubernetes 部署](./docs/source_zh_cn/getting-started/deploy.md#yuanrong-datasystem-kubernetes部署) -heterogeneous object、KV 和 object 语义的快速入门,可参考以下文档。 -- [heterogeneous object 快速入门](./docs/source_zh_cn/getting-started/overview.md#异构对象) -- [KV 快速入门](./docs/source_zh_cn/getting-started/overview.md#kv) +### 代码样例 + +- 异构对象 + + 通过异构对象接口实现 HBM 数据零拷贝发布/订阅 + + ```python + import acl + import random + from datasystem.ds_client import DsClient + + def random_str(slen=10): + seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#%^*()_+=-" + sa = [] + for _ in range(slen): + sa.append(random.choice(seed)) + return ''.join(sa) + + # hetero_dev_publish and hetero_dev_subscribe must be executed in different processes + # because they need to be bound to different NPUs. + def hetero_dev_publish(): + client = DsClient("127.0.0.1", 31501) + client.init() + + acl.init() + device_idx = 1 + acl.rt.set_device(device_idx) + + key_list = [ 'key1', 'key2', 'key3' ] + data_size = 1024 * 1024 + test_value = random_str(data_size) + + in_data_blob_list = [] + for _ in key_list: + tmp_batch_list = [] + for _ in range(4): + dev_ptr, _ = acl.rt.malloc(data_size, 0) + acl.rt.memcpy(dev_ptr, data_size, acl.util.bytes_to_ptr(test_value.encode()), data_size, 1) + blob = Blob(dev_ptr, data_size) + tmp_batch_list.append(blob) + blob_list = DeviceBlobList(device_idx, tmp_batch_list) + in_data_blob_list.append(blob_list) + pub_futures = client.hetero().dev_publish(key_list, in_data_blob_list) + for future in pub_futures: + future.get() + + def hetero_dev_subscribe(): + client = DsClient("127.0.0.1", 31501) + client.init() + + acl.init() + device_idx = 2 + acl.rt.set_device(device_idx) + + key_list = [ 'key1', 'key2', 'key3' ] + data_size = 1024 * 1024 + out_data_blob_list = [] + for _ in key_list: + tmp_batch_list = [] + for _ in range(4): + dev_ptr, _ = acl.rt.malloc(data_size, 0) + blob = Blob(dev_ptr, data_size) + tmp_batch_list.append(blob) + blob_list = DeviceBlobList(device_idx, tmp_batch_list) + out_data_blob_list.append(blob_list) + sub_futures = client.hetero().dev_subscribe(key_list, out_data_blob_list) + for future in sub_futures: + future.get() + ``` + +- KV + + 通过 KV 接口,将任意二进制数据以键值对形式写入全局分布式缓存: + + ```python + from datasystem.ds_client import DsClient + + client = DsClient("127.0.0.1", 31501) + client.init() + + key = "key" + expected_val = b"value" + client.kv().set(key, expected_val) + + val = client.kv().get([key]) + assert val[0] == expected_val + + client.kv().delete([key]) + ``` ## 文档 -有关安装指南、教程和 API 的更多详细信息,请参阅[用户文档](docs) + +有关 yuanrong-datasystem 安装指南、教程和 API 的更多详细信息,请参阅 [用户文档](docs) + +查看 [openYuanrong 文档](https://pages.openeuler.openatom.cn/openyuanrong/docs/zh-cn/latest/index.html) 了解如何使用 openYuanrong 开发分布式应用。 + +- 安装:`pip install openyuanrong`,[更多安装信息](https://pages.openeuler.openatom.cn/openyuanrong/docs/zh-cn/latest/deploy/installation.html)。 +- [快速入门](https://pages.openeuler.openatom.cn/openyuanrong/docs/zh-cn/latest/getting_started.html) + +## 贡献 + +我们欢迎您对 openYuanrong 做各种形式的贡献,请参阅我们的[贡献者指南](https://pages.openeuler.openatom.cn/openyuanrong/docs/zh-cn/latest/contributor_guide/index.html)。 ## 许可证 diff --git a/build.sh b/build.sh index b58767f..adbe4bb 100755 --- a/build.sh +++ b/build.sh @@ -59,7 +59,7 @@ Options: For debug code: -p Generate perf point logs, choose from: on/off, default: off. -s Use strip tool to export the symbol table as sym and erase symbols based on it, choose from: on/off, - default: off. + default: on. -S Use Google Sanitizers tools to detect bugs. Choose from off/address/thread/undefined, if set the value to 'address' enable AddressSanitizer, if set the value to 'thread' enable ThreadSanitizer, @@ -133,7 +133,7 @@ function init_default_opts() { export LLT_TIMEOUT_S=80 # For debug - export ENABLE_STRIP="off" + export ENABLE_STRIP="on" export ENABLE_PERF="off" export USE_SANITIZER="off" diff --git a/cmake/util.cmake b/cmake/util.cmake index cf0175a..5875159 100644 --- a/cmake/util.cmake +++ b/cmake/util.cmake @@ -840,7 +840,7 @@ function(PACKAGE_PYTHON PACKAGE_NAME) set(PY_TAGS "${PY_TAGS}m") endif () string(TOLOWER ${CMAKE_HOST_SYSTEM_NAME}_${CMAKE_HOST_SYSTEM_PROCESSOR} PLATFORM_TAG) - set(TARGET_WHEEL "${PACKAGE_NAME}-${DATASYSTEM_VERSION}-${PY_TAGS}-${PLATFORM_TAG}.whl") + set(TARGET_WHEEL "yr_datasystem_sdk-${DATASYSTEM_VERSION}-${PY_TAGS}-${PLATFORM_TAG}.whl") set(CONFIG_PACKAGE_SCRIPT ${CMAKE_BINARY_DIR}/PackagePythonSDK.cmake) # Generate PackagePythonSDK.cmake to run setup.py configure_file(${CMAKE_SOURCE_DIR}/cmake/scripts/PackagePython.cmake.in diff --git a/docs/source_zh_cn/api/api_python/object_client/ObjectClient/datasystem.object_client.ObjectClient.generate_object_key.rst b/docs/source_zh_cn/api/api_python/object_client/ObjectClient/datasystem.object_client.ObjectClient.generate_object_key.rst index 1a1ba62..8cd625e 100644 --- a/docs/source_zh_cn/api/api_python/object_client/ObjectClient/datasystem.object_client.ObjectClient.generate_object_key.rst +++ b/docs/source_zh_cn/api/api_python/object_client/ObjectClient/datasystem.object_client.ObjectClient.generate_object_key.rst @@ -1,7 +1,7 @@ -datasystem.object_client.ObjectClient.generate_object_id +datasystem.object_client.ObjectClient.generate_object_key ========================================================= -.. py:method:: datasystem.object_client.ObjectClient.generate_object_id(prefix='') +.. py:method:: datasystem.object_client.ObjectClient.generate_object_key(prefix='') 生成一个带数据系统Worker UUID的对象 key。 diff --git a/docs/source_zh_cn/api/api_python/object_client/datasystem.object_client.ObjectClient.rst b/docs/source_zh_cn/api/api_python/object_client/datasystem.object_client.ObjectClient.rst index fe09631..8f6be4f 100644 --- a/docs/source_zh_cn/api/api_python/object_client/datasystem.object_client.ObjectClient.rst +++ b/docs/source_zh_cn/api/api_python/object_client/datasystem.object_client.ObjectClient.rst @@ -31,4 +31,4 @@ datasystem.object_client.ObjectClient datasystem.object_client.ObjectClient.g_increase_ref datasystem.object_client.ObjectClient.g_decrease_ref datasystem.object_client.ObjectClient.query_global_ref_num - datasystem.object_client.ObjectClient.generate_object_id \ No newline at end of file + datasystem.object_client.ObjectClient.generate_object_key \ No newline at end of file diff --git a/docs/source_zh_cn/getting-started/image/introduction.png b/docs/source_zh_cn/getting-started/image/introduction.png new file mode 100644 index 0000000000000000000000000000000000000000..f20528db3c434ba1a145bc33824b814b3653bc00 GIT binary patch literal 44167 zcmb5WbyU?+*DXv43WzjFE8QK^NC-%GgA&ppAsr&p(%mK9-67q5=#V~icYPb5=l$+K z_l|L|Lp_{d?pkxrHTPNsD#%HoA`>9Pz`&qNNs1}Kz`zZ|z`zE)fCERCOpfEg2dur4 zga}N@Fwr*n^33GD?0XoP@-URU&j{c<(pO1Mdl;Bk9Z&yYdu;NIU|@=fq{QB?2_zn7tXK-efRTiGG&)}ZE_BNuZ zpn_xIXRFtF1W%{Eh38llIR9PgUG+KL{J%GK2t&UA`*GaQy8!mzqkf~ptHS?#j3gmq z0ph=>gmVohsi8(8jS;-829mT?WOL^N86}i4ip}x!TjG5>EsQFwE2|v5?zfqpQ4P+9)4UvIe>yR$ z0nYS5IG9n3H%1EmgbVx&V8P+<-R7p|Y}$q_T&1Xtpm|T1df}^}K7Cfb%_DgFG!<3g zeEJ;qOE-r(LVItt9mt?NFp$KQ)xpj&GyNmrcvIm#rMOfT4iq&R8wN1nxe!$0zk9(UPhYXb9leln z9YSvL%ju`hiNO?e_Cp*Q#a6K;-HIyTK$5ZYq^$j|He-hqYGP`>6FsxR$pNV}&>GOT zc8QtXtN8JeDfQUjDTk6@^b|bm_xB$rrUkp$Ar=Z*##P2*$0@(s*)r=kbgjzEa_ZE= z6Lr<3B0h()@`X8HzGqD^d}E*f73Szc7y|Qm?ZYQ?TAj7)Li|>zgN8rMO`&0*<`E?= z1pl0JJIMU6O#u15_o6Y8-N@c-8&wG)zu*p5*#G``>U+1by~*T za#TTY4A>0CXE_&|ii_X>bd)T6Oj)Xia5MX5oP=*t{#xd9;VG<)?^2(2a^S&oz z>-o#(bgVP7QJ?*iK8dGx;xwQC_pHrZwr?aTY7YBLr!KTv4RWed5$a0o5EXG$S%{?+ z@^mjc8Mm^%+a;lfMpxk)xh2vn)@xSJ@hbYhu-Yyn79k$53?x{XB?2(Bf(9z7NF$R! zEoZN1P15dfmmgEv7W=#Z49zWdd4~Gm6QL14ujRu>m^na1Mx!mkxVw|~?^Nb~E%H+> zEE=mz!1a8QDB;c2+w#V++QU%{_2J(riA9UFIupel3vv3M)sMa6$kSq<%yVVZtc=`QsfAzU*5fhQzPK@j`FS|zHlvSaZ2NN(pG-5I+b{mvvj zqtrR;5s`JuANv|*yR>JURUXF$(fd2&*l$x zxe=`?S*pDn%$~sGE}4GjPEF{wS|$Hqx}U3wDQ#XO(>xMezOx@bSVB&>jxg%0!)SPf z4o~F6Z}*u1*1+5nZftBA;duaYZ9V>Nlens<#Jc=mSI1j@$|m>Y8Efs?yLQrM=O2I9 z)d+r_2t5$EEz;T5*XSZIM-_`@+SMGgX?40j87O@?e0(?*db~bF6S^}M>Miz;nUG9Eo8uGKO&82^xQ0lz3(*F1Pu5+SUK= z%>MR_I;QFdZ+AP9cVo@{#AoYji}EaH_s;G7AT3fAEIN*D*Dq>v`yDzWJ`(RReJxH- z78mL*!j?Rqb4}Gg{!R0=egrdL>$L3caf3?q&RHx>@BU6Svn+*;I!dYK{-O~y1~Yr!)C)NFMNDu@ zS)RR4ZerV9&#y#8Bjz!hfj+?dzryE2W_P%PS_`;(JzV46KYvBcVYHsd8in|Z#Pjcr zG20eo_zjG(_V*_v4IJbwqj-^8((kHPdHa`#FSj0C|71U#u1wSwRUEJ)pSE8x5MM+P zkBqX2_a>tL*`KSPC#a5N5;lhxtR~(dN1jdky6JnJTFqshu>Gj3%V|lbc*|0q?Htkb zBj)kpa_jh3etJ|T`@jJx-9sA z{^*?2mv+I$iF;?gI$4gDQ*?o>Q$A(0ar3>JP;~nCXYu(f&0XS!W{E=pV`Z$xoE)m4 zEg#X1Hzt3jz1tr>E{risxc>9edU517+r$5M*4VjW^QxYYHo=!g4gUKjOaUScDJkas z*OhMg5%I$3FNx;LCk}yoLJOX$X8p9gmF9JTN2K`!Z&UrNLQFDS=Ii-&1@VYW(sxz5 zjgA0sx?I!B0PeeQkvLS75BxQz%tSs{m!SgGKBqr>jXPC3Q4>t-pj zm)lWO&FmgAMW{EGFqLfi%jFh-a?#gh>r$|@)GV2iWZ5VfEy%Wx`gNxDcxs$^{GHs+ z^J2mHGhDv{aoK@$5&-Top^~_SLg?VgB6pxK?CVC+GOv?>!>U%Lj}8os73{weM4ql< zKK^lgXWWRE^7P8|$i{B^t6=7b(^->8k+1=l-FdICxB7gH8V#YnP0EKDiMTxyr69@rWr*~b< zg@~!%B++irPDq-U8ELtpmxkC~YR6XjTXGlUqG8>}L!M}CbWBdW!A?Kevj391Fih`! z!vJ(PiOMYnrL7VHUdJ8xi;r_L^I=gX#(GWHM|Y5yfN_+zJbXD^p#YHQrn0m$z3d2p z({0PTXP9c)L*cIJ=P-IkPux=7oS}Xh01J6+u~1uBCCb& zj<9NczW0m1N^7#-dRLnsG~XiHLvCWd}^y9b61|y z&!jXuw%Q)@Bp9ZDl?4v|a+^Ev*PCwk>Tm8wpR)?QGrr0KH#p}6z54xK#9+4^zf&S4 zp>B%rXTQYJ%c1IMliB)bme$H}qI{oEeuW>UV5bJsexP34nQbJE@Rig5fJgRf_!N&x z`_iruk@w})qWyJeAA9al)%DJ<&CLZN$3*|1F&9r%S)3Zq763%CmBjS46+H;iJG{mN zxp*)~*6*Jvx~Rdfa^=8>uoP_I7t0bQu-@b{EmbD(e?1#4P9I_gD9i7%Q>2|=&&>VS z6lGMZ2f-K81Te>SeQ+pxP((ef>lC--Os8qiuBM|^=y9RX_~A~xaEnog$7ZGf7j=x7 zJ*2IM<|Pro`&h*}sv$w1I|Ut6`D0tg28CJ2=S+&4me4SM#@{tX1RG*f#H1^<=wP&y zb?`npAn6wL%96djx5 z7mNWKm25D#)QOTrj>YSEiGIet?~4SXwxTzG}_eB|M3f_aTfM!@spq6&XX z|87f&y=c!SXH%(;3VB-clezR!J0NE=Rq?C_XIFnjB|J~}ot8Z>J<>ekdw$iH**iQw z_@}kp?d(FY$k9@#A3$g`>7T7p3I|g~{LdK8O$&Z}Tmq3y?7mxyjzFWs{_$>UN|EIz zMQVehLSOdDXfxVSiHOm*o?1vDY7$K^(OOp$TI=;DpTnqV7AI3`M*VHN^TJPBV6bar z6WrTy4v36l2=sVNx?5ac+W@s!2#IE$)n7Q?jz~j6S7iGb$jbFCAyDp5l8z*w$D@Tq2oH0|wSPK3$fg{%%+%13Wz}=hr>Q8oKqvL6qYgsxZ9s5(ra2|o@_s(3;F?kXt+sA1L*A;Y;>OIoUwDR`0S08+ z@+@f&#h*n+etfikPl-2wDzf=HpZ{k&=Vxkva+Ydf&t~jaUWW@-k7Lr%8st6B`&eVNx?@ ziR$_GZFzhx3Nm{^@FMhhcbej+CtLao#*_~TA6HlC@eL9#oggAM7Grf3`%oE3qot~w zTbHJ*rZHrrA-{&7sMK_{)G_`ss7X`8B|ey$JV-8OSO3Wft2UoZhi{w|qk202zy_Cf9aO#V9<2&5uReXup;KO>cZ00|B;S1(nsm=HAJf+k#SN4@^t3G zi9#(&p5;_gE#yn1+|!XGM;ano+2HfNr)37dUpc&om=gbM)!&rw1!KJbgsC<@Sk}qlGV4!!(QTsvZu1+KEosB=NhSx^)#I zboS%Pc%sS@%HO!*T&=U|N3dYht zLZH*A1g-Re*dNG3F0s|=q6rBsj-}_5g>!Q4DJWys)x0Pa6Rt3=I0O6Q(!+FVxD_

nBwJA)Xq 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

}Gxe$hPpZf-4rS0@! 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 kG9Wszx97- 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

N=Rb*YAD9VX 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 diff --git a/docs/source_zh_cn/getting-started/image/logo-large.png b/docs/source_zh_cn/getting-started/image/logo-large.png new file mode 100644 index 0000000000000000000000000000000000000000..a0338c5022ed3654abe8ee22d37131b2b7ed059d GIT binary patch literal 9867 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 - -#include "datasystem/perf_client.h" - -using datasystem::ConnectOptions; -using datasystem::Status; - -static std::shared_ptr client; - -static std::string DEFAULT_IP = "127.0.0.1"; -static constexpr int DEFAULT_PORT = 9088; -static constexpr int PARAMETERS_NUM = 3; - -bool Start() -{ - std::cerr << "Start to get perf log" << std::endl; - std::unordered_map> clientPerfLog; - Status status = client->GetPerfLog("client", clientPerfLog); - if (status.IsError()) { - std::cerr << "Run device exampled failed, detail: " << status.ToString() << std::endl; - } - - return status.IsOk(); -} - -int main(int argc, char *argv[]) -{ - std::string ip; - int port = 0; - int index = 0; - std::string clientPublicKey, clientPrivateKey, serverPublicKey; - - if (argc == 1) { - ip = DEFAULT_IP; - port = DEFAULT_PORT; - } else if (argc == PARAMETERS_NUM) { - ip = argv[++index]; - port = atoi(argv[++index]); - } else { - std::cerr << "Invalid input parameters."; - return -1; - } - - std::cout << "Start to run perf example" << std::endl; - - // Get the client - std::string workerAddr = ip + ':' + std::to_string(port); - std::cout << "The client workerAddr:" << workerAddr << std::endl; - ConnectOptions connectOpts{ .host = ip, .port = port, .connectTimeoutMs = 5 * 1000 }; - client = std::make_shared(connectOpts); - Status status = client->Init(); - if (status.IsError()) { - std::cerr << "[device]Failed to init object client : " << status.ToString() << std::endl; - return -1; - } - if (!Start()) { - return -1; - } - return 0; -} diff --git a/example/src/state_cache/state_example.cpp b/example/src/state_cache/state_example.cpp deleted file mode 100644 index f79ea41..0000000 --- a/example/src/state_cache/state_example.cpp +++ /dev/null @@ -1,174 +0,0 @@ -/** - * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Description: The state cache example. - */ - -#include - -#include "datasystem/state_cache.h" - -using datasystem::ConnectOptions; -using datasystem::Context; -using datasystem::Optional; -using datasystem::ReadOnlyBuffer; -using datasystem::StateClient; -using datasystem::Status; - -static std::shared_ptr client_; - -static std::string DEFAULT_IP = "127.0.0.1"; -static constexpr int DEFAULT_PORT = 9088; -static constexpr int PARAMETERS_NUM = 3; -static constexpr int SUCCESS = 0; -static constexpr int FAILED = -1; - -static int Write() -{ - (void)Context::SetTraceId("write"); - std::string objectKey = "key1"; - std::string val = "test1"; - datasystem::SetParam opt; - opt.writeMode = datasystem::WriteMode::NONE_L2_CACHE; - Status status = client_->Set(objectKey, val, opt); - if (status.IsError()) { - std::cerr << "Set Fail: " << status.ToString() << std::endl; - return FAILED; - } - std::cout << "State client set succeeds." << std::endl; - return SUCCESS; -} - -static int Read() -{ - (void)Context::SetTraceId("read"); - std::string objectKey = "key1"; - std::string correctVal = "test1"; - std::string val; - Status status = client_->Get(objectKey, val); - if (status.IsError()) { - std::cerr << "Get string value failed, detail: " << status.ToString() << std::endl; - return FAILED; - } - if (correctVal == val) { - std::cout << "State client get string value succeeds." << std::endl; - } else { - std::cerr << "Get string value failed, expect value: " << correctVal << ", but get val: " << val << std::endl; - return FAILED; - } - - Optional buffer; - status = client_->Get(objectKey, buffer); - auto str = std::string(reinterpret_cast(buffer->ImmutableData()), buffer->GetSize()); - if (status.IsError()) { - std::cerr << "Get buffer value failed, detail: " << status.ToString() << std::endl; - return FAILED; - } - if (correctVal != str) { - std::cerr << "Get string value failed, expect value: " << correctVal << ", but get val: " << str << std::endl; - return FAILED; - } - std::cout << "State client get succeeds." << std::endl; - return SUCCESS; -} - -static int Delete() -{ - (void)Context::SetTraceId("delete"); - std::string objectKey = "key1"; - Status status = client_->Del(objectKey); - if (status.IsError()) { - std::cerr << "Delete failed, detail: " << status.ToString() << std::endl; - return FAILED; - } - std::cout << "State client delete succeeds." << std::endl; - return SUCCESS; -} - -static int TestSetValue() -{ - std::string val = "test1"; - datasystem::SetParam opt; - uint32_t ttl = 5; - opt.writeMode = datasystem::WriteMode::NONE_L2_CACHE; - opt.ttlSecond = ttl; - std::string key = client_->Set(val, opt); - if (key.empty()) { - std::cerr << "The key from set value api is empty." << std::endl; - return FAILED; - } - std::cout << "State client set value api succeeds." << std::endl; - return SUCCESS; -} - -int Start() -{ - int ret1 = Write(); - int ret2 = Read(); - int ret3 = Delete(); - int ret4 = TestSetValue(); - return ret1 | ret2 | ret3 | ret4; -} - -int main(int argc, char *argv[]) -{ - const int authParametersNum = 6; - std::string ip; - int port = 0; - int index = 0; - std::string clientPublicKey, clientPrivateKey, serverPublicKey; - - if (argc == 1) { - ip = DEFAULT_IP; - port = DEFAULT_PORT; - } else if (argc == PARAMETERS_NUM) { - ip = argv[++index]; - port = atoi(argv[++index]); - } else if (argc == authParametersNum) { - // example call: - // ./state_example 127.0.0.1 18482 - ip = argv[++index]; - port = atoi(argv[++index]); - clientPublicKey = argv[++index]; - clientPrivateKey = argv[++index]; - serverPublicKey = argv[++index]; - } else { - std::cerr << "Invalid input parameters."; - return FAILED; - } - - ConnectOptions connectOpts{ .host = ip, - .port = port, - .connectTimeoutMs = 3 * 1000, - .clientPublicKey = clientPublicKey, - .clientPrivateKey = clientPrivateKey, - .serverPublicKey = serverPublicKey }; - client_ = std::make_shared(connectOpts); - (void)Context::SetTraceId("init"); - Status status = client_->Init(); - if (status.IsError()) { - std::cerr << "Failed to init state client, detail: " << status.ToString() << std::endl; - return FAILED; - } - - if (Start() == FAILED) { - std::cerr << "The state client example run failed." << std::endl; - return FAILED; - } - - return SUCCESS; -} diff --git a/include/datasystem/hetero_cache/hetero_client.h b/include/datasystem/hetero_cache/hetero_client.h index 6ec5ada..ec626fe 100644 --- a/include/datasystem/hetero_cache/hetero_client.h +++ b/include/datasystem/hetero_cache/hetero_client.h @@ -63,15 +63,6 @@ public: /// \return Status of the call. Status Init(); - /// \brief (Deprecated) For device object, to get multiple objects. - /// \param[in] objectKeys multiple keys support - /// \param[out] devBlobList vector of blobs, only modify the data pointed to by the pointer. - /// \param[in] timeoutMs max waiting time of getting data - /// \param[out] failList failed ojbejcts to be get - /// \return K_OK on any object success; the error code otherwise. - Status MGet(const std::vector &objectKeys, const std::vector &devBlobList, - uint64_t timeoutMs, std::vector &failList); - /// \brief Obtain data from the host and write the data to the device. /// MGetH2D and MSetD2H must be used together. /// If multiple memory addresses are combined and written to the host during MSetD2H, the host data @@ -85,20 +76,6 @@ public: Status MGetH2D(const std::vector &keys, const std::vector &devBlobList, std::vector &failKeys, int32_t subTimeoutMs); - /// \brief (Deprecated) For device object, to async get multiple objects. - /// \param[in] objectKeys multiple keys support - /// \param[out] devBlobList vector of blobs, only modify the data pointed to by the pointer. - /// \param[in] timeoutMs max waiting time of getting data - /// \return future of AsyncResult, describe get status and failed list. - std::shared_future MGetAsync(const std::vector &objectKeys, - const std::vector &devBlobList, uint64_t timeoutMs); - - /// \brief (Deprecated) For device object, to invoke worker client to create and publish multiple objects. - /// \param[in] objKeys multiple keys support - /// \param[in] devBlobList vector of blobs - /// \return K_OK on any object success; the error code otherwise. - Status MSet(const std::vector &objectKeys, const std::vector &devBlobList); - /// \brief Write the data of the device to the host. If the BLOB of the device contains multiple memory addresses, /// the device automatically combines data and writes the data to the host. /// \param[in] keys Keys in the host @@ -110,13 +87,6 @@ public: Status MSetD2H(const std::vector &keys, const std::vector &devBlobList, const SetParam &setParam = {}); - /// \brief (Deprecated) For device object Async set multiple objects, and return before publish rpc called. - /// \param[in] objKeys multiple keys support - /// \param[in] devBlobList vector of blobs - /// \return future of AsyncResult, describe set status and failed list. - std::shared_future MSetAsync(const std::vector &objectKeys, - const std::vector &devBlobList); - /// \brief Delete the key from the host. /// \param[in] keys Keys in the host /// \param[out] failedKeys The failed delete keys. @@ -174,13 +144,6 @@ public: Status DevSubscribe(const std::vector &keys, const std::vector &devBlobList, std::vector &futureVec); - /// \brief (Deprecate)Retrieves Device data through prefetching, completing the operation and returning immediately, - /// requiring combination with DevMGet. - /// \param[in] keys Keys corresponding to blob2dList - /// \param[out] devBlobList List describing the structure of Device memory - /// \return K_OK on when return sucesssfully; the error code otherwise. - Status DevPreFetch(const std::vector &keys, std::vector &blob2dList); - /// \brief Obtains data from the device and writes the data to blob2dList. Data is transmitted directly through /// the device-to-device channel. /// DevMSet and DevMGet must be used together. Heterogeneous objects are not automatically deleted after @@ -220,13 +183,6 @@ public: /// \ K_INVALID: the vector of keys is empty or include empty key. Status DevDelete(const std::vector &keys, std::vector &failedKeys); - /// \brief (Deprecated) LocalDelete interface. After calling this interface, the data replica stored in the - /// datasystem by the current client connection will be deleted. - /// \param[in] keys The objectKeys of the data expected to be deleted. - /// \param[out] failedKeys Partial failures will be returned through this parameter. - /// \return K_OK on when return sucesss; the error code otherwise. - Status LocalDelete(const std::vector &keys, std::vector &failedKeys); - /// \brief LocalDelete interface. After calling this interface, the data replica stored in the data system by the /// current client connection will be deleted. /// \param[in] keys The objectKeys of the data expected to be deleted. diff --git a/include/datasystem/kv_cache/read_only_buffer.h b/include/datasystem/kv_cache/read_only_buffer.h index a0e881b..4979f45 100644 --- a/include/datasystem/kv_cache/read_only_buffer.h +++ b/include/datasystem/kv_cache/read_only_buffer.h @@ -29,7 +29,6 @@ namespace datasystem { class KVClient; -class StateClient; class __attribute ((visibility ("default"))) ReadOnlyBuffer { public: ReadOnlyBuffer() = default; @@ -64,7 +63,6 @@ public: private: friend KVClient; - friend StateClient; explicit ReadOnlyBuffer(std::shared_ptr &buffer) { diff --git a/include/datasystem/object_cache/object_client.h b/include/datasystem/object_cache/object_client.h index 00f4beb..ee186a1 100644 --- a/include/datasystem/object_cache/object_client.h +++ b/include/datasystem/object_cache/object_client.h @@ -48,11 +48,6 @@ struct CreateParam { CacheType cacheType = CacheType::MEMORY; }; -struct CreateDeviceParam { - LifetimeType lifetime = LifetimeType::REFERENCE; - bool cacheLocation = true; -}; - struct ObjMetaInfo { uint64_t objSize{ 0 }; // the size of object data, 0 if object not found. std::vector locations; // the workerIds of the locations diff --git a/include/datasystem/object_cache/object_enum.h b/include/datasystem/object_cache/object_enum.h index fb6faf5..f7214d2 100644 --- a/include/datasystem/object_cache/object_enum.h +++ b/include/datasystem/object_cache/object_enum.h @@ -31,7 +31,7 @@ enum class WriteMode : int { NONE_L2_CACHE = 0, WRITE_THROUGH_L2_CACHE = 1, // sync write WRITE_BACK_L2_CACHE = 2, // async write - NONE_L2_CACHE_EVICT = 3, // evictable write + NONE_L2_CACHE_EVICT = 3, // evictable write }; enum class ConsistencyType : int { @@ -39,27 +39,6 @@ enum class ConsistencyType : int { CAUSAL = 1, }; -enum class DataType : uint8_t { - DATA_TYPE_INT8 = 0, /**< int8 */ - DATA_TYPE_INT16 = 1, /**< int16 */ - DATA_TYPE_INT32 = 2, /**< int32 */ - DATA_TYPE_FP16 = 3, /**< fp16 */ - DATA_TYPE_FP32 = 4, /**< fp32 */ - DATA_TYPE_INT64 = 5, /**< int64 */ - DATA_TYPE_UINT64 = 6, /**< uint64 */ - DATA_TYPE_UINT8 = 7, /**< uint8 */ - DATA_TYPE_UINT16 = 8, /**< uint16 */ - DATA_TYPE_UINT32 = 9, /**< uint32 */ - DATA_TYPE_FP64 = 10, /**< fp64 */ - DATA_TYPE_BFP16 = 11, /**< bfp16 */ - DATA_TYPE_RESERVED /**< reserved */ -}; - -enum class LifetimeType : uint8_t { - REFERENCE = 0, - MOVE = 1, -}; - enum class CacheType : int { MEMORY = 0, DISK = 1, diff --git a/include/datasystem/state_cache.h b/include/datasystem/state_cache.h deleted file mode 100644 index 98fbd65..0000000 --- a/include/datasystem/state_cache.h +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef DATASYSTEM_STATE_CACHE_H -#define DATASYSTEM_STATE_CACHE_H - -#include "datasystem/context/context.h" -#include "datasystem/kv_cache/read_only_buffer.h" -#include "datasystem/state_cache/state_client.h" -#include "datasystem/utils/status.h" - -#endif // DATASYSTEM_STATE_CACHE_H \ No newline at end of file diff --git a/include/datasystem/state_cache/state_client.h b/include/datasystem/state_cache/state_client.h deleted file mode 100644 index a0bfce0..0000000 --- a/include/datasystem/state_cache/state_client.h +++ /dev/null @@ -1,252 +0,0 @@ -/** - * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Description: Data system state cache client management. - */ -#ifndef DATASYSTEM_STATE_CACHE_STATE_CLIENT_H -#define DATASYSTEM_STATE_CACHE_STATE_CLIENT_H - -#include -#include -#include - -#include "datasystem/object_cache/buffer.h" -#include "datasystem/object_cache/object_enum.h" -#include "datasystem/kv_cache/kv_client.h" -#include "datasystem/kv_cache/read_only_buffer.h" -#include "datasystem/utils/connection.h" -#include "datasystem/utils/optional.h" -#include "datasystem/utils/status.h" -#include "datasystem/utils/string_view.h" - -namespace datasystem { -namespace object_cache { -class ObjectClientImpl; -} // namespace object_cache -} // namespace datasystem - -namespace datasystem { -class __attribute((visibility("default"))) StateClient { -public: - /** - * @brief Construct StateClient. - * @param[in] connectOptions The connection options. - */ - explicit StateClient(const ConnectOptions &connectOptions = {}); - - ~StateClient(); - - /** - * @brief Shutdown the state client. - * @return K_OK on success; the error code otherwise. - */ - Status ShutDown(); - - /** - * @brief Init StateClient object. - * @return Status of the call. - */ - Status Init(); - - /** - * @brief Invoke worker client to set the value of a key. - * @param[in] key The key. - * @param[in] val The value for the key. - * @param[in] param The get parameters. - * @return K_OK on success; the error code otherwise. - * K_INVALID: the key or val is empty. - */ - Status Set(const std::string &key, const StringView &val, const SetParam ¶m = {}); - - /** - * @brief Invoke worker client to set the value of a key. - * @param[in] val The value for the key. - * @param[in] param The get parameters. - * @return Key of object, return empty string if set error. - */ - std::string Set(const StringView &val, const SetParam ¶m = {}); - - /** - * @brief Transactional multi-key set interface, it guarantees all the keys are either successfully created or - * none of them is created. The number of keys should be in the range of 1 to 8. - * @param[in] keys The keys to be set. - * @param[in] vals The values for the keys. - * @param[in] param The set parameters. - * @return K_OK on success; the error code otherwise. - */ - Status MSetTx(const std::vector &keys, const std::vector &vals, - const MSetParam ¶m = {}); - - /** - * @brief Multi-key set interface, it can batch set keys and return failed keys. The max keys size < 2000 - * and the max value for key to set < 500 * 1024 - * @param[in] keys The keys of object - * @param[in] vals The vals to set - * @param[out] outFailedKeys The failed ids for set - * @param[in] param The set parameters. - * @return K_OK on any key success; the error code otherwise. - */ - Status MSet(const std::vector &keys, const std::vector &vals, - std::vector &outFailedKeys, const MSetParam ¶m = {}); - - /** - * @brief Invoke worker client to get the value of a key. - * @param[in] key The key. - * @param[out] val The value for the key. - * @param[in] timeoutMs timeoutMs of waiting for the result return if object not ready. A positive integer number - * required. 0 means no waiting time allowed. - * @return K_OK on success; the error code otherwise. - * K_INVALID: the key is empty. - * K_NOT_FOUND: the key not found. - * K_RUNTIME_ERROR: Cannot get value from worker. - */ - Status Get(const std::string &key, std::string &val, int32_t timeoutMs = 0); - - /** - * @brief Invoke worker client to get the value of a key. - * @param[in] key The key. - * @param[in] timeoutMs timeoutMs of waiting for the result return if object not ready. A positive integer number - * required. 0 means no waiting time allowed. - * @param[out] readOnlyBuffer The value for the key. - * @return K_OK on success; the error code otherwise. - * K_INVALID: the key is empty. - * K_NOT_FOUND: the key not found. - * K_RUNTIME_ERROR: Cannot get value from worker. - */ - Status Get(const std::string &key, Optional &readOnlyBuffer, int32_t timeoutMs = 0); - - /** - * @brief Invoke worker client to get the values of all the given keys. - * @param[in] keys The vector of the keys. - * @param[in] timeoutMs timeoutMs of waiting for the result return if object not ready. A positive integer number - * required. 0 means no waiting time allowed. - * @param[out] vals The vector of the values. - * @return K_OK on any key success; the error code otherwise. - * K_INVALID: the vector of keys is empty or include empty key. - * K_NOT_FOUND: the key not found. - * K_RUNTIME_ERROR: Cannot get values from worker. - * @verbatim - * If some keys are not found, The Status OK will return, - * and the existing keys will set the vals with the same index of keys. - * @endverbatim - */ - Status Get(const std::vector &keys, std::vector &vals, int32_t timeoutMs = 0); - - /** - * @brief Invoke worker client to get the values of all the given keys. - * @param[in] keys The vector of the keys. - * @param[in] timeoutMs timeoutMs of waiting for the result return if object not ready. A positive integer number - * required. 0 means no waiting time allowed. - * @param[out] readOnlyBuffers The vector of the values. - * @return K_OK on any key success; the error code otherwise. - * K_INVALID: the vector of keys is empty or include empty key. - * K_NOT_FOUND: the key not found. - * K_RUNTIME_ERROR: Cannot get values from worker. - * @verbatim - * If some keys are not found, The Status OK will return, - * and the existing keys will set the vals with the same index of keys. - * @endverbatim - */ - Status Get(const std::vector &keys, std::vector> &readOnlyBuffers, - int32_t timeoutMs = 0); - - /** - * @brief Some data in an object can be read based on the specified key and parameters. - * In some scenarios, read amplification can be avoided. - * @param[in] readParams The vector of the keys and offset. - * @param[out] readOnlyBuffers The vector of the values. - * @return K_OK on any key success; the error code otherwise. - * K_INVALID: the vector of keys is empty or include empty key. - * K_NOT_FOUND: the key not found. - * K_RUNTIME_ERROR: Cannot get values from worker. - * @verbatim - * If some keys are not found, The Status OK will return, - * and the existing keys will set the vals with the same index of keys. - * @endverbatim - */ - Status Read(const std::vector &readParams, std::vector> &readOnlyBuffers); - - /** - * @brief Invoke worker client to delete a key. - * @param[in] key The key. - * @return K_OK on success; the error code otherwise. - * K_INVALID: The key is empty. - */ - Status Del(const std::string &key); - - /** - * @brief Invoke worker client to delete all the given keys. - * @param[in] keys The vector of the keys. - * @param[out] failedKeys The failed delete keys. - * @return K_OK on any key success; the error code otherwise. - * K_INVALID: the vector of keys is empty or include empty key. - */ - Status Del(const std::vector &keys, std::vector &failedKeys); - - /** - * @brief Generate a key with workerId. - * @param[in] prefixKey The user specified key prefix. - * @return The key with workerId, if the key fails to be generated, an empty string is returned. - */ - std::string GenerateKey(const std::string &prefixKey = ""); - - /** - * @brief Invoke worker client to query the size of objectKeys (include the objectKeys of other AZ). - * @param[in] objectKeys The objectKeys need to query size. - * @param[out] outSizes The size for the objectKeys in bytes. - * @return K_OK on success; the error code otherwise. - * K_INVALID: The objectKeys are empty or invalid. - * K_NOT_FOUND: All objectKeys not found. - * K_RPC_UNAVAILABLE: Network error. - * K_NOT_READY: Worker not ready. - * K_RUNTIME_ERROR: Can not get objectKey size from worker. - */ - Status QuerySize(const std::vector &objectKeys, std::vector &outSizes); - - /** - * @brief Worker health check. - * @return K_OK on any object success; the error code otherwise. - */ - Status HealthCheck(); - - /// \brief Check whether the keys exist in the data system. - /// - /// \param[in] keys The keys to be checked. Constraint: The number of keys cannot exceed 10000. - /// \param[in] exists The existence of the corresponding key. - /// - /// \return K_OK if at least one key is successfully processed, the error code otherwise. - Status Exist(const std::vector &keys, std::vector &exists); - - /// \brief Sets expiration time for key list (in seconds) - /// - /// \param[in] key The keys to set expiration for. - /// \param[in] ttlSeconds TTL in seconds. - /// \param[out] failedKeys The failed expire keys. - /// - /// \return K_OK on success; the error code otherwise. - /// K_INVALID: The key is empty or contains invalid characters. - /// K_NOT_FOUND: The key is not exist. - /// K_NOT_READY: Worker is not ready. - /// K_RPC_UNAVAILABLE: Network error. - /// K_RUNTIME_ERROR: Inner error happen. - Status Expire(const std::vector &keys, uint32_t ttlSeconds, std::vector &failedKeys); - -private: - std::shared_ptr impl_; -}; -} // namespace datasystem -#endif // DATASYSTEM_STATE_CACHE_STATE_CLIENT_H diff --git a/include/datasystem/utils/status.h b/include/datasystem/utils/status.h index 574f308..ee10d16 100644 --- a/include/datasystem/utils/status.h +++ b/include/datasystem/utils/status.h @@ -59,6 +59,8 @@ enum StatusCode : uint32_t { K_RETRY_IF_LEAVING = 30, K_SCALE_DOWN = 31, K_SCALING = 32, + K_LRU_HARD_LIMIT = 33, + K_LRU_SOFT_LIMIT = 34, // rpc error code, range: [1000, 2000) K_RPC_CANCELLED = 1000, @@ -75,24 +77,6 @@ enum StatusCode : uint32_t { K_OC_KEY_ALREADY_EXIST = 2004, K_WORKER_PULL_OBJECT_NOT_FOUND = 2005, - // file error code, range: [4000, 5000) - // Delete file error code when open source - K_FC_BUSY = 4000, - K_FC_FRAGMENT_ERROR = 4001, - K_FC_NOT_FLUSHED = 4002, - K_FC_SEVERE_ERROR = 4003, - K_FC_HARD_LIMIT = 4004, - K_FC_SOFT_LIMIT = 4005, - K_FC_UPDATE_NEEDED = 4006, - K_FC_FILE_CLOSED = 4007, - K_FC_DIRECTORY_NOT_EMPTY = 4008, - K_FC_FILE_ALREADY_WRITING = 4009, - K_FC_FAIL_QUORUM_WRITE = 4010, - K_FC_FAIL_QUORUM_READ = 4011, - K_FC_RETRY_LAST_COMMIT = 4012, - K_FC_CATCHUP_PENDING = 4013, - K_FC_FLUSH_PENDING = 4014, - // Heterogeneous error code, range: [5000, 6000] K_ACL_ERROR = 5000, K_HCCL_ERROR = 5001, diff --git a/k8s/helm_chart/datasystem/values.yaml b/k8s/helm_chart/datasystem/values.yaml index b34f716..786ef2d 100644 --- a/k8s/helm_chart/datasystem/values.yaml +++ b/k8s/helm_chart/datasystem/values.yaml @@ -52,7 +52,7 @@ global: # Minimum required resources. requests: cpu: "3" - memory: "4Gi" + memory: "3Gi" # Upper limit of the shared memory, the default unit for shared memory is MB. # To prevent being rendered as scientific notation by helm, numbers with more than 5 digits should be configured as strings. diff --git a/python/__init__.py b/python/__init__.py index 2a8a67a..0a800a0 100644 --- a/python/__init__.py +++ b/python/__init__.py @@ -21,7 +21,6 @@ __all__ = [ "DsClient", "HeteroClient", "ObjectClient", - "StateClient", "KVClient", "Status", "SubconfigType", diff --git a/python/setup.py b/python/setup.py index c605516..f4bd0c0 100644 --- a/python/setup.py +++ b/python/setup.py @@ -28,7 +28,7 @@ version_path = os.path.join(pwd, 'datasystem', 'VERSION') with open(version_path, 'r') as v: version = v.read() -package_name = 'datasystem' +package_name = 'yr-datasystem-sdk' commit_id = os.getenv('COMMIT_ID', 'None').replace("\n", "") package_datas = { @@ -78,7 +78,7 @@ class EggInfo(egg_info): """Egg info.""" def run(self): - egg_info_dir = os.path.join(os.path.dirname(__file__), 'datasystem.egg-info') + egg_info_dir = os.path.join(os.path.dirname(__file__), 'yr_datasystem_sdk.egg-info') super().run() update_permissions(egg_info_dir) diff --git a/src/datasystem/client/CMakeLists.txt b/src/datasystem/client/CMakeLists.txt index 6bc0a3c..e15543e 100644 --- a/src/datasystem/client/CMakeLists.txt +++ b/src/datasystem/client/CMakeLists.txt @@ -16,7 +16,6 @@ list(APPEND CLIENT_SRCS object_cache/device/device_memory_unit.cpp object_cache/device/hccl_comm_magr.cpp object_cache/device/page_attn_utils.cpp - state_cache/state_client.cpp kv_cache/read_only_buffer.cpp kv_cache/kv_client.cpp hetero_cache/hetero_client.cpp) diff --git a/src/datasystem/client/hetero_cache/device_util.h b/src/datasystem/client/hetero_cache/device_util.h index 6db2c15..a0b9b8b 100644 --- a/src/datasystem/client/hetero_cache/device_util.h +++ b/src/datasystem/client/hetero_cache/device_util.h @@ -23,6 +23,7 @@ #include #include +#include "datasystem/common/constants.h" #include "datasystem/object_cache/object_enum.h" namespace datasystem { diff --git a/src/datasystem/client/hetero_cache/hetero_client.cpp b/src/datasystem/client/hetero_cache/hetero_client.cpp index 1aa83c8..8fa5f0b 100644 --- a/src/datasystem/client/hetero_cache/hetero_client.cpp +++ b/src/datasystem/client/hetero_cache/hetero_client.cpp @@ -61,18 +61,6 @@ Status HeteroClient::Init() return rc; } -Status HeteroClient::MGet(const std::vector &objectKeys, const std::vector &devBlobList, - uint64_t timeoutMs, std::vector &failKeys) -{ - RETURN_IF_NOT_OK(HeteroClient::IsCompileWithHetero()); - PerfPoint point(PerfKey::CLIENT_MGET_H2D_ALL); - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - std::shared_future future = impl_->MGetH2D(objectKeys, devBlobList, timeoutMs); - auto result = future.get(); - failKeys = std::move(result.failedList); - return result.status; -} - Status HeteroClient::MGetH2D(const std::vector &keys, const std::vector &devBlobList, std::vector &failedKeys, int32_t subTimeoutMs) { @@ -85,34 +73,6 @@ Status HeteroClient::MGetH2D(const std::vector &keys, const std::ve return result.status; } -std::shared_future HeteroClient::MGetAsync(const std::vector &objectKeys, - const std::vector &devBlobList, - uint64_t timeoutMs) -{ -#ifndef BUILD_HETERO -#ifndef WITH_TESTS - std::promise promise; - promise.set_value( - AsyncResult{ .status = Status(K_RUNTIME_ERROR, "Hetero client is not supported. compile with -X on please!"), - .failedList = {} }); - return promise.get_future().share(); -#endif -#endif - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - std::shared_future future = impl_->MGetH2D(objectKeys, devBlobList, timeoutMs); - return future; -} - -Status HeteroClient::MSet(const std::vector &objectKeys, const std::vector &devBlobList) -{ - RETURN_IF_NOT_OK(HeteroClient::IsCompileWithHetero()); - PerfPoint point(PerfKey::CLIENT_MSET_D2H_ALL); - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - SetParam setParam{ .writeMode = WriteMode::NONE_L2_CACHE_EVICT }; - std::shared_future future = impl_->MSet(objectKeys, devBlobList, setParam); - return future.get().status; -} - Status HeteroClient::MSetD2H(const std::vector &keys, const std::vector &devBlobList, const SetParam &setParam) { @@ -123,23 +83,6 @@ Status HeteroClient::MSetD2H(const std::vector &keys, const std::ve return future.get().status; } -std::shared_future HeteroClient::MSetAsync(const std::vector &objectKeys, - const std::vector &devBlobList) -{ -#ifndef BUILD_HETERO -#ifndef WITH_TESTS - std::promise promise; - promise.set_value( - AsyncResult{ .status = Status(K_RUNTIME_ERROR, "Hetero client is not supported. compile with -X on please!"), - .failedList = {} }); - return promise.get_future().share(); -#endif -#endif - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - - return impl_->MSet(objectKeys, devBlobList, { .writeMode = WriteMode::NONE_L2_CACHE_EVICT }); -} - Status HeteroClient::Delete(const std::vector &keys, std::vector &failedKeys) { RETURN_IF_NOT_OK(HeteroClient::IsCompileWithHetero()); @@ -200,13 +143,6 @@ Status HeteroClient::DevSubscribe(const std::vector &keys, const st return impl_->DevSubscribe(keys, devBlobList, futureVec); } -Status HeteroClient::LocalDelete(const std::vector &objectKeys, std::vector &failedKeys) -{ - RETURN_IF_NOT_OK(HeteroClient::IsCompileWithHetero()); - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - return impl_->DevLocalDelete(objectKeys, failedKeys); -} - Status HeteroClient::DevDelete(const std::vector &keys, std::vector &failedKeys) { RETURN_IF_NOT_OK(HeteroClient::IsCompileWithHetero()); @@ -243,14 +179,6 @@ Status HeteroClient::DevMSet(const std::vector &keys, const std::ve return impl_->DevMSet(keys, devBlobList, failedKeys); } -Status HeteroClient::DevPreFetch(const std::vector &keys, std::vector &blob2dList) -{ - RETURN_IF_NOT_OK(HeteroClient::IsCompileWithHetero()); - (void)keys; - (void)blob2dList; - return Status::OK(); -} - Status HeteroClient::DevMGet(const std::vector &keys, std::vector &devBlobList, std::vector &failedKeys, int32_t subTimeoutMs) { diff --git a/src/datasystem/client/object_cache/device/client_device_object_manager.h b/src/datasystem/client/object_cache/device/client_device_object_manager.h index 0521da7..8b0b623 100644 --- a/src/datasystem/client/object_cache/device/client_device_object_manager.h +++ b/src/datasystem/client/object_cache/device/client_device_object_manager.h @@ -26,6 +26,7 @@ #include +#include "datasystem/common/constants.h" #include "datasystem/common/device/ascend/acl_resource_manager.h" #include "datasystem/client/object_cache/device/device_memory_unit.h" #include "datasystem/client/object_cache/device/p2p_subscribe.h" diff --git a/src/datasystem/client/state_cache/state_client.cpp b/src/datasystem/client/state_cache/state_client.cpp deleted file mode 100644 index b76cc46..0000000 --- a/src/datasystem/client/state_cache/state_client.cpp +++ /dev/null @@ -1,349 +0,0 @@ -/** - * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Description: Data system State Cache Client management. - */ -#include "datasystem/state_cache/state_client.h" - -#include -#include -#include -#include -#include -#include - -#include "datasystem/client/object_cache/object_client_impl.h" -#include "datasystem/common/log/access_recorder.h" -#include "datasystem/common/log/trace.h" -#include "datasystem/common/perf/perf_manager.h" -#include "datasystem/common/util/format.h" -#include "datasystem/common/util/status_helper.h" -#include "datasystem/common/util/strings_util.h" -#include "datasystem/common/util/uuid_generator.h" -#include "datasystem/kv_cache/read_only_buffer.h" -#include "datasystem/utils/status.h" - -namespace datasystem { -StateClient::StateClient(const ConnectOptions &connectOptions) -{ - impl_ = std::make_unique(connectOptions); -} - -StateClient::~StateClient() -{ - if (impl_) { - impl_.reset(); - } -} - -Status StateClient::ShutDown() -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - if (impl_) { - bool needRollbackState; - auto rc = impl_->ShutDown(needRollbackState); - impl_->CompleteHandler(rc.IsError(), needRollbackState); - return rc; - } - return Status::OK(); -} - -Status StateClient::Init() -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - bool needRollbackState; - auto rc = impl_->Init(needRollbackState, true); - impl_->CompleteHandler(rc.IsError(), needRollbackState); - return rc; -} - -Status StateClient::Set(const std::string &key, const StringView &val, const SetParam &setParam) -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - PerfPoint point(PerfKey::KV_CLIENT_SET_OBJECT); - AccessRecorder accessPoint(AccessRecorderKey::DS_KV_CLIENT_SET); - Status rc = impl_->Set(key, val, setParam); - RequestParam reqParam; - reqParam.objectKey = key.substr(0, LOG_OBJECT_KEY_SIZE_LIMIT); - reqParam.writeMode = std::to_string(static_cast(setParam.writeMode)); - reqParam.ttlSecond = std::to_string(setParam.ttlSecond); - reqParam.existence = std::to_string(static_cast(setParam.existence)); - reqParam.cacheType = std::to_string(static_cast(setParam.cacheType)); - accessPoint.Record(rc.GetCode(), std::to_string(val.size()), reqParam, rc.GetMsg()); - return rc; -} - -std::string StateClient::Set(const StringView &val, const SetParam &setParam) -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - PerfPoint point(PerfKey::KV_CLIENT_SET_OBJECT); - AccessRecorder accessPoint(AccessRecorderKey::DS_KV_CLIENT_SET); - std::string key; - auto rc = impl_->Set(val, setParam, key); - RequestParam reqParam; - reqParam.objectKey = key.substr(0, LOG_OBJECT_KEY_SIZE_LIMIT); - reqParam.writeMode = std::to_string(static_cast(setParam.writeMode)); - reqParam.ttlSecond = std::to_string(setParam.ttlSecond); - reqParam.cacheType = std::to_string(static_cast(setParam.cacheType)); - accessPoint.Record(rc.GetCode(), std::to_string(val.size()), reqParam); - return key; -} - -Status StateClient::MSetTx(const std::vector &keys, const std::vector &vals, - const MSetParam ¶m) -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - PerfPoint point(PerfKey::KV_CLIENT_MSET_OBJECT); - AccessRecorder accessPoint(AccessRecorderKey::DS_KV_CLIENT_MSETNX); - Status rc = impl_->MSet(keys, vals, param); - RequestParam reqParam; - std::string key = (keys.empty() ? "" : keys[0]); - reqParam.objectKey = key.substr(0, LOG_OBJECT_KEY_SIZE_LIMIT); - reqParam.writeMode = std::to_string(static_cast(param.writeMode)); - reqParam.ttlSecond = std::to_string(param.ttlSecond); - reqParam.existence = std::to_string(static_cast(param.existence)); - reqParam.cacheType = std::to_string(static_cast(param.cacheType)); - accessPoint.Record(rc.GetCode(), std::to_string(vals.size()), reqParam, rc.GetMsg()); - return rc; -} - -Status StateClient::Get(const std::string &key, std::string &val, int32_t timeoutMs) -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - PerfPoint point(PerfKey::KV_CLIENT_GET_OBJECT); - std::vector> buffers; - std::vector vals; - size_t dataSize = 0; - AccessRecorder accessPoint(AccessRecorderKey::DS_KV_CLIENT_GET); - Status rc = impl_->GetWithLatch({ key }, vals, timeoutMs, buffers, dataSize); - RequestParam reqParam; - reqParam.objectKey = key.substr(0, LOG_OBJECT_KEY_SIZE_LIMIT); - reqParam.timeout = std::to_string(timeoutMs); - StatusCode code = rc.GetCode() == K_NOT_FOUND ? K_OK : rc.GetCode(); - accessPoint.Record(code, std::to_string(dataSize), reqParam, rc.GetMsg()); - if (rc.IsOk()) { - val = std::move(vals[0]); - } - return rc; -} - -Status StateClient::Get(const std::vector &keys, std::vector &vals, int32_t timeoutMs) -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - PerfPoint point(PerfKey::KV_CLIENT_GET_MUL_OBJECTS); - std::vector> buffers; - size_t dataSize = 0; - AccessRecorder accessPoint(AccessRecorderKey::DS_KV_CLIENT_GET); - Status rc = impl_->GetWithLatch(keys, vals, timeoutMs, buffers, dataSize); - RequestParam reqParam; - reqParam.objectKey = objectKeysToString(keys); - reqParam.timeout = std::to_string(timeoutMs); - StatusCode code = rc.GetCode() == K_NOT_FOUND ? K_OK : rc.GetCode(); - accessPoint.Record(code, std::to_string(dataSize), reqParam, rc.GetMsg()); - return rc; -} - -Status StateClient::Get(const std::string &key, Optional &readOnlyBuffer, int32_t timeoutMs) -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - PerfPoint point(PerfKey::KV_CLIENT_GET_BUFFER); - std::vector> buffers; - AccessRecorder accessPoint(AccessRecorderKey::DS_KV_CLIENT_GET); - Status rc = impl_->Get({ key }, timeoutMs, buffers); - size_t dataSize = rc.IsOk() ? buffers[0]->GetSize() : 0; - RequestParam reqParam; - reqParam.objectKey = key.substr(0, LOG_OBJECT_KEY_SIZE_LIMIT); - reqParam.timeout = std::to_string(timeoutMs); - StatusCode code = rc.GetCode() == K_NOT_FOUND ? K_OK : rc.GetCode(); - accessPoint.Record(code, std::to_string(dataSize), reqParam, rc.GetMsg()); - RETURN_IF_NOT_OK(rc); - auto bufferSharedPtr = std::make_shared(std::move(buffers[0].value())); - readOnlyBuffer = Optional(ReadOnlyBuffer(bufferSharedPtr)); - return rc; -} - -Status StateClient::MSet(const std::vector &keys, const std::vector &vals, - std::vector &outFailedKeys, const MSetParam ¶m) -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - PerfPoint point(PerfKey::KV_CLIENT_MSET_OBJECT); - AccessRecorder accessPoint(AccessRecorderKey::DS_KV_CLIENT_MSETNX); - Status rc = impl_->MSet(keys, vals, param, outFailedKeys); - RequestParam reqParam; - std::string key = (keys.empty() ? "" : keys[0]); - reqParam.objectKey = key.substr(0, LOG_OBJECT_KEY_SIZE_LIMIT); - reqParam.writeMode = std::to_string(static_cast(param.writeMode)); - reqParam.ttlSecond = std::to_string(param.ttlSecond); - reqParam.existence = std::to_string(static_cast(param.existence)); - reqParam.cacheType = std::to_string(static_cast(param.cacheType)); - accessPoint.Record(rc.GetCode(), std::to_string(vals.size()), reqParam, rc.GetMsg()); - return rc; -} - -Status StateClient::Get(const std::vector &keys, std::vector> &readOnlyBuffers, - int32_t timeoutMs) -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - PerfPoint point(PerfKey::KV_CLIENT_GET_MUL_BUFFERS); - std::vector> buffers; - AccessRecorder accessPoint(AccessRecorderKey::DS_KV_CLIENT_GET); - Status rc = impl_->Get(keys, timeoutMs, buffers); - int64_t dataSize = 0; - if (rc.IsOk()) { - readOnlyBuffers.clear(); - for (auto &buffer : buffers) { - if (buffer) { - dataSize += buffer->GetSize(); - auto bufferSharedPtr = std::make_shared(std::move(buffer.value())); - readOnlyBuffers.emplace_back(ReadOnlyBuffer(bufferSharedPtr)); - } else { - readOnlyBuffers.emplace_back(); - } - } - } - RequestParam reqParam; - reqParam.objectKey = objectKeysToString(keys); - reqParam.timeout = std::to_string(timeoutMs); - StatusCode code = rc.GetCode() == K_NOT_FOUND ? K_OK : rc.GetCode(); - accessPoint.Record(code, std::to_string(dataSize), reqParam, rc.GetMsg()); - return rc; -} - -static std::string ReadParamToString(const std::vector ¶ms) -{ - std::string ret = "["; - uint32_t len = 0; - for (const auto ¶m : params) { - std::string msg = FormatString("[%s, off:%ld, size:%ld],", param.key.substr(0, LOG_OBJECT_KEY_SIZE_LIMIT), - param.offset, param.size); - uint64_t size = msg.size(); - if (len > LOG_TOTAL_KEYS_SIZE_LIMIT - size) { - ret.append("total:").append(std::to_string(params.size())).append("]"); - return ret; - } - len += size; - ret.append(msg); - } - if (ret.length() > 1) { - ret.pop_back(); - } - ret.append("]"); - return ret; -} - -Status StateClient::Read(const std::vector &readParams, - std::vector> &readOnlyBuffers) -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - PerfPoint point(PerfKey::KV_CLIENT_GET_MUL_BUFFERS); - std::vector> buffers; - AccessRecorder accessPoint(AccessRecorderKey::DS_KV_CLIENT_GET); - std::unordered_set keys; - RequestParam reqParam; - reqParam.objectKey = ReadParamToString(readParams); - reqParam.timeout = std::to_string(0); - int64_t dataSize = 0; - for (auto ¶m : readParams) { - if (keys.find(param.key) != keys.end()) { - auto status = Status(K_INVALID, FormatString("The input parameter contains duplicate key %s. Keys: %s", - param.key, VectorToString(keys))); - accessPoint.Record(K_INVALID, std::to_string(dataSize), reqParam, status.GetMsg()); - return status; - } - keys.insert(param.key); - } - Status rc = impl_->Read(readParams, buffers); - if (rc.IsOk()) { - readOnlyBuffers.clear(); - for (auto &buffer : buffers) { - if (buffer) { - dataSize += buffer->GetSize(); - auto bufferSharedPtr = std::make_shared(std::move(buffer.value())); - readOnlyBuffers.emplace_back(ReadOnlyBuffer(bufferSharedPtr)); - } else { - readOnlyBuffers.emplace_back(); - } - } - } - StatusCode code = rc.GetCode() == K_NOT_FOUND ? K_OK : rc.GetCode(); - accessPoint.Record(code, std::to_string(dataSize), reqParam, rc.GetMsg()); - return rc; -} - -Status StateClient::Del(const std::string &key) -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - PerfPoint point(PerfKey::KV_CLIENT_DEL_OBJECT); - std::vector failedKeys; - AccessRecorder accessPoint(AccessRecorderKey::DS_KV_CLIENT_DELETE); - Status rc = impl_->Delete({ key }, failedKeys); - RequestParam reqParam; - reqParam.objectKey = key.substr(0, LOG_OBJECT_KEY_SIZE_LIMIT); - accessPoint.Record(rc.GetCode(), "0", reqParam, rc.GetMsg()); - return rc; -} - -Status StateClient::Del(const std::vector &keys, std::vector &failedKeys) -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - PerfPoint point(PerfKey::KV_CLIENT_DEL_MUL_OBJECTS); - AccessRecorder accessPoint(AccessRecorderKey::DS_KV_CLIENT_DELETE); - Status rc = impl_->Delete(keys, failedKeys); - RequestParam reqParam; - reqParam.objectKey = objectKeysToString(keys); - accessPoint.Record(rc.GetCode(), "0", reqParam, rc.GetMsg()); - return rc; -} - -std::string StateClient::GenerateKey(const std::string &prefixKey) -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - std::string key; - (void)impl_->GenerateKey(key, prefixKey); - return key; -} - -Status StateClient::QuerySize(const std::vector &objectKeys, std::vector &outSizes) -{ - return impl_->QuerySize(objectKeys, outSizes); -} - -Status StateClient::HealthCheck() -{ - ServerState state; - return impl_->HealthCheck(state); -} - -Status StateClient::Exist(const std::vector &keys, std::vector &exists) -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - return impl_->Exist(keys, exists, true, false); -} - -Status StateClient::Expire(const std::vector &keys, uint32_t ttlSeconds, - std::vector &failedKeys) -{ - TraceGuard traceGuard = Trace::Instance().SetTraceUUID(); - PerfPoint point(PerfKey::KV_CLIENT_EXPIRE_OBJECT); - AccessRecorder accessPoint(AccessRecorderKey::DS_KV_CLIENT_EXPIRE); - auto rc = impl_->Expire(keys, ttlSeconds, failedKeys); - RequestParam reqParam; - reqParam.objectKey = objectKeysToString(keys); - accessPoint.Record(rc.GetCode(), "0", reqParam, rc.GetMsg()); - return rc; -} -} // namespace datasystem diff --git a/src/datasystem/common/constants.h b/src/datasystem/common/constants.h index cfbfad4..7d9bcba 100644 --- a/src/datasystem/common/constants.h +++ b/src/datasystem/common/constants.h @@ -61,6 +61,32 @@ static const uint64_t KB = 1024; // worker lock id static const uint32_t WORKER_LOCK_ID = 0; + +enum class DataType : uint8_t { + DATA_TYPE_INT8 = 0, /**< int8 */ + DATA_TYPE_INT16 = 1, /**< int16 */ + DATA_TYPE_INT32 = 2, /**< int32 */ + DATA_TYPE_FP16 = 3, /**< fp16 */ + DATA_TYPE_FP32 = 4, /**< fp32 */ + DATA_TYPE_INT64 = 5, /**< int64 */ + DATA_TYPE_UINT64 = 6, /**< uint64 */ + DATA_TYPE_UINT8 = 7, /**< uint8 */ + DATA_TYPE_UINT16 = 8, /**< uint16 */ + DATA_TYPE_UINT32 = 9, /**< uint32 */ + DATA_TYPE_FP64 = 10, /**< fp64 */ + DATA_TYPE_BFP16 = 11, /**< bfp16 */ + DATA_TYPE_RESERVED /**< reserved */ +}; + +enum class LifetimeType : uint8_t { + REFERENCE = 0, + MOVE = 1, +}; + +struct CreateDeviceParam { + LifetimeType lifetime = LifetimeType::REFERENCE; + bool cacheLocation = true; +}; } // namespace datasystem #endif // DATASYSTEM_COMMON_CONSTANTS_H diff --git a/src/datasystem/common/lru/lru_cache.h b/src/datasystem/common/lru/lru_cache.h index e8c3458..85eed72 100644 --- a/src/datasystem/common/lru/lru_cache.h +++ b/src/datasystem/common/lru/lru_cache.h @@ -838,9 +838,9 @@ Status LruCache::MakeRoomInCache(LruObjPtr // on the eviction type. rc = evictPolicy_->RoomInCache(lruObjPtr, cacheMiss); while (rc.IsError()) { - if (rc.GetCode() == StatusCode::K_FC_HARD_LIMIT) { + if (rc.GetCode() == StatusCode::K_LRU_HARD_LIMIT) { RETURN_IF_NOT_OK(HardEviction(lruObjPtr, stats)); - } else if (rc.GetCode() == StatusCode::K_FC_SOFT_LIMIT) { + } else if (rc.GetCode() == StatusCode::K_LRU_SOFT_LIMIT) { RETURN_IF_NOT_OK(SoftEviction(lruObjPtr, stats)); } else { LOG(WARNING) << "Failed when trying to make room in cache."; diff --git a/src/datasystem/common/lru/lru_policy.h b/src/datasystem/common/lru/lru_policy.h index c0509e1..3e586fe 100644 --- a/src/datasystem/common/lru/lru_policy.h +++ b/src/datasystem/common/lru/lru_policy.h @@ -185,8 +185,7 @@ public: * @tparam ObjPtr The object type in the cache. * @returns Status from the call. Status returns: * K_OK : there was room in the cache. - * K_FC_HARD_LIMIT : there was no room in the cache and a hard eviction will be needed. - * K_FC_SOFT_LIMIT : there was room in the cache, but the soft limit was hit and soft eviction can be done. + * K_LRU_HARD_LIMIT : there was no room in the cache and a hard eviction will be needed. */ template Status RoomInCache(ObjPtr obj, bool cacheMiss) const @@ -566,14 +565,13 @@ public: * @tparam ObjPtr the object type in the cache. * @returns Status from the call. Status returns: * K_OK : there was room in the cache. - * K_FC_HARD_LIMIT : there was no room in the cache and a hard eviction will be needed. - * K_FC_SOFT_LIMIT : there was room in the cache, but the soft limit was hit and soft eviction can be done. + * K_LRU_HARD_LIMIT : there was no room in the cache and a hard eviction will be needed. */ template Status RoomInCacheImpl(ObjPtr obj, bool cacheMiss) const { if (cacheMiss && (currentSize_ + obj->Size()) > maxSize_) { - RETURN_STATUS(StatusCode::K_FC_HARD_LIMIT, "Lru limit"); + RETURN_STATUS(StatusCode::K_LRU_HARD_LIMIT, "Lru limit"); } return Status::OK(); }; @@ -770,15 +768,14 @@ public: * @tparam ObjPtr the object type in the cache. * @returns Status from the call. Status returns: * K_OK : there was room in the cache. - * K_FC_HARD_LIMIT : there was no room in the cache and a hard eviction will be needed. - * K_FC_SOFT_LIMIT : there was room in the cache, but the soft limit was hit and soft eviction can be done. + * K_LRU_HARD_LIMIT : there was no room in the cache and a hard eviction will be needed. */ template Status RoomInCacheImpl(ObjPtr obj, bool cacheMiss) const { (void)obj; if (cacheMiss && (currentCount_ + 1) > maxCount_) { - RETURN_STATUS(StatusCode::K_FC_HARD_LIMIT, "Lru limit"); + RETURN_STATUS(StatusCode::K_LRU_HARD_LIMIT, "Lru limit"); } return Status::OK(); }; diff --git a/src/datasystem/common/object_cache/object_base.h b/src/datasystem/common/object_cache/object_base.h index 3f32245..087f00b 100644 --- a/src/datasystem/common/object_cache/object_base.h +++ b/src/datasystem/common/object_cache/object_base.h @@ -26,6 +26,7 @@ #include #include "datasystem/client/mmap_table_entry.h" +#include "datasystem/common/constants.h" #include "datasystem/common/object_cache/object_bitmap.h" #include "datasystem/common/rpc/rpc_message.h" #include "datasystem/common/shared_memory/shm_unit.h" diff --git a/src/datasystem/common/util/status_code.def b/src/datasystem/common/util/status_code.def index 4312290..a31f152 100644 --- a/src/datasystem/common/util/status_code.def +++ b/src/datasystem/common/util/status_code.def @@ -32,6 +32,8 @@ STATUS_CODE_DEF(K_SERVER_FD_CLOSED, "The server fd has been closed") STATUS_CODE_DEF(K_RETRY_IF_LEAVING, "Try again when worker is leaving") STATUS_CODE_DEF(K_SCALE_DOWN, "The worker is exiting") STATUS_CODE_DEF(K_SCALING, "The cluster is scaling") +STATUS_CODE_DEF(K_LRU_HARD_LIMIT, "Lru hard limit") +STATUS_CODE_DEF(K_LRU_SOFT_LIMIT, "Lru soft limit") // rpc STATUS_CODE_DEF(K_RPC_CANCELLED, "RPC cancelled") @@ -50,23 +52,6 @@ STATUS_CODE_DEF(K_FUTURE_TIMEOUT, "The future is timeout") STATUS_CODE_DEF(K_ACL_ERROR, "Acl api error") STATUS_CODE_DEF(K_HCCL_ERROR, "Hccl api error") -// file -STATUS_CODE_DEF(K_FC_BUSY, "System busy") -STATUS_CODE_DEF(K_FC_FRAGMENT_ERROR, "Fragment file error") -STATUS_CODE_DEF(K_FC_NOT_FLUSHED, "Not flushed") -STATUS_CODE_DEF(K_FC_SEVERE_ERROR, "Severe error") -STATUS_CODE_DEF(K_FC_HARD_LIMIT, "Hard limit error") -STATUS_CODE_DEF(K_FC_SOFT_LIMIT, "Soft limit error") -STATUS_CODE_DEF(K_FC_UPDATE_NEEDED, "Update needed") -STATUS_CODE_DEF(K_FC_FILE_CLOSED, "File closed") -STATUS_CODE_DEF(K_FC_DIRECTORY_NOT_EMPTY, "Directory not empty") -STATUS_CODE_DEF(K_FC_FILE_ALREADY_WRITING, "File already writing") -STATUS_CODE_DEF(K_FC_FAIL_QUORUM_WRITE, "Insufficient write quorum") -STATUS_CODE_DEF(K_FC_FAIL_QUORUM_READ, "Insufficient read quorum") -STATUS_CODE_DEF(K_FC_RETRY_LAST_COMMIT, "Retry last commit write") -STATUS_CODE_DEF(K_FC_CATCHUP_PENDING, "GCS Catchup is in progress") -STATUS_CODE_DEF(K_FC_FLUSH_PENDING, "Please resubmit Flush command to resolve recovery") - // rdma STATUS_CODE_DEF(K_OC_REMOTE_GET_NOT_ENOUGH, "Size on the remote node has changed") STATUS_CODE_DEF(K_URMA_ERROR, "Urma operation failed") diff --git a/src/datasystem/pybind_api/pybind_register_object.cpp b/src/datasystem/pybind_api/pybind_register_object.cpp index 6b94455..085f971 100644 --- a/src/datasystem/pybind_api/pybind_register_object.cpp +++ b/src/datasystem/pybind_api/pybind_register_object.cpp @@ -27,6 +27,7 @@ #include +#include "datasystem/common/constants.h" #include "datasystem/common/log/log.h" #include "datasystem/common/log/trace.h" #include "datasystem/common/util/format.h" diff --git a/tests/kvconnector/patch/0001-implement-yr-datasystem-connector-and-support-multimoda.patch b/tests/kvconnector/patch/0001-implement-yr-datasystem-connector-and-support-multimoda.patch index 019c039..9ad5b82 100644 --- a/tests/kvconnector/patch/0001-implement-yr-datasystem-connector-and-support-multimoda.patch +++ b/tests/kvconnector/patch/0001-implement-yr-datasystem-connector-and-support-multimoda.patch @@ -983,7 +983,7 @@ index 0000000..9b7407a +from datasystem import DsTensorClient, Future + +ENABLE_PREFIX_CACHING = int(os.environ.get("USING_PREFIX_CONNECTOR", 1)) -+FUTURE_TIMEOUT = int(os.getenv("FUTURE_TIMEOUT", 0)) ++FUTURE_TIMEOUT = int(os.getenv("FUTURE_TIMEOUT", 10000)) +SYNC_FUTURE_TIMEOUT = int(os.getenv("SYNC_FUTURE_TIMEOUT", 1)) +SLEEP_TIMEOUT = 0.005 + diff --git a/tests/st/client_c_api/object_cache/state_cache_test.cpp b/tests/st/client_c_api/object_cache/state_cache_test.cpp deleted file mode 100644 index 0480949..0000000 --- a/tests/st/client_c_api/object_cache/state_cache_test.cpp +++ /dev/null @@ -1,516 +0,0 @@ -/** - * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Description: test cases for c client api. - */ -#include -#include -#include -#include -#include -#include - -#include - -#include "client/object_cache/oc_client_common.h" -#include "common.h" -#include "datasystem/common/log/log.h" -#include "datasystem/state_cache/state_client.h" - -namespace datasystem { -namespace st { -class SCCWrapperTest : public OCClientCommon { -public: - void SetClusterSetupOptions(ExternalClusterOptions &opts) override - { - opts.numWorkers = 3; - opts.numMasters = 3; - opts.numOBS = 1; - opts.numEtcd = 1; - opts.workerGflagParams = "-shared_memory_size_mb=10000"; - } - - StateClient_p CreateStateCacheClient(const std::string &workerHost, const int workerPort, const int timeOut, - const std::string &clientPublicKey, const std::string &clientPrivateKey, - const std::string &serverPublicKey, const std::string &accessKey, - const std::string &secretKey, const std::string &tenantId, - const std::string &enableCrossNodeConnection) - { - return SCCreateClient(workerHost.c_str(), workerPort, timeOut, clientPublicKey.c_str(), - clientPublicKey.length(), clientPrivateKey.c_str(), clientPrivateKey.length(), - serverPublicKey.c_str(), serverPublicKey.length(), accessKey.c_str(), accessKey.length(), - secretKey.c_str(), secretKey.length(), tenantId.c_str(), tenantId.length(), - enableCrossNodeConnection.c_str()); - } - -protected: - static const size_t GB = 1024 * 1024 * 1024; - std::string ak_ = "QTWAOYTTINDUT2QVKYUC"; - std::string sk_ = "MFyfvK41ba2giqM7**********KGpownRZlmVmHc"; -}; - -TEST_F(SCCWrapperTest, ConnectSuccess) -{ - HostPort srcWorkerAddress; - DS_ASSERT_OK(cluster_->GetWorkerAddr(0, srcWorkerAddress)); - auto stateClient = CreateStateCacheClient( - srcWorkerAddress.Host(), srcWorkerAddress.Port(), 60000, "", "", "", - ak_, sk_, "", "true"); - ASSERT_EQ(SCConnectWorker(stateClient).code, datasystem::K_OK); - SCFreeClient(stateClient); -} - -TEST_F(SCCWrapperTest, LEVEL1_ConnectFail) -{ - HostPort srcWorkerAddress; - DS_ASSERT_OK(cluster_->GetWorkerAddr(0, srcWorkerAddress)); - auto stateClient = CreateStateCacheClient( - srcWorkerAddress.Host(), 989, 60000, "", "", "", - ak_.c_str(), sk_.c_str(), "", "true"); - ASSERT_EQ(SCConnectWorker(stateClient).code, datasystem::K_RPC_UNAVAILABLE); - SCFreeClient(stateClient); -} - -TEST_F(SCCWrapperTest, SetSuccess) -{ - HostPort srcWorkerAddress; - DS_ASSERT_OK(cluster_->GetWorkerAddr(0, srcWorkerAddress)); - auto stateClient = CreateStateCacheClient( - srcWorkerAddress.Host(), srcWorkerAddress.Port(), 60000, "", "", "", - ak_, sk_, "", "true"); - ASSERT_EQ(SCConnectWorker(stateClient).code, datasystem::K_OK); - - const char *cKey = "key5485"; - const char *cVal = "data1"; - const size_t keyLen = 7; - const size_t valLen = 5; - ASSERT_EQ(SCSet(stateClient, cKey, keyLen, cVal, valLen, "NONE_L2_CACHE", 0, "NONE").code, datasystem::K_OK); - SCFreeClient(stateClient); -} - -TEST_F(SCCWrapperTest, GetSuccess) -{ - HostPort srcWorkerAddress; - DS_ASSERT_OK(cluster_->GetWorkerAddr(0, srcWorkerAddress)); - auto stateClient = CreateStateCacheClient( - srcWorkerAddress.Host(), srcWorkerAddress.Port(), 60000, "", "", "", - ak_, sk_, "", "true"); - ASSERT_EQ(SCConnectWorker(stateClient).code, datasystem::K_OK); - - const char *cKey = "key1223"; - const char *cValS = "data1"; - const size_t valLen = 5; - const size_t keyLen = 7; - ASSERT_EQ(SCSet(stateClient, cKey, keyLen, cValS, valLen, "NONE_L2_CACHE", 0, "NX").code, datasystem::K_OK); - - char *cValG = nullptr; - size_t valLenToGet; - ASSERT_EQ(SCGet(stateClient, cKey, keyLen, 0, &cValG, &valLenToGet).code, datasystem::K_OK); - ASSERT_EQ(std::string(cValS, 5), std::string(cValG, 5)); - free(cValG); - SCFreeClient(stateClient); -} - -TEST_F(SCCWrapperTest, GetBigObjectSuccess) -{ - HostPort srcWorkerAddress; - DS_ASSERT_OK(cluster_->GetWorkerAddr(0, srcWorkerAddress)); - auto stateClient = CreateStateCacheClient( - srcWorkerAddress.Host(), srcWorkerAddress.Port(), 60000, "", "", "", - ak_, sk_, "", "true"); - ASSERT_EQ(SCConnectWorker(stateClient).code, datasystem::K_OK); - std::string data = GenPartRandomString(3 * GB); - const char *cKey = "key1223"; - const char *cValS = data.c_str(); - const size_t keyLen = 7; - const size_t valLen = 3 * GB; - ASSERT_EQ(SCSet(stateClient, cKey, keyLen, cValS, valLen, "NONE_L2_CACHE", 0, "NONE").code, datasystem::K_OK); - - char *cValG = nullptr; - size_t valLenToGet; - - ASSERT_EQ(SCGet(stateClient, cKey, keyLen, 0, &cValG, &valLenToGet).code, datasystem::K_OK); - ASSERT_EQ(std::string(cValS, 3 * GB), std::string(cValG, valLenToGet)); - free(cValG); - SCFreeClient(stateClient); -} - -TEST_F(SCCWrapperTest, DelSuccess) -{ - HostPort srcWorkerAddress; - DS_ASSERT_OK(cluster_->GetWorkerAddr(0, srcWorkerAddress)); - auto stateClient = CreateStateCacheClient( - srcWorkerAddress.Host(), srcWorkerAddress.Port(), 60000, "", "", "", - ak_, sk_, "", "true"); - ASSERT_EQ(SCConnectWorker(stateClient).code, datasystem::K_OK); - - const char *cKey = "key1523"; - const char *cValS = "data1"; - const size_t valLen = 5; - const size_t keyLen = 7; - ASSERT_EQ(SCSet(stateClient, cKey, keyLen, cValS, valLen, "NONE_L2_CACHE", 0, "NONE").code, datasystem::K_OK); - - ASSERT_EQ(SCDel(stateClient, cKey, strlen(cKey)).code, datasystem::K_OK); - SCFreeClient(stateClient); -} - -TEST_F(SCCWrapperTest, GetArraySuccess) -{ - HostPort srcWorkerAddress; - DS_ASSERT_OK(cluster_->GetWorkerAddr(0, srcWorkerAddress)); - auto stateClient = CreateStateCacheClient( - srcWorkerAddress.Host(), srcWorkerAddress.Port(), 60000, "", "", "", ak_, sk_, - "", "true"); - ASSERT_EQ(SCConnectWorker(stateClient).code, datasystem::K_OK); - - const char *cKey1 = "key1763"; - const char *cValS1 = "data1"; - const size_t valLen1 = 5; - const size_t keyLen1 = 7; - ASSERT_EQ(SCSet(stateClient, cKey1, keyLen1, cValS1, valLen1, "NONE_L2_CACHE", 0, "NONE").code, datasystem::K_OK); - - const char *cKey2 = "key1233"; - const char *cValS2 = "data2"; - const size_t valLen2 = 5; - const size_t keyLen2 = 7; - ASSERT_EQ(SCSet(stateClient, cKey2, keyLen2, cValS2, valLen2, "NONE_L2_CACHE", 0, "NONE").code, datasystem::K_OK); - - const char *cKeys[2]; - cKeys[0] = cKey1; - cKeys[1] = cKey2; - const size_t keysLen[2] = {7, 7}; - char **cVals = MakeCharsArray(2); - size_t *valsLen = MakeNumArray(2); - ASSERT_EQ(SCGetArray(stateClient, cKeys, keysLen, 2, 0, cVals, valsLen).code, datasystem::K_OK); - ASSERT_EQ(std::string(cValS1, 5), std::string(cVals[0], valsLen[0])); - ASSERT_EQ(std::string(cValS2, 5), std::string(cVals[1], valsLen[1])); - FreeCharsArray(cVals, 2); - SCFreeClient(stateClient); -} - -TEST_F(SCCWrapperTest, GetArrayKeyMissing) -{ - HostPort srcWorkerAddress; - DS_ASSERT_OK(cluster_->GetWorkerAddr(0, srcWorkerAddress)); - auto stateClient = CreateStateCacheClient( - srcWorkerAddress.Host(), srcWorkerAddress.Port(), 60000, "", "", "", ak_, sk_, - "", "true"); - ASSERT_EQ(SCConnectWorker(stateClient).code, datasystem::K_OK); - - const char *cKey1 = "key1453"; - const char *cKey2 = "key1298"; - const char *cValS2 = "data1"; - const size_t valLen = 5; - const size_t keyLen2 = 7; - ASSERT_EQ(SCSet(stateClient, cKey2, keyLen2, cValS2, valLen, "NONE_L2_CACHE", 0, "NONE").code, datasystem::K_OK); - - const char *cKeys[2]; - cKeys[0] = cKey1; - cKeys[1] = cKey2; - const size_t keysLen[2] = {7, 7}; - char **cVals = MakeCharsArray(2); - size_t *valsLen = MakeNumArray(2); - ASSERT_EQ(SCGetArray(stateClient, cKeys, keysLen, 2, 0, cVals, valsLen).code, datasystem::K_OK); - ASSERT_EQ(cVals[0], nullptr); - ASSERT_EQ(std::string(cValS2, 5), std::string(cVals[1], valsLen[1])); - FreeCharsArray(cVals, 2); - SCFreeClient(stateClient); -} - -TEST_F(SCCWrapperTest, DelArraySuccess) -{ - HostPort srcWorkerAddress; - DS_ASSERT_OK(cluster_->GetWorkerAddr(0, srcWorkerAddress)); - auto stateClient = CreateStateCacheClient( - srcWorkerAddress.Host(), srcWorkerAddress.Port(), 60000, "", "", "", ak_, sk_, - "", "true"); - ASSERT_EQ(SCConnectWorker(stateClient).code, datasystem::K_OK); - - const char *cKey1 = "key1863"; - const char *cValS1 = "data1"; - const size_t valLen = 5; - const size_t keyLen = 7; - ASSERT_EQ(SCSet(stateClient, cKey1, keyLen, cValS1, valLen, "NONE_L2_CACHE", 0, "NONE").code, datasystem::K_OK); - - const char *cKey2 = "key1253"; - const char *cValS2 = "data2"; - const size_t valLen2 = 5; - const size_t keyLen2 = 7; - ASSERT_EQ(SCSet(stateClient, cKey2, keyLen2, cValS2, valLen2, "NONE_L2_CACHE", 0, "NONE").code, datasystem::K_OK); - - const char *cKeys[2]; - cKeys[0] = cKey1; - cKeys[1] = cKey2; - uint64_t failedCount; - uint64_t numKeys = 2; - char **cVals = MakeCharsArray(numKeys); - ASSERT_EQ(SCDelArray(stateClient, cKeys, numKeys, cVals, &failedCount).code, datasystem::K_OK); - ASSERT_EQ(failedCount, 0ul); - FreeCharsArray(cVals, numKeys); - SCFreeClient(stateClient); -} - -TEST_F(SCCWrapperTest, DelArrayKeyMissing) -{ - HostPort srcWorkerAddress; - DS_ASSERT_OK(cluster_->GetWorkerAddr(0, srcWorkerAddress)); - auto stateClient = CreateStateCacheClient( - srcWorkerAddress.Host(), srcWorkerAddress.Port(), 60000, "", "", "", ak_, sk_, - "", "true"); - ASSERT_EQ(SCConnectWorker(stateClient).code, datasystem::K_OK); - - const char *cKey1 = "key1823"; - const char *cKey2 = "key1890"; - const char *cValS2 = "data2"; - const size_t valLen = 5; - const size_t keyLen = 7; - ASSERT_EQ(SCSet(stateClient, cKey2, keyLen, cValS2, valLen, "NONE_L2_CACHE", 0, "NONE").code, datasystem::K_OK); - - const char *cKeys[2]; - cKeys[0] = cKey1; - cKeys[1] = cKey2; - uint64_t failedCount; - char **cVals = MakeCharsArray(2); - ASSERT_EQ(SCDelArray(stateClient, cKeys, 2, cVals, &failedCount).code, datasystem::K_OK); - ASSERT_EQ(failedCount, 0ul); - FreeCharsArray(cVals, 2); - SCFreeClient(stateClient); -} - -TEST_F(SCCWrapperTest, TestWorkerAddressError) -{ - std::string st(""); - auto stateClient = CreateStateCacheClient(st, -20, 60000, "", "", "", ak_, sk_, "", "true"); - ASSERT_EQ(stateClient, nullptr); - SCFreeClient(stateClient); -} - -TEST_F(SCCWrapperTest, ClientCreateArgumentTest) -{ - HostPort srcWorkerAddress; - DS_ASSERT_OK(cluster_->GetWorkerAddr(0, srcWorkerAddress)); - const char *clPubKey = "This is testing client public key"; - const char *clPriKey = "This is testing client private key"; - const char *srPubKey = "This is testing server public key"; - const char *accessKey = "This is testing access key"; - const char *secretKey = "This is testing secret key"; - auto stateClient = CreateStateCacheClient(srcWorkerAddress.Host(), - srcWorkerAddress.Port(), - 60000, - clPubKey, - clPriKey, - srPubKey, - accessKey, - secretKey, - "", - "true"); - ASSERT_NE(stateClient, nullptr); - SCFreeClient(stateClient); -} - -TEST_F(SCCWrapperTest, TestGenerateKey) -{ - HostPort srcWorkerAddress; - DS_ASSERT_OK(cluster_->GetWorkerAddr(0, srcWorkerAddress)); - auto stateClient = CreateStateCacheClient( - srcWorkerAddress.Host(), srcWorkerAddress.Port(), 60000, "", "", "", ak_, sk_, - "", "true"); - ASSERT_EQ(SCConnectWorker(stateClient).code, datasystem::K_OK); - - char *key = nullptr; - size_t keyLen = SCGenerateKey(stateClient, &key); - const size_t generateKeyLen = 73; // uuid;workeruuid, 36+1+36 - ASSERT_EQ(keyLen, generateKeyLen); - std::string strKey = key; - ASSERT_TRUE(strKey.find(";") != std::string::npos); - delete[] key; - - SCFreeClient(stateClient); -} - -class KVClientGetSubscribeTest : public OCClientCommon { -public: - void SetClusterSetupOptions(ExternalClusterOptions &opts) override - { - int numWorkers = 3; - opts.isObjectCache = true; - opts.masterIdx = 0; - opts.numWorkers = numWorkers; - opts.workerGflagParams = " -shared_memory_size_mb=12 -v=2"; - opts.masterGflagParams = " -v=1"; - opts.numEtcd = 1; - } - - void TearDown() override - { - ExternalClusterTest::TearDown(); - } -}; - -TEST_F(KVClientGetSubscribeTest, TestGetSubscribeAndAddLoaction) -{ - LOG(INFO) << "Test get subscribe and add location"; - std::shared_ptr client0; - std::shared_ptr client1; - InitTestKVClient(0, client0); - InitTestKVClient(1, client1); - - std::string key = "Welcome_to_join_the_conference"; - std::string value = randomData_.GetRandomString(1 * 1024ul * 1024ul); - SetParam param; - param.existence = ExistenceOpt::NX; - std::thread t1([&client0, key, value]() { - std::string getVal; - DS_ASSERT_OK(client0->Get(key, getVal, 5'000)); - ASSERT_EQ(getVal, value); - }); - - std::thread t2([&client1, key, &value, param]() { - sleep(2); - DS_ASSERT_OK(client1->Set(key, value, param)); - }); - - t1.join(); - t2.join(); - - DS_ASSERT_OK(client1->Del(key)); - std::string getVal; - DS_ASSERT_NOT_OK(client0->Get(key, getVal)); - DS_ASSERT_OK(client0->Set(key, value, param)); -} - -TEST_F(KVClientGetSubscribeTest, TestSetGetConcurrency) -{ - LOG(INFO) << "Test set get concurrency"; - std::shared_ptr client0; - std::shared_ptr client1; - InitTestKVClient(0, client0); - InitTestKVClient(1, client1); - - std::string key = "Welcome_to_join_the_conference"; - std::string value = randomData_.GetRandomString(1024ul); - SetParam param; - param.existence = ExistenceOpt::NX; - for (int k = 0; k < 5; ++k) { - std::thread t1([&client0, key, value]() { - std::string getVal; - for (size_t i = 0; i < 100; ++i) { - DS_ASSERT_OK(client0->Get(key, getVal, 5'000)); - ASSERT_EQ(getVal, value); - } - }); - - std::thread t2([&client1, key, &value, param]() { - for (size_t i = 0; i < 100; ++i) { - if (i == 0) { - sleep(1); - DS_ASSERT_OK(client1->Set(key, value, param)); - } else { - DS_ASSERT_NOT_OK(client1->Set(key, value, param)); - } - } - }); - - t1.join(); - t2.join(); - - DS_ASSERT_OK(client1->Del(key)); - } -} - -class KVClientGetTest : public OCClientCommon { -public: - void SetClusterSetupOptions(ExternalClusterOptions &opts) override - { - int numWorkers = 3; - opts.isObjectCache = true; - opts.masterIdx = 0; - opts.numWorkers = numWorkers; - opts.workerGflagParams = " -shared_memory_size_mb=8192 -v=2"; - opts.masterGflagParams = " -v=1"; - opts.numEtcd = 1; - } - - void TearDown() override - { - ExternalClusterTest::TearDown(); - } -}; - -TEST_F(KVClientGetTest, EXCLUSIVE_LEVEL1_TestGetAllDataFromQueryResultDirectly) -{ - std::vector objKeys = {"Kevin", "Bob", "Stuart", "Gru"}; - std::vector sizes = { - 1024, 1024 * 1024ul, 2 * 1024ul * 1024ul * 1024ul + 1, 2 * 1024ul * 1024ul * 1024ul + 100}; - std::shared_ptr client0; - std::shared_ptr client1; - InitTestKVClient(0, client0); - InitTestKVClient(1, client1); - - for (size_t i = 0; i < objKeys.size(); ++i) { - std::string val(sizes[i], 'a' + i); - DS_ASSERT_OK(client0->Set(objKeys[i], val)); - } - - std::vector vals; - DS_ASSERT_OK(client1->Get(objKeys, vals)); - ASSERT_EQ(vals.size(), objKeys.size()); - for (size_t i = 0; i < vals.size(); ++i) { - ASSERT_EQ(vals[i].size(), sizes[i]); - std::string expectedVal(sizes[i], 'a' + i); - ASSERT_EQ(expectedVal, vals[i]); - } -} - -TEST_F(KVClientGetTest, EXCLUSIVE_TestGetAllDataFromQueryResultAndRemote) -{ - std::vector localObjs = {"Kevin", "Bob", "Stuart"}; - std::vector localSizes = {1024, 1024 * 1024ul, 2 * 1024ul * 1024ul * 1024ul + 100}; - std::vector remoteObjs = {"LeBron", "James", "Nomadic", "Dynasty"}; - std::vector remoteSizes = {2 * 1024, 1024 * 1024ul, 2 * 1024ul * 1024ul, 6024}; - std::shared_ptr client0; - std::shared_ptr client1; - std::shared_ptr client2; - InitTestKVClient(0, client0); - InitTestKVClient(1, client1); - InitTestKVClient(1, client2); - - for (size_t i = 0; i < localObjs.size(); ++i) { - std::string val(localSizes[i], 'l'); - DS_ASSERT_OK(client0->Set(localObjs[i], val)); - } - - for (size_t i = 0; i < remoteObjs.size(); ++i) { - std::string val(remoteSizes[i], 'r'); - DS_ASSERT_OK(client1->Set(remoteObjs[i], val)); - } - - std::vector getObjs(localObjs); - getObjs.insert(getObjs.end(), remoteObjs.begin(), remoteObjs.end()); - std::vector sizes(localSizes); - sizes.insert(sizes.end(), remoteSizes.begin(), remoteSizes.end()); - std::vector vals; - DS_ASSERT_OK(client2->Get(getObjs, vals)); - ASSERT_EQ(vals.size(), getObjs.size()); - for (size_t i = 0; i < vals.size(); ++i) { - ASSERT_EQ(vals[i].size(), sizes[i]); - std::string expectedVal = i < localObjs.size() ? std::string(sizes[i], 'l') : std::string(sizes[i], 'r'); - ASSERT_EQ(expectedVal, vals[i]); - } -} -} // namespace st -} // namespace datasystem -- Gitee