Polish README and publish demo video link
面向CCF 2026开源创新大赛Mooncake赛题2的KVCache碎片感知分配优化
KVCache · Fragmentation-Aware · Bounded Sampling · Mooncake Store · SGLang HiCache · 可复现
KVCache
Fragmentation-Aware
Bounded Sampling
Mooncake Store
SGLang HiCache
可复现
演示视频:KVCache Forge Mooncake作品展示 · 提取码:mxhx
mxhx
队伍:KVCache Forge · 罗荣裕(队长)· 刘神舟 · 王英颖 · 杨俊
GitHub材料仓库 · GitLink材料仓库 · Mooncake上游PR
本项目面向Mooncake赛题2,聚焦Mooncake Store在混合尺寸KVCache对象和长期运行场景下的分配稳定性。现有free_ratio_first策略主要按照segment总空闲比例排序,但“总空闲很多”并不等于“存在足够大的连续空间”;碎片化严重的segment可能看起来更空闲,却无法直接容纳当前大对象,随后触发allocator失败和fallback。
free_ratio_first
我们在Mooncake Store正式代码路径中新增可选的fragmentation_aware策略,将当前请求大小、最大连续空闲区域和空间连续性纳入候选排序。策略保留bounded sampling、preferred/excluded、多副本去重、allocator最终确认和best-effort fallback语义,默认random策略保持不变,因此能够灰度启用并快速回滚。
fragmentation_aware
random
repro/
logs/
tools/
当前结论证明的是分配策略层的正确性、排序收益和工程可接入性,不将确定性仿真数据外推为真实RDMA集群或SGLang HiCache生产吞吐增益。
can_fit
0.70 × contiguity_ratio + 0.30 × free_ratio
请求:slice_length / replica_num / preferred / excluded | v 按原有语义尝试preferred | v bounded sampling候选采样 | v 读取total_free与largest_free_region | v can_fit优先 -> score -> tie-break | v 调用原有allocator实际申请 | +---------+---------+ | | 成功 候选不足 | | 更新used set 原有best-effort fallback
评分只决定候选尝试顺序,真正的空间申请仍由原有allocator完成。即使并发状态变化导致评分信息过期,最坏结果也只是该候选申请失败并继续后续候选,不会突破空间安全边界。
两个策略最终均可容纳6/6个请求,说明新策略没有增加物理容量;收益来自更准确地找到已经存在的连续空间。平均候选数量保持不变,说明结果不是通过扩大搜索范围获得的。
首次运行会使用MinGW g++编译确定性仿真:
g++
powershell -NoProfile -ExecutionPolicy Bypass -File .\tools\run_powershell_demo.ps1
录屏或重复演示时可以跳过编译:
powershell -NoProfile -ExecutionPolicy Bypass -File .\tools\run_powershell_demo.ps1 -SkipBuild
脚本会输出0/6、6/6、11到0、平均候选数量5.00和PASS,并隐藏容易受CPU频率影响的纳秒计时。
PASS
g++ -std=c++17 -O2 repro/topic_aligned_store_scalability_sim.cpp \ -o topic_aligned_store_scalability_sim ./topic_aligned_store_scalability_sim
参考输出位于logs/topic_aligned_store_scalability_sim_20260707.log。
logs/topic_aligned_store_scalability_sim_20260707.log
mooncake_master --allocation_strategy=fragmentation_aware
在与PR基线兼容的Mooncake源码树中应用补丁:
git apply --check mooncake_fragmentation_aware_pr_2797_0123fa1.patch git apply mooncake_fragmentation_aware_pr_2797_0123fa1.patch
回滚时可切换回random或free_ratio_first;也可以反向移除补丁:
git apply -R --check mooncake_fragmentation_aware_pr_2797_0123fa1.patch git apply -R mooncake_fragmentation_aware_pr_2797_0123fa1.patch
report/CCF2026_Mooncake_FragmentationAware_Technical_Report.pdf
slides/Mooncake_FragmentationAware_初赛展示_最终版.pptx
mooncake_fragmentation_aware_pr_2797_0123fa1.patch
DESIGN.md
EVALUATION.md
demo_script.md
SUBMISSION.md
release/CCF2026_Mooncake_FragmentationAware_initial_20260710.zip
release/CCF2026_Mooncake_FragmentationAware_initial_20260710.zip.sha256.txt
report/
slides/
release/
0123fa1 Fix fragmentation-aware allocation test setup
build (3.10)
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
Mooncake Store Fragmentation-Aware Allocation
面向CCF 2026开源创新大赛Mooncake赛题2的KVCache碎片感知分配优化
KVCache·Fragmentation-Aware·Bounded Sampling·Mooncake Store·SGLang HiCache·可复现演示视频:KVCache Forge Mooncake作品展示 · 提取码:
mxhx队伍:KVCache Forge · 罗荣裕(队长)· 刘神舟 · 王英颖 · 杨俊
GitHub材料仓库 · GitLink材料仓库 · Mooncake上游PR
作品简介
本项目面向Mooncake赛题2,聚焦Mooncake Store在混合尺寸KVCache对象和长期运行场景下的分配稳定性。现有
free_ratio_first策略主要按照segment总空闲比例排序,但“总空闲很多”并不等于“存在足够大的连续空间”;碎片化严重的segment可能看起来更空闲,却无法直接容纳当前大对象,随后触发allocator失败和fallback。我们在Mooncake Store正式代码路径中新增可选的
fragmentation_aware策略,将当前请求大小、最大连续空闲区域和空间连续性纳入候选排序。策略保留bounded sampling、preferred/excluded、多副本去重、allocator最终确认和best-effort fallback语义,默认random策略保持不变,因此能够灰度启用并快速回滚。赛题对应
repro/、logs/、tools/核心交付
can_fit判断最大连续空闲区域能否容纳当前请求0.70 × contiguity_ratio + 0.30 × free_ratio策略流程
评分只决定候选尝试顺序,真正的空间申请仍由原有allocator完成。即使并发状态变化导致评分信息过期,最坏结果也只是该候选申请失败并继续后续候选,不会突破空间安全边界。
验证结果
free_ratio_firstfragmentation_aware两个策略最终均可容纳6/6个请求,说明新策略没有增加物理容量;收益来自更准确地找到已经存在的连续空间。平均候选数量保持不变,说明结果不是通过扩大搜索范围获得的。
快速演示
Windows PowerShell
首次运行会使用MinGW
g++编译确定性仿真:录屏或重复演示时可以跳过编译:
脚本会输出0/6、6/6、11到0、平均候选数量5.00和
PASS,并隐藏容易受CPU频率影响的纳秒计时。Linux / WSL
参考输出位于
logs/topic_aligned_store_scalability_sim_20260707.log。在Mooncake中启用
在与PR基线兼容的Mooncake源码树中应用补丁:
回滚时可切换回
random或free_ratio_first;也可以反向移除补丁:演示与提交材料
mxhxreport/CCF2026_Mooncake_FragmentationAware_Technical_Report.pdfslides/Mooncake_FragmentationAware_初赛展示_最终版.pptxmooncake_fragmentation_aware_pr_2797_0123fa1.patchDESIGN.mdEVALUATION.mddemo_script.mdSUBMISSION.mdrelease/CCF2026_Mooncake_FragmentationAware_initial_20260710.ziprelease/CCF2026_Mooncake_FragmentationAware_initial_20260710.zip.sha256.txt项目结构
repro/logs/report/slides/tools/release/上游工程状态
0123fa1 Fix fragmentation-aware allocation test setupbuild (3.10)环境下90项测试全部通过验证边界与后续工作