首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
page_alloc __build_all_zonelists
📅 2026/10/17 6:49:00
✍️ 爱科研究院
👁 阅读 3,247
__build_all_zonelists()是build_all_zonelists()的底层执行函数负责遍历系统中所有在线节点为每个节点构建 zonelist。核心实现static int __build_all_zonelists(void *data) { int nid; int cpu; pg_data_t *self data; for_each_online_node(nid) { pg_data_t *pgdat NODE_DATA(nid); build_zonelists(pgdat); } for_each_possible_cpu(cpu) per_cpu_pages_init(per_cpu(boot_pageset, cpu), per_cpu(boot_zonestats, cpu)); mminit_verify_zonelist(); cpuset_init_current_mems_allowed(); return 0; }关键步骤解析1. 遍历所有在线节点for_each_online_node(nid) { pg_data_t *pgdat NODE_DATA(nid); build_zonelists(pgdat); }对每个在线 NUMA 节点调用build_zonelists()前面讲过的为其构建ZONELIST_FALLBACK和ZONELIST_NOFALLBACK。在 UMA 系统中只有一个节点此循环只执行一次。2. 初始化 boot pagesetfor_each_possible_cpu(cpu) per_cpu_pages_init(per_cpu(boot_pageset, cpu), ...);初始化每个可能 CPU 的boot_pageset。这些是引导阶段的 per-CPU 页缓存在真正的 per-CPU 分配器就绪之前使用。它们的high0、batch1使得放入的页会立即转交给伙伴系统避免在早期缓存页。3. 验证与 cpuset 初始化mminit_verify_zonelist()在调试配置下验证构建的 zonelist 是否正确。cpuset_init_current_mems_allowed()将当前任务的mems_allowed掩码置为全部节点。调用上下文__build_all_zonelists()由build_all_zonelists()调用系统启动阶段SYSTEM_BOOTING通过build_all_zonelists_init()间接调用传入NULL遍历所有在线节点。内存热插拔传入具体的pgdat指针只构建该节点的 zonelist。build_all_zonelists()被标记为__ref因为它会调用__meminit注解的辅助函数但在内存热插拔时也需要被调用。总结__build_all_zonelists()是 zonelist 构建的遍历执行层它遍历所有在线节点对每个节点调用build_zonelists()构建分配回退列表同时初始化引导阶段的 per-CPU 页缓存boot_pageset并完成 zonelist 验证和 cpuset 初始化。它是build_all_zonelists()在启动和热插拔场景下的实际工作函数。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/17 6:49:00
ASP+SQL美食网站毕设实战:从数据库设计到答辩验收全攻略
2026/10/17 6:44:00
RAG 分层评测执行指南
2026/10/17 6:44:00
面向机器人的上下文学习:方法与应用
2026/10/17 7:29:02
6TB日志泄露背后:API密钥管理、调用链审计与应急轮换实战
2026/10/17 7:29:02
AI短剧制作平台全解析:从源码架构到完整部署实战
2026/10/17 7:29:02
Ollama WebUI安全加固:CSRF防护与输入过滤实践
2026/10/17 7:29:02
Hermes 智能体密钥管理:Agent Vault 凭据注入与最小权限实践
2026/10/17 7:29:02
CSS3走马灯实现原理与工业级优化实践
2026/10/17 7:24:02
城市数字化转型的逻辑起点:从事件编码重构治理闭环
2026/10/17 0:02:58
NetSpot 实战:用信道分析与频宽优化解决 Wi-Fi 卡顿
2026/10/17 0:02:58
C++ split() 字符串分割的五种实现与性能实测
2026/10/17 0:02:58
R语言坐标轴范围设置:从xlim/ylim到coord_cartesian的完整指南
2026/10/16 1:17:36
流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南
2026/10/16 1:17:35
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别
2026/10/16 1:17:35
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容
2026/10/16 1:17:35
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/16 18:46:48
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/16 18:46:46
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)