当前位置: 首页 > news >正文

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&#xff0c; 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&#xff0c;setup.py setup.py from setuptools import setup from Cython.Build import cythonizesetup(ext_mod…...

Laravel时间处理类Carbon

时间和日期处理是非常常见的任务。Carbon 是一个功能强大的 PHP 扩展包&#xff0c;它为我们提供了许多方便的方法来处理日期和时间。在 Laravel 中&#xff0c;你无需单独安装 Carbon&#xff0c;因为 Laravel 默认已经包含了它。如果你正在使用 Laravel&#xff0c;那么你已经…...

2024年5月软考架构题目回忆分享

十年架构两茫茫 &#xff0c;Redis , UML 夜来幽梦忽还乡 &#xff0c; 大数据&#xff0c; Lambda 选择题 1.需求分析和架构设计面临这两个不同对象&#xff0c;一个是问题空间&#xff0c;一个是解空间 这是英文题&#xff0c;总共五个题目&#xff0c;只记得这么多 2. …...

香橙派 AIpro开发板初上手

一、香橙派 AIpro开箱 最近拿到了香橙派 AIpro&#xff08;OrangePi AIpro&#xff09;&#xff0c;下面就是里面的板子和相关的配件。包含主板、散热组件、电源适配器、双C口电源线、32GB SD卡。我手上的这个是8G LPDDR4X运存的版本。 OrangePi AIpro开发板是一款由香橙派与华…...

如何使用DotNet-MetaData识别.NET恶意软件源码文件元数据

关于DotNet-MetaData DotNet-MetaData是一款针对.NET恶意软件的安全分析工具&#xff0c;该工具专为蓝队研究人员设计&#xff0c;可以帮助广大研究人员轻松识别.NET恶意软件二进制源代码文件中的元数据。 工具架构 当前版本的DotNet-MetaData主要由以下两个部分组成&#xf…...

LeetCode---栈与队列

232. 用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int pee…...

【教程】利用API接口添加本站同款【每日新闻早早报】-每天自动更新,不占用文章数量

本次分享的是给网站添加一个每日早报的文章&#xff0c;可以看到本站置顶上面还有一个日更的日报&#xff0c;这是利用ALAPI的接口完成的&#xff01;利用接口有利也有弊&#xff0c;因为每次用户访问网站的时候就会增加一次API接口请求&#xff0c;导致文章的请求会因为请求量…...

僵尸进程,孤儿进程,守护进程

【一】僵尸进程 1.僵尸进程是指完成自己的任务之后&#xff0c;没有被父进程回收资源,占用系统资源,对计算机有害&#xff0c;应该避免 """ 所有的子进程在运行结束之后都会变成僵尸进程(死了没死透)还保留着pid和一些运行过程的中的记录便于主进程查看(短时间…...

Nuxt3 中使用 ESLint

# 快速安装 使用该命令安装的同时会给依赖、内置模块同时更新 npx nuxi module add eslint安装完毕后&#xff0c;nuxt.config.ts 文件 和 package.json 文件 会新增代码段&#xff1a; # nuxt.config.ts modules: ["nuxt/eslint" ] # package.json "devDep…...

【Jmeter】性能测试之压测脚本生成,也可以录制接口自动化测试场景

准备工作-10分中药录制HTTPS脚本&#xff0c;需配置证书 准备工作-10分中药 以https://www.baidu.com/这个地址为录制脚本的示例。 录制脚本前的准备工作当然是得先把Jmeter下载安装好、JDK环境配置好、打开Jmeter.bat&#xff0c;打开cmd&#xff0c;输入ipconfig&#xff0c;…...

Go 编程技巧:零拷贝字符串与切片转换的高效秘籍

前言 ​ 在深入探讨Go语言中字符串与切片类型转换的高效方法之前&#xff0c;让我们先思考一个关键问题&#xff1a;如何在不进行内存拷贝的情况下&#xff0c;实现这两种数据类型之间的无缝转换&#xff1f;本文将详细解析Go语言中字符串&#xff08;字符类型&#xff09;和切…...

音视频开发—FFmpeg 音频重采样详解

音频重采样&#xff08;audio resampling&#xff09;是指改变音频信号的采样率的过程。采样率&#xff08;sample rate&#xff09;是指每秒钟采集的音频样本数&#xff0c;通常以赫兹&#xff08;Hz&#xff09;或每秒样本数&#xff08;samples per second&#xff09;表示。…...

统计本地端口占用情况

要查看MongoDB是否正在备份&#xff0c;可以通过以下几种方法&#xff1a; 查看MongoDB的进程列表&#xff1a; 使用命令ps -ef | grep mongo&#xff0c;这将列出所有正在运行的MongoDB进程。在输出的列表中&#xff0c;你可以查看是否有与备份相关的进程或任务正在运行。 查…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...