首页 > 解决方案 > vmstat -m /slabtop 对象数量和内存泄漏

问题描述

假设我有一些Linux内核模块(驱动程序),它有自己的slab,它被分配例如这样的东西(从内核内部通过内核补丁,而不是在驱动程序中):

kmem_cache_create("some_drv_obj_cache", sizeof(struct some_drv_obj), 0,
                  SLAB_HWCACHE_ALIGN | SLAB_PANIC, NULL);

在驱动程序中使用此板反映在命令的输出中vmstat -mslabtop.
假设我这样做rmmod some_drv并且仍然在缓存(vmstat -m)中看到一些对象,如下所示:

Cache                       Num  Total   Size  Pages
some_drv_obj_cache           36     36    320     12

它是否保证驱动程序中存在一些内存泄漏?即Num卸载后值必须为零?
第二个问题是,当我生成一些保证将新对象添加到slab 缓存的事件时,这Num(slab 对象的数量)是否必须实时更新(即创建一个对象-Num 加一)?或者这个值可以通过块来更新?

标签: clinuxmemory-managementmemory-leakslinux-kernel

解决方案


推荐阅读