Linux 内核 内存管理分区伙伴分配器 ⑥ ( zone 结构体中水线控制相关成员 | 在 Ubuntu 中查看内存区域水位线 )

亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述Linux 内核 内存管理分区伙伴分配器 ⑥ ( zone 结构体中水线控制相关成员 | 在 Ubuntu 中查看内存区域水位线 )相关的知识,希望能为你提供帮助。




文章目录

  • ??一、zone 结构体中水线控制相关成员 ( managed_pages | spanned_pages | present_pages )??
  • ??二、在 Ubuntu 中查看内存区域水位线??
上一篇博客 【Linux 内核 内存管理】分区伙伴分配器 ⑤ ( 区域水线 | 区域水线数据结构 zone_watermarks 枚举 | 内存区域 zone 中的区域水线 watermark 成员 ) 中讲解了 区域水线概念 , 本篇博客中开始分析 根据水线 进行 水位控制 的机制 ;
??WMARK_HIGH??? 高水位 , ??WMARK_LOW??? 低水位 , ??WMARK_MIN??? 最低水位 , 个水位线 , 将 " 内存区域 " 分割成 部分 ;
enum zone_watermarks
WMARK_MIN,
WMARK_LOW,
WMARK_HIGH,
NR_WMARK
;

#define min_wmark_pages(z) (z-> watermark[WMARK_MIN])
#define low_wmark_pages(z) (z-> watermark[WMARK_LOW])
#define high_wmark_pages(z) (z-> watermark[WMARK_HIGH])

源码路径 : linux-4.12\\include\\linux\\mmzone.h#255

一、zone 结构体中水线控制相关成员 ( managed_pages | spanned_pages | present_pages )在 linux 内核源码中 描述 " 内存区域 " 的结构体 ??struct zone?? 中 , 有几个重要的参数 , 用于 控制 区域水线水位 :
??managed_pages?? 成员 表示 伙伴分配器 管理的 物理页个数 ; 使用 如下 公式进行计算 :

??spanned_pages?? 成员 表示 内存区域 的 所有可用物理页 个数 , 包括 内存空洞 ; 使用 如下 公式进行计算 :
【Linux 内核 内存管理分区伙伴分配器 ⑥ ( zone 结构体中水线控制相关成员 | 在 Ubuntu 中查看内存区域水位线 )】

    推荐阅读