背景
在 review kvspace-c(https://github.com/array2d/kvspace-c)时,发现该项目依赖并使用了 slotsboxmalloc 作为变长 value 的持久化/共享内存分配器。基于 slotsboxmalloc 的 left-box / right-obj 设计,我整理并汇总了工业界常见的内存/显存分配器设计模式、各方案优缺点以及针对 slotsboxmalloc 和 kvspace-c 场景的可行改进建议,供仓库维护者参考。
主要内容要点(摘要)
- 常见分配器设计(简要)
- bump-pointer / arena(高速、适合短生命周期)
- free-list / segregated fits(按大小类维护 free lists)
- slab / object-pool(固定对象、高效、低碎片)
- buddy(按 2 的幂次分级、释放时合并伙伴)
- TLSF(实时、O(1))
- best-fit with coalescing(BFC,最小适配 + 合并)
- pooling/arena(减少系统调用,常用于 GPU/显存)
- 并发优化:per-thread caches、arenas、lock-free freelists
- GPU / PyTorch / 显存管理特点
- 显存分配/释放开销高、需要 stream-aware delayed-free
- 常用缓存分配器(sub-allocation from large blocks)和 driver-side pools(cudaMallocAsync)
- PyTorch 使用 CachingAllocator / BFC 风格:suballocation + free-lists + 延迟释放
- 持久化 / mmap / 多进程场景要点(与 slotsboxmalloc 直接相关)
- 不能用裸指针,需 offset/ID(slotsboxmalloc 已采用)
- 尽量避免对象移动(compact 复杂),常用 no-compact 设计 + 外部 compaction
- 崩溃一致性与元数据原子更新(需要写序/日志/检查点)
- slotsboxmalloc 的优势与局限(基于 include/slotsboxmalloc/doc.h)
- 优势:持久化友好(physical==virtual)、O(1) 边界分配命中率高、局部元数据小、并发性通过 root-slot 分锁控制
- 局限:不做合并/compact,长期碎片风险;最坏分配路径可能为 O(N);对大连续对象跨 box 的成本较高
- 建议(可作为仓库改进/文档/测试项)
- 文档:把工业参考对比(jemalloc/tcmalloc/BFC/JVM/GPU pooling)写入 README 或 docs,帮助使用者理解设计权衡
- 监控/统计:增加 per-root-slot 碎片率、扫描频率、alloc/free 分布的运行时统计
- 压力测试:提供 benchmark 脚本(多线程、多进程、长时间碎片化场景)验证 N=64 的适应性
- 可选回收策略:评估阈值触发的后台 compact/搬迁或 periodic defragmentation(需处理持久化一致性)
- 快速路径优化:对常见小尺寸(L1)引入短期 free-list cache 降低位图扫描
- 崩溃一致性:文档化关键元数据更新的写序/原子性假设;若需要,增加日志或版本+checksum 机制
- 与 GPU/框架整合:若未来用于显存/类似场景,考虑 stream-aware delayed-free 与 driver pool 兼容性
附录 / 参考动作
- 我可以把这份更详细的对比与建议写成仓库的 docs/allocator-design.md,并把基准脚本放到 tutorial/benchmark 下(如果你们愿意我提交 PR)。
- 或者把当前 issue 作为讨论起点,邀请维护者指派具体关注点(文档/基准/实现改进)。
请求
将此 issue 作为对 slotsboxmalloc 设计与工业实践参考的汇总与讨论帖;如需我把文档或基准作为 PR 提交,请回复我想要的目标(docs / benchmark / 实现 patch)。
背景
在 review kvspace-c(https://github.com/array2d/kvspace-c)时,发现该项目依赖并使用了 slotsboxmalloc 作为变长 value 的持久化/共享内存分配器。基于 slotsboxmalloc 的 left-box / right-obj 设计,我整理并汇总了工业界常见的内存/显存分配器设计模式、各方案优缺点以及针对 slotsboxmalloc 和 kvspace-c 场景的可行改进建议,供仓库维护者参考。
主要内容要点(摘要)
附录 / 参考动作
请求
将此 issue 作为对 slotsboxmalloc 设计与工业实践参考的汇总与讨论帖;如需我把文档或基准作为 PR 提交,请回复我想要的目标(docs / benchmark / 实现 patch)。