当前位置: 首页 > Linux

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

时间:2023-04-06 03:02:23 Linux

刚刚,Meta(原Facebook)工程师团队发布了一篇名为“透明内存卸载”(TransparentMemoryOffloading,TMO)的博客),一项新的Linux内核功能,可以为每台Linux服务器节省20%到32%的内存。据悉,该功能已于2021年在Facebook/Meta服务器上投入使用,团队已成功将TMO的操作系统组件升级至Linux内核。TransparentMemoryOffload(TMO)是Meta针对异构数据中心环境的解决方案,它引入了一种新的Linux内核机制,可以实时测量CPU、内存和I/O之间的资源短缺情况。失业。在此信息的指导下,TMO自动调整内存量以卸载到异构设备,例如压缩内存或SSD,而无需事先了解应用程序。也就是说,TMO根据设备和应用程序的性能特征调整对较慢内存访问的敏感性。除了应用程序容器之外,TMO还充分认识到提供基础设施级功能的sidecar容器的卸载机会。卸载时机近年来,NVMeSSD等一些更便宜的非DRAM内存技术已成功部署在数据中心或正在开发中。此外,新兴的非DDR内存总线技术,如ComputeExpressLink(CXL),也提供了类似内存的访问语义并接近DDR性能。数据图中显示的内存存储层次结构说明了各种技术如何相互叠加。这些趋势的结合为内存分层开辟了新的机会,这在过去是不可能的。通过内存分层,访问频率较低的数据将迁移到速度较慢的内存中。应用程序本身、用户空间库、内核或管理程序可以驱动迁移过程。Meta在TMO功能上的工作重点是内核驱动的迁移或交换,无需修改应用程序即可透明地应用于许多应用程序。尽管概念简单,但对延迟敏感的数据中心应用程序的内核驱动切换在超大规模领域仍然具有挑战性。Meta构建了TMO,一种适用于容器化环境的透明内存卸载解决方案。解决方案:透明内存卸载TMO包括:压力暂停信息(PSI),这是一个Linux内核组件,用于实时测量由于CPU、内存和I/O之间的资源匮乏而导致的工作损失。Meta首次能够直接测量应用程序对内存访问速度减慢的敏感性,而无需求助于页面提升率等脆弱的低级指标。Senpai是一种用户空间代理,可施加温和的激进内存压力,在不同的工作负载和异构硬件之间有效地卸载内存,同时对应用程序性能的影响最小。TMO执行内存卸载以在亚阈值内存压力级别进行交换,周转率与文件缓存成正比。这与将交换作为严重内存压力下的紧急溢出的历史行为形成对比。DRAM的成本只是服务器成本的一小部分,这促使Meta致力于TMO。显示DRAM、压缩内存和SSD存储的相对成本的数据图。Meta根据代表其生产工作负载平均值的3倍压缩率估算压缩DRAM的成本。DRAM成本预计将增长到元基础设施支出的33%,而DRAM功耗遵循类似的趋势,占服务器基础设施功耗的38%。除了压缩DRAM之外,Meta还为所有生产服务器配备了功能强大的NVMeSSD。在系统层面,NVMeSSD占服务器成本的不到3%(大约是当前一代服务器压缩内存的3倍)。数据图显示,跨代后,iso容量到DRAM、SSD的成本仍然不到服务器成本的1%——每字节成本比压缩内存低约10倍。尽管比DRAM便宜,但压缩内存和NVMeSSD的性能特征较差。幸运的是,典型的内存访问模式为卸载到较慢的媒体提供了大量机会。数据图显示“冷”应用程序内存,即过去5分钟内未访问的页面百分比。此内存可以卸载到压缩内存或SSD,而不会影响应用程序性能。总体而言,冷存储平均约占元服务器总内存的35%。但是,它在不同的应用程序中差异很大,从19%到62%不等。这突出了对各种应用程序行为具有鲁棒性的卸载方法的重要性。除了访问频率,卸载解决方案还需要考虑卸载哪种类型的内存。应用程序访问的内存分为两大类:匿名和文件支持。匿名内存由应用程序以堆或堆栈页面的形式直接分配。文件支持的内存由内核的页面缓存分配,以代表应用程序存储经常使用的文件系统数据。TMO设计概述TMO由跨用户空间和内核的多个部分组成,“Senpai”作为用户空间代理位于卸载操作的核心,并且在围绕观察到的内存压力的控制循环中,它使用内核的回收算法来识别最少使用的内存页面并将它们移出卸载后端。在此过程中,PSI(压力失速信息)内核组件量化并报告内存压力,回收算法通过内核的cgroup2内存控制器定向到特定应用程序。SenpaiSenpai位于PSI指标之上,并使用压力作为反馈来确定驱动内核内存回收的难度。如果容器的测量值低于给定的压力阈值,Senpai将提高恢复率;如果压力降到下面,前辈就会缓解。压力阈值经过校准,因此分页开销不会在功能上影响工作负载的性能。交换算法TMO在不影响工作负载的低压力水平下卸载内存,但是当Linux在压力下退出文件系统缓存时,它似乎“不愿意”将匿名内存移出交换设备。即使存在已知的冷堆,并且文件缓存的速度超过TMO压力阈值,配置的交换空间仍然处于令人沮丧的空闲状态。因此,TMO引入了一种新的交换算法,该算法通过跟踪系统中文件系统缓存重建的速率并按比例将其换出,从而利用这些驱动器,而无需恢复到仍然使用旋转存储介质的旧设置。完成。也就是说,对于每个需要从文件系统中重复读取的文件页面,内核会尝试换出一个匿名页面,从而为翻页腾出空间。如果发生交换插入,Recall会再次推回文件缓存。目前,Meta根据应用程序的内存压缩率及其对内存访问速度减慢的敏感性,在压缩内存和支持SSD的交换之间手动选择卸载后端。虽然可以开发工具来自动化这个过程,但更基本的解决方案需要内核来管理卸载后端的层次结构(例如自动使用zswap处理较热的页面,使用SSD处理较冷或压缩较少的页面,以及未来的NVM和CXL设备崩溃进入内存层次结构)。内核回收算法应该在这些内存池之间动态平衡,Meta正在积极研究这种架构。随着CXL等即将推出的总线技术提供类似内存的访问语义,内存卸载不仅可以帮助卸载冷存储,还可以帮助卸载热存储。Meta还积极关注此架构,以利用CXL设备作为内存卸载后端。参考链接:https://engineering.fb.com/20...