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