memory do_swap_page

发布时间:2026/11/6 5:17:16
memory do_swap_page do_swap_page是处理交换缺页swap-in的核心函数。当进程访问一个已被换出到磁盘的匿名页时会触发缺页异常该函数负责将页面从交换空间读回内存并重新建立映射。核心执行流程do_swap_page的主干逻辑如下1. 提取交换项与快速检查载entry pte_to_swp_entry(vmf-orig_pte); if (unlikely(non_swap_entry(entry))) { // 处理设备私有、设备独占、迁移项等非普通交换项 ... }从 PTE 中提取swp_entry_t它包含交换分区类型和槽位偏移量 。如果是设备私有等特殊条目会走独立分支处理。2. 查找交换缓存folio swap_cache_get_folio(entry, vma, vmf-address); if (!folio) { // 不在缓存中需要从交换设备读入 folio alloc_swap_folio(vmf); // 尝试分配大 folio ... }首先在交换缓存swap cache中查找页面。交换缓存用于暂存已换出但仍有引用的页面避免重复 I/O 。如果找到可以直接复用无需磁盘读取次缺页。3. 从交换设备读入主缺页路径如果页面不在缓存中alloc_swap_folio会尝试分配一个 folio。对于支持大 folio 的场景如 zRAM 等同步 I/O 设备会尝试分配 mTHP 大小的 folio 以整体恢复 。分配后通过swapin_readahead或swapin_entry将页面数据从交换设备读入。4. 获取 PTE 锁并重检vmf-pte pte_offset_map_lock(vma-vm_mm, vmf-pmd, vmf-address, vmf-ptl); if (!pte_same(*vmf-pte, vmf-orig_pte)) { // PTE 已被其他线程修改放弃 goto out; }读入数据可能涉及 I/O 等待期间 PTE 可能被其他线程修改。因此必须重新获取 PTE 锁并比对orig_pte确保没有竞态 。5. 建立映射与更新统计inc_mm_counter(vma-vm_mm, MM_ANONPAGES); // 匿名页计数 1 dec_mm_counter(vma-vm_mm, MM_SWAPENTS); // 交换项计数 -1 pte mk_pte(folio-page, vma-vm_page_prot); if (pte_swp_soft_dirty(vmf-orig_pte)) pte pte_mksoft_dirty(pte); set_pte_at(vma-vm_mm, vmf-address, vmf-pte, pte); folio_add_anon_rmap_pte(folio, folio-page, vma, vmf-address, rmap_flags);用新读入的页面重建 PTE同时更新 RSS 统计匿名页计数增加交换项计数减少。如果原始 PTE 带有 soft-dirty 标记新 PTE 也会继承。最后通过反向映射rmap将页面关联到进程地址空间 。6. 释放交换槽位if (should_try_to_free_swap(folio, vma, vmf-flags)) folio_free_swap(folio);如果页面是独占的且即将变为可写会尝试释放交换槽位folio_free_swap避免页面再次被换出 。近期演进mTHP 换入支持v6.11Barry Song 和 Chuanhua Han 的补丁系列使do_swap_page能够整体换入 mTHP前提是交换项连续、地址对齐、且未启用 uffd/zswap 。这改变了此前只能逐页恢复的局面。swapcache_wq 等待队列2024 年的补丁为swapcache_prepare失败场景引入了等待队列避免固定 1 tick 的睡眠改善了 Android 上的 UI 卡顿问题 。Swap Table 重构v6.18Kairui Song 主导的 swap 现代化工程正在用 swap table 取代 XArraydo_swap_page中的交换缓存查找逻辑也随之简化预计带来 5%~20% 的性能提升 。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询