Object Manager
熟悉高性能计算优化,尤其是GPU/NPU优化的同学都会知道,大部分情况下优化的都是带宽而不是计算。Object Manager提供了完整的分布式对象存储和管理功能,支持 Ray 系统中的对象共享和传输需求。
作为Ray 最精髓的部分,它的核心功能有:
- 分布式对象管理
- 对象位置追踪
- 分布式传输
- 故障恢复
为了实现高效的内存管理,代码里使用以下技术保证计算的效率以及稳定性:
- 分布式对象管理
- 对象位置追踪
- 分布式传输:分块传输、并发处理等
- 故障恢复:错误处理、重试机制
- 内存溢出机制
- 高效内存管理
- 共享内存机制
- 内存池管理
- 内存限制控制
- 零拷贝优化
- 内存碎片化管理
代码概览
文件名 | 主要功能 | 核心组件 | 关键特性 |
---|---|---|---|
object_manager.h/cc | 对象管理器的核心实现 | ObjectManager | - 对象的推送/拉取 - 对象生命周期管理 - RPC 服务处理 - 内存管理 |
object_buffer_pool.h/cc | 对象缓冲池管理 | ObjectBufferPool | - 内存缓冲区管理 - 对象数据传输 - 内存复用 |
chunk_object_reader.h/cc | 分块对象读取器 | ChunkObjectReader | - 大对象分块读取 - 流式传输 - 内存优化 |
pull_manager.h/cc | 对象拉取管理 | PullManager | - 对象拉取请求管理 - 重试机制 - 优先级调度 |
push_manager.h/cc | 对象推送管理 | PushManager | - 对象推送请求管理 - 流量控制 - 失败重试 |
object_directory.h/cc | 对象目录服务 | ObjectDirectory | - 对象位置跟踪 - 对象元数据管理 - 位置更新通知 |
ownership_based_object_directory.h/cc | 基于所有权的对象目录 | OwnershipBasedObjectDirectory | - 对象所有权管理 - 生命周期控制 - 垃圾回收 |
plasma/store_runner.h/cc | Plasma 存储运行器 | PlasmaStoreRunner | - 共享内存管理 - 对象持久化 - 存储服务 |
spilled_object_reader.h/cc | 内存溢出管理 | SpilledObjectReader | - 提供高效可靠的溢出对象读取机制 - 管理磁盘IO操作 - 支持大对象的高效处理 |
common.h | 通用定义和工具 | - | - 常量定义 - 工具函数 - 类型定义 |