内存管理
文章平均质量分 79
古井无波 2024
这个作者很懒,什么都没留下…
展开
-
crash查看percpu变量在每个cpu上的基地址和内容
查看这个percpu变量在每个cpu上的地址。原创 2024-08-22 15:24:16 · 826 阅读 · 0 评论 -
memblock_free_all释放page到buddy,前后nr_free的情况
在zone_sizes_init 之后,各个node,zone'的page总数已知。但是此时的每个order的空闲链表是空的,也就是无法通过alloc_page这种接口来分配。此时page还在memblock管控,需要memblock释放。原创 2024-05-29 11:54:47 · 168 阅读 · 0 评论 -
Buddy 内存管理机制(下)
内存释放内存分配gfp_masknode 候选策略zone 候选策略zone fallback 策略lowmem reserve 机制order fallback 策略migrate type 候选策略migrate fallback 策略reclaim 方式。转载 2022-12-21 11:35:37 · 243 阅读 · 0 评论 -
Buddy 内存管理机制(上)
内存是计算机系统中最重要的核心资源之一,Buddy 系统是 Linux 最底层的内存管理机制,它使用 Page 粒度来管理内存。通常情况下一个 Page 的大小为 4K,在 Buddy 系统中分配、释放、回收的最小单位都是 Page。上图是 Buddy 系统的内部组织结构,本篇文章只关心未分配区域Free区域的管理,下篇文章再来分析可回收区域的管理。一个系统的内存总大小动辄几G几十G,不同的内存区域也有不同的特性。Buddy 使用层次化的结构把这些特性给组织起来:1、Node。转载 2022-12-21 11:34:37 · 480 阅读 · 0 评论 -
arm64内核内存布局-之vmemmap(page初始化)
page地址在VMEMMAP_START 开始。最终的虚拟地址是通过pfn->pa->va。虚拟地址自然是内核之前映射的线性地址区间。vmemmap是内核中page 数据的虚拟地址。针对sparse内存模型。内核申请page获取的page地址从此开始。原创 2022-12-12 11:37:21 · 2625 阅读 · 2 评论 -
Linux下试验大页面映射(MAP_HUGETLB)
我们成功用大页面申请了8M内存,4个大页面,同时进行清零操作成功,再munmap之前,我们需要确认内存确实是被我们使用了。新的2.6.32内核通过支持MAP_HUGETLB方式来使用内存,避免了烦琐的mount操作,对用户更友好。到某个点去,部署起来很不方便,我们只想要点匿名页面,要搞的那么麻烦吗?过去使用大页面内存主要透过hugetlbfs需要mount文件。再来看演示代码如下:# cat huge.c。原创 2023-07-05 10:09:11 · 304 阅读 · 0 评论 -
arm64内存初始化
内存numa模型是需要acpi表的SRAT [System Resource Affinity Table]来描述。内核解析日志: 同属于一个Node的物理内存的片段。原创 2023-09-08 09:58:10 · 204 阅读 · 0 评论 -
pmd_alloc/pte_alloc/pud_alloc设置页表
pte_t;} pmd_t;} pud_t;原创 2024-01-29 14:44:37 · 524 阅读 · 0 评论