《OpenCloudOS 内存管理与卸载技术的探究与实践(1).pdf》由会员分享,可在线阅读,更多相关《OpenCloudOS 内存管理与卸载技术的探究与实践(1).pdf(27页珍藏版)》请在三个皮匠报告上搜索。
1、宋宋恺睿恺睿2025-03-29OpenCloudOS 内存管理与卸内存管理与卸载技载技术的探究与实践术的探究与实践内容提要内容提要内存管理与内存多级卸载为什么要让操作系统做主动内存卸载业界痛点与我们的突破未来展望内存管理与内存多内存管理与内存多级卸载级卸载 业务与数据规模复杂度不断增长,内存成本,管理复内存成本,管理复杂性日渐增长。杂性日渐增长。在数据中心,内存是数据中心的主要核心成本之一。在桌面与移动平台,内存更是紧缺资源。系统中往往是存在长期不访问的冷内存,或者相对较冷内存,内存卸内存卸载便是要充分利用整机所有资源,将载便是要充分利用整机所有资源,将冷内存移冷内存移动到次级存储设备。动到
2、次级存储设备。如何如何进行更好的内存管理卸载以提高性能,降低成本,进行更好的内存管理卸载以提高性能,降低成本,一直是一直是业界探索的热门方向。业界探索的热门方向。存在多级存储的设备上对内存进行合理沉降。借助高性能算法实现内存压缩。同时可以提前预防内存巅峰压力的形成。图片基于 Meta TMO 论文修改为什么要让操作系统做主动内存卸载为什么要让操作系统做主动内存卸载 操作系操作系统的最底层:内核统的最底层:内核 内核最主要的核心功能内核最主要的核心功能-虚虚拟内存拟内存管理管理页表页表缺缺页处理页处理Over commit迁移迁移/整理整理/页面分配页面分配/.自然而然内核可以充分利用 CPU
3、等硬件提供的内存控制,感知能力,映射等能力,统一调度全局所有资源。热度探测 Demote SWAP业界痛点,现状,与突破业界痛点,现状,与突破业界痛点,现状,与突破业界痛点,现状,与突破 热度探测:如何在生产环境中找出冷内存?如何平衡精度与性能?内存卸载:匿名页-SWAP 系统的瓶颈在哪里?缓存-回收的效率?mTHP 管理:社区引入了新的 mTHP 概念(支持不同大小的大页),带来了更多挑战?内存管理开销优化:内核的内存的管理提供了大量特性,这必然是有开销的,如何降到最低?特别是随着系统规模增长如何保证可扩缩性(Scalability)?针对内存管理与卸载,我们进行了大量探索与实践,并实现了一
4、系列创新成果。所有技术进步方案全部回馈社区,在 Linux 内核主线中我们已经在内存管理领域做出大量贡献。推动 OpenCloudOS 与整个 Linux 社区的技术进步。热度探测热度探测-冷内存冷内存识别与淘汰识别与淘汰 Linux 内核管理内存页面的核心机制:LRU,不仅管理热度,也是组织已分配页面的基本结构。其中“U”的主要判断来源之一便是页表 Access Bit,如何平衡扫描页表收集热度信息的开销与精度?Linux 内核经典 Active/Inactive LRU;发生压力时逐页降级发生压力时逐页降级/淘汰与淘汰与扫描;扫描;RMAP 开开销大销大,精度有限精度有限。近年来社区提供了
5、各种新方式方法进行热度探测:如 DAMON,Idle Page 等。但 LRU 仍旧是最重要最通用核心组件,基于 LRU 的通用优化是全场景内存卸载的核心。非 Map 页面通过 folio_mark_accessed()进行 LRU 升级(Inactive-Active)。页面分为 Active/Inactive 两级,有内存压力时,移动页面从 Active-Inactive 或淘汰。每次移动/淘汰走 RMAP 扫描页表。热度探测热度探测-冷内存冷内存识别与淘汰识别与淘汰 谷歌在 6.1 中提出了 MGLRU 机制,推动了内核内存管理方向性能和特性的大进步:核心理念为:尽量避免了 RMAP,而
6、尽量使用 Page Table Walk 和页面热度升级作为主要机制。理念上,MGLRU 会不断产生新世代,并将当前探测到的热页放入新世代中。目前上游最多 4 个世代。内存出现压力时,直接消耗最冷世代中的页面,没有页面在 LRU 中页面降级,同时启动 Table Walker。页面引入 Tier 概念来统计来自内核 folio_mark_accessed()等热度信息。引入 PID 等控制算法平衡不同类型的页面回收与保护特定 Tier 页面。页面分为多个世代(目前上游为 4 个)新页面按类型放入不同 Gen不断产生新世代,Promote 热页面到新世代淘汰最老世代热度探测热度探测-冷内存冷内存