LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

随笔分类 -  Linux内存管理

/proc/<pid>/maps简要分析
摘要:定位内存泄漏基本上是从宏观到微观,进而定位到代码位置。 从/proc/meminfo可以看到整个系统内存消耗情况,使用top可以看到每个进程的VIRT(虚拟内存)和RES(实际占用内存),基本上就可以将泄漏内存定位到进程范围。 之前也大概了解过/proc/self/maps,基于里面信息能大概判断泄 阅读全文

posted @ 2019-04-30 00:00 ArnoldLu 阅读(33244) 评论(0) 推荐(10) 编辑

devmem读写物理内存和devkmem读取内核虚拟内存
摘要:关键词:/dev/mem、/dev/kmem、mmap、__va、__pa、remap_pfn_range等等。 在日常工作中常有直接操作寄存器或者某一物理地址的需求,busybox中提供了devmem。通过它可以读写物理内存。 它的实现借助mmap和/dev/mem,通过mmap将/dev/mem 阅读全文

posted @ 2019-04-19 10:01 ArnoldLu 阅读(15822) 评论(0) 推荐(1) 编辑

warn_alloc():page allocation failure问题分析
摘要:关键词:warn_alloc()、__GFP_XXX、order、CMA等等。 在内存申请的时候经常会遇到类似“ xxx: page allocation failure: order:10...”类型的问题,这是warn_alloc()的输出。 warn_alloc()被如下函数调用:__allo 阅读全文

posted @ 2019-04-11 17:24 ArnoldLu 阅读(9539) 评论(0) 推荐(1) 编辑

Linux内存都去哪了:(1)分析memblock在启动过程中对内存的影响
摘要:关键词:memblock、totalram_pages、meminfo、MemTotal、CMA等。 最近在做低成本方案,需要研究一整块RAM都用在哪里了? 最直观的的就是通过/proc/meminfo查看MemTotal,实际上可能远小于RAM物理大小。 这里有个明显的分界点:在free_init 阅读全文

posted @ 2019-03-13 21:45 ArnoldLu 阅读(11389) 评论(1) 推荐(2) 编辑

Linux内存管理 (26)内存相关工具
摘要:1. vmstat 参照《Linux CPU占用率监控工具小结-vmstat》 2. memstat memstat可以通过sudo apt install memstat安装,安装包括两个文件memstat和memstat.conf。 其中memstat.conf是memstat配置文件,指定me 阅读全文

posted @ 2018-11-27 18:00 ArnoldLu 阅读(2049) 评论(0) 推荐(0) 编辑

Linux内存管理 (25)内存sysfs节点解读
摘要:1. General 1.1 /proc/meminfo /proc/meminfo是了解Linux系统内存使用状况主要接口,也是free等命令的数据来源。 下面是cat /proc/meminfo的一个实例。 MemTotal: 8054880 kB 物理内存总容量,对应totalram_page 阅读全文

posted @ 2018-11-27 17:00 ArnoldLu 阅读(8833) 评论(0) 推荐(1) 编辑

Linux内存管理 一个进程究竟占用多少空间?-VSS/RSS/PSS/USS
摘要:关键词:VSS、RSS、PSS、USS、_mapcount、pte_present、mem_size_stats。 在Linux里面,一个进程占用的内存有不同种说法,可以是VSS/RSS/PSS/USS四种形式,这四种形式首字母分别是Virtual/Resident/Proportional/Uni 阅读全文

posted @ 2018-07-29 17:44 ArnoldLu 阅读(11993) 评论(0) 推荐(0) 编辑

Linux内存管理 (9)mmap(补充)
摘要:之前写过一篇简单的介绍mmap()/munmap()的文章《Linux内存管理 (9)mmap》,比较单薄,这里详细的梳理一下。 从常用的使用者角度介绍两个函数的使用;然后重点是分析内核的实现流程;最后对mmap()/munmap()进行一些验证测试。 mmap系统调用并不完全是为了共享内存而设计的 阅读全文

posted @ 2018-07-27 22:51 ArnoldLu 阅读(15031) 评论(0) 推荐(0) 编辑

Linux内存管理 (23)一个内存Oops解析
摘要:专题:Linux内存管理专题 关键词:DataAbort、fsr、pte、backtrace、stack。 在内存相关实际应用中,内存异常访问是一种常见的问题。 本文结合异常T32栈回溯、Oops打印以及代码,分析打印log,加深对Oops的理解,有助于快速定位问题解决问题。 1. 不同类型异常处理 阅读全文

posted @ 2018-04-17 20:01 ArnoldLu 阅读(8880) 评论(0) 推荐(1) 编辑

Linux内存管理 (21)OOM
摘要:专题:Linux内存管理专题 关键词:OOM、oom_adj、oom_score、badness。 Linux内核为了提高内存的使用效率采用过度分配内存(over-commit memory)的办法,造成物理内存过度紧张进而触发OOM机制来杀死一些进程回收内存。 该机制会监控那些占用内存过大,尤其是 阅读全文

posted @ 2018-03-20 19:54 ArnoldLu 阅读(11611) 评论(0) 推荐(1) 编辑

Linux内存管理 (22)内存检测技术(slub_debug/kmemleak/kasan)
摘要:专题:Linux内存管理专题 关键词:slub_debug、kmemleak、kasan、oob、Redzone、Padding。 Linux常见的内存访问错误有: 越界访问(out of bounds) 访问已经释放的内存(use after free) 重复释放 内存泄露(memory leak 阅读全文

posted @ 2018-03-20 19:54 ArnoldLu 阅读(24631) 评论(1) 推荐(1) 编辑

Linux内存管理 (20)最新更新和展望
摘要:专题:Linux内存管理专题 关键词:OOM、swap、HMM、LRU。 本系列没有提到的内容由THP(Transparent Huge Page)、memory cgroup、slub、CMA、zram、swap、zswap、memory hotplug等。 下面列举从Linux 4.0到Linu 阅读全文

posted @ 2018-02-13 22:23 ArnoldLu 阅读(2281) 评论(0) 推荐(0) 编辑

Linux内存管理 (19)总结内存管理数据结构和API
摘要:专题:Linux内存管理专题 关键词:mm、vaddr、VMA、page、pfn、pte、paddr、pg_data、zone、mem_map[]。 1. 内存管理数据结构的关系图 在大部分Linux系统中,内存设备的初始化一般是在BIOS或bootloader中,然后把DDR的大小传递给Linux 阅读全文

posted @ 2018-02-12 20:34 ArnoldLu 阅读(4919) 评论(0) 推荐(0) 编辑

Linux内存管理 (17)KSM
摘要:专题:Linux内存管理专题 关键词:KSM、匿名页面、COW、madvise 、MERGEABLE、UNMERGEABLE。 KSM是Kernel Samepage Merging的意思,用于合并内容相同的页面。 在虚拟化环境中,同一台主机上存在许多相同OS和应用程序,很多页面内容可能是完全相同的 阅读全文

posted @ 2018-02-10 22:43 ArnoldLu 阅读(6123) 评论(0) 推荐(0) 编辑

Linux内存管理 (16)内存规整
摘要:专题:Linux内存管理专题 关键词:内存规整、页面迁移、pageblock、MIGRATE_TYPES。 内存碎片的产生:伙伴系统以页为单位进行管理,经过大量申请释放,造成大量离散且不连续的页面。这时就产生了很多碎片。 内存规整也即内存碎片整理,内存碎片也是以页面为单位的。实现基础是内存页面按照可 阅读全文

posted @ 2018-02-10 14:16 ArnoldLu 阅读(8885) 评论(0) 推荐(0) 编辑

Linux内存管理 (15)页面迁移
摘要:专题:Linux内存管理专题 关键词:RMAP、页面迁移。 相关章节:反向映射RMAP、内存规整。 页面迁移的初衷是为NUMA系统提供一种将进程迁移到任意内存节点的能力,后来内存规整和内存热插拔场景都使用了此功能。 页面迁移将就页面内容,迁移到新的页面。 需要分配新页面,将旧页面内容拷贝到新页面;然 阅读全文

posted @ 2018-02-10 10:42 ArnoldLu 阅读(6335) 评论(0) 推荐(0) 编辑

Linux内存管理 (14)匿名页面生命周期
摘要:专题:Linux内存管理专题 关键词:匿名页面、换入、换出。 如果要将匿名页面的生命周期进行划分,大概就是诞生、使用、换出、换入和销毁。 内核中使用匿名页面的地方有很多,产生缺页中断之后匿名页面就诞生了; 用户进程访问虚拟地址即可访问到匿名页面内容; 在内存紧张的时候,需要回收一些页面来释放内存,匿 阅读全文

posted @ 2018-02-05 19:10 ArnoldLu 阅读(4993) 评论(0) 推荐(1) 编辑

Linux内存管理 (13)回收页面
摘要:专题:Linux内存管理专题 关键词:LRU、活跃/不活跃-文件缓存/匿名页面、Refault Distance。 页面回收、或者回收页面也即page reclaim,依赖于LRU链表对页面进行分类:不活跃匿名页面、活跃匿名页面、不活跃文件缓存页面、活跃文件缓存页面和不可回收页面。 内存紧张时优先换 阅读全文

posted @ 2018-02-05 19:09 ArnoldLu 阅读(8502) 评论(0) 推荐(1) 编辑

Linux内存管理 (12)反向映射RMAP
摘要:专题:Linux内存管理专题 关键词:RMAP、VMA、AV、AVC。 所谓反向映射是相对于从虚拟地址到物理地址的映射,反向映射是从物理页面到虚拟地址空间VMA的反向映射。 RMAP能否实现的基础是通过struct anon_vma、struct anon_vma_chain和sturct vm_a 阅读全文

posted @ 2018-02-05 19:07 ArnoldLu 阅读(8643) 评论(1) 推荐(0) 编辑

Linux内存管理 (11)page引用计数
摘要:专题:Linux内存管理专题 关键词:struct page、_count、_mapcount、PG_locked/PG_referenced/PG_active/PG_dirty等。 Linux的内存管理是以页展开的,struct page非常重要,同时其维护成本也非常高。 这里主要介绍struc 阅读全文

posted @ 2018-02-03 17:01 ArnoldLu 阅读(10714) 评论(1) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示