Openwrt 解决没有 /proc/slabinfo 问题

排查内核空间的内存泄露,主要关注slab。需要分析 /proc/slabinfo 文件。如果没有需要配置。

修改配置

默认openwrt是没有打开 /proc/slabinfo 的。打开方式如下:

实际上,在选中 Enable /proc slab debug info后,.config 中是将如下配置打开了

确认打开此选项后,对系统内存影响

这里以AP321为例

结论

验证

一般分析思路

通过分析内存占用较大的slab可以定位大概是哪里的问题。

其中 在 /proc/meminfo 中 SReclaimable 项,表示可以回收的。可以通过以下命令回收

该命令释放dentries and inodes的可回收slab内存。

dentry内存如果是因为应用层导致,则基本是可回收的。主要关注应用层相关程序。

 

排查内核内存泄露,关注 /proc/slabinfo 中 kmalloc- 开头的项。