
Linux内存管理
zhuyong006
这个作者很懒,什么都没留下…
展开
-
频繁分配释放内存导致的性能问题的分析
频繁分配释放内存导致的性能问题的分析现象1 压力测试过程中,发现被测对象性能不够理想,具体表现为:进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约702 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000。初步分析majflt代表major fault,中文名叫大错误,minflt...转载 2020-01-01 19:14:52 · 1571 阅读 · 0 评论 -
Linux内核slab内存的越界检查——SLUB_DEBUG
1. 前言在工作中,经常会遇到由于越界导致的各种奇怪的问题。为什么越界访问导致的问题很奇怪呢?在工作差不多半年的时间里我就遇到了很多越界访问导致的问题(不得不吐槽下IC厂商提供的driver,总是隐藏着bug)。比如说越界访问导致的死机问题,这种问题的出现一般需要长时间测试才能发现,而且发现的时候即使有panic log。你也没什么头绪。这是为什么呢?假设驱动A通过kmalloc()申请了一段内...转载 2019-09-11 15:36:32 · 4013 阅读 · 0 评论 -
浅谈Cache Memory
今天探究的主题是cache。我们围绕几个问题展开。为什么需要cache?如何判断一个数据在cache中是否命中?cache的种类有哪些,区别是什么? 为什么需要cache memory 在思考cache是什么之前我们首先先来思考第一个问题:我们的程序是如何运行起来的?我们应该知道程序是运行在 RAM之中,RAM 就是我们常说的DDR(例如 DDR3、DDR4等)。我们称之为main...转载 2019-08-29 14:40:02 · 435 阅读 · 0 评论 -
绘制Linux/Android设备的内存动态变化趋势图
1.生成可执行文件收集动态内存数据\hardware\qcom\memory\memory_detect.c#include <stdio.h>#include <linux/kernel.h>#include <linux/unistd.h>#include <unistd.h> #include <sys/sysinfo.h...原创 2019-08-28 10:24:49 · 643 阅读 · 0 评论 -
为什么手工drop_caches之后cache值并未减少?
在Linux系统上查看内存使用状况最常用的命令是"free",其中buffers和cache通常被认为是可以回收的:$ free total used free shared buffers cachedMem: 32764716 1067548 31697168 158332 12 ...转载 2019-04-07 23:26:48 · 694 阅读 · 0 评论 -
基于Android Ndk/Jni的内存泄漏检测
之前分析过在Android Native中分析内存泄漏的方法:Android Native内存泄露检测(针对Android7.0)但是很遗憾这个方法并不适用于Ndk和Jni,因此我们需要为Ndk和Jni寻找一种合适的方法,他就是LeakTracer这个工具并没有之前libc那么的智能,他需要我们手动的在怀疑的代码段中加入检测代码,原理是将malloc和free函数替换为LeakTracer中带有...原创 2019-03-13 17:31:32 · 3732 阅读 · 2 评论 -
vmalloc与mmap
mmap()系统调用是在用户进程与内核之间共享内存区域的常用方法。我们最近有个程序,需要应用进程能够读取内核驱动获取的数据,经过简单的调研,决定采用mmap方式。实现起来不难,在驱动中注册一个字符设备,实现该设备的mmap()方法即可。但这其中有一点小曲折。在实现设备的mmap()方法时,需要将物理内存映射到应用程序通过mmap()系统调用传下来的vma中。vma代表的是进程的一段虚拟地址空间。...转载 2018-11-19 15:10:52 · 244 阅读 · 0 评论 -
宋宝华: CPU是如何访问到内存的?--MMU最基本原理
原帖地址:假设页表只有一级对于一个有MMU的CPU而言,MMU开启后,CPU是这样寻址的:CPU任何时候,一切时候,发出的地址都是虚拟地址,这个虚拟地址发给MMU后,MMU通过页表来在页表里面查出来这个虚拟地址对应的物理地址是什么,从而去访问外面的内存条。MMU里面的页表地址寄存器,记录了页表本身的存放位置。 现在我们假设每一页的大小是4KB,而且假设页表只有一级,这个页表长成下面这个样子...转载 2018-11-02 13:52:20 · 472 阅读 · 0 评论 -
Android Native内存泄露检测(针对Android7.0)
1. 需要合入一个Patch2. 执行指令adb rootadb shell setprop libc.debug.malloc.program cameraserveradb shell setprop libc.debug.malloc.options “backtrace_enable_on_signal leak_track”adb shell ps | find /I “ca...原创 2018-11-06 10:46:41 · 2702 阅读 · 3 评论 -
内存管理 —— ION
ION 是当前 Android 流行的内存分配管理机制,在多媒体部分中使用的最多,例如从 Camera 到 Display,从 Mediaserver 到 Surfaceflinger,都会利用 ION 进行内存分配管理。 ION 的前任是 PMEM,关于 PMEM 我在 M030/M04X 项目中有接触过,后来由于 PMEM 的一些局限性,Google 推出了 ION 来取代 PMEM,当前 I...转载 2018-07-23 14:01:34 · 23605 阅读 · 0 评论 -
应用 Valgrind 发现 Linux 程序的内存问题
Valgrind 概述体系结构Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所...转载 2018-07-02 21:20:35 · 196 阅读 · 0 评论 -
/proc/meminfo之谜
原帖地址:http://mp.weixin.qq.com/s/WT9-WN0Bk3N1UPA6lCKGDw作者: vmunix vmunix大神一层层剥去Linux内存神秘的外衣~想要和vmunix还有全世界的大牛讨论SSD及存储相关技术?加nanoarch为微信好友,拉你进ssdfans微信群 。 欢迎给ssdfans投稿,投稿就能加入ssdfans作者转载 2018-02-07 15:02:31 · 520 阅读 · 0 评论