奶昔论坛

标题: 华为 ModelFS 与 vivo F2FS 阅后即焚 Pagecache 优化实践 [打印本页]

作者: Yangsh888    时间: 5 小时前
标题: 华为 ModelFS 与 vivo F2FS 阅后即焚 Pagecache 优化实践
前几天同事和同行去开了 CLK2025 大会,讲一些会上的内容。

来自华为的黄晓嘉和 vivo 的韩棋分别分享了针对 “阅后即焚 Pagecache” 的技术探索,核心都是解决 AI 场景下大文件加载的内存占用与效率问题。

华为聚焦 AI 模型文件加载的痛点 —— 耗时长、占用内存多,而模型权重数据无需长期留存于 page cache,“阅后即焚” 成为关键诉求。
基于这一需求,华为设计了 ModelFS,核心思路是将预取(prefetch)和内存回收过程变得可编程。
它允许在用户态注册预取和驱逐(evict)回调函数,支持用户自定义算法,让加载过程具备 NUMA 感知能力,还能根据 IO 模式灵活调整预取和回收策略。

另一边,vivo 的韩棋分享了在 F2FS 文件系统上支持 uncached buffer IO 的努力。这种 IO 方式的核心是 “阅后即焚”,避免了普通 buffer IO 中 folio 的 LRU 管理及回收开销。
与完全的 cached buffer IO 相比,uncached buffer IO 的 folio 自带 PG_dropbehind 标记,能绕开 LRU 队列和常规回收机制,实现 “用完即抛”;与 direct IO 相比,它的优势在于所有并发读写仍通过 page cache 同步。

和腾讯宋恺睿正在推进的 swap in 路径优化思路相似 —— 删除 sync IO 设备绕开 swapcache 的代码,坚持 “永远不需要绕过 swap cache”,让数据路径保持统一,简化同步处理。
此前,Huang Ying、Chris Li、Kairui Song、Barry Song 等开发者曾不得不通过各种方法规避路径不一致带来的同步问题。

vivo 的工作重点集中在写路径(读路径仅需声明支持即可)。他们在 F2FS 的 write end IO 路径中,破解了文件系统的原子上下文,通过一个异步 worker 完成 folio 的 drop 操作。
这项优化的核心收益是,让 buffer IO 的 kswapd 开销降到 0。但韩棋也坦诚,uncached buffer IO 存在明显短板:每次 drop folios 前必须同步写操作,这会导致写性能下降,他也希望借此激发行业共同思考解决方案。

从技术趋势来看,有两个明显方向。一是可编程 fs/mm 成为重要探索,允许用户根据具体场景在用户态定制回收和预取机制,这与之前 “Linux 内核可编程内存管理的一些探索” 所倡导的 “机制与策略分离” 思路相呼应。

二是内核需要针对性解决 AI 时代的新挑战,面对大模型 I/O 量大、占用内存多的问题,需更好协调 I/O、内存与回收的互动,同时加强对 NUMA 硬件架构、NPU 工作流程的感知与适配。

80a5b6ad-3f73-4cbd-9188-b2f4e81aecad.png 7fb95065-6646-4dd5-9fe0-fbdaebab79f6.png

作者: 小铁锤    时间: 3 小时前
干货满满,必须顶一下
作者: naix1    时间: 2 小时前
太牛了




欢迎光临 奶昔论坛 (https://forum.naixi.net/) Powered by Discuz! X3.5