Linux内存管理(四十一):shrink_node 详解
源码基于:Linux5.4
0. 前言
在 页面回收简介和 kswpd(1) 一文中,我们得知Linux 内核中触发页面回收的机制大致分为 3 种:
- 直接页面回收机制:在内核态里调用页面分配接口函数 alloc_pages() 分配物理页面时,由于系统内存短缺,不能满足分配请求,因此内核会直接进入页面回收机制,尝试回收内存来解决当前的燃眉之急,这就是直接页面回收机制。
- 周期性回收内存机制:这是 kswapd 内核线程的工作职责。当内核路径调用 alloc_pages() 分配物理页面时,由于系统内存短缺,没法在低水位情况下分配出内存,因此会唤醒 kswapd 内核线程来异步回收内存。
- slab 收割机(slab shrinker)机制:这是用来回收 slab 对象。当内存短缺时,直接页面回收和周期性回收内存两种机制都会调用 slab 收割机来回收 slab 对象。slab 机制分配的内存主要用于 slab 对象和kmalloc 接口,也可用于内核空间的内存分配。
下面是内存回收的主要调用路径:
我们看到直接内存回收和异步kswapd 内存回收,最终触发的都是 shrink_node()
Linux内存管理(四十一):shrink_node 详解相关推荐
- Linux内存管理:NUMA技术详解(非一致内存访问架构)
图片来源:https://zhuanlan.zhihu.com/p/68465952 <Linux内存管理:转换后备缓冲区(TLB)原理> <内存管理:Linux Memory Ma ...
- Linux内存管理第十一章 -- Swap Management
文章目录 Linux内存管理第十一章 -- Swap Management Describing the Swap Area Mapping Page Table Entries to Swap En ...
- linux内存管理(十一)-页回收总览
随着linux系统不断分配内存,当系统内存压力越来越大时,就会对系统的每个压力大的zone进程内存回收,内存回收主要是针对匿名页和文件页进行的.对于匿名页,内存回收过程中会筛选出一些不经常使用的匿名页 ...
- linux软件包管理工具,Linux 软件包管理器-----yum配置详解一
一.yum简介 Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定 ...
- Linux—账号管理及命令使用详解
关注微信公众号:CodingTechWork,一起学习进步. 引言 在Linux系统中,我们常常会看到目录或文件的所属关系: [root@linux01 ~]# ll -d test.sh -rw ...
- linux 内存管理 (四) 内存与IO的交互
该文章参考宋宝华老师的内存管理课程,详细可以去听阅码场宋老师的课程. ● 内存与I/O的交换 ● page cache ● free命令的详细解释 ● read.write和mmap ● f ...
- linux内存管理笔记(十一)---CMA
在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,对于内核如果申请一块连续的内存空间该怎么处理呢? 首先向到的是利用内核提供的kma ...
- 【动态内存管理】(超详解,附带面试题)
动态内存分配 动态内存管理 1.为什么存在动态内存分配 2.动态内存函数 2.1malloc和free **malloc** **free** 2.2calloc 2.3realloc 3.常见的动态 ...
- ARM内存管理(MMU)详解
嵌入式系统中,存储系统差别很大,可包含多种类型的存储器件,如 FLASH , SRAM , SDRAM , ROM 等,这些不同类型的存储器件速度和宽度等各不相同:在访问存储单元时,可能采取平板式的地 ...
- 【iOS沉思录】iOS内存管理试题总结与详解
"iOS中的GC垃圾回收机制与内存管理机制以及block" 问题:僵尸对象.野指针.空指针分别指什么,有什么区别? 僵尸对象:一个OC对象引用计数为0被释放后就变成僵尸对象了,僵尸 ...
最新文章
- 机器学习——XGBoost大杀器,XGBoost模型原理,XGBoost参数含义
- Java语言与sikuli配合
- Java 基础系列:不变性
- 职场pua是什么意思,如何反职场pua,职场pua如何走出来
- 嘴上说着喜爱Java 9 ,身体却诚实地拥抱了Java 8
- 【数据结构】BFS 代码模板
- Struts2之国际化
- 高德正式开放海外LBS服务,助力开发者出海
- Windows系统查询硬盘序列号
- 国际国内资管分仓跟单软件的具体作用
- UE4编辑器语言设置-中英对照
- 开源Java(JSP) CMS系统源码推荐
- 极客学院Unity3D开发知识体系视频课程
- vue activated,deactivated生命周期的使用
- python 使用pandas简单地把excel里面的数据存储到矩阵里面
- android 排他button,javascript排他思想
- 使用switchshow/supportshow命令确认Brocade交换机型号(转载)
- No ulink device found肿么办
- Windows环境下msysgit下安装gitflow步骤。
- 部分考试题和考试后的感想