通过slab debug定位内核内存泄漏

1、查看内核小内存使用情况cat /proc/meminfo

slab=SReclaimalbe(可回收) + SUnreclaim(不可回收),假如出现内存泄漏,同时SUnreclaim值一直增大,可能是内核出现内存泄漏。

2、怎么查看到具体哪个slab出现内存泄漏问题

2.1、打开内核配置项kernel hacking --> Memory Debugging  打开CONFIG_SLUB_DEBUG 测试项

重新更新内核,启动后可以在/sys/kernel/目录下查看到slab目录

2.2、查看cd /sys/kernel/slab文件

以上的文件夹名就是通过kmem_cache_create填写的name创建的

2.3、写一个脚本,遍历里面所有的文件夹,以kmalloc-128为例

cd kmalloc-128目录,echo 1 > trace 等待一段时间 echo 0 > trace

将打印信息重定位到txt文本文件中

grep "TRACE kmalloc-128 alloc" t1.txt | awk '{print $5}' | sort > alloc.txt

grep "TRACE kmalloc-128 free" t2.txt | awk '{print $5}' | sort > free.txt

2.4、beyond compare工具比较alloc和free中申请和释放的地址是否匹配,不能匹配,说明那个地址一直在申请内存

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值