【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 最低水位 , 3 3 3 个水位线 , 将 " 内存区域 " 分割成 4 4 4 部分 ;


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 成员 表示 伙伴分配器 管理的 物理页个数 ; 使用 如下 公式进行计算 :

z o n e _ e n d _ p f n − z o n e _ s t a r t _ p f n \rm zone\_end\_pfn - zone\_start\_pfn zone_end_pfnzone_start_pfn

spanned_pages 成员 表示 内存区域所有可用物理页 个数 , 包括 内存空洞 ; 使用 如下 公式进行计算 :

s p a n n e d _ p a g e s − h o l e _ p a g e s \rm spanned\_pages - hole\_pages spanned_pageshole_pages

present_pages 成员 表示 当前 内存区域物理页个数 , 不包括 内存空洞 ; 是通过 伙伴分配器 管理的 物理页 ; 使用 如下 公式进行计算 :

p r e s e n t _ p a g e s − r e s e r v e d _ p a g e s \rm present\_pages - reserved\_pages present_pagesreserved_pages


present_pagesspanned_pagesmanaged_pages 三者之间有如下关系 :

spanned_pages ( 内存区域所有可用物理页数 有空洞 ) >
present_pages ( 当前区域物理页数 无空洞 ) >
managed_pages ( 伙伴分配器管理的物理页数 )


参考 【Linux 内核 内存管理】物理内存组织结构 ④ ( 内存区域 zone 简介 | zone 结构体源码分析 | zone 结构体源码 ) 博客 ;

struct zone 结构体相关源码 :

struct zone {/* Read-mostly fields *//* zone watermarks, access with *_wmark_pages(zone) macros */unsigned long watermark[NR_WMARK];...unsigned long		managed_pages;unsigned long		spanned_pages;unsigned long		present_pages;...
}

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

在这里插入图片描述





二、在 Ubuntu 中查看内存区域水位线



在 Ubuntu 的 命令行 中 , 执行

cat /proc/zoneinfo

命令 , 查看 " 内存区域 " 信息 ;

输出内容中 , 其中 Normal 区域的信息如下 :

Node 0, zone   Normalpages free     5754min      4615low      5768high     6921spanned  262144present  262144managed  236760protection: (0, 0, 0, 0, 0)

DMA32 区域的信息如下 :

Node 0, zone    DMA32pages free     43834min      12202low      15252high     18302spanned  1044480present  782288managed  759709protection: (0, 0, 924, 924, 924)

DMA 区域的信息如下 :

Node 0, zone      DMAper-node statsnr_inactive_anon 10820nr_active_anon 320858nr_inactive_file 231022nr_active_file 234555nr_unevictable 16nr_slab_reclaimable 44884nr_slab_unreclaimable 18674nr_isolated_anon 0nr_isolated_file 0

输出完整内容 :

han@ubuntu:~$ cat /proc/zoneinfo
Node 0, zone      DMAper-node statsnr_inactive_anon 10820nr_active_anon 320858nr_inactive_file 231022nr_active_file 234555nr_unevictable 16nr_slab_reclaimable 44884nr_slab_unreclaimable 18674nr_isolated_anon 0nr_isolated_file 0workingset_nodes 0workingset_refault 0workingset_activate 0workingset_restore 0workingset_nodereclaim 0nr_anon_pages 320578nr_mapped    153680nr_file_pages 476705nr_dirty     26878nr_writeback 0nr_writeback_temp 0nr_shmem     11129nr_shmem_hugepages 0nr_shmem_pmdmapped 0nr_file_hugepages 0nr_file_pmdmapped 0nr_anon_transparent_hugepages 0nr_unstable  0nr_vmscan_write 0nr_vmscan_immediate_reclaim 0nr_dirtied   287542nr_written   244390nr_kernel_misc_reclaimable 0pages free     3968min      77low      96high     115spanned  4095present  3997managed  3976protection: (0, 2445, 3369, 3369, 3369)nr_free_pages 3968nr_zone_inactive_anon 0nr_zone_active_anon 0nr_zone_inactive_file 0nr_zone_active_file 0nr_zone_unevictable 0nr_zone_write_pending 0nr_mlock     0nr_page_table_pages 0nr_kernel_stack 0nr_bounce    0nr_zspages   0nr_free_cma  0numa_hit     1numa_miss    0numa_foreign 0numa_interleave 0numa_local   1numa_other   0pagesetscpu: 0count: 0high:  0batch: 1vm stats threshold: 6cpu: 1count: 0high:  0batch: 1vm stats threshold: 6cpu: 2count: 0high:  0batch: 1vm stats threshold: 6cpu: 3count: 0high:  0batch: 1vm stats threshold: 6node_unreclaimable:  0start_pfn:           1
Node 0, zone    DMA32pages free     43834min      12202low      15252high     18302spanned  1044480present  782288managed  759709protection: (0, 0, 924, 924, 924)nr_free_pages 43834nr_zone_inactive_anon 8454nr_zone_active_anon 245858nr_zone_inactive_file 181846nr_zone_active_file 177532nr_zone_unevictable 4nr_zone_write_pending 26534nr_mlock     4nr_page_table_pages 5641nr_kernel_stack 8472nr_bounce    0nr_zspages   0nr_free_cma  0numa_hit     4159869numa_miss    0numa_foreign 0numa_interleave 192366numa_local   4159869numa_other   0pagesetscpu: 0count: 50high:  378batch: 63vm stats threshold: 36cpu: 1count: 335high:  378batch: 63vm stats threshold: 36cpu: 2count: 300high:  378batch: 63vm stats threshold: 36cpu: 3count: 121high:  378batch: 63vm stats threshold: 36node_unreclaimable:  0start_pfn:           4096
Node 0, zone   Normalpages free     5754min      4615low      5768high     6921spanned  262144present  262144managed  236760protection: (0, 0, 0, 0, 0)nr_free_pages 5754nr_zone_inactive_anon 2366nr_zone_active_anon 75000nr_zone_inactive_file 49176nr_zone_active_file 57023nr_zone_unevictable 12nr_zone_write_pending 344nr_mlock     12nr_page_table_pages 5556nr_kernel_stack 7096nr_bounce    0nr_zspages   0nr_free_cma  0numa_hit     839519numa_miss    0numa_foreign 0numa_interleave 223408numa_local   839519numa_other   0pagesetscpu: 0count: 253high:  378batch: 63vm stats threshold: 24cpu: 1count: 202high:  378batch: 63vm stats threshold: 24cpu: 2count: 325high:  378batch: 63vm stats threshold: 24cpu: 3count: 291high:  378batch: 63vm stats threshold: 24node_unreclaimable:  0start_pfn:           1048576
Node 0, zone  Movablepages free     0min      0low      0high     0spanned  0present  0managed  0protection: (0, 0, 0, 0, 0)
Node 0, zone   Devicepages free     0min      0low      0high     0spanned  0present  0managed  0protection: (0, 0, 0, 0, 0)
han@ubuntu:~$ 

在这里插入图片描述
在这里插入图片描述

这篇关于【Linux 内核 内存管理】分区伙伴分配器 ⑥ ( zone 结构体中水线控制相关成员 | 在 Ubuntu 中查看内存区域水位线 )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/385886

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_