memblock_free_all释放page到buddy,前后nr_free的情况
https://www.cnblogs.com/tolimit/p/5287801.html

在zone_sizes_init 之后,各个node,zone'的page总数已知。但是此时的每个order的空闲链表是空的,也就是无法通过alloc_page这种接口来分配。此时page还在memblock管控,需要memblock释放。释放的函数是free_low_memory_core_early:
mm_init //init/main.cmem_init(void) //arch/arm64/mm/init.cmemblock_free_all();void __init memblock_free_all(void)
{unsigned long pages;free_unused_memmap();reset_all_zones_managed_pages();pages = free_low_memory_core_early();totalram_pages_add(pages);
}free_low_memory_core_earlyfor_each_free_mem_range__free_memory_core(start, end);__free_pages_memory(start_pfn, end_pfn);memblock_free_pages(pfn_to_page(start), start, order);__free_pages_core__free_pages_ok__free_one_page
在memblock_free_all之前,各个NUMA的pglist_data的zone下面不同order的nr_free链表数为0:
[ 0.000000] ===show_mem_info after zone_sizes_init[ 0.000000] ===show_pgdata_info nodeid 0
[ 0.000000] ===show_zone_info :name : DMAmanaged_pages:7a000spanned_pages:80000present_pages:7c000
[ 0.000000] MAX_ORDER 10 of order :0 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :1 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :2 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :3 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :4 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :5 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :6 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :7 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :8 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :9 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :10 has nr_free 0
[ 0.000000] ===show_zone_info :name : DMA32managed_pages:0spanned_pages:0present_pages:0
[ 0.000000] MAX_ORDER 10 of order :0 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :1 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :2 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :3 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :4 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :5 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :6 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :7 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :8 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :9 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :10 has nr_free 0
[ 0.000000] ===show_zone_info :name : Normalmanaged_pages:762000spanned_pages:2680000present_pages:780000
[ 0.000000] MAX_ORDER 10 of order :0 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :1 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :2 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :3 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :4 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :5 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :6 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :7 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :8 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :9 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :10 has nr_free 0
[ 0.000000] ===show_zone_info :name : Movablemanaged_pages:0spanned_pages:0present_pages:0
[ 0.000000] MAX_ORDER 10 of order :0 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :1 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :2 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :3 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :4 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :5 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :6 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :7 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :8 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :9 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :10 has nr_free 0在memblock_free_all之后,才有,特别是order为10的情况最多,这是看空闲的组成大的buddy:
[ 0.000000] ===free_low_mwmory_core_early return pages 7c4864
[ 0.000000] ===show_mem_info after memblock_free_all[ 0.000000] ===show_pgdata_info nodeid 0
[ 0.000000] ===show_zone_info :name : DMAmanaged_pages:6b9f1spanned_pages:80000present_pages:7c000
[ 0.000000] MAX_ORDER 10 of order :0 has nr_free 5
[ 0.000000] MAX_ORDER 10 of order :1 has nr_free 4
[ 0.000000] MAX_ORDER 10 of order :2 has nr_free 5
[ 0.000000] MAX_ORDER 10 of order :3 has nr_free 4
[ 0.000000] MAX_ORDER 10 of order :4 has nr_free b
[ 0.000000] MAX_ORDER 10 of order :5 has nr_free 4
[ 0.000000] MAX_ORDER 10 of order :6 has nr_free 6
[ 0.000000] MAX_ORDER 10 of order :7 has nr_free 6
[ 0.000000] MAX_ORDER 10 of order :8 has nr_free 6
[ 0.000000] MAX_ORDER 10 of order :9 has nr_free 5
[ 0.000000] MAX_ORDER 10 of order :10 has nr_free 1a9
[ 0.000000] ===show_zone_info :name : DMA32managed_pages:0spanned_pages:0present_pages:0
[ 0.000000] MAX_ORDER 10 of order :0 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :1 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :2 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :3 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :4 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :5 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :6 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :7 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :8 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :9 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :10 has nr_free 0
[ 0.000000] ===show_zone_info :name : Normalmanaged_pages:758e73spanned_pages:2680000present_pages:780000
[ 0.000000] MAX_ORDER 10 of order :0 has nr_free 1
[ 0.000000] MAX_ORDER 10 of order :1 has nr_free 1
[ 0.000000] MAX_ORDER 10 of order :2 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :3 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :4 has nr_free 1
[ 0.000000] MAX_ORDER 10 of order :5 has nr_free 1
[ 0.000000] MAX_ORDER 10 of order :6 has nr_free 1
[ 0.000000] MAX_ORDER 10 of order :7 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :8 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :9 has nr_free 1
[ 0.000000] MAX_ORDER 10 of order :10 has nr_free 1d63
[ 0.000000] ===show_zone_info :name : Movablemanaged_pages:0spanned_pages:0present_pages:0
[ 0.000000] MAX_ORDER 10 of order :0 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :1 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :2 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :3 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :4 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :5 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :6 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :7 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :8 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :9 has nr_free 0
[ 0.000000] MAX_ORDER 10 of order :10 has nr_free 0
相关文章:
memblock_free_all释放page到buddy,前后nr_free的情况
https://www.cnblogs.com/tolimit/p/5287801.html 在zone_sizes_init 之后,各个node,zone的page总数已知。但是此时的每个order的空闲链表是空的,也就是无法通过alloc_page这种接口来分配。此时page还在memblock管控,需要memblock…...
Django实现websocket
Django实现websocket WebSocket功能使用介绍安装配置WebSocket接口--消息接收者的实现scope通道层 channel layer部署Web客户端连接Mac客户端 WebSocket功能 WebSocket长连接一般用于实现实时功能,例如web端的消息通知、会话等场景。 使用 WebSocket 向 Django 项…...
先进制造aps专题九 中国aps行业分析
国外aps的问题是不给国内客户定制算法 国外aps的算法都很强大,考虑几百个约束条件,各种复杂的工序关系,还有副资源约束特殊规格约束,排程还优化,光c写的算法代码就几十万行甚至上百万行 国内aps的问题是实现不了复杂的…...
力扣hot100:23. 合并 K 个升序链表
23. 合并 K 个升序链表 这题非常容易想到归并排序的思路,俩升序序列合并,可以使用归并的方法。 不过这里显然是一个多路归并排序;包含多个子数组的归并算法,这可以让我们拓展归并算法的思路。 假设n是序列个数,ni是…...
Lightweight Robust Size Aware Cache Management——论文泛读
TOC 2022 Paper 论文阅读笔记整理 问题 现代键值存储、对象存储、互联网代理缓存和内容交付网络(CDN)通常管理不同大小的对象,例如,Blob、不同长度的视频文件、不同分辨率的图像和小文件。在这种工作负载中,大小感知…...
搜索自动补全-elasticsearch实现
1. elasticsearch准备 1.1 拼音分词器 github地址:https://github.com/infinilabs/analysis-pinyin/releases?page6 必须与elasticsearch的版本相同 第四步,重启es docker restart es1.2 定义索引库 PUT /app_info_article {"settings": …...
连接远程的kafka【linux】
# 连接远程的kafka【linux】 前言版权推荐连接远程的kafka【linux】一、开放防火墙端口二、本地测试是否能访问端口三、远程kafka配置四、开启远程kakfa五、本地测试能否连接远程六、SpringBoot测试连接 遇到的问题最后 前言 2024-5-14 18:45:48 以下内容源自《【linux】》 仅…...
简单的 Cython 示例
1, pyx文件 fibonacci.pyx def fibonacci_old(n):if n < 0:return 0elif n 1:return 1else:return fibonacci_old(n-1) fibonacci_old(n-2) 2,setup.py setup.py from setuptools import setup from Cython.Build import cythonizesetup(ext_mod…...
Laravel时间处理类Carbon
时间和日期处理是非常常见的任务。Carbon 是一个功能强大的 PHP 扩展包,它为我们提供了许多方便的方法来处理日期和时间。在 Laravel 中,你无需单独安装 Carbon,因为 Laravel 默认已经包含了它。如果你正在使用 Laravel,那么你已经…...
2024年5月软考架构题目回忆分享
十年架构两茫茫 ,Redis , UML 夜来幽梦忽还乡 , 大数据, Lambda 选择题 1.需求分析和架构设计面临这两个不同对象,一个是问题空间,一个是解空间 这是英文题,总共五个题目,只记得这么多 2. …...
香橙派 AIpro开发板初上手
一、香橙派 AIpro开箱 最近拿到了香橙派 AIpro(OrangePi AIpro),下面就是里面的板子和相关的配件。包含主板、散热组件、电源适配器、双C口电源线、32GB SD卡。我手上的这个是8G LPDDR4X运存的版本。 OrangePi AIpro开发板是一款由香橙派与华…...
如何使用DotNet-MetaData识别.NET恶意软件源码文件元数据
关于DotNet-MetaData DotNet-MetaData是一款针对.NET恶意软件的安全分析工具,该工具专为蓝队研究人员设计,可以帮助广大研究人员轻松识别.NET恶意软件二进制源代码文件中的元数据。 工具架构 当前版本的DotNet-MetaData主要由以下两个部分组成…...
LeetCode---栈与队列
232. 用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int pee…...
【教程】利用API接口添加本站同款【每日新闻早早报】-每天自动更新,不占用文章数量
本次分享的是给网站添加一个每日早报的文章,可以看到本站置顶上面还有一个日更的日报,这是利用ALAPI的接口完成的!利用接口有利也有弊,因为每次用户访问网站的时候就会增加一次API接口请求,导致文章的请求会因为请求量…...
僵尸进程,孤儿进程,守护进程
【一】僵尸进程 1.僵尸进程是指完成自己的任务之后,没有被父进程回收资源,占用系统资源,对计算机有害,应该避免 """ 所有的子进程在运行结束之后都会变成僵尸进程(死了没死透)还保留着pid和一些运行过程的中的记录便于主进程查看(短时间…...
Nuxt3 中使用 ESLint
# 快速安装 使用该命令安装的同时会给依赖、内置模块同时更新 npx nuxi module add eslint安装完毕后,nuxt.config.ts 文件 和 package.json 文件 会新增代码段: # nuxt.config.ts modules: ["nuxt/eslint" ] # package.json "devDep…...
【Jmeter】性能测试之压测脚本生成,也可以录制接口自动化测试场景
准备工作-10分中药录制HTTPS脚本,需配置证书 准备工作-10分中药 以https://www.baidu.com/这个地址为录制脚本的示例。 录制脚本前的准备工作当然是得先把Jmeter下载安装好、JDK环境配置好、打开Jmeter.bat,打开cmd,输入ipconfig,…...
Go 编程技巧:零拷贝字符串与切片转换的高效秘籍
前言 在深入探讨Go语言中字符串与切片类型转换的高效方法之前,让我们先思考一个关键问题:如何在不进行内存拷贝的情况下,实现这两种数据类型之间的无缝转换?本文将详细解析Go语言中字符串(字符类型)和切…...
音视频开发—FFmpeg 音频重采样详解
音频重采样(audio resampling)是指改变音频信号的采样率的过程。采样率(sample rate)是指每秒钟采集的音频样本数,通常以赫兹(Hz)或每秒样本数(samples per second)表示。…...
统计本地端口占用情况
要查看MongoDB是否正在备份,可以通过以下几种方法: 查看MongoDB的进程列表: 使用命令ps -ef | grep mongo,这将列出所有正在运行的MongoDB进程。在输出的列表中,你可以查看是否有与备份相关的进程或任务正在运行。 查…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
