一句话定义:页缓存(Page Cache)是操作系统拿空闲内存缓存磁盘文件内容的一层机制,让「读文件」这件事尽可能不碰真正的磁盘。
原理
内存比磁盘快好几个数量级。第一次加载模型权重文件时,内核把数据从磁盘读进内存,顺手在页缓存里留一份副本。程序读完后并不立刻归还——只要系统内存不紧张,这些页就一直待着。第二次启动时,同样的读取请求命中页缓存,内核直接把内存里的数据交出去,磁盘几乎不用转。这就是「第二次启动快得多」的主要来源。
打个比方:常用工具从仓库搬到工作台旁的抽屉。第一次用必须去仓库取,费时间;用完不还回仓库,放进抽屉。第二次伸手就有。抽屉塞满了,才把最不常用的工具退回去——这对应内核的缓存回收(page reclaim)。
省下的时间到底花在哪
模型加载大致分两段:一是从磁盘读文件,二是把字节解析成张量、做校验、搬到显存。页缓存只省掉第一段里等磁盘 I/O 的时间(寻道、传输)。第二段是 CPU 和显存带宽的活,页缓存帮不上忙。所以第二次启动仍然要花上一小会儿,模型越大越明显。换机器、重启系统,缓存就没了,又回到冷读。
和相邻概念的区别
| 概念 | 在哪 | 谁管理 | 作用 |
|---|---|---|---|
| 页缓存 | 内核内存 | 内核 | 加速文件读取,对进程透明 |
| 应用层缓存 | 进程内存/远端 | 程序自己 | 缓存计算结果,策略可精确控制 |
| 显存常驻 | GPU 显存 | 框架/运行时 | 省去重复加载与拷贝 |
| mmap | 进程地址空间 | 内核 + 程序 | 像访问内存一样访问文件,填充仍靠页缓存 |
注意:页缓存不等于「模型常驻显存」。它只让数据到内存这一步变快;要真正秒开,还得靠常驻进程或预加载到显存。
实际意义
对从业者来说,判断冷启动和热启动的差别,先弄清慢在哪:冷读慢在磁盘,热读慢在解析、校验和显存拷贝,优化方向完全不同。前者可以加内存、换更快的存储、或让服务进程常驻;后者更适合改进加载格式、并行加载,或者干脆不让模型卸载。
排障时也有用:系统里 free 显示的已用内存包含页缓存,内存「被吃掉」未必是泄漏,通常可以回收。反过来说,跑大规模训练时页缓存会挤占内存,有时反而希望限制它。具体命令与参数以操作系统官方文档为准。
