《曾敬翔-云服务器内存多级卸载方案.pdf》由会员分享,可在线阅读,更多相关《曾敬翔-云服务器内存多级卸载方案.pdf(20页珍藏版)》请在三个皮匠报告上搜索。
1、云服务器内存多级卸载方案探索曾敬翔 腾讯Linux内核研发工程师内容提纲内容提纲方案背景01业界方案介绍02方案详述及效果03后续规划04服务器内存多级卸载方案探索服务器内存多级卸载方案探索内存热度 服务器在数据中心硬件采购成本中占比最高,达到80%左右,其中CPU、GPU和DRAM是主要成本项采购成本、能耗、电费等 数据中心应用程序对内存的需求持续增长随着数据量和业务复杂度上升,内存需求陡增 应用程序为了提高性能,大都采用内存密集性策略长时间运行或者大量服务并存时会出现很大的内存压力 已用内存中不活跃冷内存占有很大比例比例值根据业务不同会有波动产业背景 内存需求成本不断上升、有效利用率较低服
2、务器内存多级卸载方案探索服务器内存多级卸载方案探索 内存多层级化支持愈趋成熟使用相对低性能但廉价的存储设备给昂贵的DRAM减压使用极少量CPU时间压缩内存,可以大幅度降低成本 SWAP逐渐受重视随着内存压缩技术和高性能存储设备的成熟,SWAP 损耗逐渐可以接受社区早有重视:https:/ ZRAM 为例,整体性能慢于内存,在保证回收精确度的情况下ZRAM可以做到平滑换出技术背景 内存层面降本增效成为可能 日新月异的硬件:CXL等CXL慢于Local NODE 内存但远快于IO与内存压缩换出优先级是最高的,在发生任何换出前优先尝试 demote 到 CXLPromotion/Demotion时通
3、过内存间直接移动的平衡方式,提高性能内容提纲内容提纲方案的背景01业界方案介绍02方案详述及效果03后续规划04服务器内存多级卸载方案探索服务器内存多级卸载方案探索 业界的一些探索方案:Meta-TMO(透明内存卸载)数据采集层:在内核中采集cgroup级别的CPU内存IO的延迟信息,并暴露到用户层;回收策略层:Meta-TMO根据cgroup中进程对内存访问速度减慢的延迟敏感性,自动调整要卸载到后备设备的内存量;均衡回收:在内核回收过程中平衡文件页的refault率和匿名页的swapin率,更均衡回收匿名页;在数百万的服务器上节省了总内存的20%32%;我们全量实现了Meta-TMO所需特性
4、,进行摸底。可以得出和Meta论文相似结果,性能轻微损失,内存大幅降低;业界探索方案服务器内存多级卸载方案探索服务器内存多级卸载方案探索 Meta-TMO(透明内存卸载)方案的一些弊端无法在 root memcg 上进行回收,即当业务不以 memcg 方式进行部署的时候,Meta-TMO 是失效的;回收路径很容易堵塞业务进程,导致对于突发业务无法及时调整从而造成性能颠簸;对页面冷热判断完全基于 LRU,在一些模拟业务场景中(如:Postmark),严重失准;无法支持根据回收目标页面的不同冷热程度换出到不同速度的后备设备上面,即无法做到多级卸载平衡;业界探索方案内容提纲内容提纲方案的背景01业界
5、方案介绍02方案详述及效果03后续规划04服务器内存多级卸载方案探索服务器内存多级卸载方案探索PSI、Tenpai:根据进程对内存访问延迟的敏感性,决定回收的页面数量。DAMON 核心及子模块:扫描出长时间未访问的页面,提供基本扫描框架与全局探测算法,提供 LRU Sort 与 SWAP hint 方法,与内核内存回收系统结合,提供即时可用的页面热度信息。Pageout Tiering 框架:在待回收的页面链表中,根据页面冷热频率(DAMON动态迭代的采样频率)换出到不同速度的后备设备上。SWAP Balancer 模块:每个 SWAP 后备设备维护 LRU 链表,当高级SWAP 设备快满时,
6、demote 冷页到速度更慢的设备上。CXL 支持:在换出回写前,优先使用 CXL Promote/Demote,避免Page Fault、IO等造成的性能损失。核心性能优化:针对内核 MM 核心代码进行了大量调优和优化,部分已经upstream。服务器内存多级卸载方案设计服务器内存多级卸载方案探索服务器内存多级卸载方案探索 PSI 收集整理 Per Cgroup 内存访问延迟信息暴露给用户态。用户态守护进程根据 PSI 决定 Cgroup 中需要内存量。Kernel MM 根据 memory.reclaim 接口指示,发起异步回收。DAMON 主动扫描,协助 LRU 整理,收集热度信息。Pa
7、geout 路径中实现了 hinting 框架,反向查询 Pageout Tiering 模块,通过 DAMON 收集的页面对应的访问频率和驻留时长,尝试根据不同的访问频率换出到不同速度的设备上。通过 cgroup 反向查询 DAMON 实现了 cgroup 级回收和 DAMON 监控的结合。通过 PSI 监控反馈,实现了对 DAMON 监控精度的补偿。SWAP 路径中,经过优化的 Swap Cache,Static Route 等保证换出性能。Swap Balancer 将快满的 SWAP 后备设备中的页面 Migrate 到速度更慢的 SWAP 后备设备中。服务器内存多级卸载方案工作流程服
8、务器内存多级卸载方案探索服务器内存多级卸载方案探索Pageout Tiering 基于 DAMON 的全物理页面监控。在一定采样周期后,将地址相邻并且访问频率相似的监控区域合并,后对每个监控区域分裂,动态迭代一定次数后,以此确保一个监控区域的页面访问频率是相似的 开发了相应功能子模块,允许从地址反向查询热度,用于支持 cgroup级别热度信息查询。对于 DAMON 精度问题:整个方案中,回收由 PSI 反馈控制,可适度弥补 DAMON 潜在精度问题带来的性能损失。对于寻找冷页,我们更在乎 False positive,DAMON 相关算法正在尝试改进。将被换出的页面去反向查询 DAMON 提供
9、的访问频率、驻留时间等信息。Pageout Tiering 模块根据用户配置,计算出最佳 swap 后备设备。细节优化:对于多 SWAP 设备时的 SWAP entry 分配、swap caching 等均有大量优化。服务器内存多级卸载方案探索服务器内存多级卸载方案探索SWAP balancer 分级卸载时,从性能角度考虑我们应尽力优先使用高优先级的SWAP设备,如In-mem压缩SWAP设备ZRAM。对于 ZRAM 来说,开销一般尚可接受(全页读取延迟为原生内存 3 倍左右),在保证冷热探测精度的前提下,可以大幅度提升性能和可用内存空间。但长期运行会导致ZRAM被占满,无法发挥作用,同时ZR
10、AM本身依旧需要耗费内存,带来一定的性能和空间损耗。解决方案:将ZRAM中最冷的页沉降到较为慢速且廉价的存储设备上。从而实现优先使用热 SWAP 设备作为 offload 对象,冷页被动迁移到冷SWAP 设备。内核中现有的问题及swap balancer需要注意的问题:现有内核中,一旦换出的页便无法迁移。页面迁移需要异步,不可阻塞现有业务。精确度要高,热页迁移到冷设备上性能冲击太大。服务器内存多级卸载方案探索服务器内存多级卸载方案探索SWAP balancer 每个后备设备维护一个自身的 LRU(内存额外开销 1%)目前是 Radix Tree 形式;计划切换到 SWAPFILE 中的内联信息
11、;由于 SWAP 特性,被访问的页会被从设备中移除,因此 LRU 最底层页必然是最冷的页。最冷页 age 大于一定值同时设备用量达到阈值(如 80%)时,便将最冷页异步迁移到更冷SWAP设备。通过慢速、长期的异步迁移操作可以使冷页精准的“沉降”到冷设备上。这里使用异步进程进行迁移,直接更改页表项,再次发生Page Fault 时直接读取对应的设备,无额外性能开销。目前依旧需要走页表,有一定开销,但记录额外 Rmap 信息需要额外的内存开销,计划切换到 SWAPFILE 内联信息后进行聚合。使用:内核启用Swap Balancer,配置参数路径:/sys/module/swap_balancer
12、watermark:SWAP 设备水位线,单位为百分比。当一个 SWAP 设备使用率大于改值时,balancer会将其上的页面迁移至更低等级的 SWAP 设备。scan_interwal:每次迁移的间隔,单位 ms。服务器内存多级卸载方案探索服务器内存多级卸载方案探索核心要点总结 通过 Cgroup 反向查询 DAMON 信息,实现了 Cgroup 级别内存分级监控。通过 PSI 与 DAMON 结合,弥补 DAMON 精度问题。通过 Pageout Tiering,对业务中的冷页进行分级回收。通过 SWAP Balancer,实现了优先使用热设备和冷页沉降的平衡功能。内核相关核心路径深度优化
13、-结合上游,优于上游,降低内存页操作开销。增强 PSI 对 Cgroup V1 支持和优化。SWAP 路径静态代码优化,热 SWAP 设备比上游性能提高 5%。Page Fault 路径优化,包括 SWAP 在内的内存逻辑综合性能比上游提高 5%。SWAP 设备预读与IO逻辑的优化,多 SWAP 设备时缓存逻辑的优化。DAMON 冷区判断优化,避免冷区判断的 False positive。实现了每个 swap 设备一个 Per CPU cache。实现了不同 swap 设备 readahead 策略的优化。.有计划推往上游,且已有部分推往上游。Reference https:/ DAMON P
14、SI 核心路径优化服务器内存多级卸载方案探索服务器内存多级卸载方案探索nginxRPSdev(%)na266137.580.68Meta-TMO265752.490.37Tencent264480.300.99综合测试-nginx服务器内存多级卸载方案探索服务器内存多级卸载方案探索综合测试-build-linux-kernelbuild-linux-kerneltime(s)dev(%)na114.0381.48Meta-TMO115.8522.25Tencent121.4930.08服务器内存多级卸载方案探索服务器内存多级卸载方案探索pgbenchTPSdev(%)Lat(ms)dev(%)
15、na27332.8636.6122.82Meta-TMO27636.6636.3235.97Tencent28694.2234.9033.87nginxRPSdev(%)na152135.1228.75Meta-TMO149332.0027.05Tencent140989.8128.57build-linux-kerneltime(s)dev(%)na188.6932.47Meta-TMO180.16617.71Tencent203.16926.32综合测试-多cgroup混合测试内容提纲内容提纲方案的背景01业界方案介绍02方案详述及效果03后续规划04服务器内存多级卸载方案探索服务器内存多级卸载方案探索后续规划 Pageout Tiering启发式调优swap设备水位线;更精准的 DAMON 算法,避免False Positive;大页支持;Swap Balancer优化 SWAPFILE 格式,摆脱In-mem metadata LRU方式;优化页表操作,现有操作开销有很大优化区间,增加 RMAP 支持等;更精准的压力与 IO cost 判断;增加大页支持,增加 KSM 支持;优化 Slab 回收优化negative dentry回收等顽疾问题;THANK YOU!感谢聆听!