测量某个Linux驱动模块的内存使用情况

Dou*_* Su 6 memory memory-leaks linux-device-driver linux-kernel

我想检查一下我刚刚完成的内核驱动模块是否存在内存泄漏问题。但我不知道如何在内核空间中做到这一点。我认为动态内存分配很难处理。有人有在内核空间调试此类内存问题的经验吗?或者,我可以使用哪个工具来测量特定内核模块的动态内存使用情况?

小智 5

跟踪内核模块中的内存分配和释放确实很困难,但您仍然有一些工具。这里有一些用于调查内核空间内存泄漏的工具和方法。

  1. /proc/slabinfo (slabtop)。它收集有关内核结构的信息。并不是真正关于模块一。但它仍然可能非常有帮助。

  2. Kmem 和 ftrace。只是链接:

https://www.kernel.org/doc/Documentation/trace/events-kmem.txt

http://elinux.org/Kernel_dynamic_memory_analysis

捕获每个kmalloc、kfree等事件并用它们产生相关信息。(c)

  1. /proc/modules (lsmod)。除了加载模块时使用了多少内存之外,没有什么特别的。事实上它只是一个模块的大小。