知识卡片

大页减少缺页开销的原理

专业/工作 · 552.j

内容

CPU访问虚拟内存要先查TLB缓存的地址映射,查不到就要通过MMU多次查页表才能定位物理地址,这个过程一旦发生缺页异常,开销相当可观。以4KB页大小映射2MB内存需要产生512次缺页,而改用2MB大小的大页,同样的内存只需1次缺页,TLB同样的槽位数量能覆盖多得多的地址空间,大幅减少了查表和缺页处理的次数。代价是大页需要在进程启动前预先配置和分配,应用必须提前预估好自己要用多少内存。发散:这本质是”用更粗的地址映射粒度换取更少的映射条目”,和文件系统里[[extent取代block管理磁盘的动机]]、[[Btrfs用B-Tree替代线性表管理目录]]是同一种”减少索引条目数量以降低查找成本”的思路,只是这里作用的对象是虚拟地址转换而不是磁盘元数据。

参考来源

《Linux开源存储全栈详解从Ceph到容器存储》第4章《存储加速》