恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

page_alloc setup_zone_pageset

  • 首页
  • 资讯中心
  • /
  • page_alloc setup_zone_pageset

相关资讯

角色自定义妆容系统:基于贴图混合的Shader实现与性能优化 2026/10/17 2:44:17
常用快捷键 2026/10/17 2:39:16
2026AI安全意识培训 2026/10/17 2:39:16

最新资讯

AI Agent开源项目实战:从入门跑通到改造提升的完整路径
动态场景与大规模三维重建:从NeRF到3D高斯泼溅的工程实践
复杂任务下AI Agent编排层设计:职责、模式与工程实践
STM32F4xx_DSP_StdPeriph_Lib_V1.7.1配置详解:从解压到点灯+FFT验证
从Fork到PR:开源贡献完整实操指南
国际高校数学建模竞赛Problem B实战:用熵权TOPSIS与蒙特卡洛预测全球AI竞争格局

今日推荐

Qwen3.5-122B-A10B-singprobe幻觉检测实战:AUC 0.7806,如何实时揪出大模型一本正经的胡话?
NetSpot 实战:用信道分析与频宽优化解决 Wi-Fi 卡顿
C++ split() 字符串分割的五种实现与性能实测

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

page_alloc setup_zone_pageset

发布时间:2026/10/17 2:44:17
page_alloc setup_zone_pageset setup_zone_pageset()是 PCPPer-CPU Pages缓存初始化流程中的关键函数负责为一个 populated zone动态分配并初始化正式的 per-CPU pageset 结构替换掉启动阶段使用的boot_pageset占位结构。核心实现void __meminit setup_zone_pageset(struct zone *zone) { struct per_cpu_zonestat *pzstats; int cpu; /* 分配正式的 per_cpu_pages 数组 */ zone-per_cpu_pageset alloc_percpu(struct per_cpu_pages); zone-per_cpu_zonestats alloc_percpu(struct per_cpu_zonestat); for_each_possible_cpu(cpu) { struct per_cpu_pages *pcp; struct per_cpu_zonestat *pzstats; pcp per_cpu_ptr(zone-per_cpu_pageset, cpu); pzstats per_cpu_ptr(zone-per_cpu_zonestats, cpu); per_cpu_pages_init(pcp, pzstats); } zone_set_pageset_high_and_batch(zone, 0); }逐步解析1. 动态分配 per-CPU pagesetzone-per_cpu_pageset alloc_percpu(struct per_cpu_pages); zone-per_cpu_zonestats alloc_percpu(struct per_cpu_zonestat);alloc_percpu()为每个可能的 CPU 分配一份struct per_cpu_pages和struct per_cpu_zonestat。在此之前zone 使用的是静态定义的boot_pageset/boot_zonestats前面讲过的。现在内存子系统已就绪可以分配真正的 per-CPU 结构了。2. 初始化每个 CPU 的 PCPfor_each_possible_cpu(cpu) { pcp per_cpu_ptr(zone-per_cpu_pageset, cpu); pzstats per_cpu_ptr(zone-per_cpu_zonestats, cpu); per_cpu_pages_init(pcp, pzstats); }前面讲过的per_cpu_pages_init()清零结构体、初始化锁和空闲链表、设置 boot 安全的batch/high值。3. 设置 PCP 的 batch/high 配置zone_set_pageset_high_and_batch(zone, 0);前面讲过的zone_set_pageset_high_and_batch()计算该 zone 的batch、high_min、high_max并分发到所有 CPU。参数cpu_online 0表示这是初始化阶段没有额外的 CPU 上线事件。调用场景它被zone_pcp_init()或free_area_init_core()等初始化路径调用为每个 populated zone建立正式的 pagesetfree_area_init_core() └── for each zone: if (populated_zone(zone)) setup_zone_pageset(zone) // ← 这里 ├── alloc_percpu(per_cpu_pages) ├── alloc_percpu(per_cpu_zonestat) ├── per_cpu_pages_init() for each cpu └── zone_set_pageset_high_and_batch(zone, 0)__meminit的含义函数标记为__meminit表示它主要用于内存初始化/热插拔阶段。函数体在内存初始化完成后可被卸载如果 CONFIG_MEMORY_HOTPLUG 允许。内存热插拔时新上线的 zone 也会调用它来建立 pageset。与启动阶段的对比阶段pagesetbatch/high启动早期boot_pageset静态占位HIGH0,BATCH1禁用 PCPsetup_zone_pageset()后动态分配的正式 pageset由zone_set_pageset_high_and_batch()计算总结setup_zone_pageset()是 PCP 缓存的正式初始化函数它为 populated zone 动态分配 per-CPU 的per_cpu_pages和per_cpu_zonestat数组用per_cpu_pages_init()初始化每个 CPU 的结构最后通过zone_set_pageset_high_and_batch()计算出该 zone 的 batch/high 配置并分发。它标志着 zone 从启动阶段的boot_pageset占位切换到真正的 PCP 缓存管理是内存子系统初始化的重要步骤。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号