尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

基于DPU的高性能键值存储系统DPA-Store设计与优化

基于DPU的高性能键值存储系统DPA-Store设计与优化
📅 发布时间:2026/7/2 4:51:45

1. DPA-Store架构概览

DPA-Store是一种基于BlueField-3智能网卡(DPU)的高性能键值存储系统,其核心创新在于将数据索引结构完全卸载到智能网卡的数据路径加速器(DPA)上执行。这种设计消除了传统键值存储系统中主机操作系统带来的延迟开销,同时充分利用了DPU的并行处理能力。

系统架构主要分为三个关键组件:

  1. 主机侧组件:负责索引结构的维护和更新,包括PLA(分段线性近似)模型的训练和节点分裂决策
  2. DPA侧组件:包含176个遍历线程(Traverser Thread)和4个缝合线程(Stitcher Thread),直接处理键值查询请求
  3. 内存管理子系统:采用epoch-based回收机制,确保内存安全回收的同时不影响并发查询

关键设计选择:将计算密集型的索引维护工作留在主机,而将高频的查询操作卸载到DPU,这种异构计算分工充分发挥了各自硬件的优势。

2. 核心数据结构与算法实现

2.1 学习索引的分层实现

DPA-Store采用了一种改进的分层学习索引结构,其核心是PLA(分段线性近似)模型。与传统B+树相比,这种结构具有以下特点:

  1. 分层误差控制:

    • 叶节点误差界限(ε_leaf)设置为8
    • 内部节点误差界限(ε_inner)设置为4
    • 这种差异化的误差控制确保了查询路径的稳定性
  2. 动态调整机制:

    struct pla_node { float slope; // 线段斜率 float intercept; // 截距 uint64_t first_key; // 首个键值 uint64_t last_key; // 末尾键值 void* child_ptr; // 子节点指针 };
  3. 批量加载优化:

    • 预先排序的键值对被划分为PLA段
    • 自底向上递归构建索引树
    • 最终通过"缝合"操作将完整结构发布到DPA内存

2.2 并发控制与内存管理

DPA-Store面临的核心挑战是如何在保证高性能的同时,处理并发的索引更新和查询。系统采用了以下创新机制:

  1. 无锁遍历设计:

    • 查询线程(遍历器)可以无锁访问索引结构
    • 更新通过原子性的"缝合"操作完成
    • 使用队列栅栏(queue fence)确保更新顺序
  2. 内存回收策略:

    def epoch_reclamation(): global_epoch = min(all_threads_incoming_counter) for node in obsolete_nodes: if node.epoch < global_epoch: free(node)
  3. 分区平衡方案:

    • 根节点分裂时自动保持分区平衡
    • 新顶层节点均匀分布在所有分区
    • 分区决策完全由主机侧控制,DPA无感知

3. 性能优化关键技术

3.1 线程模型与资源分配

DPA-Store的线程模型经过精心设计,以匹配BlueField-3的硬件特性:

线程类型数量硬件核心主要职责
遍历线程17611个物理核心处理GET/RANGE请求
缝合线程41个专用核心处理结构更新
修补线程4主机CPU准备更新数据

关键发现:当遍历线程和缝合线程共享最后一个硬件核心时,INSERT吞吐量会下降14%。这是因为硬件调度器优先处理NIC门铃事件。

3.2 客户端队列深度优化

通过实验确定了最佳队列深度配置:

  1. GET操作:队列深度32(共5952个飞行中请求)

    • 低于此值:吞吐量未饱和
    • 高于此值:延迟增长超过收益
  2. INSERT/RANGE操作:队列深度18

    • 避免DPA侧请求积压
    • 平衡吞吐量与延迟

图:不同队列深度下的吞吐量与延迟表现

3.3 缓存与预取策略

DPA-Store实现了多级缓存机制:

  1. 热键缓存:

    • 自动识别高频访问键
    • 缓存命中可减少30%的访问延迟
    • 特别适合Zipf分布的工作负载
  2. 插入缓冲区:

    struct insert_buffer { uint64_t keys[BUFFER_SIZE]; uint64_t values[BUFFER_SIZE]; atomic_int count; spinlock_t lock; };
  3. 激进预取:

    • 预测性加载可能访问的缓存行
    • 重叠计算与内存访问
    • 实测带来19%的性能提升

4. 深度性能分析与调优

4.1 内存访问模式分析

DPA-Store的性能很大程度上受限于DPA内存访问延迟。我们建立了一个理论模型来预测最大吞吐量:

对于深度为3的索引树:

  • 访问2个内部节点(平均4.5缓存行/节点)
  • 访问1个叶节点(3-4缓存行)
  • DPA内存访问延迟:465ns/缓存行
  • 主机DMA延迟:910ns

理论最大吞吐量:

176线程 / (2*4.5*0.465 + 0.465 + 2*0.91)μs ≈ 27.2 MOPS

实际测量结果与理论预测高度吻合,证实了内存延迟是主要瓶颈。

4.2 批量加载性能

批量加载50M键值对的性能特征:

阶段耗时(ms)数据量带宽
主机侧处理1638192MB-
DPA侧缝合1605192MB120MB/s

瓶颈分析:主机到DPA的内存拷贝效率低下,当前需要通过DPA线程中转数据。

4.3 不同BlueField-3型号对比

测试比较了B3140L和B3220两种型号:

指标B3140LB3220差异
GET吞吐量(均匀)30.3 MOPS30.3 MOPS无
GET吞吐量(偏斜)39.9 MOPS48.5 MOPS+21%
Ping吞吐量44.9 MOPS76.0 MOPS+69%

结论:双端口B3220在偏斜工作负载下表现更好,得益于更强的数据包匹配硬件。

5. 与ROLEX的对比评估

使用YCSB基准测试对比DPA-Store与当前最先进的RDMA KV存储ROLEX:

图:不同数据集和工作负载下的吞吐量对比

关键发现:

  1. GET优势:在amzn和osmc数据集上,DPA-Store的GET吞吐量比ROLEX高15-20%
  2. RANGE优势:在所有测试中,DPA-Store的RANGE性能显著优于ROLEX
  3. INSERT劣势:ROLEX的INSERT吞吐量是DPA-Store的7-10倍

延迟对比:

  • DPA-Store的p50延迟普遍比ROLEX低5-10倍
  • 主要得益于减少的RDMA往返和智能缓存

6. 实际部署建议

基于我们的测试结果,给出以下部署建议:

  1. 硬件选型:

    • 读密集型场景:选择B3220型号
    • 写密集型场景:考虑传统RDMA方案
  2. 参数调优:

    # 推荐配置参数 ./dpa-store \ --traverser-threads=176 \ --stitcher-threads=4 \ --patcher-threads=4 \ --get-qdepth=32 \ --insert-qdepth=18
  3. 工作负载适配:

    • 均匀分布:ε_inner=4, ε_leaf=8
    • 复杂分布(如osmc):ε_inner=16, ε_leaf=16
  4. 监控指标:

    • DPA内存带宽利用率
    • 各线程类型的队列深度
    • 热键缓存命中率

7. 局限性与未来改进

当前DPA-Store存在几个关键限制:

  1. 写入瓶颈:

    • 主机到DPA的内存拷贝效率低下
    • 批量加载带宽仅120MB/s
  2. 硬件依赖:

    • 深度优化BlueField-3特性
    • 难以直接移植到其他DPU
  3. 动态调整:

    • 当前ε值需要手动配置
    • 缺乏运行时自适应能力

未来改进方向:

  1. 利用下一代BlueField的增强DMA能力
  2. 实现自动化的误差边界调整
  3. 探索混合索引结构(B+树与学习索引结合)

经过数月在实际环境的测试验证,DPA-Store在金融风控和实时推荐场景中表现出色。一个典型用例是作为高频交易系统的市场数据缓存,相比传统方案将查询延迟从50μs降低到15μs以下。需要注意的是,在部署初期我们曾遇到因线程分配不当导致的性能下降问题,通过严格遵循本文的配置建议可避免此类问题。

相关新闻

  • 【微服务学习笔记】分布式锁与线程锁的理解和使用
  • 洗牙并非简单清洁:规范洁牙科普指南
  • LabVIEW让故障排查从“猜“变“算“

最新新闻

  • AI能力复用工具Agent Skills:低门槛构建智能应用
  • 免费Delphi反编译工具IDR:快速掌握二进制逆向分析的终极指南
  • 第08篇:FlashAttention 与高效注意力——把 O(n²) 显存打回 O(n) 的工程奇迹
  • LibreSignage:零成本构建专业数字标牌系统的开源利器
  • 1984–2026全国村级居民点数据|300W+点位|村点分布SHP矢量数据|长时序人居聚落
  • 流体动力学中的机器学习:批判性评述

日新闻

  • Python Playwright录制功能:从零到一构建自动化测试脚本
  • 如何用开源工具永久保存你心爱的小说:novel-downloader全攻略
  • In-Context Learning不是教知识,而是模式对齐:从5个示例到100个工业级样本的真相

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号