kmemleak_object的優化patch

lizefan童鞋在今天(2014/3/13)提交了一個關於mem leak的patch,比較有意思。

在kmemleak scan thread運行的情況下,無法釋放kmemleak objects。

OBJS      ACTIVE   USE     OBJ   SIZE    SLABS   OBJ/SLAB  CACHE SIZE NAME
1200264   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();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章