page_alloc sysctl_min_slab_ratio_sysctl_handler

sysctl_min_slab_ratio_sysctl_handler()是/proc/sys/vm/min_slab_ratio的 sysctl 处理函数,负责响应用户对该参数的读写请求,并在写入后重新计算各 NUMA 节点的min_slab_pages阈值。

核心实现

static int sysctl_min_slab_ratio_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) setup_min_slab_ratio(); return 0; }

1. 标准整数读写与范围检查

rc = proc_dointvec_minmax(table, write, buffer, length, ppos); if (rc) return rc;
  • proc_dointvec_minmax():标准 sysctl 整数处理,把用户输入的字符串解析为整数写入table->data(即sysctl_min_slab_ratio),或把当前值读出。

  • 带_minmax后缀表示写入时检查值是否在table->extra1和table->extra2范围内(通常是[0, 100],因为它是百分比)。

2. 写操作后重新计算阈值

if (write) setup_min_slab_ratio();
  • 调用前面讲过的setup_min_slab_ratio():遍历所有在线节点和 zone,重新累加pgdat->min_slab_pages。

  • sysctl_min_slab_ratio变了,所有节点的 slab 回收门槛都要重新算。

  • 注意:现代内核中setup_min_slab_ratio()是无参数的(pgdat 级计算),而在早期版本中它接收zone参数并在循环中调用。

3. 读操作

如果write == 0,只执行proc_dointvec_minmax()把当前值复制给用户,不做额外处理。

sysctl 表定义

{ .procname = "min_slab_ratio", .data = &sysctl_min_slab_ratio, .maxlen = sizeof(sysctl_min_slab_ratio), .mode = 0644, .proc_handler = sysctl_min_slab_ratio_sysctl_handler, .extra1 = SYSCTL_ZERO, .extra2 = &one_hundred, },

最小 0,最大 100(百分比),默认值为 5。

与sysctl_min_unmapped_ratio_sysctl_handler()的对称性

方面sysctl_min_unmapped_ratio_sysctl_handler()sysctl_min_slab_ratio_sysctl_handler()
控制的参数vm.min_unmapped_ratio(默认 1)vm.min_slab_ratio(默认 5)
写后调用setup_min_unmapped_ratio()setup_min_slab_ratio()
计算目标pgdat->min_unmapped_pagespgdat->min_slab_pages
语义文件页回收门槛slab 回收门槛

两者的 handler 结构完全对称,只是调用的计算函数不同。

历史演进

  • 2022 年(Miaohe Lin):在should_continue_reclaim()中引入min_slab_pages,参与 NUMA 节点回收的触发判断。

  • 2025-2026 年:有 RFC 补丁提议移除min_slab_ratio机制,认为其价值有限,可能被更通用的回收策略取代。如果该提案合并,这个 handler 也会被一并移除。

总结

sysctl_min_slab_ratio_sysctl_handler()是vm.min_slab_ratio的sysctl 读写入口:它通过proc_dointvec_minmax()完成标准的整数读写和范围检查(0~100),写操作后调用setup_min_slab_ratio()重新计算所有 NUMA 节点的min_slab_pages阈值。这个阈值控制着zone_reclaim是否值得触发 slab 缓存回收,与min_unmapped_ratio的 handler 结构完全对称。

相关新闻

单片机毕业设计-基于单片机的智能红绿灯倒计时控制系统设计 基于STM32的车流量检测自适应配时交通灯设计(033201)

单片机毕业设计-基于单片机的智能红绿灯倒计时控制系统设计 基于STM32的车流量检测自适应配时交通灯设计(033201)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/10/20 6:35:37 阅读更多 →
page_alloc percpu_pagelist_high_fraction_sysctl_handler

page_alloc percpu_pagelist_high_fraction_sysctl_handler

/* 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 6:35:37 阅读更多 →
RTL实战:从零用Verilog/SystemVerilog构建GPU SIMT核心

RTL实战:从零用Verilog/SystemVerilog构建GPU SIMT核心

手头有一块FPGA开发板,又想折腾点比流水线CPU更有挑战的硬件设计,那NEMA_p这个项目绝对值得你花上几个月好好钻研。它是一份用Verilog/SystemVerilog从零实现GPU核心的开源RTL工程,目标不是做一个能跑图形学算法的渲染器,而是把NV…

2026/10/20 6:35:37 阅读更多 →

最新新闻

工业知识图谱上线失效的四大根源与防御清单

工业知识图谱上线失效的四大根源与防御清单

1. 上线前“突然失灵”不是故障,是知识图谱交付的典型死亡陷阱工业知识图谱项目里最让人头皮发麻的一幕,我见过不下五次:开发环境里跑得丝滑流畅,推理准确率98.7%,关系路径挖掘覆盖了全部12类设备故障模式,…

2026/10/20 7:18:58 阅读更多 →
WPF ListBox拖拽实战:DragDrop事件、数据搬移与视觉反馈全解析

WPF ListBox拖拽实战:DragDrop事件、数据搬移与视觉反馈全解析

简介:面向WPF初学者的拖放交互学习包,聚焦在两个ListBox之间实现Drag & Drop,并附带上下按钮调整项顺序、拖拽时边框视觉反馈等细节。压缩包共37个文件,以cs源码和xaml视图为主,辅以项目工程文件、配置文件、exe可…

2026/10/20 7:18:58 阅读更多 →
不卷硬件!用少量计算节省巨量存储的压缩去重与冷热分层实践

不卷硬件!用少量计算节省巨量存储的压缩去重与冷热分层实践

存储成本往往是IT预算里最容易被忽视的一项。很多人习惯于“不够就加硬盘”,但我越来越觉得,与其在采购单上加一块磁盘,不如先在计算资源上动动脑子。用少量CPU或GPU做压缩、去重和冷热分层,能省下的空间往往超过想象,…

2026/10/20 7:18:58 阅读更多 →
多目标跟踪实战指南:检测器、卡尔曼滤波与关联参数调优

多目标跟踪实战指南:检测器、卡尔曼滤波与关联参数调优

简介:多目标跟踪是计算机视觉中的核心任务,这份vibe-kalman资源将VIBE前景检测与卡尔曼滤波跟踪相结合,面向希望学习或复现经典跟踪方案的开发者。VIBE通过像素级背景建模提取运动前景,卡尔曼滤波器则对每个目标进行状态预测与更新…

2026/10/20 7:18:58 阅读更多 →
用CPU压缩换存储空间:数据压缩与重删实战指南

用CPU压缩换存储空间:数据压缩与重删实战指南

1. 先说结论:这条赛道,属于会算账的人最近两年大家都在冲大模型、冲训练集群,显卡成了硬通货。我身边不少人一聊到性能优化,第一反应就是“加卡”“上线更大显存”。但是很少有人认真算过一笔账:你的数据真的需要那么多…

2026/10/20 7:18:58 阅读更多 →
LinkSwift:基于Tampermonkey的合规网盘直链工具深度解析

LinkSwift:基于Tampermonkey的合规网盘直链工具深度解析

在云存储资源日益普及但直链获取日趋复杂的背景下,基于浏览器用户脚本的下载辅助工具成为技术爱好者与重度用户关注的焦点。本文深入解析LinkSwift这款基于JavaScript与Tampermonkey开发的开源工具,剖析其在技术实现、合规性声明、安全机制升级及多渠道分…

2026/10/20 7:17:57 阅读更多 →

日新闻

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 阅读更多 →