page_alloc __parse_numa_zonelist_order

发布时间:2026/10/14 10:36:19
page_alloc __parse_numa_zonelist_order __parse_numa_zonelist_order()是内核中用于解析用户指定的 zonelist 排序策略的辅助函数。它把用户传入的字符串如node、zone、default转换成对应的内部常量供build_zonelists()决定如何排列 NUMA 节点的 zone 分配顺序。核心作用解析三种排序策略zonelist 决定了分配内存时 zone 的尝试顺序有两种基本策略Node order节点序先按节点远近排节点内再按 zone 类型排。好处是局部性最好本地 Normal 内存耗尽后才会溢出到本地 DMA但有耗尽 DMA 的风险。Zone orderZone 序先按 zone 类型排高 zone 优先同类型 zone 内再按节点远近排。好处是保护 DMA/DMA32 不被轻易耗尽但可能导致本地 Normal 还有内存时就去远程节点分配。可以通过内核启动参数numa_zonelist_order或 sysctl 来指定策略。函数实现static int __parse_numa_zonelist_order(char *s) { if (*s d || *s D) { user_zonelist_order ZONELIST_ORDER_DEFAULT; } else if (*s n || *s N) { user_zonelist_order ZONELIST_ORDER_NODE; } else if (*s z || *s Z) { user_zonelist_order ZONELIST_ORDER_ZONE; } else { printk(KERN_WARNING Ignoring invalid numa_zonelist_order value: %s\n, s); return -EINVAL; } return 0; }逻辑解析大小写不敏感通过*s d || *s D等方式接受首字母的大小写形式。三种有效值d/D→ZONELIST_ORDER_DEFAULT0自动检测由default_zonelist_order()根据系统配置决定。n/N→ZONELIST_ORDER_NODE1按节点局部性排序。z/Z→ZONELIST_ORDER_ZONE2按 zone 类型排序。无效值处理打印警告并返回-EINVAL调用方据此回滚用户设置。配套的调用链启动参数解析static __init int setup_numa_zonelist_order(char *s) { if (s) return __parse_numa_zonelist_order(s); return 0; } early_param(numa_zonelist_order, setup_numa_zonelist_order);通过early_param注册内核启动时解析numa_zonelist_order参数。sysctl 处理int numa_zonelist_order_handler(...) { ... if (__parse_numa_zonelist_order((char*)table-data)) { /* 无效值恢复保存的字符串 */ strncpy((char*)table-data, saved_string, ...); user_zonelist_order oldval; } else if (oldval ! user_zonelist_order) build_all_zonelists(); /* 策略变化重建 zonelist */ ... }sysctl 写入时也会调用它解析若有效且值有变化则触发build_all_zonelists()重建所有节点的 zonelist。总结__parse_numa_zonelist_order()是 zonelist 排序策略的字符串解析器它把default/node/zone转换成ZONELIST_ORDER_*常量存入user_zonelist_order供后续set_zonelist_order()和build_zonelists()使用。它同时服务于启动参数和 sysctl 两条配置路径是用户控制 NUMA 内存分配顺序的入口。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询