而kthread中的循环导致内存泄漏

时间:2016-09-21 10:02:37

标签: kernel scheduling multithreading memory-leaks

我正在使用内核(4.7.4)模块,该模块使用while循环启动kthread。这个while循环/ kthread在一个隔离的cpu核心(nohz_full = 3 rcu_nocbs = 3 isolcpus = 3)上尽可能快地运行并产生一些复杂的东西。一切都运行正常,但我认识到内核内存泄漏。因此我使用了一个非常简单的kthread进行测试:

static int thread_function(void *data){

   while(stop_thread) rmb();

   return 0;
}

不幸的是,结果相同。 Slabtop告诉我,dentry,filp和kmalloc-256(有时是kmalloc-64)分配内存永久,直到我的kthread终止。以下函数调用负责:

  • filp:get_empty_filp
  • dentry:__ d_alloc
  • kmalloc-256:prepare_creds& copy_creds

我认为这与RCU调度程序有关,但我不知道在哪里以及如何搜索。

你能帮助我吗?

提前致谢!

0 个答案:

没有答案