Files
ldb/doc/conclusion.md
2026-03-05 08:45:23 +00:00

2.0 KiB
Raw Blame History

性能定位结论(主线程)

1) 主要瓶颈结论

基于当前主线程采样统计,结论是:

  • 主线程最大开销确实是内存申请/管理相关开销(而不是纯 memcpy
  • 开销占比大致为:
    • submit_write 打包阶段:约 61.3%
      • 其中 alloc 约 66.5% of pack(折算到主线程总开销约 40.8%
      • copy 约 14.2% of pack(折算到主线程总开销约 8.7%
    • 入队/通知SPSC push + notify29.2%
    • 回收释放:约 9.5%
    • backpressure 影响很小loops≈0

所以“减少申请内存次数”这个判断是对的,而且是当前最有价值的优化方向。


2) 对方案 2 / 3 的评价(结合本系统)

方案 2A/B 双 flag 缓冲覆写保护

  • 优点:实现直观,容易快速落地验证正确性。
  • 缺点
    • 本质仍是“执行路径与拷贝路径耦合”,请求推进会受慢侧牵制;
    • 不能从根本上消除 alloc 热点,只是控制覆写时序;
    • 在高并发下调试成本会上升(状态机与边界条件多)。
  • 结论:适合快速试验,不是长期高性能形态。

方案 3ChainBuffer 所有权移交(摘链/归还)

  • 优点
    • 以“指针/节点移动”替代大量 alloc+copy方向与当前瓶颈完全一致
    • 对大 value、高吞吐场景收益潜力更大。
  • 缺点
    • 生命周期、并发归还、异常回收都要设计清楚;
    • 实现复杂度明显高于方案 2。
  • 结论:更符合长期性能目标,但需要更严格的工程设计。

3) 哪个在你当前系统里更容易实现?

如果只比较你给的这两个方案,在你现在的系统里:

  • 更简单的是方案 2A/B 双 flag
  • 更值得长期投入的是方案 3所有权移交

建议:短期先用方案 2 验证行为边界,最终收敛到方案 3或其等价的零拷贝所有权模型