Linux内存管理(81):compact_zone 详解

源码基于:Linux6.12

约定:

  • 芯片架构:ARM64
  • 内存架构:UMA
  • CONFIG_ARM64_VA_BITS :39
  • CONFIG_PAGE_SHIFT :12
  • CONFIG_PGTABLE_LEVELS :3

0. 前言

我们了解了内存规整的4种方式:

  • 手动规整;
  • kcompactd 内核线程规整;
  • 主动规整
  • 直接内存规整;

四种方式的核心处理函数都是 compact_zone():

  • 直接内存规整在 try_to_compact_pages() 轮询zone 是申请时指定的 highest_zoneidx,order 是从申请的时候传入;
  • kcompactd_do_work() 中会轮询的 highest_zoneidx 和 max_order 都是在wakeup_kcompactd() 时传入;
  • 主动规整、手动规整都是调用 compact_node(),轮询所有的zone,order 为 -1;

本文将完全剖析规整的核心处理函数 compact_zone()。

相关推荐
雯宝18 小时前
devices_init / buses_init / classes_init / firmware_init / hypervisor_init 函数
linux
M78佐菲19 小时前
ARM学习笔记(12)
linux·arm开发·笔记·嵌入式硬件·学习
可涵不会debug19 小时前
C++ std::bind 实战教程:线程池、回调场景全覆盖
linux·开发语言·c++
青梅味猪大肠20 小时前
【操作系统-26】进程互斥软件实现-Peterson算法
linux·运维·服务器
wdfk_prog20 小时前
Wi-Fi Direct教程 01:在 Ubuntu 搭建双 mac80211_hwsim + wpa_supplicant 2.12
linux·运维·服务器·ubuntu·ros·wifi-direct
Vcaker21 小时前
Linux学习36-k8s集群升级及kube-vip高可用
linux·运维·学习
skywalk81631 天前
Deepseek harness的4种模式 配置文件内容
linux·人工智能·ubuntu·deepseek·harness
沫璃染墨1 天前
《从零入门Linux系统篇(五十一):线程篇·四——pthread线程库详解:从线程创建到终止与分离》
linux·运维·服务器·开发语言·c++·系统架构·线程
YYRAN_ZZU1 天前
GMSL开发加解串配置介绍
linux·嵌入式硬件
云计算练习生1 天前
什么是上下文切换?进程切换时 CPU 到底在保存什么
linux·服务器·操作系统·进程切换