首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >WD:CXL内存热数据检测

WD:CXL内存热数据检测

作者头像
数据存储前沿技术
发布2025-02-11 18:54:26
发布2025-02-11 18:54:26
2300
举报

关键要点

• 研究了基于CXL内存的热数据检测技术。

• 数据温度应反映存储位置,并通过跟踪应用程序内存访问来识别热数据。

• 应用程序可以通过API控制数据布局。

• 基于Open Compute Project提出的可扩展内存系统(CMS)子组提出了一种热性跟踪扩展到CXL的技术方案。

• 监控分为粗粒度和细粒度两个阶段,用于确定高活动区域并迁移热页面。

使用CXL分层内存增加容量

单一内存范围内有不同的层级,较低层级的性能较差。

数据的“温度”应反映层级的分配位置:

  • • 识别应用的工作集,通过追踪应用的内存访问来对数据温度进行分类。
  • • 内核级的启发式方法用于根据应用行为适应数据布局。

提供API使应用可以控制数据布局:

  • • 包括libnuma、三星的Scalable Memory SDK、SK Hynix的Heterogeneous Memory SDK。

Note:API控制内存数据布局,把经常访问的数据调度到缓存和主存中,从软件侧提高数据访问效率。

操作系统层面的数据放置策略

左侧部分(NUMA平衡):

  • • 保持数据靠近调度线程的节点
  • • 在数据所在位置调度线程。
  • • 基于故障的访问检测。
  • • 基于LRU的页面降级(可选)。

右侧部分(分层内存平衡):

  • • 将热页迁移到更快的层级。
  • • 基于页面故障频率估计页面的“热度”。
  • • 使用基于LRU的页面降级将冷数据移动到较慢的层级。
  • • 基于TPP工作(TPP: CXL启用分层内存的透明页面放置,引用自Hasan Al Maruf等人在ASPLOS 2023的论文)。

理解分层内存平衡

测试条件:使用Redis运行YCSB工作负载。

  • • 服务器和客户端位于同一节点上
  • • 配置包括128GB本地DRAM(延迟115ns)和128GB本地CXL内存(延迟245ns)

通过调整内核内存保留来控制CXL内存的使用

  • • 工作负载约占用23GB内存
  • • 每移除5GB本地DRAM,性能下降约4%-6%,未见性能趋缓迹象
  • • 热度监控精度提高后有大幅提升潜力

基于热度的页面提升机制使事务处理速率较常规NUMA(235GB保留)提高约2%

Note:不同负载在本地DRAM和CXL内存的性能(操作数)差异在20-30%。

关于YCSB工作负载

YCSB(Yahoo! Cloud Serving Benchmark)工作负载是一个广泛用于测试和评估数据库性能的基准测试工具,尤其适用于云数据库、NoSQL数据库和分布式存储系统等。YCSB包含多种标准化的工作负载,这些工作负载模拟了实际应用中的不同数据访问模式,以测试系统在不同负载下的表现,例如读写性能、延迟和吞吐量等。

内存效率检测存在的问题

在处理器端的采样并不完美:

  • • 基于页面故障的跟踪开销高。
  • • 基于性能计数器(PEBS/IBS)的跟踪无法捕捉到所有内存访问:
  • • 缓存流量(预读取/写回)未被考虑。

将跟踪内存“温度”的责任分配给内存设备:

  • • 内存设备位于每个相关内存访问的路径上。

开放计算项目(OCP)的可组合内存系统(CMS)子组提出了一个用于CXL的热度跟踪扩展

CMS/OCP是怎么实现的呢?

CMS/OCP 提案

为CXL内存增加一个“热度跟踪”组件

  • • 由主机侧配置的内存监控
  • • 将“热”页面信息传递给主机

重点在于主机与设备的交互:

  • • 没有提供完整的交互规范
  • • 设备实现由硬件供应商自行决定

数据流的检测

监控过程分为四个步骤:

  • • 粗粒度监控用于识别高活动区域。
  • • 在这些区域内进行细粒度监控,以识别出一组“热”页面。
  • • 主机侧利用这些信息迁移一个或多个页面。
  • • 已迁移的页面将从“热”页面池中移除。

右侧图示:

图示展示了内存的不同区域,颜色表示不同的活动水平。

高活动区域(红色)中的页面被识别为“热”页面,并被迁移到更快的内存(如DRAM)。

迁移完成后,页面从热页面池中移除。

有多少活跃区域才足够?

---基于QEMU的cachebench工作负载的跟踪分析

  • • 如果能检测到访问频率最高的页面,则可以用最少的页面提升来达到预期的访问覆盖率。
  • • 由于访问可能分布在半连续的页面范围内,因此可以通过较少的监控槽位实现相同的访问覆盖,但会增加迁移的频率。
  • • 表明需要多个独立的监控范围才能识别大部分的热点页面。
  • • 建议构建一个范围树,通过对完整内存的连续粗粒度监控,选择热点区域并进一步深入监控这些区域。

总结

当CXL内存作为较慢的层级使用时,识别热点页面对于性能至关重要。

基于区域的CXL内存设备上的热点页面跟踪有望在有限资源下提供良好的覆盖率。

然而,也存在其他有前景的方法:

  • • Intel® Flat Memory Mode在缓存行粒度上提供硬件管理的分层支持(参考:《Managing Memory Tiers with CXL in Virtualized Environments》, 由Yuhong Zhong等人在OSDI 24发表)。
  • • 除了使用区域划分,其他研究表明基于哈希的技术可以用于设备侧识别热点页面(参考:《Toward CXL-Native Memory Tiering via Device-Side Profiling》, 作者Zhe Zhou等人,链接:https://doi.org/10.48550/arXiv.2403.18702)。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 王知鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关键要点
    • 使用CXL分层内存增加容量
    • 操作系统层面的数据放置策略
    • 理解分层内存平衡
    • CMS/OCP 提案
    • 数据流的检测
    • 有多少活跃区域才足够?
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档