【技术实现步骤摘要】
定位linux内核slub内存泄漏的方法和系统
本专利技术涉及软件开发技术,特别是一种定位linux内核slub内存泄漏的方法和系统。
技术介绍
内存管理子系统可能是linux内核中最为复杂的一个子系统,其核心工作就是内存的分配回收管理,即内存分配和内存释放。一般来说已分配的内存都需要在未来某个时间点进行释放,如果只分配内存而不作释放(通常由内核的SUbsystem和driver缺陷bug引起),势必会造成内存泄漏。当内存泄漏是量足够大时就会引起linux系统发生内存耗尽(内核OOM)而宕机。Linux内核自2.6.22之后内存分配器就已经从Slab改进为Slub了。现有的Slub内存泄漏监测的方法是Linux内核自带的kmemleak方法,通过开启内核的CONFIG_DEBUG_KMEMLEAK选项,可以报告kmalloc、vmalloc、kmem_cache_alloc等无法被引用的内存块对象。kmemleak有显著的优点,可以在内核全局的一次性检测所有的内存泄漏可疑点,但同时也存在明显的缺点:可疑点量多 ...
【技术保护点】
1.一种定位linux内核slub内存泄漏的方法,其特征在于,包括以下步骤:/n按照第一设定的时间间隔依次获取第一内存统计信息和第二内存统计信息;/n根据第一内存统计信息和第二内存统计信息确定内存泄漏情况是否属于slub内存泄漏;/n当内存泄漏情况属于slub内存泄漏时,按照第二设定时间间隔依次通过slabtop指令获取第一slabtop信息和第二slabtop信息;/n根据第一slabtop信息和第二slabtop信息确定内存消耗增量满足第一预设条件的目标分配接口;/n获取所述目标分配接口的内存操作记录,所述内存操作记录包括内存分配记录和内存释放记录;/n根据内存操作记录 ...
【技术特征摘要】
1.一种定位linux内核slub内存泄漏的方法,其特征在于,包括以下步骤:
按照第一设定的时间间隔依次获取第一内存统计信息和第二内存统计信息;
根据第一内存统计信息和第二内存统计信息确定内存泄漏情况是否属于slub内存泄漏;
当内存泄漏情况属于slub内存泄漏时,按照第二设定时间间隔依次通过slabtop指令获取第一slabtop信息和第二slabtop信息;
根据第一slabtop信息和第二slabtop信息确定内存消耗增量满足第一预设条件的目标分配接口;
获取所述目标分配接口的内存操作记录,所述内存操作记录包括内存分配记录和内存释放记录;
根据内存操作记录,确定内存泄漏源。
2.根据权利要求1所述的定位linux内核slub内存泄漏的方法,其特征在于,在获取所述第一内存统计信息和获取所述第二内存统计信息之前,均执行以下步骤:
执行SReclaimable内存的回收。
3.根据权利要求2所述的定位linux内核slub内存泄漏的方法,其特征在于,根据第一内存统计信息和第二内存统计信息确定内存泄漏情况是否属于slub内存泄漏,包括:
根据第一内存统计信息中的可用内存信息和所述第二内存统计信息中的可用内存之差,确定可用内存差值;
根据第一内存统计信息中的SUnreclaim数值和所述第二内存统计信息中的SUnreclaim数值之差,确定SUnreclaim的内存新增值;
当所述SUnreclaim的内存新增值和所述可用内存差值之差满足第二预设条件,则判定内存泄漏情况属于slub内存泄漏。
4.根据权利要求1所述的定位linux内核slub内存泄漏的方法,其特征在于,所述根据第一slabtop信息和第二slabtop信息确定内存消耗增量满足第一预设条件的目标分配接口,包括:
根据每个接口在所述第二slabtop信息中SLAB_CACHE_SIZE值和所述第一slabtop信息中SLAB_CACHE_SIZE值之差,确定每个接口的内存消耗增量;
将所述内存消耗增量大于第一阈值的接口确定为目标分配接口。
5.根据权利要求1所述的定位linux内核slub内存泄漏的方法,其特征在于,所述内存分...
【专利技术属性】
技术研发人员:麻长葆,赵伟,陈小军,黄章良,
申请(专利权)人:广州鲁邦通物联网科技有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。