linux内存管理
文章平均质量分 87
wwwlyj123321
这个作者很懒,什么都没留下…
展开
-
内存回收基本原理与内存水位
内核会为每个 NUMA 节点中的每个物理内存区域定制三条用于指示内存容量的水位线,分别是:WMARK_MIN(页最小阈值), WMARK_LOW (页低阈值),WMARK_HIGH(页高阈值)。这三条水位线定义在WMARK_MIN,WMARK_LOW,NR_WMARK这三条水位线对应的 watermark 数值存储在每个物理内存区域 struct zone 结构中的 _watermark[NR_WMARK] 数组中。// 物理内存区域中的水位线。原创 2024-11-10 17:53:27 · 747 阅读 · 0 评论 -
linux物理内存管理:node,zone,page
对于物理内存内存,linux对内存的组织逻辑从上到下依次是:node,zone,page,这些page是根据buddy分配算法组织的,看下面两张图:上面的概念做下简单的介绍:内存节点结构体在linux内核include/linux/mmzone.h文件NUMA下每个node由一个pglist_data结构体描述UMA下只有一个node,即全局变量mmzone.h - include/linux/mmzone.h - Linux source code v5.4.285 - Bootlin Elixir Cr原创 2024-11-10 14:13:27 · 529 阅读 · 0 评论 -
伙伴(buddy)系统原理
所谓“伙伴”,就是指在空闲块被分裂时,由同一个大块内存分裂出来的两个小块内存就互称“伙伴”。原创 2023-11-12 16:20:11 · 1907 阅读 · 2 评论 -
linux内核对进程虚拟地址空间管理
当内核线程没有运行时,active_mm为空,当内核线程运行时,借用上一个进程的内存描述符,在被借用进程的用户虚拟地址空间的上方运行,进程描述符的成员active_mm指向借用的内存描述符,假设被借用的内存描述符所属的进程不属于线程组,那么内存描述符的成员mm_users不变,仍然是1,成员mm_count加1变成2。如果两个进程属于同一个线程组,每个进程的进程描述符的成员mm和active_mm都指向同一个内存描述符,内存描述符的成员mm_users是2、成员mm_count是1。原创 2022-12-17 17:51:13 · 1524 阅读 · 0 评论 -
linux内存泄漏 debug
C/C++程序一般都由程序员自己来控制内存的申请和释放,因此稍有不慎就容易出现内存泄漏ref:Valgrind Homehttps://android.googlesource.com/platform/bionic/+/master/libc/malloc_debug/README.md原创 2022-12-16 16:50:25 · 178 阅读 · 0 评论 -
Linux内存管理之UMA模型和NUMA模型
在我们理解了物理内存的 NUMA 架构,以及在 NUMA 架构下的内存分配策略之后,本小节笔者来为大家介绍下如何正确的利用 NUMA 提升我们应用程序的性能。前边我们介绍了这么多的理论知识,但是理论的东西总是很虚,正所谓眼见为实,大家一定想亲眼看一下 NUMA 架构在计算机中的具体表现形式,比如:在支持 NUMA 架构的机器上到底有多少个 NUMA 节点?每个 NUMA 节点包含哪些 CPU 核,具体是怎样的一个分布情况?前面也提到 CPU 在访问本地 NUMA 节点中的内存时,速度是最快的。原创 2022-12-09 20:06:27 · 1519 阅读 · 1 评论 -
linux内存管理
对于物理内存内存,linux对内存的组织逻辑从上到下依次是:node,zone,page,这些page是根据buddy分配算法组织的,看下面两张图:原创 2022-12-08 17:46:57 · 3594 阅读 · 0 评论