我正在使用内核(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终止。以下函数调用负责:
我认为这与RCU调度程序有关,但我不知道在哪里以及如何搜索。
你能帮助我吗?
提前致谢!