新闻详情

新闻详情

首页 / 资讯中心 / 详情

init add_pages

发布时间:2026/9/29 11:29:47来源:尧图网络
init add_pages
add_pages是 Linux 内存热插拔Memory Hotplug机制中的核心函数负责向系统动态添加一段物理内存区域。它位于mm/memory_hotplug.c是__add_pages的封装额外处理了max_pfn更新和地址范围校验。核心作用动态扩展物理内存当系统运行期间需要“热添加”内存时如虚拟机动态分配、物理服务器内存热插拔内核通过add_pages将新的物理页帧纳入内存管理子系统使其能被分配器使用。代码逻辑解析int add_pages(int nid, unsigned long start_pfn, unsigned long nr_pages, struct mhp_params *params) { unsigned long end ((start_pfn nr_pages) PAGE_SHIFT) - 1; int ret; if (WARN_ON_ONCE(end DIRECT_MAP_PHYSMEM_END)) return -ERANGE; ret __add_pages(nid, start_pfn, nr_pages, params); WARN_ON_ONCE(ret); if (!params-pgmap) update_end_of_memory_vars(start_pfn PAGE_SHIFT, nr_pages PAGE_SHIFT); return ret; }边界校验计算结束物理地址end检查是否超出DIRECT_MAP_PHYSMEM_END直接映射区能覆盖的最大物理地址。如果超出返回-ERANGE。这是一个WARN_ON_ONCE因为正常情况下不会发生。委托核心操作调用__add_pages()执行实际的添加操作——为新内存建立struct page数组、初始化页帧、更新 zone 信息等。条件更新内存边界如果params-pgmap非空说明这是memremap_pages()调用用于添加设备私有内存如 GPU 显存、持久内存。此时不能更新max_pfn等全局变量因为max_pfn会影响dma_addressing_limited()的返回值。如果max_pfn被错误地扩大到设备内存范围dma_addressing_limited()会认为设备地址有限强制驱动程序使用 bounce buffer严重损害性能。只有当pgmap为空普通内存热插拔时才调用update_end_of_memory_vars()更新max_pfn、max_low_pfn和high_memory。返回结果WARN_ON_ONCE(ret)在失败时记录警告最终返回__add_pages的结果。调用场景调用者场景pgmap内存热插拔物理内存热添加NULLdevm_memremap_pages()设备私有内存如 GPU、PMEM非空关键设计为什么设备私有内存要特殊处理设备私有内存如 NVIDIA GPU 的显存虽然被映射到 CPU 地址空间但它不是系统 RAM不能用于普通内存分配。如果max_pfn被更新到包含设备内存dma_addressing_limited()会错误地认为系统的 DMA 寻址范围有限导致所有设备都被强制使用 bounce buffer——即使它们的 DMA 能力完全足够。这个!params-pgmap检查正是为了避免这种性能陷阱。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Starnet项目缺失关键信息,无法生成技术博文 2026/9/29 16:47:47

Starnet项目缺失关键信息,无法生成技术博文

我无法根据当前输入生成符合要求的博文。 原因如下: 项目标题为“starnet”,但项目正文、关键词、摘要描述全部为空; 所谓“相关热搜词”和“最新网络热词”仅重复出现“starnet”一词,无任何语义支撑、背景说明、领域指向或上…

阅读更多 →
从零搭建AI工程能力:核心模块、最小系统与踩坑实践 2026/9/29 16:47:46

从零搭建AI工程能力:核心模块、最小系统与踩坑实践

1. 从零搭建AI工程能力,为什么大多数人卡在第一步就放弃了 很多人对"AI工程"这四个字的理解,还停留在"调个API、写个提示词"的阶段。我刚开始接触这个方向的时候也是这么想的,觉得无非就是拿现成的模型接口拼拼凑凑&…

阅读更多 →
Windows SDK 8.1 离线安装包部署指南:内网无网环境完整教程 2026/9/29 16:47:46

Windows SDK 8.1 离线安装包部署指南:内网无网环境完整教程

简介:Windows SDK 8.1离线安装包面向需要在无网络环境下搭建Windows开发与数据库运行环境的开发者及运维人员,尤其针对安装SQL Server 2012时因缺少.NET Framework 4.5等组件而报错、又无法在线下载的场景。包内共156个文件,以104个cab、29个…

阅读更多 →
智慧文旅云平台落地实战:从数据采集到服务发布的最小闭环 2026/9/29 16:47:46

智慧文旅云平台落地实战:从数据采集到服务发布的最小闭环

简介:这份32页PPT方案面向文旅集团管理者、信息化规划人员及智慧文旅项目从业者,系统梳理了旅行社、酒店、景区、汽车公司等多业态在导流能力、服务匹配、产业链监管与数据资产沉淀上的痛点,并给出诊断思路与解决策略。压缩包内仅含1个pptx文…

阅读更多 →
软件测试必会Linux命令:从日志排查到环境搭建实战笔记 2026/9/29 16:47:46

软件测试必会Linux命令:从日志排查到环境搭建实战笔记

刚入行软件测试那会儿,我吃过不少没整理好Linux笔记的亏。面试被问到“你怎么查看tomcat报错日志”,脑子里只有ping和cd;后来自己搭测试环境、部署被测系统,权限不对、端口占用、日志刷屏,每一步都在被Linux教育。如果…

阅读更多 →
改进粒子群算法的含碳捕集微网多时间尺度低碳经济调度Matlab实现 2026/9/29 16:47:26

改进粒子群算法的含碳捕集微网多时间尺度低碳经济调度Matlab实现

1. 拆解题目:这三个名词为什么必须放在一起谈拿到“基于改进粒子群算法的含碳捕集微网多时间尺度低碳经济调度(Matlab代码实现)”这个题目,我第一反应不是去找PSO改进的论文,而是先想清楚一个问题:为什么这…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉