英特尔公司内存分层技术研究
一、内存分层的重要性
- 降低总拥有成本:通过引入新的内存技术(如CXL和持久内存),可以减少基础设施成本。
- 提高内存利用率:动态内存池有助于提高内存利用率。
- 增加内存容量:CXL和持久内存提供了更多的低成本内存容量。
二、CacheLib简介
- 开发背景:由Meta开发,作为开源软件(OSS)发布。
- 功能:可以在进程内运行或作为远程网络堆栈的一部分。
- 内存组织:
- 内存分为多个独立的池。
- 每个池包含独立的分配类。
- 项目按各自的大小组织成分配类。
- 分配类遵循几何序列。
- 逐出时,删除该类的LRU项。
三、异构内存支持
- 用户空间内存分层:通过扩展配置API,支持多层内存管理。
- 多层内存组织:
- 各层内的内存池和分配类镜像存在。
- 新元素总是插入到最顶层(如果可能)。
- 单个对象可以在不同层间移动。
四、基准测试与性能分析
- 基准测试:
- 256 GB DDR4内存总量。
- 2 TB Intel Optane PMEM。
- CentOS Linux版本8.5,内核v5.17.5。
- 编译工具:gcc v8.5。
- 性能结果:
- 图形缓存领导者:命中率为0.42,键数71.6M,请求数240M。
- 图形缓存跟随者:命中率为0.91,键数37.2M,请求数240M。
- 总缓存大小8GB(4GB DRAM + 4GB PMEM)。
- 24个请求线程。
五、未来方向
- 驱逐策略扩展:考虑无容器政策,优化驱逐策略。
- 减少关键路径上的数据移动开销:减少关键路径上的数据移动,提高性能。
- 适合缓存应用:更多内存转换为更高命中率。
- 多层内存分层优势:相较于DRAM,CXL/PMEM提供了更高的内存容量和更低的成本。
总结
英特尔公司通过引入内存分层技术,利用新的内存技术(如CXL和持久内存)提高了内存利用率和容量,降低了总拥有成本。CacheLib作为开源软件,提供了一种灵活的内存管理解决方案,支持多层内存组织和动态内存池。未来的研究方向包括优化驱逐策略和减少关键路径上的数据移动开销。