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中申请和释放的地址是否匹配,不能匹配,说明那个地址一直在申请内存