kmemleak_object的优化patch

来源:互联网 发布:经典sql语句大全视频 编辑:程序博客网 时间:2024/05/05 05:53

lizefan童鞋在今天(2014/3/13)提交了一个关于mem leak的patch,比较有意思。

在kmemleak scan thread运行的情况下,无法释放kmemleak objects。

OBJS      ACTIVE   USE     OBJ   SIZE    SLABS   OBJ/SLAB  CACHE SIZE NAME1200264   1197433  99%    0.30K  46164   26    369312K   kmemleak_object

lizefan童鞋写的patch可以在执行如下命令后,释放objects:

# echo scan=off > /sys/kernel/debug/kmemleak # echo off > /sys/kernel/debug/kmemleak
代码实现如下:
if (strncmp(buf, "clear", 5) == 0) {    if (atomic_read(&kmemleak_enabled))      kmemleak_clear();    else      __kmemleak_do_cleanup();    goto out;  }
__kmemleak_do_cleanup()定义如下:
static void __kmemleak_do_cleanup(void){  struct kmemleak_object *object;  rcu_read_lock();  list_for_each_entry_rcu(object, &object_list, object_list)    delete_object_full(object->pointer);  rcu_read_unlock();}
0 0