Meta “透明内存卸载” 功能亮相:可为 Linux 服务器节省 20%-32% 内存

简介: Meta “透明内存卸载” 功能亮相:可为 Linux 服务器节省 20%-32% 内存

刚刚,Meta(原 Facebook)工程师团队在博客发展示了一种叫“透明内存卸载” (Transparent Memory Offloading,简称 TMO)的全新 Linux 内核功能,可为每台 Linux 服务器节省 20% 至 32% 的内存。据悉,该功能已于 2021 年在 Facebook/Meta 服务器中投入使用,团队已成功地将 TMO 的操作系统组件升级到 Linux 内核中。

image.png

透明内存卸载(TMO)是 Meta 针对异构数据中心环境推出的的解决方案,它引入了一种新的 Linux 内核机制,可实时测量由 CPU、内存 和 I/O 之间的资源短缺而导致的工作损失。在这些信息的指导下,TMO 在没有任何应用程序先验知识的情况下,自动调整要卸载到异构设备(如压缩内存或 SSD)的内存量。

也就是说,TMO 会根据设备的性能特征和应用程序,来对较慢内存访问的敏感性来出做调整。除了应用程序容器外,TMO 还从提供基础架构级功能的 sidecar 容器中全面识别卸载时机。

卸载时机

image.png

近年来,大量更便宜的非 DRAM 内存技术(如 NVMe SSD)已被成功部署在数据中心或正在开发的数据中心。此外,新兴的非 DDR 内存总线技术【如 Compute Express Link(CXL)】也提供了类似内存的访问语义,并接近 DDR 性能。数据图显示的内存存储层次结构说明了各种技术是如何相互堆叠的。这些趋势的结合,为内存分层提供了新的机会,这在过去是不可能的。

使用内存分层,访问频率较低的数据将迁移到速度较慢的内存中。应用程序本身、用户空间库、内核或虚拟机监控程序可以驱动迁移过程。Meta 的 TMO 功能工作专注于内核驱动的迁移或交换,它可以透明地应用于许多应用程序,而无需修改应用程序。

尽管概念简单,但内核驱动的对延迟敏感数据中心应用程序的交换在超规模上仍具有挑战性。Meta 构建了 TMO,这是一个用于集装箱化环境的透明内存卸载解决方案。

解决方案:透明内存卸载

TMO 的组成

  • 压力暂停信息(PSI),一个 Linux 内核组件,用于实时测量由于 CPU、内存和 I/O 之间的资源短缺而导致的工作损失。Meta 首次实现了可直接测量应用程序对内存访问速度减慢的敏感性,而不必求助于脆弱的低级别指标,如页面提升率。
  • Senpai 是一个用户空间代理,它可以施加轻微的主动式内存压力,跨不同的工作负载和异构硬件有效地卸载内存,对应用程序性能的影响最小。
  • TMO 以阈下内存压力级别执行内存卸载以交换,周转率与文件缓存成比例。这与在严重内存压力下作为紧急溢出进行交换的历史行为形成对比。

image.png

DRAM 的成本占服务器成本的一小部分,这促使 Meta 在 TMO 上开展工作。数据图显示了 DRAM、压缩内存和 SSD 存储的相对成本。Meta 根据代表其生产工作负载平均值的 3 倍压缩率来估计压缩 DRAM 的成本。

据预计,DRAM 的成本将增长到 Meta 基础设施支出的 33%,同时 DRAM 功耗遵循类似的趋势将达到服务器基础架构功耗的 38%。

在压缩 DRAM 的基础上,Meta 还为所有生产服务器配备了功能强大的 NVMe SSD。在系统级别,NVMe SSD 占服务器成本的比例不到 3%(大约是当前一代服务器压缩内存的 3 倍)。数据图显示,在各代中,iso 容量到 DRAM、SSD 的成本仍低于服务器成本的 1%——每字节成本大约比压缩内存低 10 倍。

尽管比 DRAM 便宜,但压缩内存和 NVMe SSD 的性能特征较差。好在典型的内存访问模式为卸载到较慢的介质提供了大量机会。数据图中显示了“冷”应用程序内存,过去 5 分钟内未访问的页面的百分比。这种内存可以卸载到压缩内存或 SSD 中,而不会影响应用程序性能。

总体而言,冷存储平均约占 Meta 服务器总内存的 35%。然而,它在不同的应用程序中变化很大,从 19% 到 62% 不等。这突出了对各种应用程序行为具有鲁棒性的卸载方法的重要性。

image.png

除访问频率之外,卸载解决方案还需要考虑卸载哪种类型的内存。应用程序访问的内存包括两大类:匿名和文件备份。匿名内存由应用程序以堆或堆栈页的形式直接分配。文件支持的内存由内核的页面缓存分配,以代表应用程序存储经常使用的文件系统数据。

TMO 设计概述

image.png

TMO 包含跨用户空间和内核的多个部分,“Senpai ”作为用户空间代理位于卸载操作的核心,在围绕观察到的内存压力的控制循环中,它使用内核的回收算法来识别使用最少的内存页,并将它们移出卸载后端。在此过程中,PSI(压力失速信息)内核组件量化并报告内存压力,回收算法则通过内核的 cgroup2 内存控制器定向到特定的应用程序。

Senpai

image.png

Senpai 位于 PSI 指标之上,它使用压力作为反馈,以确定驱动内核内存回收的力度。如果容器测量值低于给定的压力阈值,Senpai 将提高回收率;如果压力降到以下,Senpai 就会缓解。压力阈值得到校准,这样分页开销在功能上不会影响工作负载的性能。

交换算法

TMO 是在不影响工作负载的低压力级别下卸载内存的,但尽管 Linux 在压力下退出了文件系统缓存,但它似乎“不愿”将匿名内存移出到交换设备。即使存在已知的冷堆,并且文件缓存的速度超过了 TMO 压力阈值,配置的交换空间也会处于令人沮丧的空闲状态。

因此,TMO 引入了一种新的交换算法,该算法利用了这些驱动器的优势,无需恢复仍使用旋转存储介质的传统设置,可通过跟踪系统中文件系统缓存重构的速率并按比例进行交换来实现。也就是说,对于每个重复需要从文件系统读取的文件页,内核都会尝试交换掉一个匿名页,这样就为翻页腾出了空间。如果发生交换插入,Recall 会再次推回文件缓存。

目前,Meta 根据应用程序的内存可压缩性及其对内存访问速度减慢的敏感性,在压缩内存和 SSD 支持的交换之间手动选择卸载后端。尽管可以开发工具来自动化该过程,但更基本的解决方案需要内核管理卸载后端的层次结构(如自动使用 zswap 处理较热的页面,使用 SSD 处理较冷或压缩性较差的页面,以及将来将 NVM 和 CXL 设备折叠到内存层次结构中)。内核回收算法应该在这些内存池之间动态平衡,Meta 正在积极研究这个体系结构。

随着 CXL 等即将推出的总线技术提供类似内存的访问语义,内存卸载不仅可以帮助卸载冷存储,还可以帮助卸载热存储。Meta 也正积极关注该体系结构,以利用 CXL 设备作为内存卸载后端。

参考链接:https://engineering.fb.com/20...

相关文章
|
29天前
|
缓存 Linux
linux 手动释放内存
在 Linux 系统中,内存管理通常自动处理,但业务繁忙时缓存占用过多可能导致内存不足,影响性能。此时可在业务闲时手动释放内存。
97 17
|
2天前
|
消息中间件 Linux
Linux中的System V通信标准--共享内存、消息队列以及信号量
希望本文能帮助您更好地理解和应用System V IPC机制,构建高效的Linux应用程序。
62 48
|
1月前
|
消息中间件 Linux
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
103 20
|
24天前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
2月前
|
弹性计算 运维 监控
云产品评测:云服务诊断 — ECS实例健康状态与诊断功能体验
作为一名运维工程师,我日常管理和维护云资源,确保服务稳定运行。阿里云的云服务诊断功能提供了便捷的方式实时了解和优化ECS实例的健康状态。通过健康状态功能,我能够查看CPU、内存等指标,及时发现并解决性能瓶颈,提升了约30%的工作效率。诊断功能则帮助我快速定位复杂问题,减少了40%的诊断时间,并提供详细的优化建议。尽管功能已很强大,但仍建议进一步细化诊断结果和增加自定义告警选项,以提升使用体验。我非常推荐此工具给其他运维人员。
74 22
|
2月前
|
运维 监控 Linux
推荐几个不错的 Linux 服务器管理工具
推荐几个不错的 Linux 服务器管理工具
153 6
|
2月前
|
存储 缓存 资源调度
阿里云服务器经济型、通用算力型、计算型、通用型、内存型实例区别与选择指南
在我们通过阿里云的活动选购云服务器的时候会发现,相同配置的云服务器往往有多个不同的实例可选,而且价格差别也比较大,这会是因为不同实例规格的由于采用的处理器不同,底层架构也有所不同(例如X86 计算架构与Arm 计算架构),因此不同实例的云服务器其性能与适用场景是有所不同。本文将详细解析阿里云的经济型、通用算力型、计算型、通用型和内存型实例的性能特点及适用场景,帮助用户根据自己的业务需求做出明智的选择。
|
2月前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
|
2月前
|
弹性计算 运维 开发者
关于ECS 健康状态 诊断功能评测
这是一位开发兼运维工程师的观点,认为云资源的健康状态和诊断功能作用有限,因为大多数问题根源在于代码质量,而这些工具无法改善低下的代码质量导致的资源异常。
|
2月前
|
算法 Linux
深入探索Linux内核的内存管理机制
本文旨在为读者提供对Linux操作系统内核中内存管理机制的深入理解。通过探讨Linux内核如何高效地分配、回收和优化内存资源,我们揭示了这一复杂系统背后的原理及其对系统性能的影响。不同于常规的摘要,本文将直接进入主题,不包含背景信息或研究目的等标准部分,而是专注于技术细节和实际操作。