page_alloc __offline_isolated_pages

发布时间:2026/10/21 2:31:00

page_alloc __offline_isolated_pages __offline_isolated_pages是内存热移除流程中的核心函数用于在页面已被成功隔离的前提下将它们从伙伴系统中彻底移除并标记对应的内存段为离线状态。核心实现unsigned long __offline_isolated_pages(unsigned long start_pfn, unsigned long end_pfn) { unsigned long already_offline 0, flags; unsigned long pfn start_pfn; struct page *page; struct zone *zone; unsigned int order; offline_mem_sections(pfn, end_pfn); zone page_zone(pfn_to_page(pfn)); spin_lock_irqsave(zone-lock, flags); while (pfn end_pfn) { page pfn_to_page(pfn); /* * The HWPoisoned page may be not in buddy system, and * page_count() is not 0. */ if (unlikely(!PageBuddy(page) PageHWPoison(page))) { pfn; continue; } /* * At this point all remaining PageOffline() pages have a * reference count of 0 and can simply be skipped. */ if (PageOffline(page)) { BUG_ON(page_count(page)); BUG_ON(PageBuddy(page)); already_offline; pfn; continue; } BUG_ON(!PageBuddy(page)); VM_WARN_ON(get_pageblock_migratetype(page) ! MIGRATE_ISOLATE); order buddy_order(page); del_page_from_free_list(page, zone, order, MIGRATE_ISOLATE); pfn (1 order); } spin_unlock_irqrestore(zone-lock, flags); return end_pfn - start_pfn - already_offline; }关键处理逻辑1. 跳过硬件毒化页if (unlikely(!PageBuddy(page) PageHWPoison(page))) { pfn; continue; }硬件毒化页HWPoison可能不在伙伴系统中且引用计数不为 0无法通过常规方式移除因此逐页跳过。2. 跳过已离线页if (PageOffline(page)) { BUG_ON(page_count(page)); BUG_ON(PageBuddy(page)); already_offline; pfn; continue; }PageOffline页已被标记为离线引用计数为 0不在伙伴系统中直接跳过并计数。3. 从伙伴系统摘除空闲页BUG_ON(!PageBuddy(page)); VM_WARN_ON(get_pageblock_migratetype(page) ! MIGRATE_ISOLATE); order buddy_order(page); del_page_from_free_list(page, zone, order, MIGRATE_ISOLATE); pfn (1 order);断言页面确实是 Buddy 状态否则说明隔离不彻底。调试模式下警告迁移类型必须为MIGRATE_ISOLATE。用buddy_order(page)获取页块阶数然后整体从空闲链表中摘除。4. 返回值return end_pfn - start_pfn - already_offline;返回实际移除的“被管理页”数量供调用方adjust_managed_page_count()更新 zone 统计。关键约束必须跨完整 section注释要求范围必须 span full sections。必须先隔离调用前必须通过start_isolate_page_range()将 pageblock 标记为MIGRATE_ISOLATE。必须在zone-lock下操作摘除空闲链表需要持有 zone 锁。与调用方的关系在offline_pages()流程中__offline_isolated_pages()在test_pages_isolated()确认全部隔离成功后调用。它移除页后调用方会修正zone-nr_isolate_pageblock计数。调用zone_pcp_enable(zone)恢复 PCP 缓存。用adjust_managed_page_count()更新统计。清空节点状态并重建 zonelist。2026 年的重构2026 年的补丁将其中的显式spin_lock_irqsave/spin_unlock_irqrestore替换为guard(spinlock_irqsave)作用域锁简化了错误路径的锁管理。
延伸阅读

更多相关文章

2026/10/21 2:26:00

26 精武杯手机部分复盘

【简要案情】 近期,某市反诈部门接到多名群众报案,均遭遇“投资理财”类电信网络诈骗,指向的犯罪团伙涉案资金巨大、作案链条隐蔽。办案单位迅速成立专案组开展电子数据取证工作。经初查,该犯罪团伙搭建虚假投资平台,通…

2026/10/21 2:26:00

PHP安全漏洞修复指南:防SQL注入与XSS

一、为什么 PHP 项目总被盯上做 PHP 开发这些年,我见过太多项目上线后被黑的情况。说句实话,大部分漏洞并不是什么高深的技术,翻来覆去就是 SQL 注入和 XSS 这两类。很多新手写代码的时候图省事,直接把用户输入拼进 SQL 语句&…

2026/10/21 6:11:23

机器人对话系统地图模块设计:POI检索、路径规划与避坑实践

做机器人对话系统最头疼的一件事,不是意图识别,也不是自然语言生成,而是把真实世界接进来。用户问一句“我从现在的地方去服务中心怎么走”,你得在几百毫秒内完成坐标解析、路径计算、话术拼接,还得把路线图用卡片发出…

2026/10/21 6:11:23

桌面图标模拟FlappyBird:轻量级系统级交互实践

1. 项目概述:让桌面图标“活”起来的轻量级游戏化实践你有没有试过盯着Windows或macOS桌面上那一排排静止的图标发呆?它们整齐、规范、功能明确,却也透着一股难以言说的机械感。最近在某高校数字媒体实验室带学生做交互小实验时,一…

2026/10/21 6:11:23

React项目工程化落地指南:从组件拆分到性能优化

看到标题“rea”,很多做前端的朋友应该都不陌生,这就是 React 在社区里、在代码仓库里最常用的简称。但正是因为太常见了,反而容易让人忽略它背后那一整套完整的前端工程化思维。这篇内容我不打算讲官方文档上已有的 API 清单,而是…

2026/10/21 6:11:23

lingbot-map拆解:从激光雷达到机器人栅格地图的完整闭环

lingbot-map这个项目名,第一次看到的人多半会以为是个地图工具库,实际上它是“lingbot”移动机器人项目里专门负责“建图与地图数据管理”的子模块。做机器人的人都知道,一台轮式机器人能不能正常干活,前提条件往往不是电机够不够…

2026/10/21 6:06:23

Litellm统一大模型API网关:架构原理、代理模式与生产环境实战

1. 项目概述:litellm 到底解决什么问题先抛一个场景,你大概率遇到过。公司同时接了 OpenAI 的 GPT 系列、某云厂商的国产大模型、还有个开源模型部署在自己的 GPU 服务器上。每个厂商的 API 格式还不一致,OpenAI 是/v1/chat/completions&…

2026/10/21 4:53:08

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/21 0:00:35

交通流仿真实战:IDM跟驰与MOBIL换道模型参数调优与避坑指南

简介:这份资源是面向交通工程学习者与Python开发者的微观交通流仿真项目,核心实现智能驾驶模型(IDM)下的车辆跟驰与换道行为,可用于理解速度、密度与流量之间的动态关系,适合具备Python基础、希望深入交通模…

2026/10/21 0:00:35

揭穿智能体表面顺从:用追踪代码重建任务执行确定性

1. 表面顺从不是智能体的“礼貌”,而是任务执行链路上的隐性断点最近在调试一个跨平台长周期任务调度系统时,我反复遇到一种令人困惑的现象:智能体在用户指令发出后,几乎秒级响应“已收到”“正在处理”“请稍候”,UI上…

2026/10/21 0:00:35

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑