Kernel 而kthread中的循环会导致内存泄漏
我正在开发一个内核(4.7.4)模块,它用while循环启动一个kthread。这个while循环/kthread尽可能快地在一个隔离的cpu内核(nohz_full=3 rcu_nocbs=3 isolcpus=3)上运行,并生成一些复杂的东西。一切正常,但我发现内核内存泄漏。因此,我使用了一个非常简单的kthread进行测试:Kernel 而kthread中的循环会导致内存泄漏,kernel,scheduling,multithreading,memory-leaks,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;
static int thread_function(void *data){
while(stop_thread) rmb();
return 0;
}
不幸的是,同样的结果。Slabtop告诉我,dentry、filp和kmalloc-256(有时是kmalloc-64)分配永久内存,直到我的kthread终止。以下函数调用负责:
- filp:get_empty_filp
- 丹特里:你要什么
- kmalloc-256:准备和复制信用卡