page_alloc page_alloc_sysctl_init

page_alloc_sysctl_init()是页面分配器在启动阶段注册 sysctl 参数表的初始化函数。它的职责非常单一:把前面讲过的page_alloc_sysctl_table注册到/proc/sys/vm/目录下。

核心实现

void __init page_alloc_sysctl_init(void) { register_sysctl_init("vm", page_alloc_sysctl_table); }

关键点解析

1.register_sysctl_init()的作用

  • 把page_alloc_sysctl_table数组注册到/proc/sys/vm/目录下。

  • 数组中的每个条目对应一个 sysctl 文件(如/proc/sys/vm/min_free_kbytes)。

  • 注册后,用户即可通过/proc/sys/vm/*读写这些参数。

2.register_sysctl_init与register_sysctl的区别

  • register_sysctl():标准注册函数,返回struct ctl_table_header *,调用方需自行处理失败和生命周期。

  • register_sysctl_init():启动初始化专用的包装,内部调用register_sysctl()并在失败时panic或WARN——因为 sysctl 注册失败属于严重启动错误,不应静默忽略。

  • 用__init标记函数,启动完成后函数体可被卸载。

3. 注册时机

该函数通常在start_kernel()或mm_init()的启动流程中被调用,位于内存管理子系统初始化完成、sysctl 框架就绪之后。

与page_alloc_sysctl_table的关系

page_alloc_sysctl_init() └── register_sysctl_init("vm", page_alloc_sysctl_table) ├── 创建 /proc/sys/vm/min_free_kbytes → min_free_kbytes_sysctl_handler ├── 创建 /proc/sys/vm/watermark_scale_factor → watermark_scale_factor_sysctl_handler ├── 创建 /proc/sys/vm/watermark_boost_factor → watermark_boost_factor_sysctl_handler ├── 创建 /proc/sys/vm/percpu_pagelist_high_fraction → percpu_pagelist_high_fraction_sysctl_handler ├── 创建 /proc/sys/vm/lowmem_reserve_ratio → lowmem_reserve_ratio_sysctl_handler ├── 创建 /proc/sys/vm/min_unmapped_ratio → sysctl_min_unmapped_ratio_sysctl_handler ├── 创建 /proc/sys/vm/min_slab_ratio → sysctl_min_slab_ratio_sysctl_handler └── 创建 /proc/sys/vm/numa_zonelist_order → numa_zonelist_order_handler

设计背景

2023 年的内核清理中,Kefeng Wang 将这些原本散落在kernel/sysctl.c中的页面分配器参数统一移入mm/page_alloc.c,并配套引入page_alloc_sysctl_init()在文件内完成注册。这使页面分配器的 sysctl 定义、处理函数和注册逻辑内聚在同一个文件中,便于维护,也避免了kernel/sysctl.c的臃肿。

总结

page_alloc_sysctl_init()是页面分配器 sysctl 的注册入口:它通过register_sysctl_init("vm", page_alloc_sysctl_table)把min_free_kbytes、watermark_scale_factor、lowmem_reserve_ratio、numa_zonelist_order等参数注册到/proc/sys/vm/下,使用户能够动态调整页面分配器的核心行为。它是 2023 年 sysctl 代码内聚化重构的产物,让mm/page_alloc.c自包含其可调参数的完整生命周期。

相关新闻

page_alloc alloc_contig_dump_pages

page_alloc alloc_contig_dump_pages

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 2:23:28 阅读更多 →
1.使用MQTT协议模拟向设备推送消息

1.使用MQTT协议模拟向设备推送消息

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 2:23:28 阅读更多 →
古建筑目标检测数据集 | 古建筑识别 目标检测 文物保护 YOLO格式 9213期

古建筑目标检测数据集 | 古建筑识别 目标检测 文物保护 YOLO格式 9213期

古建筑目标检测数据集 | 古建筑识别 目标检测 文物保护 YOLO格式 9213期 数据集概述 本数据集专注于古建筑整体结构及组件的视觉检测与识别,服务于古建筑保护、文物数字化建档及建筑遗产研究。数据涵盖五类古建筑相关目标,适配古建巡检、古建筑普查及自…

2026/10/20 2:22:27 阅读更多 →

最新新闻

pvbrowser:轻量级嵌入式SCADA组态工具链

pvbrowser:轻量级嵌入式SCADA组态工具链

简介:本资源为开源SCADA组态软件pvbrowser的完整安装与开发包,面向工业自动化初学者、QT开发者及中小型项目实施工程师,解决跨平台监控系统快速搭建、设备协议对接与HMI界面组态等核心问题。压缩包为ZIP格式,大小27.65MB&#xff…

2026/10/20 3:00:51 阅读更多 →
C++ 构造函数和析构函数示例详解

C++ 构造函数和析构函数示例详解

前言 构造函数和析构函数是 C 对象生命周期的两个端点。构造函数负责把一片原始内存变成有效对象,析构函数负责在对象消失前释放它持有的资源。理解这两端,才能理解 RAII 为什么是 C 资源管理的基石。 常见误解有几个。第一,以为构造函数「分…

2026/10/20 3:00:51 阅读更多 →
Flink实时广告点击量统计:黑名单过滤与窗口聚合实战

Flink实时广告点击量统计:黑名单过滤与窗口聚合实战

1. 从一条广告点击日志说起:这个统计任务到底在算什么广告点击量统计这件事,听起来像是数据平台里最基础的一环,但真正落到实时计算场景里,坑远比想象中多。我最早接触这个需求的时候,第一反应是“不就是按广告位分组计…

2026/10/20 3:00:51 阅读更多 →
Java泛型协变逆变与通配符:PECS原则和上下边界详解

Java泛型协变逆变与通配符:PECS原则和上下边界详解

1. 从一个编译报错说起:为什么你的泛型代码总是不通过写了几年Java的人,几乎都遇到过这样一种情况:代码逻辑明明没问题,IDE却给你标了一堆红,编译器报的错还特别抽象,比如"incompatible types: Listca…

2026/10/20 3:00:51 阅读更多 →
大模型V4编程能力升级实测:工程级协作与避坑指南

大模型V4编程能力升级实测:工程级协作与避坑指南

1. 大模型版本的编程能力升级,开发者为什么不该只当吃瓜群众春节假期刷手机,群里突然被一个新版本刷屏——某国产大模型V4正式发布,主打编程能力。往年这时候,大家晒的都是年夜饭和旅行照,今年一个接一个转发的都是能力…

2026/10/20 3:00:51 阅读更多 →
如何利用 TaoToken 统一 API 通道让 AI 写代码编程:从 401 报错到多工具协作的完整配置

如何利用 TaoToken 统一 API 通道让 AI 写代码编程:从 401 报错到多工具协作的完整配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 2:59:49 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →