随笔分类 - linux mm
摘要:virt_to_phys on 5.4 kernel 5.4\arch\arm64\include\asm\Memory.h static inline phys_addr_t virt_to_phys(const volatile void *x) { return __virt_to_phys(
阅读全文
摘要:本文原创,谢绝转载! vmemmap VA与struct page阵列页表映射 一个struct mem_section对应PAGES_PER_SECTION个page,比如PAGES_PER_SECTION的值为18,即对应256KB个page,256K个struct page所占用的空间为256
阅读全文
摘要:VMA 深入Linux内核(内存篇)—用户内存空间之VMA https://blog.csdn.net/liyuewuwunaile/article/details/107272123 struct page/VMA/AVC/AV之间的关系 父进程每个VMA都有一个anon_vma数据结构,vma-
阅读全文
摘要:read file page cache generic_file_buffered_read()里的index表示此次read文件的位置,在要读的某个文件里的位置,这个index是以page为单位的last_index表示此次read的结束位置,同样其单位是page 这两个变量的值分别是根据kio
阅读全文
摘要:Result<Success> SetKptrRestrictAction(const BuiltinArguments&) { std::string path = KPTR_RESTRICT_PATH; if (!SetHighestAvailableOptionValue(path, KPTR
阅读全文
摘要:开启CONFIG_ARM64_PTDUMP_CORE & CONFIG_ARM64_PTDUMP_DEBUGFS config,将会产生如下文件: /sys/kernel/debug/kernel_page_tables
阅读全文
摘要:kernel slab misc console:/sys/kernel/slab # ls :0000008 bio-0 kioctx :0000016 bio-1 kmalloc-128 :0000024 bio-2 kmalloc-1k :0000032 bio-3 kmalloc-256 :
阅读全文
摘要:android malloc_debug tool malloc_debug使用方法 130|console:/ # cat /data/local.prop libc.debug.malloc.options=backtrace=16 guard=8 fill_on_free=16 free_tr
阅读全文
摘要:在看 代码时发现,如果设置了MAP_FIXED标志,函数就做一些极其简单的检查,然后就把你指定的addr返回给你,代表你查找的空闲的线性区找到了。 unsigned long 1371 get_unmapped_area_prot(struct file *file, unsigned long a
阅读全文
摘要:本文基于linux-3.10的内核 申请内存时需要先确定两个值,分别是high_zoneidx和migratetype。这两个值从哪里获取到呢?都是利用上面传递过来的GFP flag。对于high_zoneidx是通过gfp_zone函数获取的,而migratetype是通过gfpflags_to_
阅读全文
摘要:在 Linux 内核空间申请内存涉及的函数主要包括 kmalloc()、_ _get_free_pages()和vmalloc()等 1 2 1、kmalloc()和_ _get_free_pages()(及其类似函数)申请的内存位于物理内存映射区域而且在物理上也是连续的,它们与真实的物理地址只有一
阅读全文
摘要:我们知道buddy容易产生内存碎片,内核中可以通过给页面设置迁移类型以及compaction机制来预防和处理内存碎片。 内存页主要有下面三种类型: 1.可移动的(movable)。用户态申请。 2.可回收的(reclaimable)。文件系统的cache。 3.不可移动(unmovable)。内核申
阅读全文
摘要:对于用户空间的应用程序,我们通常根本不关心page的物理存放位置,因为我们用的是虚拟地址。所以,只要虚拟地址不变,哪怕这个页在物理上从DDR的这里飞到DDR的那里,用户都基本不感知。那么,为什么要写一篇论述页迁移的文章呢? 我认为有2种场景下,你会关注这个Page迁移的问题:一个是在Linux里面写
阅读全文
摘要:这两天研究memory zone的水位问题涉及到两个参数分别是/proc/sys/vm/extra_free_kbytes以及min_free_kbytes(在kernel-4.4)。 而通过代码发现min_free_kbytes这个值由normal zone下的managed pages决定。 先
阅读全文
摘要:sysrq mm log里Free swap、Total swap是什么含义? [22634.588075] Free swap = 0kB[22634.588076] Total swap = 204796kB get_nr_swap_pages函数返回swap file或者swap device
阅读全文
摘要:主要做项目时候,需要分配一块连续的大的物理内存。 1.kmalloc 不能分配那么大。 2.alloc_pages MAX_ORDER为11,也就是最大分配2的11次方的页。 reserverd memory在最开始时候分配好,这块内存不会再分配给kernel用。主要更改devicetree。 me
阅读全文
摘要:what does anon-rss and total-vm mean 最近,我的Linux机器上的tomcat进程突然被杀死。 经过调查,我在/ var / log / messages文件中发现以下错误消息: 12 kernel: [1799319.246494] Out of memory:
阅读全文
摘要:After examining the virtual address layout of a process, we turn to the kernel and its mechanisms for managing user memory. Here is gonzo again: Linux
阅读全文