源码基于: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 详解相关推荐

  1. Linux内存管理:NUMA技术详解(非一致内存访问架构)

    图片来源:https://zhuanlan.zhihu.com/p/68465952 <Linux内存管理:转换后备缓冲区(TLB)原理> <内存管理:Linux Memory Ma ...

  2. Linux内存管理第十一章 -- Swap Management

    文章目录 Linux内存管理第十一章 -- Swap Management Describing the Swap Area Mapping Page Table Entries to Swap En ...

  3. linux内存管理(十一)-页回收总览

    随着linux系统不断分配内存,当系统内存压力越来越大时,就会对系统的每个压力大的zone进程内存回收,内存回收主要是针对匿名页和文件页进行的.对于匿名页,内存回收过程中会筛选出一些不经常使用的匿名页 ...

  4. linux软件包管理工具,Linux 软件包管理器-----yum配置详解一

    一.yum简介 Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定 ...

  5. Linux—账号管理及命令使用详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   在Linux系统中,我们常常会看到目录或文件的所属关系: [root@linux01 ~]# ll -d test.sh -rw ...

  6. linux 内存管理 (四) 内存与IO的交互

    该文章参考宋宝华老师的内存管理课程,详细可以去听阅码场宋老师的课程. ●  内存与I/O的交换 ●  page cache ●  free命令的详细解释 ●  read.write和mmap ●  f ...

  7. linux内存管理笔记(十一)---CMA

    在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,对于内核如果申请一块连续的内存空间该怎么处理呢? 首先向到的是利用内核提供的kma ...

  8. 【动态内存管理】(超详解,附带面试题)

    动态内存分配 动态内存管理 1.为什么存在动态内存分配 2.动态内存函数 2.1malloc和free **malloc** **free** 2.2calloc 2.3realloc 3.常见的动态 ...

  9. ARM内存管理(MMU)详解

    嵌入式系统中,存储系统差别很大,可包含多种类型的存储器件,如 FLASH , SRAM , SDRAM , ROM 等,这些不同类型的存储器件速度和宽度等各不相同:在访问存储单元时,可能采取平板式的地 ...

  10. 【iOS沉思录】iOS内存管理试题总结与详解

    "iOS中的GC垃圾回收机制与内存管理机制以及block" 问题:僵尸对象.野指针.空指针分别指什么,有什么区别? 僵尸对象:一个OC对象引用计数为0被释放后就变成僵尸对象了,僵尸 ...

最新文章

  1. 机器学习——XGBoost大杀器,XGBoost模型原理,XGBoost参数含义
  2. Java语言与sikuli配合
  3. Java 基础系列:不变性
  4. 职场pua是什么意思,如何反职场pua,职场pua如何走出来
  5. 嘴上说着喜爱Java 9 ,身体却诚实地拥抱了Java 8
  6. 【数据结构】BFS 代码模板
  7. Struts2之国际化
  8. 高德正式开放海外LBS服务,助力开发者出海
  9. Windows系统查询硬盘序列号
  10. 国际国内资管分仓跟单软件的具体作用
  11. UE4编辑器语言设置-中英对照
  12. 开源Java(JSP) CMS系统源码推荐
  13. 极客学院Unity3D开发知识体系视频课程
  14. vue activated,deactivated生命周期的使用
  15. python 使用pandas简单地把excel里面的数据存储到矩阵里面
  16. android 排他button,javascript排他思想
  17. 使用switchshow/supportshow命令确认Brocade交换机型号(转载)
  18. No ulink device found肿么办
  19. Windows环境下msysgit下安装gitflow步骤。
  20. 部分考试题和考试后的感想

热门文章

  1. 星厨齐聚,演绎致美奢厨:2022米兰家具展中的ASKO×NORM展厅
  2. java Web-基本标签(二)作业(一)
  3. 【IT简史】ATT(贝尔电话公司)
  4. java 今天、明天、后天、明年今天,昨天、前天、过去七天、过去一年日期的整体封装;
  5. BootStrap标签与徽章
  6. python诞生的时间地点人物事件_Python学习之四大名著人物出场次数Python代码
  7. Latex调整表格宽度
  8. 高甜预警!16个滴滴程序员的爱情故事
  9. Java实现美团验劵功能
  10. 【炉石传说】砰砰计划 斩杀 最后一关 通关攻略