init probe_memory_block_size、memory_block_size_bytes
probe_memory_block_size()是 x86-64 架构中用于在启动时动态决定内存热插拔块大小的探测函数位于arch/x86/mm/init_64.c。它的核心目标是平衡热插拔粒度与管理开销。核心目标该函数通过分析系统物理内存总量和末尾地址选择一个能整除内存末尾且尽可能大的 2 的幂次块大小以减少/sys/devices/system/memory/下memory_block设备的数量。决策逻辑现代内核现代内核的逻辑包含几个关键判断1. 命令行覆盖如果用户通过set_memory_block_size参数指定了块大小则直接使用该值。2. 小内存系统如果物理内存总量小于MEM_SIZE_FOR_LARGE_BLOCK64GB则直接返回MIN_MEMORY_BLOCK_SIZE通常 128MB无需复杂探测。3. 裸机优化如果系统是裸机非虚拟化环境由于内存末尾对齐通常不是热插拔的硬性要求直接使用MAX_BLOCK_SIZE2GB以最小化管理开销。4. 虚拟化/对齐场景对于虚拟化环境或有热插拔建议值的系统代码会从MAX_BLOCK_SIZE开始循环右移寻找第一个能整除boot_mem_end的大小。这确保了块大小与内存末尾对齐同时尽可能大。历史演进该函数最初由 Yinghai Lu 于 2012 年引入目的是解决大内存系统如 2TB 内存上/sys/devices/system/memory/目录下出现 16400 个条目的性能问题。通过匹配 MMIO 重映射大小来增大块尺寸可将 6TB 系统的启动时间缩短 35 秒。后续补丁增加了裸机场景直接使用最大块的优化以及更近期的热插拔建议值支持。调用关系该函数是memory_block_size_bytes()的内部实现后者是通用内存热插拔子系统调用的接口仅在首次调用时执行探测并缓存结果。memory_block_size_bytes()是 Linux 内存热插拔子系统中的核心查询接口用于获取当前系统内存块的字节大小。它由通用内存管理代码调用而具体的块大小决策则由各架构通过probe_memory_block_size()等函数实现。函数定义与返回值该函数在include/linux/memory.h中声明其默认弱符号实现位于drivers/base/memory.c仅返回MIN_MEMORY_BLOCK_SIZE。在 x86 等架构上它被覆盖以实现更复杂的逻辑。核心调用关系该函数在内存热插拔的多个关键路径中被调用确保所有操作都按块大小对齐添加内存在add_memory()中按memory_block_size_bytes()分块处理。注册热插拔内存在hotplug_memory_register()中用于对齐验证。范围校验在check_hotplug_memory_range()中验证起始地址和大小是否对齐。移除内存在offline_and_remove_memory()中用于处理跨块范围。x86 架构的实现逻辑在 x86 上该函数的实际工作由probe_memory_block_size()完成其决策依据包括用户配置是否已通过set_memory_block_size_order()设定。内存大小根据物理 RAM 大小判断。运行环境裸机环境下通常直接使用最大块尺寸虚拟化环境则需寻找能对齐内存末端且尽可能大的块。架构限制块大小必须是 2 的幂且不小于MIN_MEMORY_BLOCK_SIZE。设计要点memory_block_size_bytes()是架构相关实现与通用内存热插拔框架之间的桥梁。x86 通过probe_memory_block_size()在首次调用时完成探测并缓存结果后续调用直接返回缓存值避免重复计算。这种设计使得通用代码无需关心底层架构如何决策块大小只需通过该接口获取结果即可。

相关新闻

FileX 文件秘书:本地电脑文件管理小工具,简单实用

FileX 文件秘书:本地电脑文件管理小工具,简单实用

软件下载:FileX 文件秘书 电脑用久了,磁盘里文件越堆越多。想找一个文件名含特定字符的文档,系统自带搜索要等很久;想看看 C 盘哪些大文件占了空间,手动一层层文件夹点开非常麻烦;找到一批文件之后&#x…

2026/9/30 7:19:16 阅读更多 →
YOLOv13改进策略【Head篇】| YOLOv10 官方 v10Detect 免 NMS 检测头,一行 yaml 换掉整个 Detect

YOLOv13改进策略【Head篇】| YOLOv10 官方 v10Detect 免 NMS 检测头,一行 yaml 换掉整个 Detect

本文基于 YOLOv13 官方仓库(iMoonLab/yolov13,ultralytics 8.3.63 fork) 实测整理,Windows/CPU 全程可跑。v10Detect 是 ultralytics 官方内置的端到端检测头(出处 YOLOv10,arXiv 2405.14458):一致性双重分配让 one2many 与 one2one 两个头联合训练,推理只走 one2one,…

2026/9/30 7:19:16 阅读更多 →
【人工智能】JEV 模型:快速决策背后的成本逻辑

【人工智能】JEV 模型:快速决策背后的成本逻辑

【人工智能】JEV 模型:快速决策背后的成本逻辑 JEV 模型:快速决策背后的成本逻辑【人工智能】JEV 模型:快速决策背后的成本逻辑1. 引言:JEV 为什么这么火2. 费用核算:输出 Token 为何昂贵3. JEV 的核心能力与局限4. 结…

2026/9/30 7:19:16 阅读更多 →

最新新闻

DeepSeek职场智能体落地实战:提示工程、工作流编排与本地部署

DeepSeek职场智能体落地实战:提示工程、工作流编排与本地部署

简介:本资源是一份聚焦DeepSeek大模型职场落地实践的深度指南,面向企业员工、创意工作者、新媒体运营及AI技术爱好者,解决如何将前沿AI能力高效融入文案撰写、PPT设计、海报视频生成、市场调研等高频办公场景的问题。资料以PDF形式呈现&#…

2026/9/30 7:57:33 阅读更多 →
磁盘空间排查实战:du命令参数选择与定位技巧

磁盘空间排查实战:du命令参数选择与定位技巧

干运维和用服务器的人基本都遇到过这个经典场景:某天监控突然报警,说磁盘使用率超过90%,或者业务进程开始报"No space left on device",你连上服务器先敲一句df -h,发现根分区已经100%了。然后呢&#xff1f…

2026/9/30 7:57:33 阅读更多 →
Linux磁盘空间管理实战:用du命令精准定位空间占用

Linux磁盘空间管理实战:用du命令精准定位空间占用

在Linux服务器上待久了,一定会遇到磁盘被塞满的尴尬。登录不上、服务报错、日志写不进去,一查df -h,好家伙,/分区直接100%。这时候你需要的不是df,而是du——它是Linux下做磁盘空间管理最趁手的工具,能精确…

2026/9/30 7:57:33 阅读更多 →
高并发接口线程池大小怎么定?从1万QPS与500ms响应时间推导完整配置方案

高并发接口线程池大小怎么定?从1万QPS与500ms响应时间推导完整配置方案

面试复盘真是最好的学习方式。上周面了一个中高级后端岗,前面聊框架、聊项目都顺风顺水,结果在最后一道“送命题”上翻了车:面试官问“一个接口要做到1万QPS、响应时间500ms以内,你的线程池该设多大?”我当场愣住&…

2026/9/30 7:57:33 阅读更多 →
uni-app微信小程序登录页全流程:视觉交互、input坑与授权登录

uni-app微信小程序登录页全流程:视觉交互、input坑与授权登录

做 uni-app 微信小程序这几年,登录页面是我见过最容易"看起来简单、做起来翻车"的页面。它结构小、元素少,但偏偏要同时扛住视觉观感、输入交互、键盘适配、授权流程、登录态管理这几件事。这篇接着上一篇的思路往下走,不再讲"…

2026/9/30 7:57:33 阅读更多 →
Linux软硬链接本质:inode与路径的底层原理

Linux软硬链接本质:inode与路径的底层原理

1. 为什么软硬链接不是“复制”,而是“指针”——从文件系统底层讲清楚你有没有试过用ln命令创建一个链接,结果发现删掉源文件后,软链接打不开、硬链接还能访问?或者反过来,改了软链接指向的文件,硬链接却毫…

2026/9/30 7:56:32 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →