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()。

相关推荐
lzx_00210 小时前
Linux 进程(三) 从进程状态到僵尸进程、孤儿进程
linux·服务器
FlightYe11 小时前
音视频修炼之容器与协议(四):RTSP详解
android·linux·ffmpeg·音视频·dash
刘马想放假12 小时前
CANviz 使用指南|Linux 安装、DBC 解码、实时曲线与 J1939 实战
linux·python·websocket
kloc13 小时前
聊天室项目入口网关子服务的实现
linux·c++
GeW13 小时前
深圳APEC峰会倒计时:数据库与Linux运维的"隐形考场"
linux
梦到啥说啥15 小时前
Linux网络编程:UDP网络协议
linux·网络协议·udp
无足鸟ICT16 小时前
【RHCA+】ipcrm命令(删除IPC资源)
linux
星恒随风17 小时前
MySQL 从零入门(四):表的增删改查与基础查询详解
linux·服务器·数据库·笔记·mysql
陈希12320 小时前
Linux 网络诊断工具实战:ping、curl、tcpdump、mtr、dig 用法详解
linux·网络·tcpdump
进击的荆棘20 小时前
Linux系统——线程同步与互斥之线程池和安全
linux·运维·服务器·安全·单例模式·线程