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

Measure memory usage of a certain Linux driver module

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

在内核模块中跟踪分配和释放内存确实很困难,但您仍然有一些便利。 这里有一些工具和方法来调查内核中的内存泄漏 space.

  1. /proc/slabinfo(平板)。它收集有关内核结构的信息。与模块一无关。但它仍然可能非常有用。

  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)。没有什么特别的,除了信息模块在加载时使用了多少内存。事实上,它只是一个模块的大小。