首页/新闻资讯/正文详情

memory wp_page_reuse

发布时间:2026/11/4 7:13:30 来源:云帆数科 栏目:资讯中心
memory wp_page_reuse
wp_page_reuse是写时复制COW处理路径中用于复用现有物理页面的辅助函数。它的核心职责是当内核判断某个页面可以被安全复用时更新 PTE 标志位以赋予写权限并清理与页面相关的 NUMA 统计信息。核心职责与调用场景该函数主要在以下情况被调用do_wp_page中的独占页复用当发生写缺页且页面是当前进程独占的匿名页例如 fork 后子进程第一次写但父进程已经退出mapcount 为 1内核无需分配新页面可以直接复用。wp_page_shared/finish_mkwrite_fault处理共享文件映射的写缺页时在page_mkwrite回调完成后调用wp_page_reuse将 PTE 设为可写。wp_pfn_shared处理VM_PFNMAP/VM_MIXEDMAP共享映射的写缺页。关键操作该函数的核心操作包括static inline void wp_page_reuse(struct vm_fault *vmf, struct folio *folio) __releases(vmf-ptl) { struct vm_area_struct *vma vmf-vma; pte_t entry; VM_BUG_ON(!(vmf-flags FAULT_FLAG_WRITE)); if (folio) { VM_BUG_ON(folio_test_anon(folio) !PageAnonExclusive(vmf-page)); /* 清除 folio 的 cpupid 信息旧信息可能来自完全不相关的进程 */ folio_xchg_last_cpupid(folio, (1 LAST_CPUPID_SHIFT) - 1); } flush_cache_page(vma, vmf-address, pte_pfn(vmf-orig_pte)); entry pte_mkyoung(vmf-orig_pte); entry maybe_mkwrite(pte_mkdirty(entry), vma); if (ptep_set_access_flags(vma, vmf-address, vmf-pte, entry, 1)) update_mmu_cache(vma, vmf-address, vmf-pte); pte_unmap_unlock(vmf-pte, vmf-ptl); }1. 清除 cpupid 信息folio_xchg_last_cpupid()将last_cpupid设置为全 1无效值。注释解释复用的页面之前可能属于一个完全不相关的进程保留旧的 cpupid 会导致 NUMA balancing 做出错误决策。2. 赋予写权限并刷新 TLB通过maybe_mkwrite和pte_mkdirty将 PTE 标记为可写和脏然后调用ptep_set_access_flags原子更新并刷新 TLB。3. 释放 PTE 锁函数标记了__releases(vmf-ptl)意味着调用者传入的 PTE 锁会在函数内部释放。历史演进与关键修复2022 年空指针修复wp_page_reuse原本设计允许folio/page为 NULL例如wp_pfn_shared场景。但新增的VM_BUG_ON无条件调用PageAnonExclusive(vmf-page)当vmf-page为 NULL 时触发崩溃。修复方案是将VM_BUG_ON移入if (folio)块内。2023 年 folio 化Kefeng Wang 将参数从隐式的vmf-page改为显式的struct folio *folio并将page_cpupid_xchg_last改为folio_xchg_last_cpupid为后续 folio 转换铺路。2025 年批量优化补丁将函数扩展为支持操作页面范围anon_folio_range以批量处理大 folio 的缓存维护和事件计数。当前所有调用点仍传NULL无功能变化。返回值处理wp_page_reuse本身返回void但它的调用者通常返回VM_FAULT_WRITE表示“写缺页已处理完成”。这个返回值在 GUP 路径中具有特殊语义当 GUP 以FOLL_WRITE触发缺页内核完成 COW 后返回VM_FAULT_WRITEGUP 会据此清除FOLL_WRITE标志并重试。

相关推荐

基于SpringBoot+AI的在线考试管理系统(前后端源码)
基于SpringBoot+AI的在线考试管理系统(前后端源码)

基于SpringBootAI的在线考试管理系统 程序代码下载 本系统是一个基于 B/S 架构、前后端分离的在线考试与刷题练习平台,面向学校教学场景,覆盖“出题→考试→判分→错题巩固→学情分析”的完整教学闭环。系统将 AI 大模型能力(Spring AI&… · 2026/11/4 7:13:30

【毕设技巧】文献综述怎么写? 这3种综述写法和4个常犯的错误,一篇文章给你列清楚。
【毕设技巧】文献综述怎么写? 这3种综述写法和4个常犯的错误,一篇文章给你列清楚。

💖💖作者:IT跃迁谷毕设展 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数… · 2026/11/4 7:13:30

4、Eureka服务端安装
4、Eureka服务端安装

1. 新建一个eureka server module <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.x… · 2026/11/4 7:13:30

企业健康申报系统设计与高并发优化实践
企业健康申报系统设计与高并发优化实践

1. 项目背景与核心需求职工健康每日申报系统是近年来企事业单位健康管理的重要数字化工具。这套系统最初源于2020年特殊时期的企业防疫需求&#xff0c;如今已演变为常态化健康管理平台。以某制造企业&#xff08;代号M193&#xff09;为例&#xff0c;其拥有2000余名员工&… · 2026/11/4 14:16:23

Redis读写分离架构与Spring Boot整合实战
Redis读写分离架构与Spring Boot整合实战

1. Redis读写分离架构解析Redis作为高性能键值数据库&#xff0c;在实际生产环境中经常会遇到读多写少的场景。我经历过一个电商项目&#xff0c;大促期间读请求量达到写请求的20倍以上&#xff0c;单节点Redis实例的CPU直接飙到100%。这时候就需要引入读写分离架构来分担主节点… · 2026/11/4 14:16:23

从Claude Code到Pi:AI Coding迁移潮与harness工程实践
从Claude Code到Pi:AI Coding迁移潮与harness工程实践

1. 这场“迁移潮”到底在迁移什么 最近半年&#xff0c;AI Coding 圈子里一个越来越明显的现象是&#xff1a;不少原本重度使用 Claude Code 的开发者&#xff0c;开始把日常主力工具换成了 Pi。注意&#xff0c;这里说的“放弃”并不是说 Claude Code 一夜之间不能用了&#x… · 2026/11/4 14:16:23

无人船MPAPF路径规划:动态避障与实时决策技术
无人船MPAPF路径规划:动态避障与实时决策技术

1. 无人船路径规划的技术挑战与创新方案在无人船自主航行领域&#xff0c;复杂动态环境下的路径规划一直是困扰工程师的核心难题。传统人工势场法&#xff08;APF&#xff09;虽然计算效率高&#xff0c;但在多障碍物场景容易陷入局部最优&#xff1b;而模型预测控制&#xff0… · 2026/11/4 14:16:23

Context即服务:AI时代的新基础设施
Context即服务:AI时代的新基础设施

1. 入口战争早已结束&#xff1a;当搜索框、App图标和浏览器标签都开始“失语”我第一次意识到“入口”这个词正在失效&#xff0c;是在去年帮一家做智能客服SaaS的客户做架构复盘时。他们花了整整18个月、投入三支前端团队&#xff0c;把产品首页重做了7版——从瀑布流到卡片式… · 2026/11/4 14:16:23

AgentScope多智能体框架实战:消息驱动与工具调用避坑指南
AgentScope多智能体框架实战:消息驱动与工具调用避坑指南

1. 为什么我会盯上 AgentScope 这个多智能体框架第一次听到 AgentScope 这个名字&#xff0c;是在一个做智能客服系统的朋友那里。他当时吐槽说&#xff0c;用某几个主流框架搭多智能体协作&#xff0c;光是让两个 Agent 稳定对话就调了三天&#xff0c;消息传递、状态管理、工… · 2026/11/4 14:15:22

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进&#xff0c;技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里&#xff0c;先后经历了三次重大技术栈迁移&#xff0c;每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策"&#xff1a;Jev 到底在解决什么问题大多数人第一次接触大模型&#xff0c;脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样&#xff0c;它给你一段描述&#xff1b;你让它写个周报&#xff0c;它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用"&#xff0c;这件事我前后折腾了小半年。标题里说的这台 Mac mini M6&#xff0c;是我们这次讨论的目标平台&#xff0c;具体到手规格以实物为准&#xff1b;但下面这套推算方法和实测思路&#xff0c;对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码