存储技术
本篇论文是Facebook(Meta)公司发表在ASPLOS 2022上的文章。随着数据中心级应用对内存需求的不断增长,导致DRAM的成本成为数据中心的主要开销。为了解决这个问题,现有的思路是将冷数据卸载到其他替代介质中,如NVMe SSDs和其他非易失性设备。其中关键的挑战是要设计出具有足够鲁棒性的方法来适应不同特性的工作负载和不同的后端存储设备。这篇文章提出的TMO引入了一种新型的Linux内核机制来实时检测由于CPU、内存和IO的资源短缺导致的工作丢失。
通过这一信息,TMO可以根据设备性能特性和应用对内存访问降速的敏感型来自动决定卸载多少内存数据到异构设备中。同时为了最大化内存节省,TMO同时考虑了匿名页和文件页,并根据匿名页的换入率和文件页的重载率来进行均衡。目前TMO已经在数据中心中运行超过一年,并节省了20%-32%的内存。TMO已经成功编入Linux内核中了。
背景
随着如今数据中心对内存需求的增长,数据中心中内存的开销越来越大。图1展示了在Facebook数据中心中内存、压缩内存和SSD存储的开销。可以发现内存的开销占比越来越高,而其因此如何降低内存开销成为了重要的难题。而与此同时数据中心中每个服务器都配备了一个性能好的SSD,而SSD的开销占比仅为1%,因此如何利用SSD进行内存扩充成为关键。
图1:数据中心中内存、压缩内存和SSD的开销占比
动机和挑战
图2展示了内存中在过去1分钟、2分钟、5分钟被访问的数据量占比,同时也展示了五分钟内未被访问的数据占比。可以发现其中冷内存数据(5分钟内未被访问)占比平均约35%,这些冷内存数据即为内存所需要卸载的数据。同时还发现冷内存数据在不同应用中的占比不同,从19%到62%。这就需要设计一个鲁棒性强的技术来进行内存卸载。
图2:应用在1分钟、2分钟、5分钟内访问和5分钟内未访问内存数据占比
为了简化数据中心应用的操作,有很大一部分内存需要用来激活微服务和提供基础功能。文章中将数据中心内存税定义为软件包、分析、日志和和其他支持数据中心软件功能所需要占用的内存,同时将微服务内存税定义为应用程序由于需要分解为微服务所需要占用的内存,如支持导航和代理。图3展示了数据中心税和微服务税在内存中的占比。可以发现占比非常高,而这些内存税相较于应用直接访问的内存数据而言影响用户体验较小。因此这些内存税是内存主要需要卸载的对象。
图3:内存税及其中各部分的占比
图4展示了文件页和匿名页所占内存的比例。可以发现其中文件页和匿名页所占比例在不同应用中差异较大,这也使得在设计交换策略的时候需要综合考虑文件页和匿名页的需求,从而最大化节省内存。
图4:文件页和匿名页占用内存的比例
图5展示了市面上不同SSD在寿命、读写延迟和读写IOPS之间的差异性。可以发现不同SSD之间的差异很大,这就使得在设计交换策略的时候要考虑这个差异性,要使得其在不同SSD作为后端存储设备时都能表现优异。
图5:以对数为刻度展示SSD的特性。A-G指代不同的SSD
设计
TMO的目的是为了将冷数据卸载到后端存储上,并适用于不同应用和后端存储。为了实现这一目的TMO回答了在内存卸载时需要卸载多少数据以及卸载哪些数据。图6展示了TMO的整体架构图。其中TMO提出了用户层组件senpai(2)来控制内存卸载进程和决定每个工作负载需要卸载多少内存数据,内核组件压力阻塞信息PSI(3)以压力信息的方式表示应用性能下降的原因,并修改了内核回收内存的逻辑来决定卸载哪些内存数据。
图6:TMO的整体架构图
1. PSI:PSI提出根据进程阻塞的时间来判断该资源对性能下降的敏感程度。如图7所示,其中some为每个进程自己阻塞的时间,full为所有进程同时阻塞的时间。PSI可以应用于不同的系统资源中,如为了追踪内存压力,PSI记录内存缺失所出现的时间开销;IO压力为每个进程因IO阻塞时等待block IO完成的时间;CPU压力为进程运行时等待CPU空闲的时间。
图7:内核资源压力衡量指标
2. Senpai:Senpai根据PSI来实时衡量工作负载所需要的内存开销,从而释放超过这些所需开销的内存。即当衡量内存压力的PSI低于阈值的时候,将内存中的数据卸载到后端存储中,如图8所示。同时根据公式来决定当前内存中有多少数据需要卸载。其中的参数经实验验证并不敏感,文中设置reclaim_ratio为0.0005,PSI_threshold为0.1%。
图8:Senpai执行示例
3. 重载检测机制:TMO提出重载率(refault ratio),当文件页在触发两次page fault进行换入时的时间间隔低于一个阈值,则判定出现了重载。根据重载率和匿名页的换入率进行比较,判断当前内存对文件页还是匿名页更加需要,从而判定卸载文件页还是匿名页。文件页和匿名页分别使用活跃/非活跃的LRU链表进行管理。
实验效果
1. 内存节省效果明显。文章从应用内存和内存税两个角度衡量内存节省结果,如图9所示为应用所需内存角度。当压缩内存作为后端存储时,TMO节省了7-12%的内存;当SSD作为后端存储时,TMO节省了10-19%的内存。同时如图10所示,TMO节省了平均13%的内存税。
图9:应用内存节省比率
图10:内存税节省比率
文章中还衡量了针对内存受限应用-web应用的性能和内存节省,对PSI指标和现在已有指标的对比实验,以及senpai参数调整的实验。同时针对SSD寿命问题,文章中提出通过调节内存卸载时的写入速率来避免SSD过度磨损,其中写入速率设为1MB/s。具体实验请大家参阅文章。
总结
为了解决当前数据中心内存资源开销大的问题,本文提出TMO应用在以SSD和压缩内存作为后端存储来扩充内存的场景下。TMO通过进程阻塞的时间作为衡量指标来判断当前进程对资源的需求程度,从而在内存资源不紧张的时候将内存冷数据卸载到后端存储设备中,来缓解内存压力。同时TMO通过对文件页重载率和匿名页换入率的比较来决定卸载什么类型的数据。实验结果显示TMO能够节省较多的内存,同时具有较强的鲁棒性,适应于不同的负载和后端存储介质。
致谢
感谢本次论文解读者,来自华东师范大学的博士生罗龙飞,主要研究方向为混合式存储设备优化。
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !