Skip to content

Feature/flatbuffers zero copy - #44

Draft
Spicy-cream wants to merge 3 commits into
LinQuickDev:masterfrom
Spicy-cream:feature/flatbuffers-zero-copy
Draft

Feature/flatbuffers zero copy#44
Spicy-cream wants to merge 3 commits into
LinQuickDev:masterfrom
Spicy-cream:feature/flatbuffers-zero-copy

Conversation

@Spicy-cream

Copy link
Copy Markdown

背景

目前已完成 Protobuf、FlatBuffers 和 Cap'n Proto 的初步 benchmark,
覆盖 simple/complex 结构以及 64 B~8 MiB payload。

测试包含:

  • 单独序列化
  • 单独反序列化或只读 View
  • 双进程共享内存
  • bRPC localhost TCP 完整调用流程

初步结果表明,FlatBuffers 接收端 View 初始化成本较低,
但当前 attachment 实验路径中的整块复制会掩盖免反序列化收益。

初版提议

基于 bRPC 已有 SingleIOBuf 和社区 FlatBuffers 工作,优先实现:

  1. FlatBuffers 直接构造到 SingleIOBuf
  2. 协议层避免中间 payload 复制
  3. 服务端建立经过校验的只读 View
  4. 明确异步 RPC 中底层 Block 生命周期
  5. 增加 copied bytes 和 fallback 可观测性

初版仅讨论 TCP 连续缓冲区路径。

RDMA 注册内存、URMA 和 RemoteRegion 放到后续独立阶段。

本 PR 当前包含

  • FlatBuffers 零拷贝特性设计文档
  • 完整 benchmark 流程与结果
  • 单独序列化测试报告
  • 单独反序列化测试报告

当前不包含 bRPC 核心代码修改。

希望确认的问题

  1. 是否认可基于 SingleIOBuf 完善 FlatBuffers 零拷贝路径?
  2. 是否应该基于社区现有 FlatBuffers PR 继续开发?
  3. 初版是否仅支持 TCP 连续缓冲区?
  4. 是否需要 VerifiedView 和有界 Verifier API?
  5. RDMA/URMA 是否拆分为后续独立方案?

测试说明

当前结果来自 WSL localhost 和自建 benchmark,不代表 RDMA/URMA
真机性能;数据主要用于验证方案可行性和定位内存复制问题。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant