首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

提升内存资源利用率,TencentOS“悟净”硬核技术详解

腾小云导读

随着云数据中心应用程序对内存的需求持续增长,TencentOS“悟净”——服务器内存多级卸载方案应运而生。“悟净”利用OS内核侧进行内存优化的天然优势,保障业务内存使用性能前提下,将较冷的内存换出至较便宜的设备上,从而降低整机的内存消耗,提高内存资源利用率,通过平滑降配、负载调压、内存超卖等手段实现降本增效,助力业务和客户商业增值。下面跟着本篇文章,来了解一下TencentOS“悟净”的强大之处吧!

看目录,点收藏

1 业界面临的问题与机遇

  1.1 高昂的内存成本

  1.2 内存换出与内存压缩技术 

    1.3 CXL 内存池化

2 业界方案

3 悟净技术方案

  3.1 方案架构设计

  3.2 悟净的技术优势与突破

4 悟净效果

4.1 效果自测

4.2 业务联动实测效果

4.3 业界影响

5 总结

01

业界面临的问题与机遇

1.1 高昂的内存成本

近年来,随着业务发展,内存使用成本日益陡增。根据公开报告显示,服务器硬件在数据中心成本占比达到80%左右,其中 DRAM 的采购是主要成本之一,外加能耗、维护等开支,内存开销随着内存密集型业务的持续增长而日益上升。

应用程序为了提高性能,大都采用内存密集性策略,即尽量将内存利用起来,提高缓存性能。与此同时,由于有“数据中心税”(为了维持数据中心运作而在服务器上运行的大量额外运维程序)的开销,服务器中也会存在大量长时间占据内存的常驻应用。这一系列问题导致服务器内存使用率居高不下。

下图展示了服务器运行 splash2x/water_nsquared/rec 时,内存的访问热度。其中冷页(黑色)部分占比将近一半:

如何将这些冷内存页节省下来,是一个挑战和收益均巨大的问题。同时降低内存中这些无效冷页驻留,将内存留给更有需要的业务,可以极大程度上提升业务性能体验。

1.2 内存换出与内存压缩技术

对于内存的降本增效,最常用的方法是将其换出到相对廉价的存储设备上。随着技术发展,SWAP 内存换出已经有了满足高性能需求的潜力。

一方面,得益于高性能内存压缩算法和 CPU 性能的提升,我们可以消耗极少的 CPU 时间来进行内存内部的 SWAP 压缩换出,换取内存空间。另一方面,新的高速存储设备也能在满足换出精度的情况下,作为次级 SWAP 后备使用。

针对这些技术,社区也有过相关讨论[1]。我们进行了摸底测试,模拟 fault in 与 swap out 对连续全页读写的影响。以内存压缩 SWAP 设备 ZRAM 和高速 NVME 为例,在全页访问的模拟业务中,ZRAM 整体性能慢于内存 3-4 倍,NVME 由于 IO 栈干涉,性能逊色很多。若使用 ZRAM 作为首选设备,可以做到相对平滑的换出。

1.3 CXL内存池化

CXL 作为新兴的满足内存一致性互联协议,使得内存分级卸载有了更多的使用需求。CXL 可以通过池化方式让 CPU 访问海量内存,其慢于 CPU 所对应的 Local Node 内存,但远快于 IO 与内存压缩,因此换出优先级是最高的,若将 CXL 作为内存卸载的首选设备,可以在提升内存利用率的同时提高业务性能。

02

业界方案

针对内存降本增效这一大问题,Meta 提出了 TMO 方案[2],也是我们着重进行了摸底与分析的方案之一。

TMO(Transparent Memory Offloading,透明内存卸载)在用户态无感知的情况下,将内存换出到相对便宜的设备上,其大致原理如下图中三个部分所示:

用户回收策略层:用户态监控工具根据 Cgroup 内存压力信息,自动调整 Cgroup 水位线。

内核数据采集层:内核中采集 Cgroup 级别的内存压力信息为用户策略层提供信息。

内核均衡回收层:内核依据 Cgroup 水位线回收内存页,并根据 LRU 自动匿名页的 refault 率和匿名页的 swapin 率进行反馈调节。

Meta 声称 TMO 方案在数百万的服务器上节省了总内存的20%~32%。我们在调研过程中,进行了基于 TencentOS 的全量功能复现,在技术、性能等多方面进行摸底。可以得出和Meta论文相似结果:性能轻微损失、内存大幅降低。

03

悟净技术方案

总结业界方案,结合内部的错综环境与部署需求后,悟净方案应运而生。悟净经过多次迭代和反复推敲,通过将多个模块松耦合、紧设计的方式聚合而成,做到了部署上的灵活性、应用上的高效性。

3.1 方案架构设计

悟净核心方案设计如下图(图中所有功能已全量实现):

悟净基于内核内存管理系统 LRU 页面回收机制,对其核心路径做了大幅调优与改造,并引入以下几大独立自研模块:

其中大部分模块均可以独立工作,SWAP 设备类型也可以自由灵活选配,满足设计与部署上的灵活需求。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230531A08H4V00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券