| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> linux内存泄露分析 -> 正文阅读 |
|
[系统运维]linux内存泄露分析 |
目录 用惯了大内存处理器,最近因项目原因接触小内存的处理器。才有机会在内存泄露分析上认证学习下: 内核态内存泄漏查询:vmalloc 分配大块内存,走budy system;通过cat/proc/vmallocinfo可以统计; 注:Cat vmallocinfo,如果有buffer块数一直在增加,则是内存泄露。 kmalloc/kmem_cache_create 分配小于pagesize,走slab机制;通过cat /proc/meminfo里的slab字段可以统计。 注: 如果怀疑有kernel mode内存泄露,运行应用过程中每间隔一段时间cat/proc/meminfo留意slab。如果一直在增加,大概率有内存泄露的可能。具体模块的函数泄露可以用kmemleak debug。 检查内存泄漏的方法 -- Kernel Space
修改 .config 设定 KMEMLEAK,重新编译 kernel,重烧 image。 摘录 .config 如下: # Memory Debugging CONFIG_HAVE_DEBUG_KMEMLEAK=y CONFIG_DEBUG_KMEMLEAK=y CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=4096
# cat /sys/kernel/debug/kmemleak 用法举例 图2-1
实际测试 Driver memory leakage 的方法 # echo clear > /sys/kernel/debug/kmemleak # run_your_driver_test_her # echo scan > /sys/kernel/debug/kmemleak 用户态内存泄露如果发现程序运行过程,meminfo里的Memfree有不断的减少,echo 3 > /proc/sys/vm/drop_cache也不会返回内存,大概率是有内存泄露。 在排除kernel space内存泄露的前提下,试试隔段时间观察cat /proc/PID/smap里每个so的堆。有一定机率能发现是哪个so内存泄露。 排查使用第三方工具分析内存泄露。dmalloc等等 内存查询常用指令cat /proc/PID/status cat /proc/meminfo cat /proc/PID/maps cat /proc/PID/smaps cat/proc/vmallocinfo 这几条指令就不详细介绍了 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 19:24:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |