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

linux kernel物理内存概述(五)

目录

概述

一、快速路径分配

1、get_page_from_freelist

2、rmqueue()函数

二、慢速路径分配

1、分配流程

三、direct_compact


概述

物理内存分配步骤

1、初始化,参数初始化

2、内存充足,快速分配 get_page_from_freelist

3、内存压力大,慢速分配 __alloc_pages_slowpath

4、内存紧张,内存规整,direct_compact

一、快速路径分配

快速主要在WMARK_LOW水线上快速扫描各个内存区域是否有足够的内存空间,如果有则从伙伴系统中申请,如果没有则返回

1、get_page_from_freelist
  • 遍历zonelist中的zone,扫描zone的方向从高端到低端
  • 大部分从首选的zone扫描,而不是遍历所有;首选的计算,通过gfp_mask换算,参考gfp_zone()宏和first_zones_zonelist()宏
  • alloc_context 函数,确定了从哪个zone开始扫描和分配内存的迁移类型等信息;
  • 在分配之前判断zone的水位情况以及是否满足分配连续大小内存块的需求。函数zone_watermark_ok检查水位,即使函数判断成功,最终也可能分配失败,原因1,内存外碎片化严重,2、可能无法借用其他迁移类型的内存,__requeue_fallback函数有处理过程

如果满足水线要求,则调用rmqueue进入伙伴系统分配

2、rmqueue()函数
  • 从伙伴系统中取出内存,若需要的内存块不能满足,从大内存块中取。如order=5内存不足,则向6中取,6中取出来从空闲链表中取出,把其中一块分配出去,把剩余的添加到order空闲链表中。
  • 处理器分配单个物理页面(order=0),调用rmqueue_pcplist函数从Per-CPU变量per_cpu_pages中分配。这个数据结构有单页面列表,分配效率高,减少对zone相关锁的操作。每个zone里有一个这样的Per-CPU变量

分配成功后prep_new_page初始化分配的page

二、慢速路径分配

非常复杂,包含异常处理,GFP_  ALLOC_掩码处理;内存回收 内存规整 OOM 等

__alloc_pages_slowpath

分配流程如下:

        慢速路径初始化参数

 retry_cpuset:

        调整内存分配策略alloc_flags,采用更加激进方式

        内存分配主要在允许的CPU相关联的NUMA节点上

        内存水位线下调至WMARK_LOW

        唤醒所有kswapd进程进行异步内存回收

        触发直接内存整理direct_compact获取更多内存

 retry:

        进一步调整内存分配aloc_flags,使用更加激进的内存分配手段

        在内存分配时忽略水位线

        直接触发内存回收direct_reclaim

        再次触发直接内存整理direct_compact

OOM机制

 nopage:

        以上仍然不能分配,如果设置__GFP_NOFAIL不允许失败,则不停重试以上分配过程

 fail:

        分配失败,输出经过信息。

 got_pg

        内存分配成功,返回新申请的内存块

return page;

三、direct_compact

在页面回收时,把可移动的聚在一起,不可以移动的聚在一起,去碎片化,然后进行成块回收。

相关文章:

linux kernel物理内存概述(五)

目录 概述 一、快速路径分配 1、get_page_from_freelist 2、rmqueue()函数 二、慢速路径分配 1、分配流程 三、direct_compact 概述 物理内存分配步骤 1、初始化,参数初始化 2、内存充足,快速分配 get_page_from_freelist 3、内存压力大,慢速…...

3分钟带你搞定电流采样电阻选型

大家好,我是砖一。 一,电流采样电阻的介绍 电流检测电路常用于高压短路保护、电机控制、DC/DC换流器、系统功耗管理、二次电池的电流管理、蓄电池管理等电流检测等场景。 比如,对于电机来说,电流检测电路是为了检测电流功能有比…...

代码随想录算法训练营Day52 | 300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组

300.最长递增子序列 这题的重点是DP数组的定义,子序列必须以nums[i]为最后一个元素,这样dp数组中后面的元素才能与前面的元素进行对比 1、DP数组定义:dp[i]表示以nums[i]为最后一个元素的最长递增子序列长度 2、DP数组初始化:全部…...

一个测试OOM killer的程序未触发OOM所带来的问题

概述 我们知道,由于MMU实现了虚拟地址到物理地址的转换,所以我们在申请虚拟地址时往往可以申请一大块内存,这实际上是对资源的有效利用,毕竟只有内存真正被投入使用时(如memset)才会实际分配物理内存&…...

SanctuaryAI推出Phoenix: 专为工作而设计的人形通用机器人

文章目录 1. Company2. Main2.1 关于凤凰™ (Phoenix)2.2 关于碳™(Carbon)2.3 商业化部署2.4 关于 Sanctuary Corporation 3. My thoughtsReference彩蛋:将手机变为桌面小机器人 唯一入选《时代》杂志 2023 年最佳发明的通用机器人。 称机器人自主做家务的速度和灵…...

李沐动手学习深度学习——4.2练习

1. 在所有其他参数保持不变的情况下,更改超参数num_hiddens的值,并查看此超参数的变化对结果有何影响。确定此超参数的最佳值。 通过改变隐藏层的数量,导致就是函数拟合复杂度下降,隐藏层过多可能导致过拟合,而过少导…...

CYQ.Data 支持 DaMeng 达梦数据库

DaMeng 达梦数据库介绍: 达梦数据库(DMDB)是中国自主研发的关系型数据库管理系统,由达梦科技股份有限公司开发。 达梦数据库提供了企业级的数据库解决方案,广泛应用于金融、电信、政府、制造等行业领域。 达梦数据库具有以下特点和优势: 高性能:具备高性能的并发处理…...

计网面试题整理上

1. 计算机网络的各层协议及作用? 计算机网络体系可以大致分为一下三种,OSI七层模型、TCP/IP四层模型和五层模型。 OSI七层模型:大而全,但是比较复杂、而且是先有了理论模型,没有实际应用。TCP/IP四层模型&#xff1a…...

code: 500 ] This subject is anonymous - it does not have any identifying

项目场景: 相关背景: 使用idea 开发java 项目,前端页面请求 页面中相关的接口时,idea 控制台有报错信息出现,前端请求失败。 问题描述 问题: 使用idea 开发java 项目,前端页面请求 页面中相…...

FC-AE-1553 协议

FC-AE-1553 协议 MIL-STD-1553B总线协议总线结构字格式消息传输方式 FC协议FC协议栈拓扑结构服务类型帧/序列/交换FC帧格式 FC-AE-1553网络构成帧类型命令帧状态帧数据帧 Information UnitsNC1NC2NC3-4NC5-7NT1-7 传输模式1. NC-NT2. NT-NC3. NT-NT4. 无数据字的模式命令5. 带数…...

代码随想录算法训练营day38|理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

理论基础 代码随想录 视频:从此再也不怕动态规划了,动态规划解题方法论大曝光 !| 理论基础 |力扣刷题总结| 动态规划入门_哔哩哔哩_bilibili 动态规划:如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态…...

夫妻一方名下股权到底归谁?

生效判决摘要:1.夫妻一方在婚姻关系存续期间投资的收益,为夫妻的共同财产,归夫妻共同所有,但是并不能据此否定股权本身可能成为夫妻共同财产。婚姻关系存续期间登记在配偶一方名下的股权能否成为夫妻共同财产,可由司法…...

git根据文件改动将文件自动添加到缓冲区

你需要修改以下脚本中的 use_cca: false 部分 #!/bin/bash# 获取所有已修改但未暂存的文件 files$(git diff --name-only)for file in $files; do# 检查文件中是否存在"use_cca: false"if grep -q "use_cca: false" "$file"; thenecho "Ad…...

SystemVerilog Constants、Processes

SystemVerilog提供了三种类型的精化时间常数: •参数:与最初的Verilog标准相同,可以以相同的方式使用。 •localparameter:与参数类似,但不能被上层覆盖模块。 •specparam:用于指定延迟和定时值&#x…...

交易平台开发:构建安全/高效/用户友好的在线交易生态圈

在数字化浪潮的推动下,农产品现货大宗商品撮合交易平台已成为连接全球买家与卖家的核心枢纽。随着电子商务的飞速发展,一个安全、高效、用户友好的交易平台对于促进交易、提升用户体验和增加用户黏性至关重要。本文将深入探讨交易平台开发的关键要素&…...

Linux系统之部署复古游戏平台

Linux系统之部署复古游戏平台 前言一、项目介绍1.1 项目简介1.2 项目特点1.3 游戏平台介绍二、本次实践介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 安装Docker环境3.2 检查Docker服务状态3.3 检查Docker版本3.4 检查docker compose 版本四、构建…...

开源计算机视觉库opencv-python详解

开源计算机视觉库opencv-python详解 OpenCV-Python的核心功能:安装OpenCV-Python:使用OpenCV-Python的基本步骤:OpenCV-Python的高级应用:注意事项:OpenCV-Python的高级应用示例:1. 人脸识别2. 目标跟踪3. …...

Vue开发实例(十)Tabs标签页打开、关闭与路由之间的关系

创建标签页 一、创建标签页二、点击菜单展示新标签页1、将标签数据作为全局使用2、菜单点击增加标签页3、处理重复标签4、关闭标签页 三、点击标签页操作问题1:点击标签页选中菜单进行高亮展示问题2:点击标签页路由也要跳转 四、解决bug 先展示最终效果 …...

基于51单片机的智能火灾报警系统

基于51单片机的智能火灾报警系统 摘要: 本文提出了一种基于51单片机的智能火灾报警系统。该系统采用烟雾传感器和温度传感器来检测火灾的发生,并通过单片机进行数据处理和报警控制。此外,该系统还具有无线通信功能,可以实时将火灾…...

【数据结构】堆的TopK问题

大家好,我是苏貝,本篇博客带大家了解堆的TopK问题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 一. 前言二. TopK三. 代码 一. 前言 TOP-K问题:即求数据结合中前K个最大的元…...

Vue后台管理系统笔记-01

npm(Node Package Manager)和 yarn 是两个常用的包管理工具,用于在 Node.js 项目中安装、管理和更新依赖项。它们有以下几个区别: 性能和速度:在包的安装和下载方面,yarn 通常比 npm 更快速。yarn 使用了并…...

飞天使-学以致用-devops知识点3-安装jenkins

文章目录 构建带maven环境的jenkins 镜像安装jenkinsjenkins yaml 文件安装插件jenkins 配置k8s创建用户凭证 构建带maven环境的jenkins 镜像 # 构建带 maven 环境的 jenkins 镜像 docker build -t 192.168.113.122:8858/library/jenkins-maven:jdk-11 .# 登录 harbor docker …...

08、MongoDB -- MongoDB 的 集合关联($lookup 和 DBRef 实现集合关联)

目录 MongoDB 的 集合关联演示前提:登录单机模式的 mongodb 服务器命令登录【test】数据库的 mongodb 客户端命令登录【admin】数据库的 mongodb 客户端命令 SQL 术语 与 Mongodb 的对应关系使用 $lookup 实现集合关联语法格式添加测试数据1、查询出订单数量大于6&a…...

前方高能,又一波Smartbi签约喜报来袭

近期,交通银行、厦门国际银行、中原农业保险、江苏中天科技等多家知名企业签约Smartbi,携手Smartbi实现数据驱动业务新增长。 Smartbi数10年专注于商业智能BI与大数据分析软件与服务,为各行各业提供提供一站式商业智能平台(PaaS&a…...

蓝桥杯倒计时 41天 - 二分答案-最大通过数-妮妮的月饼工厂

最大通过数 思路&#xff1a;假设左边能通过 x 关&#xff0c;右边能通过 y 关&#xff0c;x∈[0,n]&#xff0c;通过二分&#xff0c;在前缀和中枚举右边通过的关卡数&#xff0c;保存 xy 的最大值。 #include<bits/stdc.h> using namespace std; typedef long long ll…...

【JavaSE】泛型

系列文章目录 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 学习泛型之前请大家先详细地了解一下&#xff0c;关于Java…...

APS(高级计划与调度系统)难度超高,ERP在它面前就是弟弟。

一、APS定义和功能模块 APS系统是Advanced Planning and Scheduling System&#xff08;高级计划与调度系统&#xff09;的缩写。它是一种计划和调度管理软件系统&#xff0c;旨在帮助企业优化生产计划和资源调度&#xff0c;提高生产效率和响应能力。 APS系统利用先进的算法和…...

ArmV8架构

Armv8/armv9架构入门指南 — Armv8/armv9架构入门指南 v1.0 documentation 上面只是给了一个比较好的参考文档 其他内容待补充...

[论文笔记] Open-sora 2、视频数据集介绍 MSR-VTT

MSR-VTT COVE - Computer Vision Exchange 论文参考:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/06/cvpr16.msr-vtt.tmei_-1.pdf 用于视频理解的大规模视频基准,特别是将视频翻译为文本的新兴任务。这是通过从商业视频搜索引擎收集 257 个热门查询…...

【Windows 常用工具系列 14 -- windows 网络驱动映射】

文章目录 windows 网络驱动映射 windows 网络驱动映射 映射网络驱动器的意思是将局域网中的某个目录映射成本地驱动器号。 在windows上将服务器目录映射到本地盘&#xff1a; 进入到服务器执行下面命令既可以看到对应的 IP地址&#xff1a; 将对应的IP地址填入上图中。 映…...