page_alloc min_free_kbytes_sysctl_handler

发布时间:2026/10/19 7:20:23

page_alloc min_free_kbytes_sysctl_handler min_free_kbytes_sysctl_handler()是/proc/sys/vm/min_free_kbytes的 sysctl 处理函数负责响应用户对该参数的读写请求。核心实现static int min_free_kbytes_sysctl_handler(const struct ctl_table *table, int write, void *buffer, size_t *length, loff_t *ppos) { int rc; rc proc_dointvec_minmax(table, write, buffer, length, ppos); if (rc) return rc; if (write) { user_min_free_kbytes min_free_kbytes; setup_per_zone_wmarks(); } return 0; }逐步解析1. 委托标准整数读写rc proc_dointvec_minmax(table, write, buffer, length, ppos); if (rc) return rc;proc_dointvec_minmax()标准 sysctl 整数处理函数负责把用户输入的字符串解析为整数并写入table-data即min_free_kbytes或把当前值读出给用户。带_minmax后缀表示它在写入时会检查值是否在table-extra1最小值和table-extra2最大值范围内。如果解析或范围检查失败直接返回错误。2. 写操作后的额外处理if (write) { user_min_free_kbytes min_free_kbytes; setup_per_zone_wmarks(); }只有写操作才需要user_min_free_kbytes min_free_kbytes记录用户显式设置的值。user_min_free_kbytes初始为-1用于区分用户未设置和用户设置了某个值。这里把它更新为当前值以便后续calculate_min_free_kbytes()知道用户已经有明确设置不应被自动计算覆盖。setup_per_zone_wmarks()min_free_kbytes变了必须重新计算所有 zone 的WMARK_MIN/WMARK_LOW/WMARK_HIGH。这个调用会获取pcp_batch_high_lock并调用__setup_per_zone_wmarks()。3. 读操作如果write 0函数只执行proc_dointvec_minmax()把当前min_free_kbytes值复制到用户缓冲区不做额外处理。sysctl 表定义这个 handler 通常注册在vm_table[]中{ .procname min_free_kbytes, .data min_free_kbytes, .maxlen sizeof(min_free_kbytes), .mode 0644, .proc_handler min_free_kbytes_sysctl_handler, .extra1 SYSCTL_ZERO, },.data指向全局min_free_kbytes.proc_handler是本函数.extra1设最小值 0或某个下限。与相关函数的关系函数职责min_free_kbytes_sysctl_handler()sysctl 入口读写min_free_kbytes写时更新水位proc_dointvec_minmax()标准整数读写setup_per_zone_wmarks()重新计算各 zone 水位user_min_free_kbytes记录用户显式设置值calculate_min_free_kbytes()启动时自动计算默认值历史演进早期版本的 handler 在写操作后还会调用setup_per_zone_lowmem_reserve()因为lowmem_reserve的计算也依赖managed_pages而min_free_kbytes的变化可能间接影响它。但在现代内核中lowmem_reserve的计算已独立只在 zone 大小变化时更新因此 handler 只调用setup_per_zone_wmarks()。总结min_free_kbytes_sysctl_handler()是vm.min_free_kbytes的sysctl 读写入口它先通过proc_dointvec_minmax()完成标准的整数读写和范围检查如果是写操作则记录用户设置值到user_min_free_kbytes并调用setup_per_zone_wmarks()重新计算所有 zone 的水位线。它确保用户对最低保留内存的调整能立即生效并防止被后续的自动计算覆盖。
延伸阅读

更多相关文章

2026/10/19 7:20:23

Linux 开发工具(四) 熟悉自动化构建 make/Makefile

目录 一. make/makefile 的概念 1.1 Makefile的基本语法 1.2 代码示例 二. make/makefile 的使用 2.1 文件的清理 2.2 make 的使用细节 2.2.1 make/make【目标名】 2.2.2 make 的执行规则 2.2.2.1 stat 2.3 makefile 的使用细节 2.3.1 .PHONY 2.3.2 makefile 的依赖…

2026/10/19 7:20:23

真机实验知识点汇总

IPIP网络位主机位网络位---IP所在的网段(广播域)主机位---主机编号同一个广播域,使用相同的网络位,不同的主机位的IP地址不同广播域中,使用网络位不同的IP地址掩码32位二进制,连续的1和连续的0组成掩码和IP…

2026/10/19 8:45:45

开源CLI代码审查工具:Git原生+LLM可插拔的自动化守门人

1. 项目概述:这不是又一个“AI写代码”玩具,而是一套可嵌入日常开发流的开源代码审查协作者open-code-review 这个名字乍看平平无奇,但拆开来看——open(开放)、code(代码)、review(…

2026/10/19 8:45:45

open-code-review:一种开放、协议化的代码评审接口标准

1. “open-code-review”不是工具名,而是一类新型代码评审范式的命名起点最近在几个技术社区和内部工程效能群里,频繁看到“open-code-review”这个写法——它既不像传统工具名(比如 SonarQube、Reviewable),也不像标准…

2026/10/19 8:45:45

数据类型深度解析:从内存布局到类型转换的实战避坑指南

接手过不少线上故障,最后翻来覆去查根因,十有八九都会落回到一个最基础的概念上:数据类型。索引建错、接口传参对不上、数据库存储精度丢失、某个字段在序列化之后悄悄变了样——追到源头,全是类型处理不当惹的祸。这篇就围绕“4.…

2026/10/19 8:45:44

纯C++无迹卡尔曼滤波UKF实现:多传感器融合与姿态估计实战

简介:这份资源面向学习卡尔曼滤波与自动驾驶定位算法的C开发者,聚焦CTRV运动学模型下的无迹卡尔曼滤波(UKF)实现,解决非线性系统状态估计中EKF线性化误差偏大的问题。压缩包共404个文件,约3.05MB&#xff0…

2026/10/19 8:45:44

ZXing二维码扫描解码链路与识别率优化实战

简介:这份资源是面向Android及移动端开发者的ZXing二维码扫描集成示例工程,适合需要为应用快速添加扫码能力的初中级开发者。ZXing作为开源跨平台条码库,支持QR码、Data Matrix、Aztec、PDF417及Code 39、Code 128等多种码制,可实…

2026/10/19 8:40:42

open-code-review:基于CLI与Git集成的LLM代码审查实践

1. 这不是又一个“AI代码审查”玩具:open-code-review 的真实定位与设计哲学open-code-review 这个名字乍看平平无奇,甚至有点“开源即正义”的朴素感——但如果你把它和 codex cli、zcode cli、trae cli 这些近期高频出现的工具放在一起对比&#xff0c…

2026/10/18 0:01:50

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

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

2026/10/19 0:04:56

悟空开源无代码平台实战:从实体建模到应用设计避坑指南

简介:基于悟空开源无代码平台的多种应用设计源码,面向希望在不编写代码的情况下快速搭建CRM、HRM、财务系统、ERP、SRM等业务应用的企业与技术人员,通过拖放式界面和内置模板即可完成应用定制与部署。压缩包共697个文件,约10.74MB…

2026/10/19 0:04:56

基于.NET9的多租户权限系统:数据权限与动态API落地实践

简介:这份资源是一套面向 .NET 与 Vue 全栈开发者的中台权限管理系统,后端基于 .Net9,前端采用 Vue3 Element Plus,并配套 uniapp uviewui 移动端方案,实现前后端分离。系统覆盖多租户隔离、数据权限、动态 Api、任务…

2026/10/19 0:04:56

场地预约小程序毕设实战:SSM+微信小程序+MySQL数据库设计到避坑

简介:面向毕业设计场景的场地预约小程序完整项目,基于微信小程序SSMMySql技术栈开发,适合计算机相关专业学生作为选题参考、功能扩展或二次开发起点。系统实现场地类型管理、场地管理、预约管理、取消申请与押金退回等功能,分为管…

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

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

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